SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Schutz von Java-
Anwendungen
Günther Fischer
Senior Consultant, Licensing and Protection
Dr. Simon Kunz
Java Security Expert
AxProtector Java
Agenda
 Java Rückblick
 Einführung: Sicherheit und Schutztechnologien für Java
 AxProtector Java
 Aktuelle Sicherheitsmechanismen
 Java 9 Unterstützung
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 2
Java Rückblick
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 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.
 Klassen werden immer als ganzes von der JVM geladen.
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 4
Java – Write Once, Run Anywhere (WORA)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Java Program (.java)
Interpreter (JVM)
Java Compiler
JAVAC
Java Byte Code (.class /.jar)
Windows
Interpreter (JVM)
Linux
Interpreter (JVM)
macOS
…
5
Java Architektur
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Classloader
Java Program
*.class Files
Bytecode Verifier
Interpreter (JVM)
Host Operating System
(Windows, Linux, macOS,..)
Java API
*.class Files
6
Java Byte Code / Native Code Kombination
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Java Runtime
(Java)
Java Virtual Machine
(Native Code)
JNI
(Native Code)
C/C++ kann via JNI (Java Native Interface) genutzt werden
7
Einführung: Sicherheit und
Schutztechnologien für Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 8
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!
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 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)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 10
Das Waffenarsenal der Angreifer (Java Decompiler .jar/.class -> .java)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 11
Zahlreiche Informationsquellen
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 12
Betrachtete Optionen
 Obfuskierung
 Java2Exe (JET Engine) bzw. Exe4j
 Umwandlung in nativen Code
 Evtl. weitere Verschlüsselung durch native Tools
 Java Bytecode Verschlüsselung
 Sonstige Methoden
 Beispiel CodeMeter Core API
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 13
Java Obfuscation Tools (KlassMaster/Allatori/ProGuard….)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 14
Java Obfuscation Tools (KlassMaster/Allatori/ProGuard….)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Java2Exe/JAR2EXE
 Excelsior JET Engine/Regex Jar2Exe
15
Prinzip Java2Exe/Jar2Exe/Exe4J
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
JavaCode
JavaByteCode
NativerCode
JAVAC
Compiler
Excelsior
JET
Compiler
Exe4J
Compiler
16
Zusätzlicher Schutz durch Verschlüsselung
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
JavaCode
JavaByteCode
NativerCode
Verschlüsselter
nativerCode
JAVAC
Compiler
Excelsior
JET
Compiler
AxProtector
Native
Exe4J
Compiler
17
Aktuelle Sicherheitsmechanismen
des AxProtector Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 18
Verschlüsselung
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
 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
19
Unverschlüsselter Code (CAFEBABE)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
20
Mit AxProtector Java geschützter Code
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
21
AxProtector Java
 AxProtector Java
 Java 1.6
 Java 1.7
 Java 1.8
 Java 9
 Java Anwendungen
 Java Applets
 Java Servlets
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 22
AxProtector Java – Funktionsprinzip
 AxProtector Java automatischer Schutz auf Klassen/Methodenebene durch Verschlüsselung des
Bytecodes
 Flexible Lizenzierungsmöglichkeiten
 Jede Klasse wird automatisch beim Laden entschlüsselt. Dazu muss die AxProtector Runtime initialisiert
werden:
 Java-Anwendungen mit Main-Klasse => Automatisch durch Wrapper (com.wibu.xpm.Wrapper) ersetzt
 manuelles Laden durch EntryPoint
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 23
Verschlüsselung auf Klassenebene bzw. Methodenebene
Verschlüsselung auf Klassenebene
Klasse wird als ganzes verschlüsselt
Klasse wird bei Verwendung komplett geladen und entschlüsselt
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
class
Method 1
Method 2
Method 3
AxProtector
class
Method 1
Method 2
Method 3
24
Verschlüsselung auf Klassenebene bzw. Methodenebene
Verschlüsselung auf Methodenebene
Methoden werden als neue Klassen extrahiert
Methoden werden erst bei Verwendung geladen und entschlüsselt
Erlaubt unterschiedliche Lizenzlisten für einzelne Methoden (IxProtector)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenziert
class
Method 1
Method 2
Method 3
25
Verschlüsselung auf Klassenebene bzw. Methodenebene
Verschlüsselung auf Klassen- und Methodenebene
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenziert
class
Method 1
Method 2
Method 3
Beispiel: Basis-Lizenz Feature-Lizenzen
26
Die drei Arten der Verschlüsselungskonfiguration
 Annotationen im Source Code
 AxProtector GUI
 xml-Konfigurationsdatei
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 27
Annotationen im Source Code
 @Protected (licenseList=0)
 @Unprotected
 @EntryPoint
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 28
AxProtector GUI
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 29
xml - Konfigurationsdatei
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 30
Fallen (‘traps’) in einer Java Anwendung
 Wird eine als Falle deklarierte Klasse oder Methode entschlüsselt, wird die
Lizenz gesperrt: Firm Access Counter  0
 Einfügen von Fallen: Manuell oder automatisch
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 31
Fallen (‘traps’) in einer Java Anwendung
Manuelles Einfügen über Annotation:
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenziert
class
Method 1
Method 2
Method 3
trap
@Trap
private static void Method3() {
}
32
Beispiel-Referenzierung:
if (tax > 100%) {
Method3()
}
Fallen (‘traps’) in einer Java Anwendung
Automatisches Einfügen durch Kommandozeilenoption
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Zum Beispiel fügt
-trap1:70
zu ca. 70% der verschlüsselten Methoden Fallen hinzu class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
class
Method 1
Method 2
Method 3
Ref 4
class
Method 4
AxProtector summary output:
33
Verschlüsselung des Konstantenpools (Option –caa1)
 Konstante Einträge der Datentypen String, int und long im Konstantenpool bleiben durchgehend verschlüsselt
 Entschlüsselung erfolgt bei Bedarf.
Anschaulich:
 Schlüssel ändern sich dynamisch
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
String a = “Hello World!”;
String a = “ut3ilspNQ”;
a = decrypt(a);
Nativer
Funktionsaufruf
Bytecode
Konstantenpool
Java Klasse
34
Verschlüsselung des Methodenkonrollflusses (Option –caa2)
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
class
Ref 1
Ref 2
Ref 3
class
XYZ
class
YZF
class
LQZ
class
Method 1
Method 2
Method 3
Verschlüsselt die Zuordnung zu den extrahierten Methoden
Programmfluss kann nicht mehr nachvollzogen werden
35
Namensobfuskierung
 Anwendbar auf
• Klassen
• Methoden
• Felder
• Packages
• Lokale Variablen
 Individuell für Klassen und Methoden steuerbar
 Auf verschlüsselte und unverschlüsselte Klassen/Methoden anwendbar
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Beispiel:
36
Individuelle Namensobfuskierung via AxProtector GUI
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Beispiel:
37
Integritätsprüfung
 Schutz vor Manipulation von .class Dateien
 Individuell für Klassen und Methoden steuerbar
 Auf verschlüsselte und unverschlüsselte
Klassen/Methoden anwendbar
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 38
CodeMoving
 CodeMoving: Verschlüsselter Code wird ausschließlich im CmDongle
entschlüsselt und ausgeführt
 Nur mit Universal Firm Code (UFC)
 Nur mit CmDongles 3-xxx, kein CmActLicense
 Nur lokal, nicht über LAN
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Method Code
Ergebnis
39
CodeMoving
 CodeMoving Code muss derzeit in C geschrieben werden
 CodeMoving Funktionalität wird bereits unterstützt
 Derzeit wird an Automatismus zur Codeübersetzung geforscht
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Java
AddIntegers.c
Keine echte Programmlogik im Java Code.
 Wird vom AxProtector durch CodeMoving Aufruf ersetzt
40
Java 9 Unterstützung
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 41
Java 9 Unterstützung
 Einführung von Modulsystem Jigsaw
 Jar Dateien können modularisiert erstellt werden: Modulare Jars mit zusätzlicher Rechteverwaltung
 AxProtector Java unterstützt die Verschlüsselung modularer Jars
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen
Module.jar
AxProtector
Module.jar
com.wibu.xpm.jar
42
Deutschland: +49-721-931720
USA: +1-425-7756900
China: +86-21-55661790
http://www.wibu.com
info@wibu.com
Vielen Dank für Ihre Aufmerksamkeit!
©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 43

Weitere ähnliche Inhalte

Ähnlich wie Schutz von Java-Anwendungen

SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)
SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)
SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)LicensingLive! - SafeNet
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerWolfgang Weigend
 
Rahmenbedingungen mobile security
Rahmenbedingungen mobile securityRahmenbedingungen mobile security
Rahmenbedingungen mobile securityPeter Teufl
 
Schutz und Lizenzierung für Embedded-Geräte
Schutz und Lizenzierung für Embedded-GeräteSchutz und Lizenzierung für Embedded-Geräte
Schutz und Lizenzierung für Embedded-Geräteteam-WIBU
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenteam-WIBU
 
Holistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenHolistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenQAware GmbH
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecMario-Leander Reimer
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungNETWAYS
 
Das kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturDas kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturQAware GmbH
 
On-Premise Protection for Exchange
On-Premise Protection for ExchangeOn-Premise Protection for Exchange
On-Premise Protection for ExchangeGWAVA
 
Vergleichstest 2011
Vergleichstest 2011Vergleichstest 2011
Vergleichstest 2011jamescv31
 
Vergleichstest 2011
Vergleichstest 2011Vergleichstest 2011
Vergleichstest 2011jamescv31
 
JPA the Versant Way
JPA the Versant WayJPA the Versant Way
JPA the Versant Wayjubecker
 
Fujitsu Storage Days 2018 - Eternus Survivalpack
Fujitsu Storage Days 2018 - Eternus SurvivalpackFujitsu Storage Days 2018 - Eternus Survivalpack
Fujitsu Storage Days 2018 - Eternus SurvivalpackFujitsu Central Europe
 
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...Didactum
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPAmh0708
 

Ähnlich wie Schutz von Java-Anwendungen (18)

SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)
SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)
SafeNet Vollständige Schutz-& Lizenzlösung Webcast (DE)
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
Rahmenbedingungen mobile security
Rahmenbedingungen mobile securityRahmenbedingungen mobile security
Rahmenbedingungen mobile security
 
Schutz und Lizenzierung für Embedded-Geräte
Schutz und Lizenzierung für Embedded-GeräteSchutz und Lizenzierung für Embedded-Geräte
Schutz und Lizenzierung für Embedded-Geräte
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
 
Holistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenHolistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice Architekturen
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSec
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
 
Das kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren ArchitekturDas kleine Einmaleins der sicheren Architektur
Das kleine Einmaleins der sicheren Architektur
 
On-Premise Protection for Exchange
On-Premise Protection for ExchangeOn-Premise Protection for Exchange
On-Premise Protection for Exchange
 
Vergleichstest 2011
Vergleichstest 2011Vergleichstest 2011
Vergleichstest 2011
 
Vergleichstest 2011
Vergleichstest 2011Vergleichstest 2011
Vergleichstest 2011
 
JPA the Versant Way
JPA the Versant WayJPA the Versant Way
JPA the Versant Way
 
Fujitsu Storage Days 2018 - Eternus Survivalpack
Fujitsu Storage Days 2018 - Eternus SurvivalpackFujitsu Storage Days 2018 - Eternus Survivalpack
Fujitsu Storage Days 2018 - Eternus Survivalpack
 
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...
AKCP securityProbe 5ES-X20 / X60 Alarm Server - Überwachung wichtiger Räume u...
 
Moderne Java Web-Technologien
Moderne Java Web-TechnologienModerne Java Web-Technologien
Moderne Java Web-Technologien
 
DOM-based XSS
DOM-based XSSDOM-based XSS
DOM-based XSS
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
 

Mehr von team-WIBU

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Unlocking the Future: Empowering Industrial Security
Unlocking the Future: Empowering Industrial SecurityUnlocking the Future: Empowering Industrial Security
Unlocking the Future: Empowering Industrial Securityteam-WIBU
 
The Power of Partnership: Enabling Success Together
The Power of Partnership: Enabling Success TogetherThe Power of Partnership: Enabling Success Together
The Power of Partnership: Enabling Success Togetherteam-WIBU
 
Unleash the Power of CodeMeter - CodeMeter Basics
Unleash the Power of CodeMeter - CodeMeter BasicsUnleash the Power of CodeMeter - CodeMeter Basics
Unleash the Power of CodeMeter - CodeMeter Basicsteam-WIBU
 
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für GeschäftskontinuitätKeine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuitätteam-WIBU
 
No Time to Idle – License availability for business continuity
No Time to Idle – License availability for business continuityNo Time to Idle – License availability for business continuity
No Time to Idle – License availability for business continuityteam-WIBU
 
Cloud-Based Licensing in Offline Scenarios
Cloud-Based Licensing in Offline ScenariosCloud-Based Licensing in Offline Scenarios
Cloud-Based Licensing in Offline Scenariosteam-WIBU
 
Optimizing Cloud Licensing: Strategies and Best Practices
Optimizing Cloud Licensing: Strategies and Best PracticesOptimizing Cloud Licensing: Strategies and Best Practices
Optimizing Cloud Licensing: Strategies and Best Practicesteam-WIBU
 
For a Few Licenses More
For a Few Licenses MoreFor a Few Licenses More
For a Few Licenses Moreteam-WIBU
 
App Management on the Edge
App Management on the EdgeApp Management on the Edge
App Management on the Edgeteam-WIBU
 
Protecting and Licensing .NET Applications
Protecting and Licensing .NET ApplicationsProtecting and Licensing .NET Applications
Protecting and Licensing .NET Applicationsteam-WIBU
 
A Bit of License Management Magic
A Bit of License Management MagicA Bit of License Management Magic
A Bit of License Management Magicteam-WIBU
 
The first step is always the most decisive
The first step is always the most decisiveThe first step is always the most decisive
The first step is always the most decisiveteam-WIBU
 
Protection and monetization of 3D printed objects in the spare parts business...
Protection and monetization of 3D printed objects in the spare parts business...Protection and monetization of 3D printed objects in the spare parts business...
Protection and monetization of 3D printed objects in the spare parts business...team-WIBU
 
Authenticate and authorize your IIoTdevices
Authenticate and authorize your IIoTdevicesAuthenticate and authorize your IIoTdevices
Authenticate and authorize your IIoTdevicesteam-WIBU
 
How and Why to Create and Sell Consumption-Based Licenses
How and Why to Create and Sell Consumption-Based LicensesHow and Why to Create and Sell Consumption-Based Licenses
How and Why to Create and Sell Consumption-Based Licensesteam-WIBU
 
Serving Up Features-on-Demand for Every Appetite
Serving Up Features-on-Demand for Every AppetiteServing Up Features-on-Demand for Every Appetite
Serving Up Features-on-Demand for Every Appetiteteam-WIBU
 
Security and Protection for Machine Learning.pptx
Security and Protection for Machine Learning.pptxSecurity and Protection for Machine Learning.pptx
Security and Protection for Machine Learning.pptxteam-WIBU
 
License Portal - The DIY Solution
License Portal - The DIY SolutionLicense Portal - The DIY Solution
License Portal - The DIY Solutionteam-WIBU
 
Running code in secure hardware or cloud environments
Running code in secure hardware or cloud environmentsRunning code in secure hardware or cloud environments
Running code in secure hardware or cloud environmentsteam-WIBU
 

Mehr von team-WIBU (20)

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Unlocking the Future: Empowering Industrial Security
Unlocking the Future: Empowering Industrial SecurityUnlocking the Future: Empowering Industrial Security
Unlocking the Future: Empowering Industrial Security
 
The Power of Partnership: Enabling Success Together
The Power of Partnership: Enabling Success TogetherThe Power of Partnership: Enabling Success Together
The Power of Partnership: Enabling Success Together
 
Unleash the Power of CodeMeter - CodeMeter Basics
Unleash the Power of CodeMeter - CodeMeter BasicsUnleash the Power of CodeMeter - CodeMeter Basics
Unleash the Power of CodeMeter - CodeMeter Basics
 
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für GeschäftskontinuitätKeine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
 
No Time to Idle – License availability for business continuity
No Time to Idle – License availability for business continuityNo Time to Idle – License availability for business continuity
No Time to Idle – License availability for business continuity
 
Cloud-Based Licensing in Offline Scenarios
Cloud-Based Licensing in Offline ScenariosCloud-Based Licensing in Offline Scenarios
Cloud-Based Licensing in Offline Scenarios
 
Optimizing Cloud Licensing: Strategies and Best Practices
Optimizing Cloud Licensing: Strategies and Best PracticesOptimizing Cloud Licensing: Strategies and Best Practices
Optimizing Cloud Licensing: Strategies and Best Practices
 
For a Few Licenses More
For a Few Licenses MoreFor a Few Licenses More
For a Few Licenses More
 
App Management on the Edge
App Management on the EdgeApp Management on the Edge
App Management on the Edge
 
Protecting and Licensing .NET Applications
Protecting and Licensing .NET ApplicationsProtecting and Licensing .NET Applications
Protecting and Licensing .NET Applications
 
A Bit of License Management Magic
A Bit of License Management MagicA Bit of License Management Magic
A Bit of License Management Magic
 
The first step is always the most decisive
The first step is always the most decisiveThe first step is always the most decisive
The first step is always the most decisive
 
Protection and monetization of 3D printed objects in the spare parts business...
Protection and monetization of 3D printed objects in the spare parts business...Protection and monetization of 3D printed objects in the spare parts business...
Protection and monetization of 3D printed objects in the spare parts business...
 
Authenticate and authorize your IIoTdevices
Authenticate and authorize your IIoTdevicesAuthenticate and authorize your IIoTdevices
Authenticate and authorize your IIoTdevices
 
How and Why to Create and Sell Consumption-Based Licenses
How and Why to Create and Sell Consumption-Based LicensesHow and Why to Create and Sell Consumption-Based Licenses
How and Why to Create and Sell Consumption-Based Licenses
 
Serving Up Features-on-Demand for Every Appetite
Serving Up Features-on-Demand for Every AppetiteServing Up Features-on-Demand for Every Appetite
Serving Up Features-on-Demand for Every Appetite
 
Security and Protection for Machine Learning.pptx
Security and Protection for Machine Learning.pptxSecurity and Protection for Machine Learning.pptx
Security and Protection for Machine Learning.pptx
 
License Portal - The DIY Solution
License Portal - The DIY SolutionLicense Portal - The DIY Solution
License Portal - The DIY Solution
 
Running code in secure hardware or cloud environments
Running code in secure hardware or cloud environmentsRunning code in secure hardware or cloud environments
Running code in secure hardware or cloud environments
 

Schutz von Java-Anwendungen

  • 1. Schutz von Java- Anwendungen Günther Fischer Senior Consultant, Licensing and Protection Dr. Simon Kunz Java Security Expert AxProtector Java
  • 2. Agenda  Java Rückblick  Einführung: Sicherheit und Schutztechnologien für Java  AxProtector Java  Aktuelle Sicherheitsmechanismen  Java 9 Unterstützung ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 2
  • 3. Java Rückblick ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 3
  • 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.  Klassen werden immer als ganzes von der JVM geladen. ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 4
  • 5. Java – Write Once, Run Anywhere (WORA) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Java Program (.java) Interpreter (JVM) Java Compiler JAVAC Java Byte Code (.class /.jar) Windows Interpreter (JVM) Linux Interpreter (JVM) macOS … 5
  • 6. Java Architektur ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Classloader Java Program *.class Files Bytecode Verifier Interpreter (JVM) Host Operating System (Windows, Linux, macOS,..) Java API *.class Files 6
  • 7. Java Byte Code / Native Code Kombination ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Java Runtime (Java) Java Virtual Machine (Native Code) JNI (Native Code) C/C++ kann via JNI (Java Native Interface) genutzt werden 7
  • 8. Einführung: Sicherheit und Schutztechnologien für Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 8
  • 9. 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! ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 9
  • 10. 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) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 10
  • 11. Das Waffenarsenal der Angreifer (Java Decompiler .jar/.class -> .java) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 11
  • 12. Zahlreiche Informationsquellen ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 12
  • 13. Betrachtete Optionen  Obfuskierung  Java2Exe (JET Engine) bzw. Exe4j  Umwandlung in nativen Code  Evtl. weitere Verschlüsselung durch native Tools  Java Bytecode Verschlüsselung  Sonstige Methoden  Beispiel CodeMeter Core API ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 13
  • 14. Java Obfuscation Tools (KlassMaster/Allatori/ProGuard….) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 14
  • 15. Java Obfuscation Tools (KlassMaster/Allatori/ProGuard….) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Java2Exe/JAR2EXE  Excelsior JET Engine/Regex Jar2Exe 15
  • 16. Prinzip Java2Exe/Jar2Exe/Exe4J ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen JavaCode JavaByteCode NativerCode JAVAC Compiler Excelsior JET Compiler Exe4J Compiler 16
  • 17. Zusätzlicher Schutz durch Verschlüsselung ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen JavaCode JavaByteCode NativerCode Verschlüsselter nativerCode JAVAC Compiler Excelsior JET Compiler AxProtector Native Exe4J Compiler 17
  • 18. Aktuelle Sicherheitsmechanismen des AxProtector Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 18
  • 19. Verschlüsselung ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen  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 19
  • 20. Unverschlüsselter Code (CAFEBABE) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Magic Number Version Constant Pool Access Flag this Class super Class Interfaces Fields Methods Attributes 20
  • 21. Mit AxProtector Java geschützter Code ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Magic Number Version Constant Pool Access Flag this Class super Class Interfaces Fields Methods Attributes 21
  • 22. AxProtector Java  AxProtector Java  Java 1.6  Java 1.7  Java 1.8  Java 9  Java Anwendungen  Java Applets  Java Servlets ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 22
  • 23. AxProtector Java – Funktionsprinzip  AxProtector Java automatischer Schutz auf Klassen/Methodenebene durch Verschlüsselung des Bytecodes  Flexible Lizenzierungsmöglichkeiten  Jede Klasse wird automatisch beim Laden entschlüsselt. Dazu muss die AxProtector Runtime initialisiert werden:  Java-Anwendungen mit Main-Klasse => Automatisch durch Wrapper (com.wibu.xpm.Wrapper) ersetzt  manuelles Laden durch EntryPoint ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 23
  • 24. Verschlüsselung auf Klassenebene bzw. Methodenebene Verschlüsselung auf Klassenebene Klasse wird als ganzes verschlüsselt Klasse wird bei Verwendung komplett geladen und entschlüsselt ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen class Method 1 Method 2 Method 3 AxProtector class Method 1 Method 2 Method 3 24
  • 25. Verschlüsselung auf Klassenebene bzw. Methodenebene Verschlüsselung auf Methodenebene Methoden werden als neue Klassen extrahiert Methoden werden erst bei Verwendung geladen und entschlüsselt Erlaubt unterschiedliche Lizenzlisten für einzelne Methoden (IxProtector) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenziert class Method 1 Method 2 Method 3 25
  • 26. Verschlüsselung auf Klassenebene bzw. Methodenebene Verschlüsselung auf Klassen- und Methodenebene ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenziert class Method 1 Method 2 Method 3 Beispiel: Basis-Lizenz Feature-Lizenzen 26
  • 27. Die drei Arten der Verschlüsselungskonfiguration  Annotationen im Source Code  AxProtector GUI  xml-Konfigurationsdatei ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 27
  • 28. Annotationen im Source Code  @Protected (licenseList=0)  @Unprotected  @EntryPoint ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 28
  • 29. AxProtector GUI ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 29
  • 30. xml - Konfigurationsdatei ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 30
  • 31. Fallen (‘traps’) in einer Java Anwendung  Wird eine als Falle deklarierte Klasse oder Methode entschlüsselt, wird die Lizenz gesperrt: Firm Access Counter  0  Einfügen von Fallen: Manuell oder automatisch ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 31
  • 32. Fallen (‘traps’) in einer Java Anwendung Manuelles Einfügen über Annotation: ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenziert class Method 1 Method 2 Method 3 trap @Trap private static void Method3() { } 32 Beispiel-Referenzierung: if (tax > 100%) { Method3() }
  • 33. Fallen (‘traps’) in einer Java Anwendung Automatisches Einfügen durch Kommandozeilenoption ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Zum Beispiel fügt -trap1:70 zu ca. 70% der verschlüsselten Methoden Fallen hinzu class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 class Method 1 Method 2 Method 3 Ref 4 class Method 4 AxProtector summary output: 33
  • 34. Verschlüsselung des Konstantenpools (Option –caa1)  Konstante Einträge der Datentypen String, int und long im Konstantenpool bleiben durchgehend verschlüsselt  Entschlüsselung erfolgt bei Bedarf. Anschaulich:  Schlüssel ändern sich dynamisch ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen String a = “Hello World!”; String a = “ut3ilspNQ”; a = decrypt(a); Nativer Funktionsaufruf Bytecode Konstantenpool Java Klasse 34
  • 35. Verschlüsselung des Methodenkonrollflusses (Option –caa2) ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen class Ref 1 Ref 2 Ref 3 class XYZ class YZF class LQZ class Method 1 Method 2 Method 3 Verschlüsselt die Zuordnung zu den extrahierten Methoden Programmfluss kann nicht mehr nachvollzogen werden 35
  • 36. Namensobfuskierung  Anwendbar auf • Klassen • Methoden • Felder • Packages • Lokale Variablen  Individuell für Klassen und Methoden steuerbar  Auf verschlüsselte und unverschlüsselte Klassen/Methoden anwendbar ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Beispiel: 36
  • 37. Individuelle Namensobfuskierung via AxProtector GUI ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Beispiel: 37
  • 38. Integritätsprüfung  Schutz vor Manipulation von .class Dateien  Individuell für Klassen und Methoden steuerbar  Auf verschlüsselte und unverschlüsselte Klassen/Methoden anwendbar ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 38
  • 39. CodeMoving  CodeMoving: Verschlüsselter Code wird ausschließlich im CmDongle entschlüsselt und ausgeführt  Nur mit Universal Firm Code (UFC)  Nur mit CmDongles 3-xxx, kein CmActLicense  Nur lokal, nicht über LAN ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Method Code Ergebnis 39
  • 40. CodeMoving  CodeMoving Code muss derzeit in C geschrieben werden  CodeMoving Funktionalität wird bereits unterstützt  Derzeit wird an Automatismus zur Codeübersetzung geforscht ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Java AddIntegers.c Keine echte Programmlogik im Java Code.  Wird vom AxProtector durch CodeMoving Aufruf ersetzt 40
  • 41. Java 9 Unterstützung ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 41
  • 42. Java 9 Unterstützung  Einführung von Modulsystem Jigsaw  Jar Dateien können modularisiert erstellt werden: Modulare Jars mit zusätzlicher Rechteverwaltung  AxProtector Java unterstützt die Verschlüsselung modularer Jars ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen Module.jar AxProtector Module.jar com.wibu.xpm.jar 42
  • 43. Deutschland: +49-721-931720 USA: +1-425-7756900 China: +86-21-55661790 http://www.wibu.com info@wibu.com Vielen Dank für Ihre Aufmerksamkeit! ©2018, WIBU-SYSTEMS AG. All rights reserved. - Schutz von Java-Anwendungen 43