Technologie

Validy Softnaos est la preuve de concept (POC) de Validy Technology (Brevetée).

Vous êtes confronté au piratage (copie illicite) de vos logiciels, au sabotage (attaque de l'intégrité) de vos systèmes informatiques. Validy SoftNaos combine un post-compilateur et un coprocesseur sécurisé et vous permet de ne pas en perdre le contrôle.

Après transformation par Validy SoftNaos, votre application se compose d'un fin mélange d'instructions inchangées qui s'exécutent sur le PC de l'utilisateur et d'instructions transformées que seul peut interpréter le coprocesseur sécurisé sous forme d'un jeton USB.


L'utilisateur conserve le contrôle total de sa machine mais votre application protégée ne peut s'exécuter que sur un système hybride dont vous maîtrisez un élément. Ce principe est radicalement différent de celui des dongles habituels.

Seule la clef secrète utilisée pour crypter les instructions transformées relie l'application protégée aux coprocesseurs qui possèdent cette même clef. Il est donc possible de gérer indépendamment de façon simple la mise à jour de vos applications et la distribution des jetons à vos clients.

En se fondant sur des principes publiés et une clef cryptographique secrète abritée par un jeton sécurisé, Validy SoftNaos vous apporte une protection solide.

Courte introduction à Validy Technologie

Le Problème


Quand un utilisateur exécute un logiciel sur son PC, il peut observer, comprendre et modifier aussi bien le code que les données,

Si c'est un cracker, cela peut conduire à une utilisation non autorisée, à un comportement altéré ou au détournement par un logiciel malveillant.

Jetons sécurisés


Les processeurs sécurisés et résistants aux attaques ont progressé et peuvent maintenant servir à cacher une partie de l'application aux crackers,

Mais vérifier la présence d'un jeton, même de façon obscure, ou l'interroger, même en utilisant la cryptographie, n'est pas vraiment sûr.

Protection soustractive


Une méthode de protection efficace doit soustraire une partie de l' application pour l'exécuter à l'intérieur du jeton,

Le défi consiste à trouver une partie qui soit à la fois essentielle, difficile à deviner et dont l'exécution par le jeton ne dégrade pas trop les performances.

Protection : dissimulation des données


Des champs d'objets ou des variables sont déplacés dans le jeton sécurisé,

Leur valeur réside en permanence dans la mémoire du jeton,

Les structures de données de l'hôte possèdent des pointeurs vers la mémoire du jeton.

Protection : dissimulation du code


En partant des opérations qui accèdent aux valeurs déplacées, certaines instructions de l'hôte sont sélectionnées et traduites dans le jeu d'instructions du jeton,

Des opérations de transfert de valeurs sont insérées pour assurer que chaque instruction a accès à ses opérandes.

Protection : dissimulation du code (suite)


Les instructions du jeton sont combinées avec des assertions sur le flot de données, cryptées et substituées aux instructions qu'elles remplacent,

Le jeton est générique en dehors de la clef cryptographique qui doit correspondre à celle qui est utilisée au moment de la protection

A l'exécution

L'hôte transmet au jeton les valeurs et les instructions cryptées,

Le jeton décrypte les instructions, vérifie leur cohérence puis les exécute,

Certaines valeurs calculées sont renvoyées quand cela est nécessaire.

Ingénierie inverse

Pour ôter la protection, un cracker doit déterminer le flot de données entrant à partir du flot de données et d'instructions sortant,

Les valeurs entrantes sont le résultat de plusieurs milliers d'instructions opérant chaque seconde sur des données accumulées pendant toute la vie de l'application,

Tous les échanges avec le jeton sont observables mais les instructions du jeton sont extrêmement difficiles à modifier ou à enlever à l'insu du jeton, car cryptées et contenant des informations sur le flot normal de données.

Avantages

Protection forte contre le piratage des logiciels sans prise de contrôle du PC de l'utilisateur,

Peu d'impact sur le développement et la distribution du logiciel: la protection est en grande partie automatique, les mises à jour peuvent être produites après distribution des jetons,

Des tests d'intégrités ou des accès aux ressources cryptographiques du jeton (pour authentifier ou signer) peuvent être ajoutés et reliés solidement aux autres instructions du jeton.