OUARDI Aissa Communications Numériques : la Cryptographie ROBUSTESSE DES ALGORITHMES III.1 INTRODUCTION Les algorithmes de chiffrement sont vulnérables à certaines techniques de cryptanalyse. On dit qu’un algorithme est meilleur qu’un autre s’il faux fournir plus d’effort pour retrouver la clef utilisée. Chaque algorithme a un certain degré de sécurité qui dépend de sa philosophie de conception. Pour faire le bon choix, il faut connaître la robustesse des algorithmes contre les différentes méthodes d'attaque. Notons qu'un cryptosystème est cassé si la clef de cryptage est trouvée. Dans certains cas, le cryptanalyste ne cherche pas à mener une attaque coûteuse contre un cryptosystème si la clef n’est pas bien sécurisée. Dans ce qui suit, nous supposons que la sécurité de la clef est assurée. III.2 ALGORITHMES DE CHIFFREMENT EN CONTINU Avant de donner les résultats de cryptanalyse des algorithmes de chiffrement en continu, il vaut mieux préciser quelques notions et outils de cryptanalyse dans ce type d’algorithmes, notamment les types d’attaque et les critères d’évaluation de la robustesse d’un générateur (ces algorithmes se basent sur des générateurs pseudo aléatoires). III.2.1 Complexité linéaire On note S : séquence infinie s0, s1, s2,… Sn : séquence finie de longueur ‘n’ : s0, s1, s2,…, sn-1. La complexité linéaire L(S) de S est définie comme suit: (i) Si S = 0 0 0……. Æ L(S) = 0 (ii) S’il n’y a pas un LFSR qui peut générer S Æ L(S) = . (iii) Sinon, L(S) est la longueur du plus petit LFSR qui peut produire S. Propriétés de la complexité linéaire Pour tout n 1, si Sn a une longueur ‘n’ alors 0 ≤ L(S n ) ≤ n 1- L(Sn) = 0 si et seulement si Sn = 0 0 0………0. 2- L (Sn) = n si et seulement si n = 0 0 0………. 0 1. 3- Si S est périodique de période N alors L (s) N. 4- L (S ⊕ t) L(S) + L(t) [5]. III.2.2 Algorithme de Berlekamp-Massey L'algorithme de Berlekamp-Massey est un algorithme efficace pour la détermination de la complexité linéaire d'une séquence Sn de longueur 'n'. L'algorithme prend ‘n’ itérations. A la Nème itération, l’algorithme calcule la complexité linéaire de la sous séquence SN. Algorithme de Berlekamp-Massey ENTREE: Séquence binaire Sn = s0, s1, s2,……………, sn-1 de longueur n. SORTIE: La complexité linéaire L(Sn) de Sn, 0 L(Sn) n. Robustesses des algos en continu 1 OUARDI Aissa Communications Numériques : la Cryptographie 1. Initialisation : C(d) = 1, L= 0, m= -1, B(d)= 1, N= 0 ; 2. Tant que (N < n) faire: 2.1. Calculez la prochaine anomalie (discrepancy) d = (S N + ∑ L c i =1 i S N-i ) mod 2 ; 2.2. Si d = 1 alors faire: T(d)= C(d) ; C(d)= C(d) + B(d) * DN-m ; Si L N/2 alors L= N+1-L, m= N, B(d)=T(d) ; 2.3. N= N+1 ; 3. Return(L). Si ‘S’ est une séquence binaire infinie d’une complexité linéaire ‘L’ et si ‘t’ est une sous séquence finie dans ‘S’ de longueur au moins 2L et si l'entrée est la séquence ‘t’, alors l'algorithme de Berlekamp-Massey (avec le pas 3 modifié pour retourner L et C (D)) détermine un LFSR de longueur L qui produit ‘S’. Exemple : (algorithme de Berlekamp-Massey) : Le tableau suivant montre l’exécution de l’algorithme en analysant la séquence binaire de longueur 9, S9= 0; 0; 1; 1; 0; 1; 1; 1; 0 pour calculer sa complexité linéaire. On trouve qu’elle est égale à ‘5’ et le LFSR qui génère ‘S’ est 〈5, 1 + D 3 + D 5 〉 . SN d T(D) 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1+D3 1+D+D3 1+D+D2+D3 1+D+D2+D3 1+D+D2 1+D+D2+D5 C(D) 1 1 1 1+D3 1+D+D3 1+D+D2+D3 1+D+D2 1+D+D2 1+D+D2+D5 1+D3+D5 L 0 0 0 3 3 3 3 3 5 5 m -1 -1 -1 2 2 2 2 2 7 7 B(D) 1 1 1 1 1 1 1 1 1+D+D2 1+D+D2 N 0 1 2 3 4 5 6 7 8 9 Tableau III.1 – Exemple d’exécution de l’algorithme de Berlekamp Massey. III.2.3 Attaques par corrélation Supposant qu’on a ‘n’ LFSRs R1 , R2 , …….,Rn de longueurs L1 , L2 ,…,Ln sont utilisés dans un générateur à combinaison non linéaire. Si les polynômes de connexion des LFSRs et la fonction de combinaison ‘f’ sont connus, alors le nombre de différentes clefs possibles du générateur est ∏i =1 (2 LI − 1) . n Supposant qu'il y a une corrélation entre les codons (les bits générés) et la séquence de sortie de R1 avec la probabilité de corrélation p > ½. Si un segment suffisamment long de codons est connu, l'état initial de R1 peut être déduit en comptant le nombre de coïncidences entre le flux et tous les sorties possibles de R1 produites par tous les états initiaux possibles jusqu'à ce que ce nombre soit conforme à la probabilité de corrélation ‘p’. La recherche de l’état initial de R1 prend au maximum 2 L1 − 1 test de clef. Robustesses des algos en continu 2 OUARDI Aissa Communications Numériques : la Cryptographie Dans le cas où il y a une corrélation entre le flux généré et toutes les séquences générées par les LFSRs R1, R2,…, Rn, les états initiaux de tous les LFSR peuvent être n déterminés indépendamment en testant au maximums ∑ (2 LI − 1) états initiaux. Ce nombre est i =1 beaucoup plus petit que le nombre total de clefs différentes. Donc, les corrélations peuvent être exploitées. La fonction de combinaison 'f' devra être soigneusement choisie de sorte qu'il n'y a aucune dépendance statistique entre les sorties des LFSRs et le flux. III.2.4 Résultats de cryptanalyse III.2.4.1 Générateurs à combinaison nom linéaire a. Générateur de Geffe La complexité linéaire de ce générateur est L c = L1 .L 2 + L 2 .L 3 + L 3 (les Li sont les tailles des registres utilisés). Il est cryptographiquement faible car il est vulnérable à une attaque par corrélation. Si LFSR 1 et LFSR 2 sont multiplexés par LFSR 3, et si ‘z’ est la sortie du générateur, alors pour LFSR 1 P ( z = x1 ) = P( x 3 = 1 ou ( x 3 = 0 et x 2 = x1 )) = p( x 3 = 1) + P( x 3 = 0) ∗ P ( x 2 = x1 ) 1 1 1 + ∗ 2 2 2 3 = 4 = 3 4 Même pour LFSR2 : P( z = x 2 ) = . Aussi, avec l’algorithme du syndrome linéaire, si les connexions sont connues et si le LFSR1 à une taille ‘n’, alors le système est cassé après l’analyse de N=37*n bits en 896*n opérations. L’attaque par corrélation est aussi appliquée au générateur de Geffe généralisé. b. Générateur à Seuil Il a une complexité linéaire de L c = L1 ⋅ L 2 + L1 ⋅ L 3 + L 2 ⋅ L 3 . Chaque bit de sortie du générateur donne un peu d’information sur l’état des LFSR, et le tout tombe sous le coup d’une attaque par corrélation. c. Générateur à sommation n Ce générateur a une complexité linéaire proche de ∏ (2 L i − 1). i =1 Même ce générateur est vulnérable à l’attaque par corrélation. III.2.4.2 Générateurs Contrôlés par horloge a. GSAA La complexité linéaire de ce générateur est comprise entre : ( L 2 + L3 ) ⋅ 2 L1 −1 < Lc ( x ) ≤ ( L 2 + L3 ) ⋅ 2 L1 . Robustesses des algos en continu 3 OUARDI Aissa Communications Numériques : la Cryptographie Ces générateurs ont des longues périodes et des grandes complexités linéaires. On doit choisir des longueurs de registres premiers entre eux. Les auteurs ont trouvé une attaque par corrélation contre LSFR-1 (qui commande l’horloge des autres générateurs), mais elle n’affaiblit pas le générateur. b. GSAB « La complexité linéaire de ce système est approximativement égale à la période. Aucune redondance de codons évidente n’a été constatée dans ce système ». c. Générateur de Beth Piper Si les polynômes de LFSR1 et LFSR 3 sont connues et ont des tailles inférieurs à ‘n’, alors Zeng et les autres, et en utilisant l’algorithme du syndrome linéaire, ont cassé ce système en analysant un segment de 37 n bits. d. Cascade de Gollmann Si tous les LFSR ont la même taille ‘n’, la complexité linéaire d’un système de ‘k’ LFSR est Lc = n ⋅ (2 n − 1) k −1 Il est vulnérable à une attaque appelée verrouillage. Des analyses plus poussées ont montré que la suite se rapproche de l’aléatoire quand k grandit. Tableau récapitulatif Générateur Complexité linéaire Geffe Gen. à seuil L c = L 1 .L 2 + L 2 .L 3 + L 3 Gen. à sommatiuon GSAA GSAB Gollmann L c = L1 ⋅ L 2 + L1 ⋅ L 3 + L 2 ⋅ L 3 . Attaque par corrélation Oui Oui Autres attaques Oui -- Oui -- -- -- --- -Oui n Lc ≈ ∏ (2 Li − 1). i =1 ( L 2 + L3 ) ⋅ 2 L1 −1 < Lc ( x ) ≤ ( L 2 + L3 ) ⋅ 2 L1 Lc ≈ période Lc = n ⋅ (2 − 1) n k −1 Tableau III.2 – Tableau récapitulatif des résultats de cryptanalyse des algorithmes en continu. Robustesses des algos en continu 4