Schutz und Lizenzierung von .NET-Anwendungen
Die Beliebtheit von .NET als Entwicklungsplattform nimmt seit 2018 wieder stetig zu. Die Multiplattformfähigkeit, die mit .NET Standard eingeführt wurde, ist einer der Gründe dafür. Laut Tiobe-Index steht C# als einer der möglichen Optionen für eine Entwicklung in .NET auf Rang 5 der Beliebtheit. Beliebter sind lediglich Python, C/C++ und Java. Während Python sehr oft in internen Projekten und der Automatisierung eingesetzt wird und Java oft im Server-Umfeld, wird .NET meistens auf einem Rechner oder Gerät beim Anwender verwendet. Für klassische Standalone- und Client-Anwendungen kann man daher ohne Umschweife sagen, dass .NET nach C/C++ die Programmiersprache Nummer 2 ist.
Vor allem bei Anwendungen auf dem Rechner eines Users spielt die Sicherheit eine enorm große Rolle. Auf der einen Seite bedeutet dies Sicherheit für ihn, damit auf seinem Rechner kein Schadcode ausgeführt wird. Dafür haben sich Lösungen wie Code-Signaturen etabliert. Auf der anderen Seite ist es aber auch die Sicherheit auf Seiten des Herstellers der Software: Schutz gegen Raubkopien und Schutz gegen Diebstahl des geistigen Eigentums. Bei .NET wird der Quellcode nicht wie bei C/C++-Anwendungen in Maschinencode für eine konkrete Plattform kompiliert, sondern in einen Intermediate Code umgewandelt. Dieser ist weiterhin multiplattformfähig. Dies hat aber den Nachteil, dass der Code für einen Angreifer einfach lesbar und manipulierbar ist. Lizenzabfragen können entfernt oder, noch schlimmer, durch eigene ersetzt werden und in „Code-gegossene“ Geschäftsgeheimnisse können einfach ausgespäht werden.
Hier kommt der AxProtector .NET aus der CodeMeter Protection Suite ins Spiel. Er arbeitet perfekt mit Code-Signaturen zusammen, so dass Sie sich als Hersteller nicht zwischen Sicherheit für sich und Sicherheit für den Anwender entschieden müssen. Sie können, und sollten, beides haben!
AxProtector .NET macht sich dabei der einfachen Lesbarkeit des Intermediate Codes zu Nutzen. Er extrahiert alle Klassen und Methoden eines .NET-Assemblies. Diese werden einzeln verschlüsselt. Der Code zum Entschlüsseln wird anstelle des originalen Codes eingefügt.
Zur Laufzeit wird eine Methode dynamisch entschlüsselt, wenn diese zum ersten Mal benötigt wird. Der dazugehörige Intermediate Code ist nur für eine kurze Zeit im Speicher. Er wird lediglich verwendet, um durch den Just In Time Compiler (JIT) den Maschinencode zu erzeugen und wird danach gelöscht. Aus Performance-Gründen wird der Maschinencode im Cache gehalten. Eine native C/C++-Komponente, die CodeMeter Protection Suite Runtime (CSPRT), übernimmt dabei Teile der Entschlüsselung und prüft die Sicherheit zyklisch im Hintergrund. Durch das Auslagern in diese native Komponente wird die Sicherheit im Vergleich zu einer reinen .NET-Lösung gesteigert. Die CPSRT liegt für die gebräuchlichsten Plattformen und Prozessoren vor, darunter Windows, macOS, Linux, Intel x86 und x86-64, sowie ARM und AARCH64. Daher stellt dies in der Regel keine Einschränkung der Multiplattformfähigkeit Ihrer Anwendung dar.
Zu den Aufzeichnungen | |
---|---|
Deutsch | Zugriff |
Englisch | Zugriff |
Das Webinar stellt Ihnen die Anwendung des AxProtectors .NET vor. Die Inhalte sind:
- Verschlüsseln eines Assemblies
- Modellierung verschiedener Lizenzen in einem Assembly
- Best Practice-Tipps bei einer Anwendung mit mehreren Assemblies
- Sicherheit: Bindung der Verschlüsselung an eine Lizenz
- Sicherheit: Obfuskierung
- Sicherheit: Anti-Debug-Maßnahmen gegen dynamische Analyse
- Sicherheit: Fallen gegen statische Analyse
- Sicherheit: CodeMoving in den CmDongle oder CmCloudContainer
- Integration in automatische Build-Systeme
- Fehlerhandling
- Ausblick: Roadmap AxProtector .NET
Ein wichtiges Thema ist neben der Sicherheit auch die Performance der geschützten Anwendung. Durch das Cachen des nativen Codes ist der Performanceverlust beim AxProtector .NET in der Praxis vernachlässigbar. AxProtector .NET vereint Performance und Sicherheit in einer einmaligen Art und Weise.