Protection de logiciels en JAVA

Transcription

Protection de logiciels en JAVA
Guide d’intégration
Protection de logiciels
en JAVA avec
DinkeyPRO/FD
Contact Commercial :
Tél. : 02 47 35 70 35
Email : [email protected]
Contact Technique :
Tél. : 02 47 35 53 36
Email : [email protected]
Version 1.00 du 30/01/2014
La Foltière - 37270 AZAY SUR CHER
Tél. 33(0)2 47 35 70 35 - Fax 33(0)2 47 35 70 25 - e-mail : [email protected]
Guide d’intégration DinkeyPRO/FD JAVA
1. Introduction ................................................................................................................................................ 3
2. Exemple de test projet DPSample.java ..................................................................................................... 3
2.1.
Ouverture du projet – Test simple de la protection avec une clé de DEMO .................................... 3
2.2.
Protection des modules JAVA avec DinkeyADD ............................................................................. 4
2.3.
Compilation et obfuscation de votre code JAVA .............................................................................. 8
3. Adaptation du code exemple à votre projet ............................................................................................... 8
4. Etape pour l’intégration de la protection à votre application JAVA ............................................................ 9
5. Note importante ......................................................................................................................................... 9

2
Guide d’intégration DinkeyPRO/FD JAVA
1. Introduction
Afin de vous aider dans les premiers pas de la pose de protection sur vos logiciels JAVA, vous trouverez dans
ce guide de prise en main rapide l’essentiel des commandes et fonctionnalités pour la bonne utilisation des clés
DinkeyPRO/FD.
Méthode utilisée : API avec appel de au module DPJava à partir de votre code JAVA. Les modules peuvent
porter des noms différents en fonction des différentes plate-forme utilisées. Elles seront par contre toujours
référentes à DPJava dans votre code
Pour Windows les modules se nomment DPJava.dll (32-bit) et DPJava64.dll (64-bit).
Pour Linux les modules se nomment libDPJava.so (32-bit) et libDPJava64.so (64-bit).
Pour MAC les modules se nomment libDPJava.jnilib (32-bit) et libDPJava64.jnlib (64-bit).
Si vous désirez renommer ces modules (seulement la parties communes à tous ‘DPJava’), vous devrez alors
modifier ce nom dans le source DinkeyPro.java. Dans le cas contraire vous pourrez utiliser directement les
class DinkeyPRO
Ces fichiers sont les fichiers à protéger en utilisant l’outil DinkeyADD développeur fournis dans le SDK
DinkeyPRO, en utilisant la méthode API. Ces fichiers devront être placés dans un des dossiers spécifiés dans
les propriétés systèmes de java.library.path. Nous vous invitons à vous référer à la documentation Java de
System.loadLibrary() et System.getProperties() pour plus d'information.
DinkeyPro.class et un fichier class Java fournissant les méthodes API Java et les champs à utiliser dans votre
application. La class DinkeyPro représente une partie du package uk.microcosm.dinkeydongle. Reportez-vous
à la documentation de votre environnement de développement pour pus d'informations sur l'intégration de ce
package à votre projet. La suite de ce chapitre détaille l'interface entre la class DinkeyPro et votre application.
Des exemples sont également disponibles dans le dossier "Samples\Java" du dossier d'installation DinkeyPRO.
Pré-requis
La class DinkeyPro ne contient que des méthodes statiques et des champs, elle ne peut être instanciée.
2. Exemple de test projet DPSample.java
2.1. Ouverture du projet – Test simple de la protection avec une clé de DEMO
 Contenu de l’exemple :

DPSample.java contient le source principale faisant les appels à la protection DinkeyPRO

DinkeyPro.class class JAVA prêt à l’emploi contenant la définition de la structure DRIS, et de
fonctions utiles à DinkeyPRO

DinkeyPro.java code source ayant servi à générer DinkeyPro.class (n’est pas à utiliser directement ;
sert à une meilleur compréhension de notre solution et éventuellement dans le cas ou vous
souhaiteriez renommer les libraires).
 Afin de rendre l’utilisation plus facile de la class DinkeyPro nous l’avons placée dans le package

uk.microcosm.dinkeydongle
Le code DPSample.java contient l’implémentation de 11 fonctions différentes de test de protection. Ceci à
titre de démonstration. Vous pourrez ensuite décider de laquelle ou desquelles utiliser dans votre projet
définitif en fonction de votre besoin. Le but est de vous permettre de comprendre rapidement les étapes

3
d’intégration et de vous aider dans la création de vos fonctions de test de protection en présentant un large
choix .
N’oubliez pas de consulter le guide utilisateur DinkeyPRO et particulièrement la rubrique ‘Améliorez votre
protection’
Vous pourrez également personnaliser vos messages d’erreur à votre guise.
Remarque : Avec cette solution vous ne protégez pas directement votre EXE. La sécurité de votre logiciel est
assurée via nos APIs. Ce sont donc ces dernières qu’il convient de protéger avec notre outil DinkeyADD.
Le fait de linker votre EXE à nos APIs garanti sa sécurité. Nous appelons cette méthode protection API.
2.2. Protection des modules JAVA avec DinkeyADD
Ouvrez l'utilitaire DinkeyAdd.
Dans l'onglet "Général" :



Précisez le type de clé que vous utilisez. En cas de doute, exécutez DinkeyLook afin d'afficher un
diagnostique de la clé.
Indiquez le Code Produit (pour les clés d'évaluation, celui-ci est "DEMO").
4
Dans l'onglet "Profils Licences" :

Créez le Profil Licence "DEMO".
Dans l'onglet "Programmes" :








Cliquez sur le bouton "Ajouter à la liste".
Dans le champ "Chemin source", pointez sur le ou les fichiers DPJava.dll (choisissez parmi tous les
modules JAVA disponible ceux qui correspondent à vos besoins en termes de système d’exploitation
d’installation) répétez cette étape pour chacun d’entre eux.
Dans le champ "Chemin cible", indiquez l'emplacement vers lequel vous souhaitez qu'une copie
protégée de DPJava.dll soit placée.
Choisissez le Profil Licence "DEMO" précédemment créé.
Vérifiez que la méthode "API" est bien sélectionnée.
Laissez les valeurs par défaut pour les champs suivants.
Validez en cliquant sur le bouton OK.
5
Le fichier DPJava.dll est ajouté à la liste des programmes.
Dans l'onglet "Zone de données" :


Initialisez la taille de la zone de données sécurisée, par exemple 1000 octets. Le code exemple fourni
permet de tester la lecture/écriture à vers/à partir de la zone de données sécurisée. Ceci ne
fonctionnera que si cette zone est initialisée avec une taille suffisante pour recevoir les données de
test.
6
Remarques :
 Selon le type de clé (DinkeyPRO ou DinkeyFD) choisi dans l'onglet "Général", les paramètres de la
zone de données correspondante seront activés dans l'onglet "Zone de données".
 Seules les versions Plus et Net disposent d'une zone de données sécurisées.
Dans l'onglet "Protéger" :




Vérifiez que l'option "Protéger l'application et programmer le dongle" est sélectionnée.
Assurez-vous que le dongle est connecté.
Cliquez sur le bouton "Ajouter la protection maintenant"
Un message de confirmation apparaît.
Vous disposerez alors d'un dongle correctement programmé, ainsi que d'une version protégée de DPJava.dll
dans le dossier vers lequel vous aurez pointé dans le champ "Chemin cible" de la fenêtre "Détails de la
protection des fichiers".
Copiez alors le ou les modules JAVA protégé(s) dans le dossier java.library.path

7
2.3. Compilation et obfuscation de votre code JAVA
Le langage JAVA étant un langage interprété l’accès à son code est assez simple et non protégé nativement.
Par conséquent une fois la protection intégrée comme expliqué ci-avant nous conseillons l’utilisation d’une
solution d’obfuscation.
Nous avons le retour de certains de nos clients qui combinent à nos solutions l’utilisation d’outils de type
Jinstaller ou ProGuard. Ce type d’outils, utilisés en combinaison à notre protection, permettent un réglage très
pertinent de l’obfuscation du code dans le cas où cela est nécessaire et offre une protection accrue.
Pour plus de détail sur l’obfuscation de code JAVA nous vous conseillons la lecture de l’article suivant :
http://www.excelsior-usa.com/articles/java-obfuscators.html
Vous trouverez également différentes informations sur Jinstaller à l’adresse suivante :
http://www.componio.com/products/jinstaller/
Beaucoup de nos clients utilisant des solutions d’obfuscation conseil également l’utilisation de ProGuard :
http://proguard.sourceforge.net/
Le site ProGuard permet également un comparatif des solutions existantes avec des liens.
http://proguard.sourceforge.net/index.html#/alternatives.html
Remarque : Sur un EXE Java il est possible d’appliquer une protection Shell DinkeyPRO nous ne déconseillons
pas son utilisation mais nous vous invitons dans ce cas à utiliser systématiquement la méthode de protection
API en complément de la méthode de protection Shell.
ATTENTION : Par sécurité notre solution de protection contient un code anti-debug qui ne permet pas le test du
projet en mode debug. Vous ne pourrez plus débugger un projet contenant l’appel à DPJava.dll comme le
montre l’écran suivant.
ATTENTION : Vous ne pourrez pas avec les modules JAVA utiliser l’option ‘Programme appelant’ dans
DinkeyADD
3. Adaptation du code exemple à votre projet
Le code exemple est fourni prêt à l’emploi pour une utilisation avec nos clés de démonstration. Pour adapter ce
code à votre propre SDK (si vous disposez d’un numéro de série développeur et de clés associées) il suffit de
modifier les parties repérées par !!! dans le fichier DPSample.java
* Modifier MY_SDSN il doit correspondre à votre numéro de série développeur (SDSN de demo = 10101)
* Modifier le code de MyAlgorithm (seulement si vous utilisez cette fonctionnalité)
* Modifier le code de CryptDRIS (si vous cryptez le DRIS)
* Modifier CryptApiData (si vous cryptez les données échangés entre votre EXE et DPJava.dll
* Modifier le code de MyRWAlgorithm (Si vous cryptez les données envoyées à nos API en utilisant la fonction
R/W algorithme)

8
4. Etape pour l’intégration de la protection à votre application JAVA
1/ Modifiez votre code en ajoutant les appels aux fonctions de test de présence de la clé en vous inspirant du
code exemple DPSample.java
2/ Ajouter la class DinkeyPro.class à votre déploiement JAVA
3/ Utilisez DinkeyADD pour protéger le ou les modules requis (Tous les modules y compris les modules Mac et
linux sont présent dans le répertoire d’installation DinkeyPRO après exécution du setup.exe – Fichier du SDK
DinkeyPRO situé dans DinkeyPRO/Windows
4/ Pour rendre l’installation de votre logiciel ainsi protégé plus facile, ajouter les modules utilisés dans un
package en créant un fichier jar.
5. Note importante
L’implémentation de DDProtCheck est maintenant simplifiée puisqu’elle n’accepte qu’un seul paramètre (data),
cela est rendu possible car la structure DRIS est définie dans DinkeyPro.class. Si vous souhaitez accéder à un
élément précis du DRIS il conviendra d’utiliser les fonctions telles que SetAltLicenceName, GetProdCode,
GetFDDrive.
Pour fonctionner sous Linux la solution DinkeyPRO nécessite l’exécution du script ‘inst’, disponible dans le SDK
Linux. Si vous ne l’avez pas, faites-nous en la demande.

9
La Foltière - 37270 AZAY/CHER
Tél. 02 47 35 70 35 - Fax 02 47 35 70 25
e-mail : [email protected]
www.aplika.fr

10