Skip to Content
Nouvelle version 12 disponible 🎉
ObfuscatorChiffrement des valeurs

Chiffrement des valeurs et des tableaux

Les valeurs constantes et les tableaux déclarés en ligne dans votre code contiennent souvent des informations sensibles, comme des clés de chiffrement de données ou d’autres données critiques que vous voulez soustraire aux désassembleurs et aux tentatives de rétro-ingénierie. Babel Obfuscator peut chiffrer ces valeurs constantes et ces tableaux, ce qui ajoute une couche de protection à vos informations sensibles.

Babel Obfuscator propose des options de configuration qui permettent de chiffrer les valeurs en ligne de différents types de données : int32, int64, single, double et les tableaux. Ces options vous permettent de renforcer la sécurité de votre code en chiffrant ces types de valeurs.

Le chiffrement des valeurs int32 et int64 protège les données numériques de ces types, c’est-à-dire les entiers et les entiers longs, contre tout accès non autorisé. De même, le chiffrement des valeurs single et double protège les nombres à virgule flottante, comme les nombres décimaux ou réels. En chiffrant ces valeurs en ligne, vous évitez que les données numériques sensibles de votre code soient facilement déchiffrées ou modifiées.

Babel Obfuscator permet également de chiffrer les tableaux déclarés en ligne dans votre code. Les tableaux sont des collections d’éléments, et leur chiffrement contribue à la confidentialité et à l’intégrité des données qu’ils contiennent. Cette couche de chiffrement supplémentaire empêche les attaquants de découvrir le contenu de vos tableaux, même s’ils parviennent à analyser ou à décompiler votre code.

Cette section présente :

Fonctionnement

À la génération, Babel retire la constante du corps de méthode et la remplace par une recherche : l’instruction ldc du littéral est réécrite de sorte que la valeur soit lue dans une table chiffrée incorporée à l’assembly et déchiffrée à la demande à l’exécution. Les constantes numériques (int32, int64, single, double) sont collectées par type et chiffrées dans cette table, et chaque chargement d’origine devient un petit appel qui renvoie la valeur déchiffrée. Les tableaux en ligne sont traités de manière similaire : les données d’initialisation du tableau, normalement stockées dans l’assembly sous forme de blob en clair, sont chiffrées puis reconstruites à l’exécution.

Un décompilateur ne voit donc plus dans l’IL les véritables nombres ni le contenu des tableaux ; il ne voit que des index dans une table opaque et chiffrée. Les valeurs sont déchiffrées au fur et à mesure de l’exécution de votre code, et le comportement reste inchangé.

Vous déployez sur des hôtes en mode FIPS ? Les valeurs et les tableaux chiffrés sont déchiffrés à l’exécution au moyen du fournisseur cryptographique de la plateforme : un conteneur exécuté sur un hôte en mode FIPS sans fournisseur FIPS OpenSSL certifié peut donc ne pas démarrer. Voir Conformité FIPS pour la cause et le correctif.

Notez que l’activation du chiffrement des valeurs et des tableaux peut entraîner un léger surcoût à l’exécution, dû aux opérations de chiffrement et de déchiffrement. Il est donc important d’évaluer avec soin le compromis entre sécurité et performances en fonction des besoins de votre application (voir Performances).

Last updated on