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