Schritt für Schritt zur geschützten Java-Anwendung
Wolfgang Völker | Produktmanagement
Günther Fischer | Professional Services
1
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
Java Rückblick
3
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
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
Java Architektur
ClassloaderJava Program
*.class Files
Bytecode Verifier
Interpreter (JVM)
Host Operating System
(Windows, Linux, MacOS,..)
Java API
*.class Files
6
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!
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
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)
Umwandlung in nativen Code
Evtl. weitere Verschlüsselung durch native Tools
Java Verschlüsselung
AxProtector
Sonstige Methoden
Beispiel CodeMeter Core API
12
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 Java2ExeJa
va C
ode
Java
Byt
e C
ode
Nat
iver
Cod
e
JAVAC
Compiler
Excelsior
JIT
Compiler
22
Zusätzlicher Schutz durch VerschlüsselungJa
va C
ode
Java
Byt
e C
ode
Nat
iver
Cod
e
Ver
schl
üsse
lter
nativ
erC
ode
JAVAC
Compiler
Excelsior
JIT
CompilerAxProtector
23
Verschlüsselung
24
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üsselungUngeschützte
Anwendung
Entschlüsselung
AxEngine
AxEngine
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
AxProtector Java - Funktionsprinzip
AxProtector Java automatischer Schutz auf Klassen/Methodenebene durch Verschlüsselung des Bytecodes
Jede Klasse wird automatisch beim Laden entschlüsselt. Dazu muss die AxProtector Runtime initialisiert werden:
Java-Anwendungen mit Main-Klasse => Wrapper (com.wibu.xpm.Wrapper)
manuelles Laden durch EntryPoint
manuelles Laden durch ProtectionManager
Einbau erweiterter Schutzmaßnahmen (IxProtector)
Einbau von Lizenzabfragen (CoreAPI)
27
Java-Anwendungen mit Main-Klasse
28
EntryPoint
29
Einbau erweiterter Schutzmaßnahmen (IxProtector)
30
Unterstützte Anwendungstypen
Welche Anwendungstypen kann der AxProtector Java schützen?
Konsolen- und Desktopanwendungen
Applets, Web Start Anwendungen
Servlets
Eclipse RCP, Eclipse Plugin
OSGi
31
Unverschlüsselter Code (CAFEBABE)
32
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
Mit AxProtector Java geschützter Code
33
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
Prinzip des AxProtector Java
Verschlüsselte Klasse auf der
Festplatte
Klasse im Speicher
AxProtector RuntimeJVM
loadClass
34
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
35
Parameterdatei im XML-Format (Lizenzliste)
36
Quelle: CodeMeter Entwicklerhandbuch
Beispiel
37
Decompilieren nach
Verschlüsselung
38
Enigma
39
D4J
40
Lython
41
JD-GUI
42
Angriffe via Tools
43
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
Besondere Schutzmaßnahmen
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
44
JVM Manipulation / Ändern des JVM Quellcodes
45
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
Update der Signaturen
46
Weitere Verfahren
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
48
Schutz von Daten
Nur sicher, wenn die Schlüssel in einem vertrauenswürdigem Speicher liegen.
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
50
Schutz von Daten - Verschlüsselung
Schutz durch Ver-/Entschlüsselung in der Anwendung
cmCrypt2 ()
51
Integritätsschutz - Signatur
Integritätsschutz von Daten/Bibliotheken
cmCalculateDigest()
cmCalculateSignature()
cmValidateSignature()
52
Core API – Dokumentation und Beispiele
CodeMeter Java API Help (HTML Format)
Servlet Sample
CmCalculator
CmDemo
Lizenzzugriff
Auslesen von Lizenzen
Verschlüsselung
…
53
Ein paar Worte über
CodeMeter
54
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
55
Zusammenfassung
56
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)
57
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)
58
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)
59
Wir sind gewappnet!
60
Vielen Dank!
WIBU-SYSTEMS
Germany +49-721-93172-0
USA +1-425-775-6900
China +86-21-55661790
www.wibu.com | [email protected]
61