Archive pour la catégorie ‘Cryptographie/Cryptanalyse’

Le chaos dans la cryptographie

Mercredi 17 février 2010

Après une longue absence, je reviens pour vous parler d’un sujet récent, la cryptographie chaotique.

En effet, la cryptographie actuelle, en particulier RSA et DES souffrent de la monté de la puissance de calculs des ordinateurs, et l’arrivée de l’ordinateur quantique pourrait bien sonner le glas de ces algorithmes. Pour remédier, et surtout trouver un remplacent, 2 pistes intéressent les chercheurs actuellement :

- La cryptographie Quantique ( Que je n’aborderais pas ici )

-La cryptographie Chaotique ( Qui est le sujet principal de cet article )

La cryptographie chaotique repose sur l’utilisation, comme son nom ne l’indique pas, du chaos. Mais on parle ici du chaos au sens physique du terme, décrit par la théorie du chaos, s’intéressant à des systèmes déterministes mais avec une forte sensibilité aux conditions initiales.
Le jeu de billard en est un exemple. En effet, il est aisément concevable que l’on ne pourra pas renvoyer une bille exactement d’où elle vient, il faudrait qu’elle soit renvoyée avec exactement la même force, le même angle. En supposant que ces deux conditions soient remplies, il n’est pas dit que les bandes du billard réagissent de manière identique. Les conditions initiales vont donc jouer un rôle déterminant dans l’évolution de la bille.

L’étude de cette théorie est relativement récente, et a intéressé/intéresse les militaires, ne permettant à la recherche civile de ne s’y intéresser que récemment…

Le principe de la cryptographie chaotique est de noyer le message à transmettre dans un chaos et de l’envoyer à un récepteur qui connait les caractéristiques du générateur de chaos, qui pourra donc soustraire le chaos au signal reçu et ainsi en extraire le message.

Des implémentations physiques sont à l’étude, comme l’explique cet article de tout-pour-la-science et l’illustre le projet OCCULT .

Je vais dans cet article vous présenter la méthode générale ( numérique ), puis les améliorations possible grâce à la méthode de Baptista ( pas le catcheur hein :) ) et de Wang. Je présenterais ensuite quelques attaques de cryptanalyse et comment le chiffrement chaotique y répond. Il faut être bien conscient que c’est une lutte dans le temps, et que les deux camps font des avancer à des vitesses impressionnantes ( grâce notamment aux avancés récentes de la théorie des nombres ). Les réponses actuelles seront donc peut-être dépassé d’ici à quelques années. Peut-être, voir même très surement.

Lire le reste de cet article »

Echange de donnée cryptée, sans échange de clé unique ?

Jeudi 6 août 2009

Bonjour, c’est Bernard !

J’aimerais bien communiquer avec Alice, malheureusement Eve est dans le coin ….

Ah, je sais !  Je vais crypter mes données ! Pas de problèmes, plein d’algorithmes existent déjà comme DES, ou je peux même faire le mien !

Ah … mais il faut que je donne à Alice une clé… et Eve est très en forme sur les attaques ManInTheMiddle ces temps-ci …

Plus sérieusement, comment pourrait faire Bernard pour crypter ses informations sans que Eve ne puisse les décrypter ?
C’est à dire, comment éviter qu’Eve espionne l’échange de la clé, appelée clé privée ?

Ce fut le grand problème des cryptographes jusqu’à ce début de siècle, et jusqu’a l’idée de Diffie et Hellman. En effet, ils ont tout simplement imaginé qu’il était possible de ne pas utiliser seulement une clé privée dans une fonction cryptographique réversible. A partir de l’idée de la boite à cadenas, qui prouve qu’il est possible de ne pas utiliser seulement ces fonctions, l’idée fut de trouver des ( voir une ) fonction à sens unique.

Tout d’abord, qu’est-ce que la boite à cadenas ?
Bernard peut mettre son message dans une boite, qu’il refermera avec un cadenas A dont il est seul possesseur de la clé. Il envoie sa boite à Alice, qui ne peut l’ouvrir, mais qui rajoute un cadenas B dont elle est seule possesseur de la clé , et qui renvoie cette même boite à Bernard ( avec donc les cadenas A et B dessus ). Bernard enlève son cadenas A puisqu’il a la clé, et renvoi la boite à Alice. Alice peut maintenant enlever son cadenas B, ouvrir la boite, et lire le message de Bernard. Ici, le cadenas représente la fonction de cryptage, et la clé représente la clé utilisé. Dans cette exemple, Bernard n’a pas eu besoin d’échanger sa clé avec Alice, et donc, pas de risque d’interception. Et ça, c’est tout simplement une révolution pour le monde de la cryptographie.

Lire le reste de cet article »

Cryptanalyse d’un texte chiffré par l’algorithme de Viginère

Jeudi 6 août 2009

Comme la dernière fois, je vous propose une approche par l’exemple. A vous d’essayer de déchiffré ce qui suit :

IYVLS LZKIW KHMMX ZLHHE ONEEX UNBSX JYVPO AHXGV KMXTB KMXRD KAXRO XUEIW KHMWY AMEEP ULFIN AHFSD UOWYX KJAVK YYISE XJHYF UCKGR OZYVO XHHXB KNXBD KUVLK WOXGK XUVXO XYGSE YOMMV OMHRC AHXPO ZNKIN KFTGV KJHYB KZYIM ZOXVV GMNFC ZCMYD OIGIF OXXQW KHMTV AMEEM RYLIB GFHRQ AYXXF GLBIO KNFMO AREID KRMIC KLTGR OZYVO OFYEE ZMTZY OLJYS RSTIE AHXTO XCHHO UOWIC VULWK MYLIX ZCXVC JOOVO YFBXD KLTMB KMXXK OYGXE ZCEMC KMISE XWAMP LLXVV KMIPE YAKEX JMLIM XYMWV KMWIE DWHVB KMISX JUGXC TUOES KHMTV AMJYK GPHMB KHEIE XMFES TMNRO DYFTV GCKIN AGXQO RCOVO VINVC GMLYB KLWIV GVHRX KWHQZ XYAIX YCHRN KMFIC YUZIC

On ne connais bien entendu pas la clé, le but étant de la retrouvé, ainsi que le texte en clair.

Si le mot cle est BAD et que le mot à chiffré est COOL, on a :
DORM
On remarquera que les deux “O” ne sont pas chiffré de la même façon, d’où la force du chiffre de Viginère. C’est ainsi qu’il a été indéchiffrable jusqu’au XIXème siècle.

La méthode de cryptanalyse repose en deux étapes :
Tout d’abord, nous allons essayer de déterminer la taille de la clé.
Pour celà, il est possible d’utiliser deux méthodes : L’indice de coïncidence ( test de Friedman ) ainsi que l’analyse de la distance entre deux chaines semblables. Nous utiliserons cette dernière.
Elle repose sur le principe que même si une lettre est codée différement à chaque fois, elle sera néanmoins répétée plusieurs fois de la même manière.
Par exemple dans notre texte, “BKMX” est répété, et l’écart entre les deux chaines est de 275 caractères.
Ce qui veut dire que soit la chaine fait 1 caractères, soit un multiple de 275. Il y a aussi une infime probabilité pour que le BKMX code pour une autre chaine, et que sa répétition n’est que pure coïncidence. Evidemment, avec une chaine de 4 caractères, cette probabilitée est très faible, pour ne pas dire nulle.
Nous allons donc cherché toutes les chaines de 4 caractères qui se répète, et faire le PGCD de leurs intervalles.
La liste ci-dessous représente les différentes intervalles entre deux même chaines :
50, 50, 190, 140, 145, 145, 145, 145, 275, 245, 45, 195, 195, 195, 195
Le mot clé a donc une taille qui est un multiple de tout ces nombres, c’est à dire 5 ou 1.
Si le mot clé avait pour taille 1, nous aurions eu affaire à un simple Chiffre de César, ce qui n’est pas le cas.
En utilisant l’indice de coïncidence, nous obtenons le même résultat, mais la technique n’est pas détaillée ici.
Maintenant que nous savons que notre clé fait 5 caractères, nous allons pouvoir réunir les caractères chiffrés avec le même alphabet.
En ne prenant que le début du texte, on peut dire que :
I,L,K sont chiffrés avec le premier alphabet décalé
Y,Z,H le sont avec le deuxième, etc..
Ainsi, nous obtenons cinq chaines de caractères, toutes chiffrées avec un alphabet décalé, ou encore un Chiffre de César.
Pour pouvoir trouver chaque décalage, nous allons procédé à une analyse fréquentielle de chacune.
Pour le premier décalage, et donc la première lettre du mot clé, nous allons procédé à une analyse fréquentielle de :
ILKZOUJAKKKXKAUAUKYXUOXKKWXXYOAZKKKZGZOOKARGAGKAKKOOZORAXUVMZJYKKOZKXLKYJXKDKJTKAGKXTDGARVGKGKXYKY
Ce qui nous donne les fréquences suivantes (en %):
A 10.204081632653061
B 0
C 0
D 2.0408163265306123
E 0
F 0
G 7.142857142857143
H 0
I 1.0204081632653061
J 4.081632653061225
K 26.53061224489796
L 2.0408163265306123
M 1.0204081632653061
N 0
O 9.183673469387756
P 0
Q 0
R 3.061224489795918
S 0
T 2.0408163265306123
U 5.1020408163265305
V 2.0408163265306123
W 1.0204081632653061
X 10.204081632653061
Y 6.122448979591836
Z 7.142857142857143
On remarque que la lettre K est la lettre la plus fréquente, que les trois fréquences L,M et N sont très faibles, celle de O forte puis de nouveau deux fréquences très faible. Si l’on décalle la lettre K pour qu’elle devienne E, ces statistiques de fréquence correspondent avec celle de la langue française. On en déduit donc que pour la première lettre, on a affaire a un décalage de E vers K, c’est à dire de A vers G.
La première lettre du mot clé est donc G.
De la même façon, nous pouvons déterminer les 4 autres lettres. Il est important de ne pas seulement prendre la lettre la plus forte comme étant un E, mais de bien regarder la suite de lettre.
Nous obtenons donc la clé GUTEK, et le message en clair :
CECHI FFREM ENTIN TRODU ITLAN OTION DECLE UNECL
ESEPR ESENT EGENE RALEM ENTSO USLAF ORMED UNMOT
OUDUN EPHRA SEPOU RPOUV OIRCH IFFRE RNOTR ETEXT
EACHA QUECA RACTE RENOU SUTIL ISONS UNELE TTRED
ELACL EPOUR EFFEC TUERL ASUBS TITUT IONEV IDEMM
ENTPL USLAC LESER ALONG UEETV ARIEE ETMIE UXLET
EXTES ERACH IFFRE ILFAU TSAVO IRQUI LYAEU UNEPE
RIODE OUDES PASSA GESEN TIERS DUVRE SLITT ERAIR
ESETA IENTU TILIS ESPOU RCHIF FRERL ESPLU SGRAN
DSSEC RETSL ESDEU XCORR ESPON DANTS NAVAI ENTPL
USQUA AVOIR ENLEU RSMAI NSUNE XEMPL AIRED UMEME
LIVRE POURS ASSUR ERDEL ABONN ECOMP REHEN SIOND
ESMES SAGES
Ou encore :
Ce chiffrement introduit la notion de clé. Une clé se présente généralement sous la forme d’un mot ou d’une phrase. Pour pouvoir chiffrer notre texte, à chaque caractère nous utilisons une lettre de la clé pour effectuer la substitution. Évidemment, plus la clé sera longue et variée et mieux le texte sera chiffré. Il faut savoir qu’il y a eu une période où des passages entiers d’œuvres littéraires étaient utilisés pour chiffrer les plus grands secrets. Les deux correspondants n’avaient plus qu’à avoir en leurs mains un exemplaire du même livre pour s’assurer de la bonne compréhension des messages. ( Présentation du chiffre de viginère de Wikipédia )

On peut attribuer cette découverte à Charles Babbage, même s’il ne l’a pas publier.Cette technique porte donc le nom de Friedrich Wilhelm Kasiski, ayant fait cette même découverte un peu plus tard ( et l’ayant publié dans “Ecriture secrète, et art du déchiffrement” ).

Remarque : Une autre méthode peut être employé, appelée “mot probable”. En effet, imaginons que notre texte contient le mot “que”. Nous imaginons alors qu’il ne contient seulement le mot “que”. Ainsi, nous obtenons une clé. Prenons un deuxième texte, chiffré avec la même clé, et appliquons notre clé temporaire. Si nous ne nous sommes pas trompé, il est probable que certaine partie du texte ressortent, nous permettant de deviné une partie de la clé. Voilà pourquoi il est déconseillé de toujours utilisé la même clé, et de préféré un système de clé jetable.

Encore une fois, je vous conseille de vous faire des petits outils qui vous aideront dans votre analyse.

On pourra par exemple utiliser un utilitaire pour essayer de trouver la longueur de la clé ( en cherchant l’espace entre les mêmes chaines, et puis un PGCD de tout ça :) ) :

inter,i,all,num,texte = input("Intervalle : "),0,{},[],""
def pgcd(a,b):
    while a<>b:
        if a<b:
            a,b=b,a
        a,b=a-b,b
    return a
def pgcdl(l):
    lepgcd=l[0]
    for element in l:
        lepgcd=pgcd(lepgcd,element)
    return lepgcd
while i < (len(texte) - inter):
    chaine,temp = "",i
    while temp < (i+inter):
        chaine = chaine + texte[temp]
        temp += 1
    if texte.count(chaine) > 1 :
        if all.has_key(chaine) :
            num.append(i - all[chaine])
        else :
            all[chaine] = i

    i+=1
print pgcdl(num)

Bonne journée à tous !

Can You Crack a Code?

Jeudi 6 août 2009

En ces périodes de fêtes, et pous fêter la fin d’année, une gentille agence américaine nous propose de déchiffer un petit texte. J’ai nommé le Federal Bureau of Investigations ( http://www.fbi.gov/ ) et la belle image présente sur leur page d’accueil.

Aller, pour les plus fénéants, voici le code : VFWTDLCSWV. YD NSLMIJFWEJFD GSW SL NIJNQBLM FOBV EJFDVF DLNIGTFBSL. KBVBF YYY.AHB.MSK/NSCDC.OFZ FS EDF WV QLSY SA GSWI VWNNDVV

Alors, comment ne pas sauter sur cette occasion pour mettre en pratique ce que vous avez pu apprendre dans mes modestes articles ?

En effet, le YYY. nous mets tout de suite la puce à l’oreille. Mais oui, nous avons bien à faire à un chiffrement mono-alphabétique ( http://blog.4j4x.net/?p=7 ), et cette partie représente surement une URL .

Poussons plus loin, si vous le voulez bien :

YYY : pas de grand secret, on devine le WWW tant répandu.
AHB.MSK : Bon, un petit coup d’œil à l’URL qui nous nargue au-dessus… posons l’hypothèse : AHB.MSK = FBI.GOV

On revient à notre texte de départ. Pas grand chose d’intéressant sur le début, mais on devine le mot VISIT, juste avant l’URL. En effet, un rapide coup d’oeil aux fréquences de chaque lettre :

a 1.57480314961 %
b 4.72440944882 %
c 2.36220472441 %
d 6.29921259843 %
e 2.36220472441 %
f 9.44881889764 %
g 2.36220472441 %
h 0.787401574803 %
i 3.14960629921 %
j 3.14960629921 %
k 1.57480314961 %
l 5.51181102362 %
m 2.36220472441 %
n 5.51181102362 %
o 1.57480314961 %
p 0.0 %
q 1.57480314961 %
r 0.0 %
s 8.66141732283 %
t 1.57480314961 %
u 0.0 %
v 7.08661417323 %
w 5.51181102362 %
x 0.0 %
y 3.93700787402 %
z 0.787401574803 %

nous montrent qu’il est fort probable que vu son haut pourcentage d’apparition, notre F correspond au T anglais. On apprend par la même occasion qu’il y a 4 lettres inconnues.

Continuons notre investigation :

On remarque un W*, notre D correspondera surement à un E.
Un petit coup d’oeil dans notre URL, et que vois-ton ? .*T*
Or, la majorité des pages du site ont l’extension .htm

A partir de là, il n’est pas bien difficile de continuer.

On trouve alors le N pour un C, W pour U, I pour R, G pour Y, L pour N, T pour P, J pour A, E pour L, Q pour K et C pour D, nous dévoilant complétement l’url www.fbi.go/coded.htm, sur laquelle on nous souhaite d’”happy holidays”.

Voilà donc pour le challenge de cette année, vivement l’année prochaine :)

PS : par curiosité, regardons si  les correspondances ont été choisis au hasard ?

ABCDEFGHIJKLMNOPQRSTUVWXYZ => FIDELTYBRAVNGCH*K*OP*SU*WM

Sachant que la phrase clé n’admet aucun doublons, on y voit surement le mot Fidelity .

Mais à quoi corredpondrait la suite ? BRAV pour le courage ? ou bien il y manque certaines lettres intermédiaires ( le E, I, Y déjà utilisé ) ?