Cryptage 4D

Cette méthode chiffrement de données utilise un hypercube de dimension 4, ou tesseract. Vous pouvez télécharger le projet contenant les sources des classes, un script de test et une documentation.

Vous pouvez aussi utiliser le formulaire ci-dessous pour essayer cette méthode et transmettre des messages cryptés :) Le destinataire pourra dechiffrer son message via ce même formulaire.


Chiffrement hypercubique
Le message est converti en un flux hexadecimal puis réparti dans un hypercube sur lequel sont effectuées 6 permutations aléatoires. La clé représente les permutations effectées.


Texte clair :
Entrez le texte à chiffrer, son résultat crypté en valeurs hexadecimales sera copié dans le champs ci-dessous.



Texte chiffré :
Clé :
Entrez le message crypté en valeurs hexadecimales et renseignez la clé pour le dechiffrer. Le message clair sera copié dans la zone ci-dessus.


Comment ca marche ?

Un peu comme l'Algorithme d'Encodage Standard : pour chiffrer, le message est converti en information binaire sur laquelle on applique une série de permutations décrites par une clé. A partir de cette clé, on peut déduire les permutations inverses à appliquer pour retrouver le message original.

Les différences notables entre EAS et ce projet sont :
  • au lieu de manipuler des matrices (2D), j'ai pris un hypercube (4D) pour le fun
  • là où EAS combine une matrice de données avec une matrice "clé" en utilisant toujours les mêmes opérations, j'utilise toujours les mêmes données avec des opérations différentes. En très très gros, la solidité de cet algo repose sur la génération des nombres aléatoires qui "choisiront" les permutations.
  • contrairement aux excellents mathématiciens qui ont conçu les permutations EAS, je n'ai modestement codé que des permutations classiques d'hypercube, bien moins optimisées pour le chiffrement.


  • Dans les grandes lignes :
    - le message texte à chiffrer est d'abord converti en une chaine binaire (chaque caractère est converti en fonction de sa valeur ASCII).
    - un hypercube contient 8 cubes internes, ca tombe bien c'est le nombre de bit dans un octet. Pour chaque octet de la chaine binaire, on va placer un bit dans chacun des 8 cubes internes de l'hypercube. Maintenant, chaque cube interne contient un bit de chaque octet du message, si je modifie les valeurs dans un seul cube interne, je modifie tous les octets du message.
    - une fois la chaine binaire dans l'hypercube, on permute. Les valeurs sont "mélangées" aprés plusieurs permutations choisies au hasard, disons 6. Les permutations utilisées sont enregistrées et cryptées, c'est la clé de chiffrement.
    - on "lit" le cube comme on l'a rempli : on prend un bit dans chaque cube interne pour former un octet, pour tous les bits des cubes internes. La chaine binaire cryptée est convertie en hexadécimal, c'est le message chiffré.
    - on fourni le message chiffré et la clé.

    Télécharger la doc au format Word pour le détail de ces opérations.

    Pour déchiffrer, c'es exactement pareil à la différence qu'une clé est fournie. Le système l'analyse et l'inverse pour retrouver les permtutations inverses au cryptage. En appliquant ces permutations sur le message chiffré, on retrouve le message clair (toujours en binaire) qui sera converti en texte (valeur ASCII des octets en clair).