[C] Cryptographie | Implémentation du chiffre de Vernam
|
24-08-2014, 07h37
(Modification du message : 25-10-2014, 13h19 par EpicOut.)
Message : #1
|
|
Banni Messages : 121 Sujets : 10 Points: 22 Inscription : Feb 2012 |
[C] Cryptographie | Implémentation du chiffre de Vernam
Bonjour, Bonsoir
Aujourd'hui je vais vous présenter mon implémentation en C du chiffre de Vernam ou l'opération XOR qui découle de ce chiffrement, j'y ai vraiment mis du plaisir à le faire, pour une fois :-), c'est une implémentation relativement simple, relativement oui, j'en ai chier pour en venir à bout. Donc pour présenter le chiffrement de Vernam c'est un algorithme de chiffrement tout bête qui est "incassable", "inviolable", que ce soit par bruteforce ou autre techniques version grand-maître du cryptanalyste. On part du fait qu'il est impossible de trouver les additions qui ont formés une somme d'un entier: ? + ? = 100 | Où le premier point d'interrogation est le message original, et l'autre point d'interrogation, le masque jetable/clé, et 100 le message chiffré. Comment est-ce possible ? C'est effectivement impossible de retrouver le message original du fait que toute les possibilités sont possiblement possibles: 50+50 ; 51+49 ; 52+48 ; 53+47 ; etc... Plutôt bête non ? :-) Mais cependant on peut pas laisser un tel algorithme nous passer entre les doigts sans lui donner quelques (légers) désavantages. -Le masque/clé doit faire la même taille que le message original (oui, le chiffre de vernam est une opération bit à bit). -La clé doit être choisit aléatoirement. -Le masque/clé ne doit servir uniquement qu'une fois Et si on respecte scrupuleusement toutes ces conditions, on a le droit à une sécurité absolue, il parait. J'vous fait un exemple en live avec de l'ascii (non-étendu, de 0 à 127): On va prendre le chiffre à chiffrer M=1337 et la clé aléatoire (à 100%) C=FAAG , si on additionne ça (avec les correspondances décimales): 49|51|51|55 + 70|65|65|71 ___________ 119|116|116|126 , ce qui donne en ASCII: wtt~ Et s'il venait que votre addition dépasse la table ascii, auquel vous auriez une addition comme ceci: 49|51|51|105 + 70|65|65|71 ___________ 119|116|116|176 Ne vous inquiétez pas, nul besoin d'utiliser ascii étendu qui va jusqu'à 255, vous avez juste besoin de faire un modulo (ou une soustraction) du nombre maximum de caractères ascii ou de la norme sur laquelle vous travaillez, (si ça avait été du base64, un modulo 64 tout simplement) et en non étendu c'est 128, donc ça fait: 176%128 = 48 Maintenant place au code de mon implémentation, je doute qu'il soit digne d'un ingénieur informatique, donc n'hésitez pas à critiquer ou à me poser des questions si ça vous chagrine. Code C :
#include <stdio.h> |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[C] Cryptographie | Implémentation du chiffre de Vernam - par EpicOut - 24-08-2014, 07h37
RE: [C] Cryptographie | Implémentation du chiffre de Vernam - par supersnail - 24-08-2014, 10h32
RE: [C] Cryptographie | Implémentation du chiffre de Vernam - par EpicOut - 24-08-2014, 17h19
RE: [C] Cryptographie | Implémentation du chiffre de Vernam - par b0fh - 24-08-2014, 12h43
RE: [C] Cryptographie | Implémentation du chiffre de Vernam - par supersnail - 25-08-2014, 10h46
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)