FAQ Validy Technology

Questions fréquemment posées à propos de Validy® Technology

1. Qu’est ce que Validy Technology?
2. Comment VT fonctionne–t’il?
3. Que signifie intégrité du programme?
4. Puis-je extraire le contenu d’un jeton?
5. Pourquoi ne pas exécuter la totalité d’un programme dans le jeton?
6. Pourquoi ne pas exécuter un sous-programme dans le jeton?
7. Comment VT empêche-t-il l’examen du trafic entre le jeton et l’ordinateur?
8. Est-ce que VT est un “dongle”?
9. Est-il possible d’utiliser VT à travers un réseau?
10. Comment VT permet-il le paiement à l'utilisation?
11. Comment VT s’adapte t’il à la taille du programme protégé?
12. Comment VT s’adapte t-il à la quantité de données gérée par le programme protégé?
13. Comment fonctionne la mémoire virtuelle du jeton VT?
14. VT peut-il être utilisé pour protéger des programmes “multithreads” exécutés par des machines multiprocesseurs?
15. Comment VT gère-t’il la mise à jour des programmes protégés?
16. Quels sont les langages de programmation supportés par VT?
17. Est-ce que d’autres langages sont supportés?
18. Est-ce que VT fonctionne mieux avec les langages interprétés (Java/C#) qu’avec les langages natifs (C/C++)?
19. Quelle est la dépendance de VT aux systèmes d’exploitations et aux microprocesseurs?
20. Comment est appliquée la protection ?
21. Combien de temps faut-il pour protéger un programme?
22. Pourquoi Validy fournit-il un simulateur de jeton?
23. Est-ce que VT peut être reverse engineered?
24. A propos des mécanismes de chargement de clé?
25. Je souhaiterais utiliser les principes de protection de VT mais je ne peux pas utiliser l’implémentation actuelle.

1.

Qu’est ce que Validy Technology?

Validy Technology (VT) est un système qui permet de protéger les logiciels contre le piratage et d’assurer leur intégrité. Il combine l’utilisation d’un logiciel de compilation et d’un petit dispositif électronique appelé jeton.

2.

Comment VT fonctionne–t’il?

Une petite partie de l’état dynamique du programme protégé (variables, champs d’objets) est localisée dans le jeton, hors d’atteinte des hackers. Cette partie d’état cachée est gérée dans le jeton par des instructions sécurisées et une information ne sort du jeton que lorsqu’elle est absolument nécessaire au programme protégé pour continuer son exécution. De plus, le jeton contrôle en permanence l’intégrité du flux d’instructions sécurisées. Il s’arrête de fonctionner dès qu’il détecte une anomalie dans ce flux qui signale une attaque.

3.

Que signifie intégrité du programme?

Un attaquant peut modifier un programme pour le faire se comporter d'une manière différente de celle qui avait été prévue. Les virus sont une forme connue de telles modifications mais une attaque ciblée contre un programme particulier peut s'avérer encore plus dommageable en détournant des informations précieuses ou en altérant le fonctionnement d'un système informatique critique à l'insu de ses utilisateurs. VT contribue à réduire ce risque en rendant très difficile la modification d'un programme de manière furtive.

4.

Puis-je extraire le contenu d’un jeton?

Non, un jeton est une puce spécialement conçue pour garder ses données secrètes et pour exécuter un programme de manière sécurisée. Un jeton ne renvoie des informations vers le processeur principal qu'au cours de l'exécution normale d'un programme. Il n'existe pas d'autre méthode pour accéder à son état interne. Un attaquant ne peut compter vider le contenu du jeton en enchaînant plusieurs ordres de sortie. Le jeton détectera l’attaque et arrêtera de répondre. Dans le cas où les contraintes de sécurité sont très fortes, le jeton peut même effacer les données qu’il contient, ce qui revient à ce qu’il s’“auto-détruise”.

5.

Pourquoi ne pas exécuter la totalité d’un programme dans le jeton?

Un jeton est optimisé pour la sécurité, plutôt que pour les performances. Il est trop lent et ne contient pas assez de mémoire pour exécuter la grande majorité des programmes. Avec Validy Technology, seule une petite partie du programme s’exécute dans le jeton, mais cette petite partie du programme est essentielle au fonctionnement correct du programme.

6.

Pourquoi ne pas exécuter un sous-programme dans le jeton?

En capturant le trafic pour étudier les paramètres et les résultats d’un sous-programme exécuté par le jeton, un attaquant peut souvent apprendre et comprendre son comportement interne et le court-circuiter en le simulant voire même dans certaines conditions rejouer des séquences de requêtes et de réponses préalablement enregistrées.

7.

Comment VT empêche-t-il l’examen du trafic entre le jeton et l’ordinateur?

VT n’empêche pas l’examen du trafic entre le jeton et l’ordinateur. Le runtime de VT offre même des facilités pour tracer et afficher ce trafic. Cependant VT dispose d’un mécanisme qui lui permet de s’assurer que les communications ne pourront pas être rejouées et que la communication véhicule le moins d’information possible sur le comportement interne du jeton. Par exemple, si une fonction est exécutée dans le jeton il est très difficile à un attaquant de détecter que cette fonction est exécutée.

8.

Est-ce que VT est un “dongle”?

Oui, le jeton VT est “un composant électronique qui doit être connecté à l’ordinateur pour qu’un programme protégé puisse s’exécuter”, ce qui est bien la définition d’un “dongle”. Mais le dongle VT utilise des principes très différents de ceux qui sont mis en oeuvre par un dongle au sens classique du terme.

9.

Est-il possible d’utiliser VT à travers un réseau?

Non, la latence est trop élevée. De plus un jeton gère les données “runtime” d'un seul programme actif, aussi un serveur de jeton en réseau ne pourrait être utilisé que par un seul programme à un moment donné.

10.

Comment VT permet-il le paiement à l'utilisation?

Le jeton contient des compteurs persistants qui permettent de limiter son utilisation. La durée d’utilisation de l’ensemble du programme ou de certaines de ses fonctions peut être limitée ce qui rend possible l’application d’une licence d’utilisation à la durée ou un mode de paiement à l’utilisation.

11.

Comment VT s’adapte t’il à la taille du programme protégé?

Le jeton VT se comporte comme un co-processeur esclave qui reçoit des instructions du processeur principal. Son principe de fonctionnement est similaire à celui des co-processeurs arithmétiques à virgule flottante. Le jeton n’embarque pas de morceaux du programme à protéger mais seulement les moyens lui permettant de décoder et d’exécuter des instructions. Son comportement et ses performances sont donc largement indépendants de la taille du programme à protéger.

12.

Comment VT s’adapte t-il à la quantité de données gérée par le programme protégé?

Comme beaucoup de co-processeurs, le jeton possède des instructions pour :

  • charger des données de sa mémoire vers des registres,

  • exécuter des opérations logiques et arithmétiques entre registres,

  • stocker des données provenant des registres dans la mémoire.

Ceci lui permet de supporter efficacement les langages de haut niveau. Mais contrairement aux autres co-processeurs qui communiquent directement avec la mémoire de l’ordinateur, le jeton gère un espace mémoire qui lui est propre et qui réside au coeur du jeton de manière à cacher les informations qu’elle contient. Par conséquent, VT est sensible à la taille des données à protéger mais ce n’est pas un problème “matériel” car le jeton VT contient des mécanismes de gestion de mémoire virtuelle qui s’applique à sa mémoire interne.

13.

Comment fonctionne la mémoire virtuelle du jeton VT?

Le jeton implémente un mécanisme de pagination à la demande presque standard entre sa mémoire interne et la mémoire de stockage secondaire. Avant de déplacer une page vers la mémoire de stockage secondaire, le jeton le crypte et l’authentifie grâce à son accélérateur cryptographique haute performance. Le stockage secondaire peut être soit de la RAM statique non sécurisée connectée au co-processeur soit la mémoire principale de l’ordinateur. Quand une page est récupérée dans la mémoire de stockage secondaire, son intégrité est vérifiée puis la page est décryptée avant d’être utilisée.

14.

VT peut-il être utilisé pour protéger des programmes “multithreads” exécutés par des machines multiprocesseurs?

Oui, le jeton maintient un contexte (registres et pile) propre à chaque thread du programme protégé.

15.

Comment VT gère-t’il la mise à jour des programmes protégés?

Très facilement, quand un jeton est personnalisé, la seule information spécifique qu’il contient est une clef cryptographique qui lui permet de décrypter les instructions qu’il reçoit. Tous les programmes qui ont été protégés en utilisant la même clef de cryptage peuvent fonctionner avec un jeton qui contient cette clef. Par exemple, un éditeur de logiciel peut protéger une version majeure et toutes les versions mineures suivantes d’un programme avec une même clef, mais changer de clef pour la version majeure suivante s’il souhaite vendre la version majeure/la licence/le jeton à son client. Toutes les versions du logiciel peuvent être gratuitement disponibles et téléchargeables et ne pourront pas être utilisées sans jeton.

16.

Quels sont les langages de programmation supportés par VT?

VT supporte actuellement les programmes Java.

17.

Est-ce que d’autres langages sont supportés?

D’autres langages seront supportés, notamment les langages C/C++ et C#.

18.

Est-ce que VT fonctionne mieux avec les langages interprétés (Java/C#) qu’avec les langages natifs (C/C++)?

VT fonctionne aussi bien avec les langages interprétés qu’avec les langages natifs.

19.

Quelle est la dépendance de VT aux systèmes d’exploitations et aux microprocesseurs?

VT pour Java est implémenté comme un co-processeur à la machine virtuelle Java. En tant que tel, VT fonctionne sur tous les processeurs et tous les systèmes ou les équipements qui embarquent une machine virtuelle Java et qui disposent pour le jeton d’un port de communication USB utilisant le pilote USB CCID.

Nous avons testé VT pour Java sur différentes versions de Windows et de Linux. L’implémentation C/C++ nécessitera quelques ajustements au système d’exploitation cible et au processeur.

20.

Comment est appliquée la protection ?

Pendant la compilation, des transformations sont appliquées au code du programme pour produire un code objet mélangeant les instructions pour le processeur cible (ou la machine virtuelle) et des instructions pour le co-processeur (jeton). Pour Java, les transformations sont appliquées comme une étape supplémentaire de traduction convertissant le bytecode en un nouveau bytecode intégrant la machine virtuelle Java et le jeton. Pour C/C++, les compilateurs modernes permettent à une tierce partie d’ajouter des transformations de code et de modifier les processeurs cibles.

21.

Combien de temps faut-il pour protéger un programme?

Le programmeur doit d’abord identifier les variables qu’il veut protéger, c’est à dire celles qui seront placées dans la mémoire du jeton. Si l’identification est faite pendant la phase d’écriture du programme, le temps nécessaire à la protection est négligeable. Si la protection est faite sur un programme déjà existant, le temps nécessaire peut aller de quelques minutes à quelques jours suivant la taille et la complexité du programme. Le programme peut être compilé en mode protégé ou en mode normal. La génération en mode normal, non protégé est complètement standard et permet de déboguer et de tester absolument tout à l’exception de la protection. La génération en mode protégé comprend l’étape de traduction. Elle permet de tester et déboguer le programme avec la protection, dans ce cas la génération est ralentie approximativement d’un facteur 2.

22.

Pourquoi Validy fournit-il un simulateur de jeton?

Validy fournit un simulateur de jeton avec un kit d’évaluation pour permettre aux clients de tester eux mêmes la protection et de bien comprendre comment elle fonctionne. Le simulateur n’apporte pas de protection réelle puisque contrairement au jeton, un programmeur compétent peut facilement observer le fonctionnement du simulateur. En dehors de l’attaque du jeton, la plupart des autres aspects de la protection peuvent être étudiés avec ce simulateur.

23.

Est-ce que VT peut être reverse engineered?

La sécurité de VT ne se fonde pas sur le secret de ses principes ou de son implémentation, mais seulement sur le fait qu’un jeton peut garder secrète une petite quantité de données et de calculs. Validy utilise des circuits intégrés sécurisés fabriqués par des fondeurs reconnus qui assure au jeton un bon niveau de sécurité particulièrement dans leur capacité à résister aux attaques. Les circuits intégrés sécurisés modernes sont protégés contre les dernières attaques physiques et logiques tels que les Side Channel Attacks et les attaques par injection de fautes. Chaque nouvelle génération de circuit intégré sécurisé se voit ajouter des contre-mesures supplémentaires. Validy est en train de travailler avec des agences de certification indépendantes afin d’avoir une solution complète certifiée. Les clients qui le désirent peuvent aussi réaliser un audit de la solution.

24.

A propos des mécanismes de chargement de clé?

La version actuelle de VT se concentre sur les fonctions de protection et utilise une clef de cryptage inscrite dans le jeton au moment de sa personnalisation. Ce système permet aux éditeurs de logiciels de personnaliser leurs jetons avant de les expédier. Les prochaines versions implémenterons un système plus souple de gestion des clés et de leur distribution en utilisant un protocole standard à clé public.

25.

Je souhaiterais utiliser les principes de protection de VT mais je ne peux pas utiliser l’implémentation actuelle.

Cela ne pose aucun problème. Validy peut concéder des licences sur VT et laisser ses clients développer leur propre implémentation. Validy peut accompagner les clients qui souhaitent développer leur propre implémentation. Dans ce cas, l’implémentation actuelle peut être vue comme une implémentation pilote. Validy s’attend même à ce que ce modèle d’affaire soit le modèle standard pour les groupes de taille mondiale.