Schritt für Schritt zur geschützten Java-Anwendung
Wolfgang Völker| Produktmanagement
Wolfgang.Voelker@wibu.com
Günther Fi...
Agenda
 Java Rückblick
 Schutz-Technologien für Java-Anwendungen
 Grundprinzip des AxProtector Java
 Optionen des AxPr...
JAVA RÜCKBLICK
3
Java und die JVM/JRE
 Java: von Sun 1995 entwickelte Programmiersprache.
 Die JVM ist eine abstrakte Maschine.
 Der Bef...
JAVA - Write Once, Run Anywhere (WORA)
Java Program (.java)
Interpreter (JVM)
Java Compiler
JAVAC
Java Byte Code (.class /...
Java Architektur
Classloader
Java Program
*.class Files
Bytecode Verifier
Interpreter (JVM)
Host Operating System
(Windows...
7
Java und Sicherheit
 Java-Klassen lassen sich
 Leicht extrahieren
 Leicht ersetzen (auch Systemklassen!)
 Leicht mod...
Java Byte Code / Native Code
8
Java Runtime
(Java)
Java Virtual Machine
(Native Code)
JNI
(Native Code)
 C/C++ kann via J...
Schutzziele
 Schutz gegen Raubkopien (Lizenzierung)
 Schutz des geistigen Eigentums (Reverse Engineering)
 Schutz gegen...
Das Waffenarsenal der Angreifer (Java Decompiler .jar/.class -> .java)
10
SCHUTZ-TECHNOLOGIEN FÜR JAVA-ANWENDUNGEN
11
Betrachtete Optionen
 Obfuskierung
 Basic Obfuscation
 Heavy Duty Protection (Klassmaster)
 Java2Exe (JET Engine)
 Um...
Java Obfuscation Tools (KlassMasterAltaori/ProGuard….)
13
BASIC OBFUSCATION
14
Basic Obfuscation (Name Obfuscation)
Quelle: Zelix Webseite
15
Decompilieren einer Basic Obfuscation
Quelle: Zelix Webseite
Decompile
16
HEAVY DUTY PROTECTION
17
Zelix KlassMaster
18
Heavy Duty Protection (Flow, Exception, String Obfuscation …)
Quelle: Zelix Webseite
19
JDO: Java Deobfuscator / JMD: Java bytecode deobfuscation tool
20
JAVA2EXE
Excelsior JET Engine
21
Prinzip Java2Exe
JavaCode
JavaByteCode
NativerCode
JAVAC
Compiler
Excelsior
JIT
Compiler
22
Zusätzlicher Schutz durch Verschlüsselung
JavaCode
JavaByteCode
NativerCode
Verschlüsselter
nativerCode
JAVAC
Compiler
Exc...
VERSCHLÜSSELUNG
24
Verschlüsselung des Codes
25
 Verschlüsselung des ausführbaren Codes vor der Auslieferung
 Entschlüsselung der benötigte...
Die AxProtector Suite
 AxProtector nativ
 Windows 32-/64-bit
 Mac OS X
 Linux
 AxProtector .NET
 .Net 2.0, 3.0, 3.5,...
Prinzip des AxProtectors
Unprotected
application
Win32 Executable
Win32 Dynamic Link Library
Win64 Executable
Win64 Dynami...
AxProtector Java - Funktionsprinzip
 AxProtector Java automatischer Schutz auf Klassenebene durch
Verschlüsselung des Byt...
Unterstützte Anwendungstypen
 Welche Anwendungstypen kann der AxProtector Java schützen?
 Konsolen- und Desktopanwendung...
Prinzip des AxProtector Java
Verschlüsselte Klasse auf der
Festplatte
Klasse im Speicher
AxProtector RuntimeJVM
loadClass
...
AxProtector Klassen
 Automatischer Schutz (in das JAR integriert oder als WibuXpm4JRuntime.jar)
 Anpassungen im Code
 L...
AxProtector Java 9.1 - Neuerungen
 IxProtector– Schutz von Methoden
 Annotationen
 EntryPoint
 Protected
 Unprotected...
Beispiel
33
DECOMPILIEREN NACH VERSCHLÜSSELUNG
34
Java Class File Struktur
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
A...
Unverschlüsselter Code (CAFEBABE)
36
Mit AxProtector Java geschützter Code
37
Enigma
38
D4J
39
Lython
40
JD-GUI
41
Besondere Schutzmaßnahmen
 Java VM Signatur Prüfung
 Verifiziert die JVM in der das geschützte Programm ausgeführt wird
...
JVM Manipulation / Ändern des JVM Quellcodes
43
 OpenJDK ist eine quelloffene Implementierung der JVM
 Seit Version 6
 ...
Update der Signaturen
44
Angriffe via Tools
45
 In Java gibt es einige „Tools“ Interfaces
 Gedacht, um Byte-Code zu analysieren / modifizieren
 ...
WEITERE VERFAHREN
46
Schutz von Daten
 Annahme
 Geistiges Eigentum sind die Daten
 z.B. Fahrzeugdaten für Werkstätten
 Schutzziel
 Schütze...
Schutz von Daten
 Nur sicher, wenn die Schlüssel in einem vertrauenswürdigem Speicher liegen.
48
CodeMeter Core API
 com.wibu.CodeMeter
 Grundlage aller Schutzmechanismen
 Schnittstelle zur Kommunikation mit CodeMete...
Schutz von Daten - Verschlüsselung
 Schutz durch Ver-/Entschlüsselung in der Anwendung
 cmCrypt2 ()
50
Integritätsschutz - Signatur
 Integritätsschutz von Daten/Bibliotheken
 cmCalculateDigest()
 cmCalculateSignature()
 c...
Core API – Dokumentation und Beispiele
 CodeMeter Java API Help (HTML Format)
 Servlet Sample
 CmCalculator
 CmDemo
 ...
EIN PAAR WORTE ÜBER CODEMETER
53
Das Herz des CmDongles
 Smartcard Chip
 Schutz gegen Seitenkanalattacken
 Differential Power Analysis (DPA)
 Firmware ...
Integration in die Software
 Automatische Verschlüsselung (AxProtector Java)
 Verschlüsselung der einzelnen Klassen vor ...
Flexible Lizenzierungs Modelle für Lizenzgeber
Single User
Network
Feature On Demand
Perpetual
Trial version
Rent / Leasin...
Automatische Verwaltung der Lizenzen
Ticket
Artikel-Nr.
Lizenz
Ticket
Lizenzgeber
Lizenznehmer
Ticket
57
ZUSAMMENFASSUNG
58
Erreichung Schutzziele bei Obfuscation
 Schutz gegen Raubkopien (Lizenzierung)
 Schutz des geistigen Eigentums (Reverse ...
Erreichung Schutzziele bei Java2Exe
 Schutz gegen Raubkopien (Lizenzierung)
 Schutz des geistigen Eigentums (Reverse Eng...
Erreichung Schutzziele bei Verschlüsselung
 Schutz gegen Raubkopien (Lizenzierung)
 Schutz des geistigen Eigentums (Reve...
Wir sind gewappnet!
62
Vielen Dank!
WIBU-SYSTEMS
Germany +49-721-93172-0
USA +1-425-775-6900
China +86-21-55661790
www.wibu.com | info@wibu.com
63
Nächste SlideShare
Wird geladen in …5
×

Schritt für Schritt zur Geschützen Java-Anwendungen

454 Aufrufe

Veröffentlicht am

Aktuell ist Java auf 97% der Unternehmensrechner installiert. Das ist eine beeindruckend hohe Rate, die Java zur Nummer 1 bei den Softwareentwicklern macht. Dieser außergewöhnliche Erfolg liegt in der einfachen Entwicklung, der hohen Performance bei der Ausführung, aber am allermeisten an der vielseitigen Unterstützung der unterschiedlichen Rechnerplattformen, was zu einer extrem hohen Portabilität führt. Im Bereich der Server hat Java keinen Mitbewerber. Java-Anwendungen auf einem Server stellen einerseits Verbindungen zur Datenbank her und andererseits oft Verbindungen zum Web-Client.

All diese Faktoren im Design und Aufbau machen Java zum Ziel von Hackerangriffen. Besonders häufig wird Reverse-Engineering angewandt. Im Gegensatz zu nativen Anwendungen wird bei Java kein Maschinen-Code, sondern ein Intermediate Code erzeugt, welcher in einer Java-Runtime ausgeführt wird. Dieser Intermediate Code ist einfach wieder in Source Code zurückwandelbar. Damit sind vorhandene Kopierschutz- und Lizenzierungs-Mechanismen ebenso einfach entfernbar und Implementierungsdetails und Geschäftsgeheimnisse sind für unberechtigte Dritte einfach lesbar.

AxProtector Java gehört zu den grundlegenden Verschlüsselungskomponenten von CodeMeter. Im Gegensatz zum traditionellen AxProtector nutzt der AxProtector Java spezielle, auf diese Sprache angepasste Techniken, die den Intermediate Code verschlüsseln.

Der AxProtetcor Java schützt und lizenziert:
- Desktopanwendungen
- Serveranwendungen (Applicationserver)
- Eclipse-Plugins

Wie Java ist der AxProtector Java für unterschiedliche Plattformen verfügbar:
- Windows
- Linux
- OS X
- Android

Diese Präsentation stellt grundlegende Schutztechnologien für Java vor und vergleicht diese mit den überlegenen Möglichkeiten des AxProtector Java. Sobald die Anwendung geschützt wurde, können auch die vorhandenen Lizenzierungsmöglichkeiten genutzt werden, denn CodeMeter kann gleichfalls zur flexiblen Lizenzierung eingesetzt werden.

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
454
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Schritt für Schritt zur Geschützen Java-Anwendungen

  1. 1. Schritt für Schritt zur geschützten Java-Anwendung Wolfgang Völker| Produktmanagement Wolfgang.Voelker@wibu.com Günther Fischer| Professional Services Guenther.Fischer@wibu.com 1
  2. 2. Agenda  Java Rückblick  Schutz-Technologien für Java-Anwendungen  Grundprinzip des AxProtector Java  Optionen des AxProtetcor Java  Schutz auf Klassen-Ebene / Methoden-Ebene  Kurze Einführung in die Lizenzierung von Java-Anwendungen 2
  3. 3. JAVA RÜCKBLICK 3
  4. 4. Java und die JVM/JRE  Java: von Sun 1995 entwickelte Programmiersprache.  Die JVM ist eine abstrakte Maschine.  Der Befehlssatz ist der Java Byte Code.  Kompilierte Java Programme bestehen aus vielen Klassendateien, die Bytecode (keinen nativen Code) enthalten.  JARS sind ZIP-Archive mit zusätzlichem Manifest  Bytecode wird zur Laufzeit durch Java Virtual Machine (JVM) interpretiert und ausgeführt.  Bytecode lässt sich einfach Reverse Engineeren.  Mit dem OpenJDK gibt es eine quelloffene Implementierung der JVM. 4
  5. 5. JAVA - Write Once, Run Anywhere (WORA) Java Program (.java) Interpreter (JVM) Java Compiler JAVAC Java Byte Code (.class /.jar) Windows Interpreter (JVM) Linux Interpreter (JVM) MacOS … 5
  6. 6. Java Architektur Classloader Java Program *.class Files Bytecode Verifier Interpreter (JVM) Host Operating System (Windows, Linux, MacOS,..) Java API *.class Files 6
  7. 7. 7 Java und Sicherheit  Java-Klassen lassen sich  Leicht extrahieren  Leicht ersetzen (auch Systemklassen!)  Leicht modifizieren  Der Java Byte Code ist kein „Geheimnis“  Fazit  Alles was in Java geschrieben ist, ist generell unsicher!
  8. 8. Java Byte Code / Native Code 8 Java Runtime (Java) Java Virtual Machine (Native Code) JNI (Native Code)  C/C++ kann via JNI (Java Native Interface) genutzt werden
  9. 9. Schutzziele  Schutz gegen Raubkopien (Lizenzierung)  Schutz des geistigen Eigentums (Reverse Engineering)  Schutz gegen Analyse durch Mitbewerber  Schutz gegen Verwendung von Code  Integritätsschutz von Daten und Code  Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil) 9
  10. 10. Das Waffenarsenal der Angreifer (Java Decompiler .jar/.class -> .java) 10
  11. 11. SCHUTZ-TECHNOLOGIEN FÜR JAVA-ANWENDUNGEN 11
  12. 12. Betrachtete Optionen  Obfuskierung  Basic Obfuscation  Heavy Duty Protection (Klassmaster)  Java2Exe (JET Engine)  Umwandlung in nativen Code  Evtl. weitere Verschlüsselung durch native Tools  Java Verschlüsselung  AxProtector  Sonstige Methoden  Beispiel CodeMeter Core API 12
  13. 13. Java Obfuscation Tools (KlassMasterAltaori/ProGuard….) 13
  14. 14. BASIC OBFUSCATION 14
  15. 15. Basic Obfuscation (Name Obfuscation) Quelle: Zelix Webseite 15
  16. 16. Decompilieren einer Basic Obfuscation Quelle: Zelix Webseite Decompile 16
  17. 17. HEAVY DUTY PROTECTION 17
  18. 18. Zelix KlassMaster 18
  19. 19. Heavy Duty Protection (Flow, Exception, String Obfuscation …) Quelle: Zelix Webseite 19
  20. 20. JDO: Java Deobfuscator / JMD: Java bytecode deobfuscation tool 20
  21. 21. JAVA2EXE Excelsior JET Engine 21
  22. 22. Prinzip Java2Exe JavaCode JavaByteCode NativerCode JAVAC Compiler Excelsior JIT Compiler 22
  23. 23. Zusätzlicher Schutz durch Verschlüsselung JavaCode JavaByteCode NativerCode Verschlüsselter nativerCode JAVAC Compiler Excelsior JIT Compiler AxProtector 23
  24. 24. VERSCHLÜSSELUNG 24
  25. 25. Verschlüsselung des Codes 25  Verschlüsselung des ausführbaren Codes vor der Auslieferung  Entschlüsselung der benötigten Klassen/Methoden zur Laufzeit im Speicher Verschlüsselung Ungeschützte Anwendung Entschlüsselung AxEngine AxEngine
  26. 26. Die AxProtector Suite  AxProtector nativ  Windows 32-/64-bit  Mac OS X  Linux  AxProtector .NET  .Net 2.0, 3.0, 3.5, 4.0, 4.5  AxProtector Java  Java 1.6  Java 1.7  Java 1.8  Java Anwendungen  Java Applets  Java Servlets 26
  27. 27. Prinzip des AxProtectors Unprotected application Win32 Executable Win32 Dynamic Link Library Win64 Executable Win64 Dynamic Link Library Mac OS X 32-Bit Mac OS X 64-Bit Mac OS X Universal Binary .NET 2.0 Assembly (Exe) .NET 2.0 Assembly (Dll) .NET 3.0 Assembly (Exe) .NET 3.0 Assembly (Dll) .NET 3.5 Assembly (Exe) .NET 3.5 Assembly (Dll) .NET 4.0 Assembly (Exe) .NET 4.0 Assembly (Dll) .NET 4.5 Assembly (Exe) .NET 4.5 Assembly (Dll) Java 1.6 Application Java 1.7 Application Java 1.8 Application AxEngine Protection Licenses Encryption AxProtector 27
  28. 28. AxProtector Java - Funktionsprinzip  AxProtector Java automatischer Schutz auf Klassenebene durch Verschlüsselung des Bytecodes  Jede Klasse wird automatisch beim Laden entschlüsselt. Dazu muss die AxProtector Runtime initialisiert werden. Dafür gibt es mehrere Möglichkeiten (Java-Anwendungen mit Main-Klasse => Wrapper, manuelles Laden durch EntryPoint / ProtectionManager)  Instanziierung kann manuell erfolgen (z.B. Application Server)  Einbau erweiterter Schutzmaßnahmen (IxProtector)  Einbau von Lizenzabfragen (CoreAPI) 28
  29. 29. Unterstützte Anwendungstypen  Welche Anwendungstypen kann der AxProtector Java schützen?  Konsolen- und Desktopanwendungen  Applets, Web Start Anwendungen  Servlets  Eclipse RCP, Eclipse Plugin  OSGi 29
  30. 30. Prinzip des AxProtector Java Verschlüsselte Klasse auf der Festplatte Klasse im Speicher AxProtector RuntimeJVM loadClass 30
  31. 31. AxProtector Klassen  Automatischer Schutz (in das JAR integriert oder als WibuXpm4JRuntime.jar)  Anpassungen im Code  Laufzeit der geschützten Anwendung  Integriert in die geschützte Anwendung  WibuXpm4JRuntime.jar im classpath 31
  32. 32. AxProtector Java 9.1 - Neuerungen  IxProtector– Schutz von Methoden  Annotationen  EntryPoint  Protected  Unprotected  Trap  Parsebare Classdateien (Unterstützung von Annotationsparsern)  Parameterdatei im XML-Format (Lizenzliste) 32
  33. 33. Beispiel 33
  34. 34. DECOMPILIEREN NACH VERSCHLÜSSELUNG 34
  35. 35. Java Class File Struktur Magic Number Version Constant Pool Access Flag this Class super Class Interfaces Fields Methods Attributes 35
  36. 36. Unverschlüsselter Code (CAFEBABE) 36
  37. 37. Mit AxProtector Java geschützter Code 37
  38. 38. Enigma 38
  39. 39. D4J 39
  40. 40. Lython 40
  41. 41. JD-GUI 41
  42. 42. Besondere Schutzmaßnahmen  Java VM Signatur Prüfung  Verifiziert die JVM in der das geschützte Programm ausgeführt wird  WibuXPM4J32/64.dll Absicherung  Callback Check  Prüft, dass keine JNI Funktionen geändert wurden  JVMPI / JVMTI Check  Prüft, ob ein JVMPI/JVMTI Agent vorhanden ist 42
  43. 43. JVM Manipulation / Ändern des JVM Quellcodes 43  OpenJDK ist eine quelloffene Implementierung der JVM  Seit Version 6  Kann somit mit Hintertür gebaut werden  Einfügen von Code, der geladene Klassen mitschreibt, somit einfach möglich  Lösung:  JVM Verifizierung
  44. 44. Update der Signaturen 44
  45. 45. Angriffe via Tools 45  In Java gibt es einige „Tools“ Interfaces  Gedacht, um Byte-Code zu analysieren / modifizieren  Debugger, Profiler  JVMPI: Java Virtual Machine Profiling Interface  Bis einschließlich Java 6  JVMTI: Java Virtual Machine Tools Interface  Ab Java 7, Nachfolger von JVMPI
  46. 46. WEITERE VERFAHREN 46
  47. 47. Schutz von Daten  Annahme  Geistiges Eigentum sind die Daten  z.B. Fahrzeugdaten für Werkstätten  Schutzziel  Schützen der Daten gegen unbefugte Benutzung (Lizenzierung)  Schützen der Daten gegen „Extraktion“ und Nachbau durch Mitbewerber  Lösung:  Verschlüsselung der Daten 47
  48. 48. Schutz von Daten  Nur sicher, wenn die Schlüssel in einem vertrauenswürdigem Speicher liegen. 48
  49. 49. CodeMeter Core API  com.wibu.CodeMeter  Grundlage aller Schutzmechanismen  Schnittstelle zur Kommunikation mit CodeMeter  Erweiterte Schutzmöglichkeiten  Einheitliches Interface durch CodeMeter License Server  Lizenz in einem Dongle oder in einer verschlüsselten Lizenzdatei  Einheitliche Lizenzoptionen  Mischen in einer Anwendung möglich Dongle Ihre Software Aktivierung Java Native Interface CodeMeter License Server 49
  50. 50. Schutz von Daten - Verschlüsselung  Schutz durch Ver-/Entschlüsselung in der Anwendung  cmCrypt2 () 50
  51. 51. Integritätsschutz - Signatur  Integritätsschutz von Daten/Bibliotheken  cmCalculateDigest()  cmCalculateSignature()  cmValidateSignature() 51
  52. 52. Core API – Dokumentation und Beispiele  CodeMeter Java API Help (HTML Format)  Servlet Sample  CmCalculator  CmDemo  Lizenzzugriff  Auslesen von Lizenzen  Verschlüsselung  … 52
  53. 53. EIN PAAR WORTE ÜBER CODEMETER 53
  54. 54. Das Herz des CmDongles  Smartcard Chip  Schutz gegen Seitenkanalattacken  Differential Power Analysis (DPA)  Firmware Update  Neue Sicherheits-Features  Neue Features  Gesicherter Update-Kanal  64 kByte | 384 kByte Speicher für Lizenzen 54
  55. 55. Integration in die Software  Automatische Verschlüsselung (AxProtector Java)  Verschlüsselung der einzelnen Klassen vor der Auslieferung  Einpacken in ein JAR-File  Wrapper zur automatischen Entschlüsselung beim Laden der Klassen  Integration mit CodeMeter Core API  Verschlüsselungs-API  Freischaltung unterschiedlicher Module  Zählen von gleichzeitigen Sessions 55
  56. 56. Flexible Lizenzierungs Modelle für Lizenzgeber Single User Network Feature On Demand Perpetual Trial version Rent / Leasing / Subscription Pay-Per-Use Maintenance period Downgrade Grace Period Volume Version Standby High Availability Overflow Borrowing Name/PC Time zone 56
  57. 57. Automatische Verwaltung der Lizenzen Ticket Artikel-Nr. Lizenz Ticket Lizenzgeber Lizenznehmer Ticket 57
  58. 58. ZUSAMMENFASSUNG 58
  59. 59. Erreichung Schutzziele bei Obfuscation  Schutz gegen Raubkopien (Lizenzierung)  Schutz des geistigen Eigentums (Reverse Engineering)  Schutz gegen Analyse durch Mitbewerber  Schutz gegen Verwendung von Code  Integritätsschutz von Daten und Code  Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil) 59
  60. 60. Erreichung Schutzziele bei Java2Exe  Schutz gegen Raubkopien (Lizenzierung)  Schutz des geistigen Eigentums (Reverse Engineering)  Schutz gegen Analyse durch Mitbewerber  Schutz gegen Verwendung von Code  Integritätsschutz von Daten und Code  Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil) 60
  61. 61. Erreichung Schutzziele bei Verschlüsselung  Schutz gegen Raubkopien (Lizenzierung)  Schutz des geistigen Eigentums (Reverse Engineering)  Schutz gegen Analyse durch Mitbewerber  Schutz gegen Verwendung von Code  Integritätsschutz von Daten und Code  Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil) 61
  62. 62. Wir sind gewappnet! 62
  63. 63. Vielen Dank! WIBU-SYSTEMS Germany +49-721-93172-0 USA +1-425-775-6900 China +86-21-55661790 www.wibu.com | info@wibu.com 63

×