schritt für schritt zur geschützen java-anwendungen

Post on 22-Jan-2018

881 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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!

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

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

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

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

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

Prinzip des AxProtector Java

Verschlüsselte Klasse auf der

Festplatte

Klasse im Speicher

AxProtector RuntimeJVM

loadClass

30

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

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

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

Attributes

35

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

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

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

Update der Signaturen

44

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

WEITERE VERFAHREN

46

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

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 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

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()

cmValidateSignature()

51

Core API – Dokumentation und Beispiele

CodeMeter Java API Help (HTML Format)

Servlet Sample

CmCalculator

CmDemo

Lizenzzugriff

Auslesen von Lizenzen

Verschlüsselung

52

EIN PAAR WORTE ÜBER CODEMETER

53

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

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

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

Automatische Verwaltung der Lizenzen

Ticket

Artikel-Nr.

Lizenz

Ticket

Liz

enzg

eber

Liz

enzn

ehm

er

Ticket

57

ZUSAMMENFASSUNG

58

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

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

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

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

top related