Moteur de cryptage
Le moteur de cryptage implémenté depuis la version 3.6.0 est un ensemble de services qui encapsulent les diverses unités du module
DCPcrypt.
L'application a besoin de deux clés :
- La première sert à étendre le mot de passe saisi par l'utilisateur : comme il est possible d'utiliser un mot de passe de quatre caractères seulement, celui-ci doit être transformé en chaîne de 256 caractères afin d'utiliser l'algorithme de cryptage à son maximum d'efficacité. L'extension du mot de passe consiste en un mixage avec cette première clé.
- La seconde clé sert de témoin : c'est elle qui est cryptée avec le mot de passe de l'utilisateur avant d'être stockée dans l'en-tête des fichiers (le mot de passe n'est jamais stocké, même crypté).
Afin de dissimuler ces clés à une analyse de l'exécutable, elles ont été partiellement implémentées avec du code :
- A la base, il y la Matrix qui est une liste de 32 éléments de 16 octets générés aléatoirement.
- Un service permet de reconstituer les deux clés évoquées plus haut en concaténant 16 de ces chaines selon une séquence qui avait également été définie aléatoirement.
Dans XT3, le mot de passe étendu par mixage avec l'une des clés était ensuite haché avec
SHA-1 avant de servir à initialiser un
Cipher de type
RC6.
Cet algorithme est sûr, il était l'un des finalistes pour l'AES. SHA-1 a lui été cracké, ce qui n'est pas grave en soit puisqu'il n'est utilisé que pour hacher le mot de passe, pas pour crypter les données.
XT4 utilise désormais
SHA-512 pour hacher le mot de passe. L'algorithme utilisé est l'
AES-256.
Le coupe SHA-512 + AES-256 a été ajouté dans les services de cryptage de l’application. Ils cohabitent avec le coupe SHA-1 + RC6 qui est conservé pour compatibilité.
L'autre évolution est le nouveau service d'extension du mot de passe. En XT3, posséder le code source de l'application fragilise l'intégrité du mot de passe puisque l'extension à 256 caractères se fait par un algorithme réversible. En XT4 le nouvel algorithme de mixage agit comme un hachage puisqu'il mélange le mot de passe avec des éléments de la
Matrix déterminés par sa propre valeur, un peu comme si le mot de passe était crypté avec lui-même.
En XT4 un mot de passe est étendu de la façon suivante :
- Une première boucle crée une chaîne de 64 caractères dont chacun est la somme du caractères du mot de passe, du numéro d'itération, et d'un caractère trouvé dans la Matrix à une ligne et position déterminées par le caractère. C'est ce dernier point qui annule la réversibilité du mixage.
- En même temps, le mot de passe original qui sert à constituer cette clé est étendu à chaque tour de boucle en récupérant la valeur de la Matrix. Le mot de passe original a donc toujours une taille supérieure d'au moins un caractère à la clé en cours de constitution.
- Une seconde boucle fait la même opération mais en bouclant de façon inverse (de la fin vers le début) sur la clé constituée afin de mélanger les premiers caractères.
Les nouveaux algorithmes de cryptage étant prêts, il faut maintenant gérer la sécurité dans l'application.
Les modes définis en XT360 (
Standard /
Sécurisé déverrouillé /
Sécurisé verrouillé) seront conservés, les principaux changements vont concerner :
- L'interface de sélection des données à protéger (qqchose comme les Exports / Imports).
- La demande de mot de passe à déclencher lors de l'accès à un dossier protégé.
- Le passage en verrouillage doit fermer les outils contenant des dossiers protégés, ou juste fermer ces dossiers (?).
- La fenêtre de saisie du mot de passe doit être plus indépendante, car elle devra servir à récupérer un mot de passe annexe afin de décrypter un fichier d'import.
- Etc etc...