Améliorer les performances du chiffrage à flot SYND
Sommaire Principes Sécurité Performances La méthode actuelle : le SYND La méthode proposée : le XSYND Sécurité Sécurité théorique Sécurité pratique Performances
Les principes Le SYND
Le fonctionnement du SYND Fonctionnement en trois étapes principales : Étape d’initialisation appelée INI Réalisation d’un cycle Étape finale pour chiffrer le message
L’initialisation On utilise : Une clé secrète K de taille r/2 bits Un vecteur initial IV de taille r/2 bits On applique la fonction Ini pour obtenir e0, un vecteur qui va servir à la première étape de génération du flux La fonction Ini une transformation en trois phases de Feistel On utilise les fonctions Upd et Out
Le cycle de génération de flux À chaque instant t : Où B est une matrice aléatoire et θ une fonction qui transforme un vecteur de r bits en un mot régulier de longueur n et de poids w. Et Où A est une matrice aléatoire
Chiffrement du message Dernière étape : On effectue un XOR entre chaque m_i et z_i pour obtenir les messages chiffrés c_i
Les principes La proposition : le XSYND
Les améliorations Modification de la fonction Ini qui devient Xini : Deux fonctions d’évaluation au lieu de trois sans perte de sécurité Modification des fonctions Upd et Out
La nouvelle fonction XIni Toujours la concaténation de K et IV On applique la nouvelle fonction Upd à ce vecteur que l’on XOR avec K On applique Out à ce vecteur que l’on XOR avec lui-même pour obtenir e0
Les nouvelles fonctions Upd et Out Basé sur le principe du paradigme randomisation puis combinaison : Découpage d’un vecteur en w blocs de b bits (taille choisie) On applique une fonction f aléatoire (slide suivant) à chaque bloc puis on combine
Les nouvelles fonctions Upd et Out On divise x en w blocs On divise la matrice A en w sous-matrices Ai On prend la xi colonne de la sous-matrice Ai On fait un XOR de toutes les colonnes ainsi obtenues pour obtenir Upd(x)
Sécurité La sécurité théorique
La sécurité théorique 2 étapes à valider : Difficulté à trouver x connaissant Upd(x) et Out(x) Prouver que XSYND est un générateur pseudo-aléatoire.
Trouver x - Principe Construction de A par concaténation de sous-matrices A i Construction de z à partir de x Calcul de A . zT A = matrice binaire aléatoire
Exemple w = 3 et b = 2. x = (2, 1, 0) zi = (xi +1) + (i-1)*2b
Trouver x Trouver x : Revient à trouver z Problème du syndrome Impossible de trouver x dans un temps correct avec un algorithme de complexité polynomiale
XSYND est-il un PRNG ? Rendre XSYND « non distinguable » Prouver que la fonction g M (z)=M.zT est PR. Utilisation des théorèmes de Goldreich-Levin Preuve avec théorème 2 Th2: On choisit n, r et w préservant l’impossibilité à distinguer et les conditions de RSD.
Sécurité La sécurité pratique
La sécurité pratique Sécurité face aux attaques 3 attaques possibles : Complexité des algorithmes 3 attaques possibles : Attaques par linéarisation Attaques des anniversaires (GBA) Attaque de l’Identification Set Decoding (ISD)
Rappel de notions
Attaques par linéarisation 2 types d’attaques intéressantes pour le XSYND : Bellare-Micciancio Saarinen
L’attaque Bellare-Micciancio Attaque par préimage contre la fonction de hashage XHASH. But : trouver z tel que z =XHASH (x) Daniele Micciancio et Mirh Bellare Attaque facile quand w = r + 1. Principe : - Trouver y tel que XHASH(xy) = z Calcule de 2w valeurs Résoudre r +w équations avec 2w inconnues
L’attaque Saarinen Attaque contre FSB (fonction de hashage) But : Réduire le nombre de recherche de collisions ou de préimages Markku-Juhani Saarinen Attaque très efficace quand r < 2w.
Attaque de l’anniversaire généralisé On cherche à trouver des bouts de mots (mots décimaux) de façon à ce qu’ils soient compris dans les listes et qu’un XOR de ceux-ci donne 0 On prend K listes au hasard (par exemple K=4) On construit deux nouvelles listes en faisant un XOR deux à deux On cherche deux mots tels que le XOR des deux mots fasse 0 On construit une nouvelle liste avec la composition de ces deux mots Expliquer gamma
Information Set Decoding L’attaque la plus efficace en général Le but est de trouver un mot valide de longueur n contenant k positions sans erreur k dimension n longueur du mot On vérifie ce qui a été trouvé à l’aide de l’élimination gaussienne.
Récapitulatif sécurité Où r=wb et b=log(n/w)
Performances Comparaison des performances avec le SYND
Comparaison avec le SYND
Merci de votre attention