Guide d intégration Protection de logiciels 4D avec DinkeyPRO/FD Contact Commercial : Tél. : 02 47 35 70 35 Email : com@aplika.fr Contact Technique : Tél. : 02 47 35 53 36 Email : support@aplika.fr Version 2.00 du 20/06/2011 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 : aplika@aplika.fr
Guide d intégration DinkeyPRO/FD 4D 1. Introduction... 3 2. Intégration des tests de protection sous 4D... 3 2.1. Fonction de test de protection... 3 2.2. Code exemple 4D... 4 2.3. Tableau des valeurs de FLAGS... 5 2.4. Protection du module 4D... 5 3. Déploiement de votre application... 9 2
Guide d intégration DinkeyPRO/FD 4D 1. Introduction Afin de vous aider dans les premiers pas de la pose de protection sur vos logiciels 4D, 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 des plugins 4D de notre fourniture, pour Windows 32 et 64 bits et pour Mac OS X. Ces plugins sont disponibles dans le fichier ddpro.bundle.zip qui contient donc les plugins pour Windows et Mac. Le code exemple joint a été testé avec 4D V12, cependant, il est compatible avec les autres versions de 4D. Pour que notre exemple de protection fonctionne parfaitement, vous devez disposer d un dossier Plugins (situé dans le même répertoire que celui contenant le code exemple ou la base que vous désirez protéger) et vous devez y copier notre plugin. S il n existe pas de dossier plugins pour votre base à protéger, créez le et copiez-y le contenu de ddpro.bundle.zip. Pour l utilisation de nos plugins, vous devez simplement extraire les fichiers plugins de l archive ddpro.bundle.zip en prenant soin de conserver le nom et la structure des répertoires. L arborescence complète doit impérativement être la suivante : ddpro.bundle - Contents - Windows - ddpro.4dx - Windows64 - ddpro.4dx - MacOS - ddpro - Resources Pour un OS non utilisé vous pourrez supprimer le répertoire et les fichiers concernés. Pour Mac, la structure ddpro.bundle est reconnue comme étant un fichier simple ddpro.bundle. Pour visualiser le contenu du bundle choisir l option Show Package Contents. Pour protéger votre application, vous devrez donc protéger le ou les fichiers plugin en utilisant DinkeyADD, en spécifiant la méthode API comme méthode de protection. Vous ne protégez pas directement votre base 4D. Les fichiers à protéger sont, pour : Windows 32 bits -> ddpro.4dx (ddpro.bundle\contents\windows\ddpro.4dx) Windows 64 bits -> ddpro.4dx (ddpro.bundle\contents\windows64\ddpro.4dx) Mac OS X -> ddpro (ddpro.bundle\contents\macos\ddpro) Remarque : une fois protégée avec DinkeyADD ne laissez pas de version non protégée des fichiers plugins dans l'arborescence ddpro.bundle, même si les fichiers ont été renommés. 4D pourrait charger un plugin non protégé et cela entraînerait une erreur 413 lors de test de protection. 2. Intégration des tests de protection sous 4D 2.1. Fonction de test de protection Remarque Ce code exemple est uniquement destiné à illustrer la syntaxe d appel des 10 principales méthodes et fonctions de test de protections listées ci-après. Vous devrez adapter ce code pour réaliser les appels nécessaires à la protection de votre programme en fonction de vos besoins précis. Il n est pas nécessaire de faire appel à l ensemble de ces fonctions, l exemple est juste un guide mettant en évidence leurs utilisations et fonctionnalités. 3
Vous pourrez, par exemple, faire un ou plusieurs appels à la fonction de test de présence de la clé à l ouverture de votre base de données (Database Methods On Startup). Cette partie est implémentée mais désactivée par une mise en commentaire dans notre code exemple. Attention toutefois à préalablement faire une copie non protégée de votre base de données avant d y appliquer notre protection. Une mauvaise utilisation pourrait bloquer l accès aux données. Les 10 principales fonctions sont : ProtCheck ProtCheckWithAlg WriteBytes ReadBytes EncryptUserData Test simple de protection Test de protection plus execution d un algorithme Test de protection et lecture de la zone de données Test de protection et écriture de la zone de données Test de protection et cryptage/décryptage des données // Les fonctions suivantes sont équivalentes aux fonctions précédentes mais utilisent en plus l option de cryptage du DRIS option à indiquer dans DinkeyADD ProtCheckEnc Test simple de protection ProtCheckWithAlgEnc Test de protection plus exécution d un algorithme WriteBytesEnc ReadBytesEnc EncryptUserDataEnc Test de protection et lecture de la zone de données Test de protection et écriture de la zone de données Test de protection et cryptage/décryptage des données Attention : Si vous utilisez des dongles Dinkey Lite, vous ne pourrez utiliser que les fonctions suivantes : ProtCheck, ProtCheckWithAlg, ProtCheckEnc et ProtCheckWithAlgEnc Ces fonctions dépendent également de l utilisation d'autres fonctions simples. Vérifiez, parmi vos fonctions utilisées, celles que vous devez également ajouter à votre code. Pour notre exemple, nous avons besoin des fonctions : InitialiseDris SetDrisFunction SetDrisFlags DisplayError GetDrisSDSN 2.2. Code exemple 4D Nous joignons à notre exemple deux fichiers, sample.4db et sample.4dd. Cet exemple complet et prêt à l emploi a été mis en œuvre pour que la variable DRIS soit de type BLOB. Nous fournissons également des fonctions SetDris... pour initialiser les variables du DRIS et les fonctions GetDris... pour obtenir les valeurs contenues dans le DRIS (après test de protection par exemple). Vous pourrez également, dans votre projet, faire appel aux fonctions SetDris et GetDris dont vous aurez besoin pour votre propre protection. 4
Les parties de code repérées par des fonctionner correctement.!!!! doivent être personnalisées avec vos propres valeurs pour Remplacer le SDSN de demo 10101 par votre numéro SDSN dans les 10 fonctions principales. Changer le code MyAlgorithm (si vous utilisez vos algorithmes) Changer le code de CryptDRIS (si vous utilisez le cryptage du DRIS dans DinkeyADD) Changer CryptApiData (Si vous utilisez la fonction de cryptage des données) Changer le code de MyRWAlgorithm (si vous utilisez le cryptage des données ou l algorithme R/W de nos APIs) Vous remplacerez probablement la fonction DisplayError par votre propre code afin d uniformiser l affichage des codes d erreurs de protection avec les autres fenêtres de votre application. 2.3. Tableau des valeurs de FLAGS 0 = test par défaut. 1 = décrémente de 1 le compteur d exécutions. 2 = décrémente le compteur d exécutions de la valeur indiquée dans execs_decrement, utilisée avec les fonctions DDSimpleCheckEx et DDSimpleCheckAlgEx. 4 = Démarre un utilisateur réseau. 8 = Stoppe un utilisateur réseau. 32 = Vérifie les ports USB locaux avant de rechercher un dongle réseau (DinkeyServer). 64 = Vérifier d abord si un dongle réseau est disponible, puis scrute les ports USB locaux. 128 = Fait un test de protection en vérifiant le nom du programme appelant indiqué dans alt_prog_name avec les fonctions DDSimpleCheckEx et DDSimpleCheckAlgEx. 256 DONT_SET_MAXDAYS_EXPIRY - Si la date d expiration n a pas été calculée, ne pas le faire cette fois. 512 MATCH_DONGLE_NUMBER - Restreindre le test à un numéro de série de dongle précis (valeur indiquée dans le champ DRIS). 2.4. Protection du module 4D Si vous faîtes appel au plugin sans l avoir préalablement protégé avec DinkeyADD, alors vous obtiendrez un code erreur 413. Pour protéger les plugins, veuillez procéder comme suit. Remarques Vous devez protéger les plugins et pas directement vos applications. Vos programmes faisant appel aux plugins protégés seront alors également protégés. Pour Windows, vous protégerez le fichier ddpro.4dx. Sous Mac OS X, vous devrez protéger le fichier ddpro (situé dans Contents/MacOS dans ddpro.bundle). 5
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 diagnostic de la clé. Indiquez le Code Produit (pour les clés d'évaluation, celui-ci est "DEMO"). Dans l'onglet "Profils Licences" : Créez le Profil Licence "DEMO". 6
Dans l'onglet "Programmes" : C:\Program Files (x86)\dinkeypro\modules\4d\ddpro.4dx C:\Program Files (x86)\dinkeypro\modules\4d\protégé\ddpro.4dx Cliquez sur le bouton "Ajouter à la liste". Dans le champ "Chemin source", pointez sur le fichier plugin correspondant à votre utilisation (celui-ci se trouve par défaut dans le sous-dossier "Modules" du dossier d'installation de DinkeyPRO). Dans le champ "Chemin cible", indiquez l'emplacement vers lequel vous souhaitez qu'une copie protégée du plugin 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. Le fichier plugin/api est ajouté à la liste des programmes. ddpro.4dx x 7
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. 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. 8
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 du/des plugin(s) utilisé(s) dans le dossier vers lequel vous aurez pointé dans le champ "Chemin cible" de la fenêtre "Détails de la protection des fichiers". 3. Déploiement de votre application Vous devrez fournir les fichiers plugin en version protégée par DinkeyADD et leur arborescence avec votre logiciel. Ces fichiers doivent être copiés sur les postes utilisateurs Si les fichiers plugins ne sont pas présents une erreur surviendra. 9
La Foltière - 37270 AZAY/CHER Tél. 02 47 35 70 35 - Fax 02 47 35 70 25 e-mail : aplika@aplika.fr www.aplika.fr 10