universitÉ cheikh anta diop · remerciements les remerciements! ce texte auquel je pensais pendant...
TRANSCRIPT
T
H
E
S
E
UNIVERSITÉ CHEIKH ANTA DIOP
FACULTE DES SCIENCES ET TECHNIQUES
Département de Mathématiques et Informatique
Thèse de Doctorat Unique en Mathématiquespour obtenir le grade de docteur délivré par
l’École Doctorale de Mathématiques et Informatique
Mention: Mathématiques et Modélisation
Option: Codage, Cryptologie, Algèbre et Applications
Année : 2015-2016 N° d’ordre :
Protocoles Post-Quantiques et Attaques Critiques
présentée et soutenue publiquement par Ousmane NDIAYE
le 06 Août 2016Composition du juryPrésident:
Mamadou SANGHARE Professeur, UCAD
Rapporteurs:
Thierry BERGER Professeur, Univ. de Limoges(France)
Pierre LOIDREAU HDR, Maître de Conférences Univ. de Rennes 1(France)
Examinateurs:
Oumar DIANKHA Professeur, UCAD
Djiby SOW Professeur, UCAD
Ayoub OTMANI Professeur, Univ. Rouen(France)
Directeur:
Cheikh Thiécoumba GUEYE Professeur, UCAD
Année académique 2015-2016
Remerciements
Les Remerciements! ce texte auquel je pensais pendant toutes les trois années de thèses
car étant le plus difficile à rédiger. Les images commencent à me venir à l’esprit: con-
férences, écoles d’été, séminaires,.... J’ai la chance d’être entouré d’un beau monde. Cer-
tainement il y aurait des oublis, je m’en excuse!!!
• Bref, mes plus vifs remerciements vont en premier lieu au Professeur Mamadou
Sangharé pour l’honneur qu’il m’a fait en acceptant de présider mon jury de thèse.
• Je tiens à remercier très sincèrement mon directeur de thèse le Professeur Cheikh
Thiécoumba Gueye, en lui exprimant ma profonde gratitude pour l’excellente for-
mation que j’ai reçue auprès de lui sur tous les plans (didactique, recherche, hu-
main,..). Merci infiniment "Monsieur" de m’avoir montré le chemin de par vos idées
débordantes, votre rigueur et ténacité dans le travail.
• J’exprime ma profonde gratitude aux Professeurs Thierry Berger, Pierre Loidreau
et Ayoub Otmani qui ont accepté d’être rapporteurs de cette thèse et examinateurs
dans ce jury. Merci pour ces remarques pertinentes qui du point de vue fond et
forme ont contribué à l’ amélioration de ce document.
• Je tiens à remercier le Professeur Djiby Sow d’avoir accepté d’être dans le jury en
qualité d’examinateur. Je suis marqué par votre ouverture scientifique très large
et surtout par votre générosité sans limite. Merci de m’avoir recommandé au pôle
PRMAIS et pour toutes les autres recommandations d’ailleurs!
• Je tiens à remercier le Professeur Oumar Diankha d’avoir accepté d’être dans le
jury en qualité d’examinateur. Merci d’avoir accueilli parfois, un petit curieux que
je suis, dans votre équipe de recherche. Merci d’avoir confiance en moi et de me
confier la charge de cours en Master TDSI!
• Mes sincères remerciements sans limites vont aussi à l’endroit du Docteur Pierre-
Louis Cayrel pour m’avoir encadré, guidé et initié dans beaucoup de concepts en
cryptographie et aussi de m’avoir mis en relation avec d’autres co-auteurs pour en-
richir mon travail. Merci de m’avoir permis de spammer votre boite emails avec
mes indénombrables questions:-).
• J’en profite pour remercier mes autres co-auteurs sans lesquels cette thèse n’aurait
pas vu le jour : Alassane Diouf, Richard Lindner, Mohammed Meziani, Robert Niebuhr,
Quentin Santos et Rosemberg Silva.
i
• Mes très Vifs remerciements à mes lecteurs indépendants: Cherif Tidiane Aïdara,
Jean Klamti Bélo sans qui ce documents n’aurait certainement jamais été finalisée.
• Je remercie également le Pole of Research in Mathematics and their Applications
in Information Security (PRMAIS) financé par la fondation Simons, dont je fais
parti, de m’avoir permis de participer à trois écoles d’été (déjà) à travers l’afrique
et de la subvention également. J’en profite pour remercier tous les membres très
sympathiques: En commençant par nos anciens(on est en Afrique!) les Docteurs
Tony ezome, Abdoul Aziz Ciss, Emmanuel Fouotsa, Patrick Rabarison, en suite les
thésards Hortense Boudjou, Nafissatou Diarra, Thierry Mefenza Nountu, Aminatou
Pecha Epse Nsangou, Herve Kalachi Talé.
• Je remercie vivement le Centre d’excellence africain en Mathématiques, Informa-
tique et Technologies de l’Information et de la Communication (CEA-MITIC) de
m’avoir payer mon billet d’avion Dakar-Alger-Dakar pour participer à la conférence
ICCC’2015. J’espère qu’il le reitère pour un déplacement vers d’autres horizons :-)!
• Je tiens à exprimer ma profonde gratitude:
– A tous les membres du département de Mathématiques et Informatique ainsi
qu’aux membres du Laboratoire d’Algèbre de Cryptographie de Géométrie Al-
gébrique et Applications (LACGAA) pour la sympathie qu’ils m’ont témoignée
durant ces années de thèse.
– Aux autres membres plus que sympathiques de notre équipe de recherche
Equipe de Recherche en Codes et Implémentations Sécurisées post-quantique
(ERCISpq) dirigée M. Cheikh Thiécoumba Gueye: Anta Niane Gueye, Modou
Mboup, Adiawa Haikréo, Mbouye Khady Diagne, Jean Klamti Belo, Brice Odilon
Boidje, Gilbert Dione, Cherif Fall, Yakhya Diop. A l’équipe de la présidence
dirigée par M. Babacar Alassane Ndaw: Omar Ndoye, Amapenda Gueye, Ababacar
Aziz Kane ...
– A Mes ancien du labo: Chérif DEME, Mouhamadou Lamine DIOUF, Abdol Aziz
CISS, Demba Sow , G. CAMARA, Régis Babindamana,Demba Sow , Youssef, EL.
Modou MBOUP, Ahmed Khalifa, Amadou TALL. Merci de nous avoir éclairé le
chemin!
– mes compagnons de tous les jours à la fac: Mouhamed Traoré(Trasasse), Alas-
sane Diouf(alias Rodriguez), Albert Diompy (V.I), Alfousseyni Ba, André Mi-
alébama, André Souley Diabang. Nos déjeunés au pavillion C: de "bons" sou-
venirs!
ii
– A mes compagnons dans les salles, je veux nommer mes étudiants: TDSI,
ESSA. Merci d’avoir pu supporter toutes mes explications kilométriques et théoriques,
mes débordments et les pauses oubliées.
– Au personnel administratif du département: M. Famara Massaly, Mme Mbaye,
Mme Ba et gnima la nouvelle recrue pour leur gentillesse et leur disponibilité.
– A mes amis: Tidiane(Zin abdala Kaas ibn barada :-)), Déthié, Lat, Mbengue(alias
lopez), Fallou (Luc Nicolaï),Diégane (alias ngor), Cheikh K. Ka, Fayelams, tous
mes promotionnaires du lycée....
• Je ne saurai terminer sans remercier très chaleureusement ma famille Papa, Ma-
man, mes frères et cousins: Les Paa Djibys, Madické, Lamina(Steve G), Paa Alsane
(Naruto), Makhfous, Mame Lissa, Fatou, Mama Awa, Ma grand Mère, Mes oncles et
tantes...
Merci Maman de m’avoir compris et soutenu à tout instant
Merci Paa de m’avoir donné goût à la recherche, aux mathématiques même si par-
fois je me perds dans tes formules, nous résoudrons d’autres problèmes ensemble!
Mention spéciale à Mame Diarra pour tes délicieux repas... que je n’arrive toujours
pas à bien conserver au frigo :-)
iii
DEDICACES
“ To God,
To Daddy,
To Mommy,
To my Grandmother ”
iv
Table des matières
1 Introduction 2
1.1 Cryptographie: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Les Services de la Cryptographie . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 La génération de nombres aléatoires . . . . . . . . . . . . . . . . . . . 4
1.1.3 Le Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.4 Le Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.5 Hachage et Signature caméléon . . . . . . . . . . . . . . . . . . . . . . 5
1.1.6 Cryptographie Post-Quantique . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Organisation du mémoire et Contributions . . . . . . . . . . . . . . . . . . . . 6
1.3 Publications personnelles et soumissions . . . . . . . . . . . . . . . . . . . . . 9
I Préliminaires 10
2 Rappels Mathématiques (Codes, Réseaux) 11
2.1 Généralités sur la théorie des codes . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Définition d’un code linéaire . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 Quelques Familles de Codes . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Groupes abéliens libres de type fini . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Généralités sur la théorie des réseaux . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Définition d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Base d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Réseaux équivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.4 Invariants d’un Réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.5 Dual d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Des Codes aux Réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Sécurité Prouvée et Cryptographie Post-Quantique 23
3.1 Généralités sur la cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1 Machine de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 Fonctions de base en cryptographie . . . . . . . . . . . . . . . . . . . . 25
v
TABLE DES MATIÈRES
3.2 Notions de sécurité en cryptographie . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Modèles de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 Quelques problèmes difficiles . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.3 Sécurité Prouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Quelques Primitives Cryptographiques Post-Quantiques . . . . . . . . . . . . 37
3.3.1 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2 Fonctions de Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.3 Chiffrement par flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
II Résultats 49
4 Les attaques critiques en Cryptographie basée sur les Codes 50
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Les attaques critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2.2 Résumé des attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3 Contre-mesures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5 Implémentations Efficaces de Fonctions de Hachage et chiffrements par Flux basés
sur les Codes 71
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2 Quelques bases cryptographiques . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.1 Primitives cryptographiques . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 chiffrements par flux basés sur les PRNG . . . . . . . . . . . . . . . . . 75
5.3 Fonction de Hachage basée sur les codes . . . . . . . . . . . . . . . . . . . . . 75
5.3.1 Choix des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.3.2 FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3.3 SFSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3.4 RFSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4 Les Générateurs de Nombres Pseudo-aléatoire(PRNG) basés sur les codes . 79
5.4.1 Schéma général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.2 SYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.3 2SC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.4 XSYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5 Les Techniques d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.1 Nettoiement du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.2 Registres classiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5.3 Registres XMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
vi
TABLE DES MATIÈRES
5.5.4 Représentation des données . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6.1 Bancs d’essai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6.2 Discussions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Un chiffrement par flux et prouvé sûr: SBS 87
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Les Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Le chiffrement par flux SBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.5 Securité de SBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.11 Les meilleures attaques connues contre SBS . . . . . . . . . . . . . . . . . . . 99
6.13 Résultats Experimentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.14 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7 Un PRNG basé sur des Problèmes de la Théorie des Réseaux 106
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.1.1 Acronymes et Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.1.2 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.3 Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.4 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3 Un PRNG basé sur ISIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.1 Construction du Bloc Central . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.2 Construction Itérative . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.3 Principe de Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.4 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.6 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.7 L’attaque par paradoxe d’anniversaire généralisé . . . . . . . . . . . . . . . . 116
7.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8 A LPN-Based Chameleon Hash Function 117
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8.2.1 The Learning from Parity with Noise Problem . . . . . . . . . . . . . . 121
8.2.2 LPN-based cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.3 LPN-based chameleon hash-function . . . . . . . . . . . . . . . . . . . . . . . 122
8.3.1 Chameleon hash function . . . . . . . . . . . . . . . . . . . . . . . . . . 122
vii
TABLE DES MATIÈRES
8.3.2 Our chameleon hash: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4 The security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.6.1 Chameleon signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Conclusion 131
Bibliographie 145
viii
Liste des Figures
3.1 Découpage de message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 Padding de message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3 schéma de Merkle-Damgård . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Construction Éponge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Construction de SYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1 Résultat des attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.1 Schéma de chiffrement par flux . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2 Fonction de mise à jour de FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3 Fonction de mise à jour de SFSB . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.4 Fonction de mise à jour de RFSB . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.5 schéma des PRNGs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6 schéma de SYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.7 Schéma de 2SC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.8 schéma XSYND: style FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.9 Performance des fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . 84
5.10 Performance des PNRGs et Chiffrement par Flux . . . . . . . . . . . . . . . . 84
6.1 Générateur de SBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2 structure des transformations utilisées dans SBS . . . . . . . . . . . . . . . . 94
6.3 Illustration de G1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4 Illustration de G2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.5 GBA pour k = 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.1 PRNG basé sur ISIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
ix
Liste des Tableaux
4.1 Comparaison des conversions et de la redondance . . . . . . . . . . . . . . . 67
6.1 Paramètres et performance de SBS. . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.2 performance annoncée pour SYND [64, 47]. . . . . . . . . . . . . . . . . . . . . . 104
6.3 performance annoncée 2SC [101, 47]. . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.1 Les paramères de SWIFFT[95] (n, q,m) = (64,257,1024). . . . . . . . . . . . . 112
7.2 Peformance comparée avec d’autre Stream Cipher . . . . . . . . . . . . . . . 115
1
Chapitre 1
Introduction
“ Où que vous soyez, quelqu’un vous
surveille. Ce quelqu’un vous le
connaissez peut-être, mais lui vous
connaît à coups surs. ”
anonyme 1984
Sommaire
1.1 Cryptographie: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Les Services de la Cryptographie . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 La génération de nombres aléatoires . . . . . . . . . . . . . . . . . . 4
1.1.3 Le Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.4 Le Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.5 Hachage et Signature caméléon . . . . . . . . . . . . . . . . . . . . . 5
1.1.6 Cryptographie Post-Quantique . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Organisation du mémoire et Contributions . . . . . . . . . . . . . . . . . 6
1.3 Publications personnelles et soumissions . . . . . . . . . . . . . . . . . . 9
2
CHAPITRE 1. INTRODUCTION
1.1 Cryptographie:
1.1.1 Les Services de la Cryptographie
La cryptographie est une des disciplines de la cryptologie s’attachant à protéger des mes-
sages en s’aidant souvent de secrets ou clés. En effet, elle offre un certain nombre de
services pour répondre aux exigences de la sécurité des transmissions: confidentialité,
authenticité , intégrité et la non-répudiation. Ces services de protection de l’information
utilisent souvent des algorithmes mathématiques pour cacher le sens des messages en
se reposant sur le principe de Kerckhoffs [87]. Ce principe exprime que la sécurité d’un
cryptosystème ne doit reposer que sur le secret de la clé. Autrement dit, tous les autres
paramètres doivent être supposés publiquement connus.
La cryptographie moderne est composée de deux familles que sont la cryptographie symétrique
et la cryptographie asymétrique.
La cryptographie symétrique consiste à échanger des données chiffrées à partir d’un se-
cret (appelé clé) connu uniquement par les parties concernées, le chiffrement comme le
déchiffrement nécessitant la même clé. Pour cela, il paraît nécessaire d’avoir un protocole
d’échange de clés sûr et efficace. De l’antiquité jusque dans les années 1970, la principale
préoccupation était la confidentialité; ainsi tous les systèmes de cryptographie étaient
symétriques et il n’existait pas de méthode sûre pour échanger les clés secrètes. Le DES,
l’AES, l’IDEA en sont les exemples les plus célèbres. Ces cryptosystèmes présentent en
général un avantage majeur qui se trouve être leur robustesse et leur rapidité mais mal-
heureusement ils ne permettent pas de garantir un partage de clé sûr et ne permet pas
d’assurer certains services de la cryptographie moderne tels que la non-répudiation.
Ce n’est qu’en 1976 que White Diffie et Martin Hellmann de l’université de Standford,
dans leur papier "New Direction In Cryptography", ont donné une solution au problème
de l’échange des clés et ont proposé en même temps le modèle théorique de la cryptogra-
phie à clé publique qui est appelé modèle de cryptographie asymétrique.
La cryptographie à clé publique intervient dans de nombreuses applications quotidiennes,
de l’utilisation de cartes à puce en passant par la téléphonie mobile, jusqu’à la connex-
ion d’un utilisateur à un ordinateur. RSA, Elgammal, DSA, ECDSA en sont les exemples
les plus célèbres. Cependant, la sécurité de ces applications reposait essentiellement sur
deux problèmes réputés difficiles de la théorie des nombres : le problème de factorisation
et le problème du logarithme discret. Bien que ces deux problèmes résistent encore aux
cryptanalystes, ils ne sont pas à l’abri d’une percée théorique ni même de l’ordinateur
quantique qui mettrait en danger la difficulté de les résoudre. En effet, dès 1994, P. Shor
[128] a montré que les ordinateurs quantiques peuvent casser la plupart des systèmes
cryptographiques classiques, par exemple ceux basés sur le problème de la factorisation
ou sur le problème du logarithme discret. Il est donc crucial de développer des systèmes
3
CHAPITRE 1. INTRODUCTION
de chiffrement qui sont résistants aux attaques quantiques.
La cryptographie basée sur les codes de correcteurs d’erreurs, sur les réseaux euclidi-
ens, sur les systèmes multivariés, ou bien sur le hachage sont des candidats très promet-
teurs pour la cryptographie post-quantique.
L’autre branche, la cryptanalyse intéresse également la communauté, c’est un ensemble
de techniques et d’outils théoriques et pratiques permettant d’évaluer la robustesse des
primitives cryptographiques. La sécurité théorique est en générale garantie si, casser une
primitive cryptographique revient à casser un problème réputé difficile (cf chap. 3). La
sécurité pratique est en générale évaluée en confrontant ces primitives aux attaques con-
nues et en proposant des paramètres de sécurité non atteignables par ces attaques en
temps polynomial. Pour les schémas de chiffrement et de signature les attaques pratiques
peuvent être de deux types:
• attaques structurelles ou algébriques qui porte en général sur les clés
• attaques critiques qui ne peuvent pas être évitées en augmentant la taille des clés,
elles sont portées généralement sur les messages clairs et sur les messages chiffrés.
Les moyens mis en œuvre pour offrir ces services sont appelés mécanismes de sécu-
rité: la génération de nombres (pseudo-)aléatoires, le hachage, le chiffrement et la signa-
ture.
1.1.2 La génération de nombres aléatoires
Un générateur de nombres pseudo-aléatoires, PseudoRandom Number Generator (PRNG)
en anglais, est un algorithme qui génère une séquence de nombres présentant certaines
propriétés du hasard telles l’indépendance(probabiliste) entre les différentes sorties du
générateur ou bien l’indistingabilité d’une sortie à une sortie purement aléatoire.
La fonction essentielle des PRNG cryptographique est la génération de clés de chiffrement
pour le chiffrement par flux ou par bloc, mot de passe robuste, ...
1.1.3 Le Chiffrement
Le chiffrement est le plus vieux outils de la cryptographie pour mettre en œuvre la confi-
dentialité. Il permet à partir d’une clé appelée clé de chiffrement de transformer un mes-
sage en une suite de nombres intelligibles que pour celui qui détient la clé de déchiffre-
ment.
4
CHAPITRE 1. INTRODUCTION
1.1.4 Le Hachage
Les fonctions de hachage cryptographiques sont à sens unique, et elles possèdent de
nombreux domaines d’utilisation. Nous donnons ci-dessous une liste non exhaustive de
ces domaines.
Intégrité des données: Il s’agit du service principal des fonctions de hachage. Ce service
permet d’assurer que les données n’ont pas été altérées lors d’une transmission ou d’un
stockage de manière intentionnelle ou non.
Authentification des messages: Dans le cadre de la cryptographie symétrique, ce ser-
vice permet de s’assurer de l’intégrité des données face à un adversaire actif. Pour obtenir
un MAC (Message Authentification Code), on chiffre le haché du message avec la clé
symétrique des entités qui échangent.
Signature électronique: La Signature électronique (ou numérique) fait par partie des
outils les plus importants de la cryptographie asymétrique. Elle permet d’assurer deux
services à savoir l’intégrité et la non-répudiation. Pour obtenir la signature d’un mes-
sage(ou empreinte), l’ensemble des hachés devrait être inclus dans l’ensemble des mes-
sages chiffrés. On déchiffre un haché avec la clé privée de l’expéditeur pour obtenir une
signature.
Protection des mots de passe: Dans l’exploitation des ressources informatique, pour
mettre en œuvre une politique d’accès on a souvent besoin de stocker le haché(scellé) des
mots de passe dans une base de données, pour éviter de les stocker en clair, afin d’assurer
une identification future des usagers.
1.1.5 Hachage et Signature caméléon
Dans les systèmes d’information hiérarchiques, si un message haché ou signé depuis un
nœud, doit être modifié par un autre nœud légitime, ce dernier après modification serait
obligé de redemander la signature du nouveau message afin de garder sa validité. Dans
ce cas, si le nœud signataire n’est pas connecté, alors il est serait impossible d’assurer la
validité du message. La signature caméléon apporte une réponse à cela en permettant
au signataire de choisir les agents qui peuvent modifier le message ainsi que les parties à
modifier.
Cette technique de signature peut être utilisé dans:
• les protocoles de routage(Proxy) sur internet pour lesquels les entêtes IP doivent
être modifié au cours de la transmission tout en gardant l’intégrité des données;
5
CHAPITRE 1. INTRODUCTION
• la gestion des mises à jour logiciel au niveau des postes clients par diverse équipes
de développeurs;
• la gestion de publicité des pages web chiffrés sur lesquels les agences de publicité
insèrent du contenu aléatoire(adapté à l’utilisateur);
• la gestion collaborative des dossiers médicaux des patients;
• la gestion(partage) des licences d’utilisation de contenu multimédia;
• la modification des certificats sans changer sa signature, donc sans être obligé de
faire des mises à jour chez les clients.
1.1.6 Cryptographie Post-Quantique
L’informatique quantique est un nouveau domaine de recherche qui n’a que récemment
commencé à fleurir. L’informatique quantique et la cryptologie quantique sont nées de
l’étude des principes de la mécanique quantique qui pourraient être utilisés dans l’exécution
des calculs.
En 1994, le domaine de l’informatique quantique avait une percée significative lorsque
Peter Shor d’AT&T Research Labs introduisit un algorithme quantique qui peut, en temps
polynomial probabiliste, factoriser de grands nombres entiers et résoudre le logarithme
discret sur machine quantique. C’était une percée spectaculaire car il a présenté l’un des
premiers exemples de scénario dans des techniques quantiques.
Dès lors, la communauté mathématique à penser à de nouvelles primitives capables de
résister à la machine quantique: cette nouvelle famille est appelée cryptographie post-
quantique.
Les différents candidats potentiels à cette famille sont la cryptographie basée sur les réseaux
qui disposent déjà de standards IEEE (NTRUCrytp, NTRUSign), la cryptographie basée
sur les codes, la cryptographie basée sur les systèmes multivariés, la cryptographie sur le
hachage et celle sur le calcul d’isogenie sur les courbes elliptiques.
1.2 Organisation du mémoire et Contributions
Le présent mémoire est composé de neufs chapitres dont trois sur les notions de bases et
cinq (4,5,6,7,8) pour la partie contribution et un pour une conclusion générale.
Chapitre 2: introduit quelques notions de base de la théories des codes, des réseaux arithmé-
tiques après avoir donné quelques propriétés préliminaires sur les groupes. Il faut
noter qu’il existe un lien entre la théorie des codes et celle des réseaux qui est intro-
duit à la fin de ce chapitre.
6
CHAPITRE 1. INTRODUCTION
Chapitre 3: présente quelques généralités sur la cryptographie moderne, les notions et modèles
de sécurité et termine par la présentation de quelques primitives cryptographiques
pour la cryptographie post-quantique.
Chapitre 4: présente un survey sur les attaques critiques en cryptographie basée sur les codes
et propose une conversion IND-CCA2 spécifique aux codes avec une redondance
plus petite que celle de Kobara et al. [88].
En effet, dans ce chapitre nous avons analysé la vulnérabilité des cryptosystèmes
de McEliece, Niederreiter, et HyMES face à plusieurs attaques critiques. Tous les
schémas ont montré des faiblesses face à la pluspart de ces attaques, HyMES contre
toutes les attaques sauf l’attaque de messages reliés. Ce résultat montre l’importance
des conversions pour ces cryptosytèmes qui protègent contre les attaques critiques.
Nous aussi avons proposé ici une nouvelle version de conversion spécifique aux
schémas basés sur les codes qui permet d’obtenir une plus petite redondance des
données par rapport aux conversions existantes.
Ce travail fait l’objet d’une publication [43] dans "International Journal of Informa-
tion and Coding Theory", 3(2):158–176, 2015.
Chapitre 5 : fait une étude sur les implémentations logicielles de deux familles de primitives
cryptographiques basées sur le problème du décodage par syndrome : les fonctions
de hachage et de chiffrement par flux. Ce chapitre étudie différents algorithmes,
à savoir, FSB, SFSB, RFSB, SYND, 2SC et XSYND, et améliore leur performance en
implémentations logicielles qui sont faites en langage C à l’aide de registres XMM
de Streaming SIMD Extensions (SSE). Nous avons réussi à battre les résultats des
implémentations de référence disponibles.
Ce travail fait l’objet d’une présentation dans WAIFI2014 et d’une publication [47]
dans Arithmetic of Finite Fields, volume 9061 of Lecture Note on Computer Sci-
ences, pages 187–203. Springer International Publishing, 2015.
Chapitre 6: présente un nouveau chiffrement par flux basé sur les codes, appelé SBS. En util-
isant le parallélisme, nous avons conçu un système très rapide par rapport à toutes
les propositions précédentes basées sur les codes. Sa sécurité est basée sur le prob-
lème de décodage par syndrome de mots réguliers et sa performance est compara-
ble à l’AES-CTR, il fonctionne à 7,8 cycles par byte, tandis que la performance de
l’AES-CTR est d’environ 7,59 cycles par byte.
Ce travail fait l’objet d’une présentation dans "International Conference on Coding
and Cryptography", USTHB, Alger, 2-5 Novembre 2015.
Chapitre 7: présente un PRNG basé sur des problèmes de réseau arithmétique au pire des cas
, en s’appuyant sur la dureté d’ISIS comme sécurité de base. En effet, nous avons
7
CHAPITRE 1. INTRODUCTION
conçu un système qui présente des similitudes avec la conception proposée dans
certains chiffrements de flux à sécurité prouvée comme QUAD [19] et SYND [66].
Nous avons prouvé l’indistingabilité de notre PRNG d’une véritable séquence pure-
ment aléatoire, à condition que le SIS soit difficile pour l’ensemble de paramètres
appliqués.
Ce travail fait l’objet d’une présentation dans "International Conference on Cod-
ing and Cryptography", USTHB, Alger, 2-5 Novembre 2015 et d’une publication à
paraitre dans "Applicable Algebra in Engineering, Communication and Comput-
ing".
Chapitre 8: introduit une nouvelle fonction de hachage caméléon basée sur le problème LPN.
notre fonction de hachage est non-interactive et est facile à implémenter. Cepen-
dant nous avons suggérer l’utilisation de matrice uniformément aléatoire qui de-
mande beaucoup d’espace mémoire. Nous pensons à l’avenir bâtir une telle fonc-
tion de hachage sur la version polynomiale de LPN et/ou d’utiliser les matrices
Toeplitz aléatoires tout en gardant le même niveau de sécurité.
Contributions par rapport aux objectifs du CBC/CEA-MITIC
Dans cette thèse, nous apportons quelques contributions à la cryptographie (symétrique
et asymétrique) basée sur les codes et sur les réseaux. Les résultats présentés ici sont le
fruit de trois années de recherche, d’octobre 2013 à janvier 2016, au sein de l’équipe de
recherche ERCISpq(Équipe de Recherche en Codes et Implantation post-quantique) du
Laboratoire LACGAA(Laboratoire d’Algèbre, de Cryptographie, de Géométrie Algébrique
et Applications) de l’Université Cheikh Anta Diop de Dakar. Cette thèse est réalisée dans
le cadre du projet CBC/CEA-MITIC du Laboratoire LACGAA représenté par le Professeur
Cheikh Thiécoumba Gueye, dont les contributions sont alignées aux objectifs du Projet.
Ces contributions qui ont fait l’objet de plusieurs publications dans des conférences in-
ternationales [47, 45, 46], et des chapitres d’ouvrage [46, 43], sont concentrées sur les
chapitres 4,5,6,7 et 8.
Entre autres nous regardons les attaques critiques face à la cryptographie basée sur les
codes en proposant de façon concrète des modèles d’attaque et donnant une conversion
IND-CCA2 spécifique de ces schémas(objectif 4 de CBC/CEA-MITIC).
Nous avons aussi amélioré la performance logicielle de pratiquement toutes les fonctions
de hachage, PRNG et les schémas de chiffrement par flux basés sur les codes(objectif 3 de
CBC/CEA-MITIC). Nous avons réussi à proposer de nouveaux PRNG et Chiffrement par
flux basés respectivement sur les réseaux et sur les codes(objectif 1 de CBC/CEA-MITIC).
Enfin nous proposons une fonction de hachage caméléon basée sur les codes ainsi que
la signature caméléon correspondante(objectif 1 de CBC/CEA-MITIC). Tous les schémas
8
CHAPITRE 1. INTRODUCTION
que nous avons proposés sont dotés de preuves de sécurité théorique et pratique.
Contributions par rapport aux objectifs du PRMAIS/SIMONS FOUNDA-
TION
this thesis is aligned to the objectives of PRMAIS/SIMONS FOUNDATION in the area of
fundamental mathematical research, and research in Applied Mathematics to Informa-
tion Security (Cryptology and Coding Theory)(objectif 1 of PRMAIS/SIMONS FOUNDA-
TION).
1.3 Publications personnelles et soumissions
[43] Critical attacks in code-based cryptography , International Journal of Information
and Coding Theory (IJICOT), Vol. 3, No. 2, 2015. Join work (P.-L. Cayrel, C. T. Gueye,
R. Niebuhr) DOI: 10.1504/IJICOT.2015.072639
[47] Efficient software implementations of code-based hash functions and stream-ciphers.
In Arithmetic of Finite Fields volume 9061 of Lecture Note on Computer Sciences,
pages 187–203. Springer International Publishing, 2015.Join work (P.-L. Cayrel, M.
Meziani, Q. Santos).
[46] A Pseudorandom Number Generator Based on Worst-Case Lattice Problems. To
be appeared in Applicable Algebra in Engineering, Communication and Comput-
ing(AAECC). Join Work (P.-L. Cayrel , M. Meziani, R. Lindner , and R. Silva).
[45] SBS: A Fast and Secure Syndrome-Based Stream Cipher, in "International Confer-
ence on Coding and Cryptography", USTHB, Alger, 2-5 Novembre 2015. Join Work
(P.-L. Cayrel, M. Meziani).
Chap. 8 A LPN-Based Chameleon Hash Function, en Soumission
Join work (P.-L. Cayrel, C. T. Gueye)
[52] Idempotent, Zero Divisors and Nilpotent Elements of the Quaternion and Octonion
rings over Fpk . Pioneer Journal of Algebra, Number Theory and its Applications,
Volume 8, Issues 1-2, Pages 17-32 (September & December 2014).
Join Work (A. Diouf)
[112] On Cyclic Codes over Fpk + vFpk + v2Fpk + ...+ v rFpk
ArXiv e-prints : http://arxiv.org/abs/1511.01955. Join Work (C. T. Gueye)
accepted in International Colloquium of Algebra, Number Theory, Cryptography
and Information Security, ANCI-Taza’2016, Morocco.
9
Part I
Préliminaires
10
Chapitre 2
Rappels Mathématiques (Codes,
Réseaux)
“ En mathématiques, on ne comprend
pas les choses, on s’y habitue. ”
John Von Neumann
Sommaire
2.1 Généralités sur la théorie des codes . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Définition d’un code linéaire . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 Quelques Familles de Codes . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Groupes abéliens libres de type fini . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Généralités sur la théorie des réseaux . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Définition d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Base d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Réseaux équivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.4 Invariants d’un Réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.5 Dual d’un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Des Codes aux Réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Dans cette section, nous donnerons quelques notions de base de la théories des codes,
des réseaux arithmétiques. Les codes linéaires de longueur n et dimension k sont des
sous-espaces vectoriels de dimension k d’un espace vectoriel (ambiant) de dimension n
sur un corps donné. Les réseaux arithmétiques quant à eux sont des sous-groupes dis-
crets de l’espace vectoriel euclidien Rn muni de son produit scalaire canonique. Dans ce
11
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
chapitre nous donnerons la définition de ces concepts après avoir donné quelques résul-
tats préliminaires sur les groupes. Ainsi, il existe des liens entre la théorie des codes et
celle des réseaux que nous introduirons dans ce chapitre.
12
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
2.1 Généralités sur la théorie des codes
2.1.1 Définition d’un code linéaire
Définition 2.1.1 (Code linéaire). Un code linéaire C de longueur n et de dimension k sur
le corps fini Fq ([n,k]-code), est un sous-espace vectoriel de dimension k < n de Fnq . Les
éléments de Fnq sont appelés mots(word) et ceux de C des mots de codes(codeword). Le taux
de transmission du code R est défini par R = kn .
Définition 2.1.2 (Encodeur , code linéaire) Soit C un code (n,k)-linéaire.
On appelle encodeur une application linéaire injective g de Fkq dans Fn
q , telle que C =
g (Fkq )
Remarque 2.1.1 Comme l’encodeur est Fq -linéaire , alors on peut l’exprimer :
g : Fkq ,→ Fn
q x : 7→ xG
C = g (Fkq ) = {xG|x ∈ Fk
q }
Avec G une matrice de rang k.
Définition 2.1.3 Soit C un code linéaire [n,k] sur Fq , une matrice génératrice G est une
matrice (k ×n) dont les lignes forment une base de C . Si c appartient à C alors c est une
combinaison linéaire des lignes de la matrice génératrice G. On peut ainsi écrire
C = {m ·G,m ∈ Fkq }.
Si G = [Ik ||Ak×(n−k)] avec Ik la matrice identité de dimension k et Ak×(n−k) une matrice k ×(n −k), on dit que G est sous forme systématique.
Définition 2.1.4 (Matrice de Parité). Soit C un (n,k)-code sur Fq .
Alors il existe une matrice H (n −k)×n sur Fq de rang n −k telle que
C = {c ∈ Fnq |H · c> = 0}
De telles matrices sont appelées matrices de parité de C .
Remarque 2.1.2 En particulier, si G est sous forme systématique, i.e. G = [Ik ||Ak×(n−k)],
alors H = [−A>k×(n−k)||In−k ] est une matrice de parité du code C .
Définition 2.1.5 (Syndrome). Soit C un (n,k)-code sur Fq et H une matrice de parité de C .
Pour tout x ∈ Fnq , le syndrome de x est le vecteur sx = H · x> ∈ Fn−k
q .
13
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
Les messages sont encodés a travers des mots de code en utilisant une matrice généra-
trice . Les mots de code c sont en général envoyés à travers un canal bruité ; ainsi on peut
recevoir un vecteur y ∈ Fnq différent du mot de code envoyé, i.e. y = c + e avec un certain
vecteur erreur e ∈ Fnq . La question qui se pose maintenant c’est comment décoder le mot
de code c( détecter l’erreur et la corriger).
En pratique, le décodeur essaie de trouver le mot de code le plus proche(décodage par
maximum de vraisemblance) du vecteur y reçu. On voit que si H est la matrice de parité
du code alors, H · y> = H · c>+H ·e> = H ·e>.
Pour donner un sens à ceci, nous allons définir la notion de distance sur Fnq et les condi-
tions sous lesquelles un processus de décodage correct est possible.
Définition 2.1.6 (Distance de Hamming, et Poids de Hamming)
La fonction:
d : Fnq ×Fn
q →N
(u, v) 7→ |{i ∈ {0, . . . ,n −1} : ui 6= vi }|
est une distance sur Fnq , appelée distance de Hamming.
Pour un mot x ∈ Fnq , son poids de Hamming est défini par:
w(x) := d(x,0).
Définition 2.1.7 (Distance minimale,capacité de correction). Soient n, t ∈N, C un [n,k]-
code linéaire sur Fq et x ∈ Fnq .
B(x, t ) := {y ∈ Fnq | d(x, y) ≤ t }
indique la boule de rayon t et de centre x.
1. la distance minimale de C est définie comme:
d := d(C ) := min{d(c,c′) | c,c
′ ∈C ,c 6= c′}
2. la capacité de correction de C est définie comme:
τ := maxc,c ′∈C ,c 6=c ′
{t ∈N | B(c, t )∩B(c′, t ) = ;} = b(d(C )−1)/2c
Définition 2.1.8 On notera [n,k,d ] un code de longueur n de dimension k et de distance
minimale d.
14
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
Supposons que nous sommes intéressés par des codes de q-aires (pas nécessairement
linéaire) de longueur n et de distance minimale d qui ont beaucoup de mots de code.
Quelle est la plus grande taille qu’un tel code peut avoir? En théorie de l’information, pour
un canal q-aire symétrique de probabilité de transition p ∈ [0,1− 1q ] (c’est la probabilité
pour qu’un symbole émis x soit changé en un symbole y 6= x), la capacité est 1−Hq (p), où
Hq est la fonction d’entropie q-aire de Hilbert :
Hq (p) = p logq (q −1)−p logq p − (1−p) logq (1−p)
.
Proposition 2.1.3 (Borne de Gilbert-Varshamov). Soient n,k et d des entiers positifs tels
que 2 ≤ d ≤ n et 1 ≤ k ≤ n .
Si qn−k >∑d−2i =0
( in−1
)(q −1)i := Vq (n −1,d −2), alors il existe un code linaire [n,k] sur Fq de
distance minimale au moins égale à d.
Cette borne peut être démontrée avec des arguments probabilistes, qui permettent de
plus d’obtenir que la probabilité qu’un code tiré uniformément au hasard soit en dessous
de la borne de Varshamov-Gilbert tend exponentiellement vers zéro avec la longueur n.
L’objectif général est de construire des familles de codes asymptotiquement bonnes.
Définition 2.1.9 Une famille de codes Ci , de paramètres [ni ,ki ,di ]q est asymptotiquement
bonne si:
limsupki
ni> 0, et limsup
di
ni> 0
Théorème 2.1.4 (Borne Asymptotique Gilbert-Varshamov). Sur Fq , pour tout δ ∈ [0,1− 1q ],
alors il existe une infinité de code C q-aire avec un taux d’information:
R(C ) ≥ 1−Hq (δ)−o(1)
.
2.1.2 Quelques Familles de Codes
Codes Cycliques
Un code cyclique sur Fq est un code Fq -linéaire stable par permutation circulaire des co-
ordonnées des mots du code i.e. si C est un code cyclique, alors
(c0, ...,cn−1) ∈C ⇒ (cn−1,c0, ...,cn−2) ∈C
Si l’on représente le mot de code ci-dessus par le polynôme c(x) = c0+c1x+...+cn−1xn−1,
alors la permutation circulaire d’une unité à droite correspond à la multiplication par x
15
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
modulo xn −1. Un code cyclique q-aire est un idéal de l’anneauFq [x]
<xn−1> des polynômes à
coefficients dans le corps à q éléments Fq modulo xn −1, et sera de la forme C =< g (x) >,
c’est-à-dire que tout élément de C est un multiple d’un certain polynôme g (x) à coeffi-
cients dans Fq . Lorsqu’il est de degré minimal et unitaire, ce polynôme est unique, nous
l’appellerons polynôme générateur du code.
Théorème 2.1.5 Soit C un code cyclique dansFq [x]
<xn−1> . Il existe un polynôme g (x) ∈C avec
les propriétés suivantes:
• g (x) est l’unique polynôme unitaire de degré minimal dans C ,
• C =< g (x) >, et
• g (x)|(xn −1).
Soit k = n −deg (g (x)), et g (x) =∑n−k
i =0 gi xi , où gn−k = 1. Alors
• la dimension de C est k et {g (x), xg (x), ..., xk−1g (x)} forme une base de C ,
• chaque élément de C est exprimé d’une manière unique comme un produit g (x) f (x),
où f (x) = 0 ou deg ( f (x)) < k.
Codes Quasi-Cycliques
Les codes quasi-cycliques sont une généralisation des codes cycliques et peuvent être
définis comme des codes cycliques sur un anneau de matrices à coefficients dans Fq .
Définition 2.1.10 Soit n = ln0, la permutation quasi-cyclique σl sur {0, ...,n − 1} d’ordre
l et d’index n0 est la permutation définie par les orbites {(0, ..., l − 1), (l , ...2l − 1), ..., ((n0 −1)l , ...,n −1)}.
Définition 2.1.11 Un code linéaire C de longueur n = ln0 est un code quasi-cyclique d’ordre
l et d’index n0 s’il est globalement invariant sous l’action de σl .
Pour n0 = 1, ce code quasi-cyclique devient cyclique.
Définition 2.1.12 (Matrice Quasi-cyclique) une k ×n-matrice par bloc avec n = ln0 et k =
l k0 est appelé quasi-cyclique si chaque bloc est cyclique de taille l × l
Codes de Goppa
Définition 2.1.13 (Codes de Goppa q-aire). Soit n, t, m des entiers positifs tels que 0 < t < n
, m ≥ 2 et n ≤ qm . Soit
g (x) =t∑
i =0gi xi ∈ Fqm [x]
16
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
un polynôme de degré t appelé polynôme de Goppa et
L = (α0, ....αn−1)
un n-uplet d’éléments de Fqm distincts deux à deux ,tels que
g (αi ) 6= 0, ∀i ∈ {0, ...,n −1}
Le code de Goppa de polynôme générateur g (x) et de support L, notéΓ(L, g (x)), est l’ensemble
des mots c = (c0, ....,cn−1) ∈ Fnq tels que:
Rc (x) = −n−1∑j =0
c j
g (α j )
g (x)− g (α j )
x −α j= 0 mod g (x) (2.1)
Comme deg (Rc (x)) < deg (g (x)), pour tout c ∈ Fnq , alors dans Fqm [x] on a Γ(L, g (x)) = {c ∈
Fnq |Rc (x) = 0}, et si de plus g (x) est irréductible alors Γ(L, g (x)) est appelé code de Goppa
irréductible.
A partir de cette définition, on peut donner la matrice de parité du code de Goppa en
fonction du support L et du polynôme générateur g (x).
g (x)− g (α j )
x −α j=
t∑i =0
gi
xi −αij
x −α j=
t∑i =0
gi
i−1∑s=0
αi−1−sj xs =
t−1∑s=0
xst∑
i =s+1giα
i−1−sj
A partir de l’équation 2.1 nous obtenons, pour tout c ∈Γ(L, g (x))
Rc (x) =n−1∑j =0
c j
g (α j )
t−1∑s=0
xst∑
i =s+1giα
i−1−sj =
t−1∑s=0
(n−1∑j =0
c j
g (α j )
t∑i =s+1
giαi−1−sj )xs = 0
Ainsi pour 0 < s < t −1n−1∑j =0
(1
g (α j )
t∑i =s+1
giαi−1−sj )c j = 0 (2.2)
Donc la matrice de parité H du code de Goppa peut être écrit sous cette forme:
H =
1
g (α0) g t · · · 1g (αn−1) g t
1g (α0) (g t−1 + g tα0) · · · 1
g (αn−1) (g t−1 + g tαn−1)...
. . ....
1g (α0)
∑ti =1 giα
i−10 · · · 1
g (αn−1)
∑ti =1 giα
i−1n−1
= T ·V ·D
où T =
g t 0 0 · · · 0
g t−1 g t 0 · · · 0...
......
. . ....
g1 g2 g3 · · · g t
, V =
1 · · · 1
α0 · · · αn−1...
. . ....
αt−10 · · · αt−1
n−1
, et D =
1
g (α0)1
g (α1)
1g (αn−1)
La matrice T étant inversible alors on peut écrire H = V ·D sans nuire à la généralité car
V ·D · c = 0, pour tout c ∈ Γ(L, g (x)). Comme Fqm est un espace vectoriel de dimension m
sur Fq , alors La matrice H est écrite comme une mt ×n-matrice sur Fq d’où ce théorème.
17
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
Théorème 2.1.6 Le code de Goppa Γ(L, g (x)), où deg (g (x)) = t < |L|, a pour longueur n =
|L| , une dimension k vérifiant
n −mt ≤ k ≤ n − t
et de distance minimale d vérifiant
d º t +1.
Les codes de Goppa sont très intéressants car ils possèdent un algorithme de décodage ef-
ficace, et que, dans le cas binaire, la borne sur la distance minimale devient d ≥ 2t + 1.
Cette famille a été proposée pour la cryptographie depuis la présentation du crytosystème
de McEliece en 1978 [97] et reste sûr jusqu’a ce jour. Patterson a proposé dans [117]un
algorithme efficace pour le décodage des codes de Goppa jusqu’à t erreurs.
2.2 Groupes abéliens libres de type fini
Définition 2.2.1 (Groupe de type fini). Un groupe est dit de type fini s’il admet un système
générateur fini.
Dans la suite, les groupes considérés seront abéliens et de type fini munis d’une loi notée
additivement.
Remarque 2.2.1 Pour tout l ∈ N et g ∈ G un élément d’un groupe, alors on notera l .g =
g + g + ...+ g la somme du terme g , l fois .
Définition 2.2.2 Soit G un groupe (abélien de type fini), G1 et G2 deux sous-groupes de G.
Le groupe G est somme directe des sous-groupes G1 et G2, si tout élément G s’écrit d’une
manière unique comme somme d’un élément de G1 et d’un élément de G2. On note G =
G1 ⊕G2.
Remarque 2.2.2 G = G1 ⊕G2 si et seulement si G = G1 +G2 et G1 ∩G2 = {0}
Définition 2.2.3 Soit G un groupe et B = (b1, ...,bn) une famille d’éléments de G. On dit que
B est une base de G si G =Zb1 ⊕ ...⊕Zbn .
Remarque 2.2.3 Vu autrement, un groupe abélien peut être aussi défini comme un module
sur l’anneau des entiers relatifs Z.
Tout groupe abélien de type fini n’a pas forcément une base. Exemple (Zp ,+)
Théorème 2.2.4 Soit G un groupe abélien de type fini alors toutes les bases de G, si elles
existent, ont même cardinal fini n, appelé rang de G. G est isomorphe à Zn .
18
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
Proposition 2.2.5 Soit v = l1b1 + ... + lnbn ∈ G. Si les entier (l1, ..., ln) sont premiers en-
tre eux dans leur ensemble, alors il existe des vecteurs v2, v3, ..., vn ∈ G tels que la famille
(v, v2, ...., vn) forme une base de G.
Théorème 2.2.6 Soit G groupe abélien libre de rang n, et G′ un sous-groupe abélien de
G non nul. Alors il existe une base (e1, ...,en) de G et des entiers non nuls d1, ...,dk avec
0 ≤ k ≤ n tels que (d1e1, ...,ek ek ) forme une base de G′. En particulier, G′ est groupe abélien
libre de rang k ≤ n.
2.3 Généralités sur la théorie des réseaux
On se place dans l’espace vectoriel euclidien Rn muni de son produit scalaire canonique.
2.3.1 Définition d’un réseau
Définition 2.3.1 Soit Γ⊂Rn , Γ est appelé réseau s’il est un sous-groupe discret de Rn .
Exemple 2.3.1 Zn est un réseau de Rn ,
Γ2 =Z(10)⊕Z(1
2) est un réseau de R2.
2.3.2 Base d’un réseau
Définition 2.3.2 On appelle base du réseau Γ ⊂ Rn de rang k ≤ n, toute famille (e1, ...,ek )
de vecteur de Rn telle que Γ =Ze1 ⊕ ...⊕Zek .
Remarque 2.3.2 les bases du réseau Γ sont donc des bases du groupe libre Γ au sens de 2.2.
Remarque 2.3.3 Soit B la matrice dont les colonnes sont formées par les vecteurs d’une
base, alors Γ est vu comme {Bx|x ∈Zk }
Dans las suite nous travaillons avec des réseaux de rang plein i.e. qui engendrent Rn
comme R-espace vectoriel.
Lemme 2.3.4 Une matrice carrée P ∈ Mn(Z) à coefficients dans Z est inversible si et seule-
ment si son déterminant vaut ±1.
Ceci permet de caractériser les bases des réseaux de rang plein.
Théorème 2.3.5 Soit Γ un réseau et (ε1, ...,εn) une base de Γ, la famille des (e1, ...,en) est
une base de Γ si et seulement si la matrice de passage de (ε1, ...,εn) à (e1, ...,en) à pour déter-
minant ±1.
19
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
2.3.3 Réseaux équivalents
Définition 2.3.3 Soient u = (u1, ..., vn) et v = (v1, ..., vn) deux vecteurs de Rn , le produit
scalaire de u et de v est :
u · v =< u, v >=n∑
i =1ui · vi
Définition 2.3.4 La norme euclidienne d’un vecteur u = (u1, ..., vn) de Rn est définie par:
‖u‖ =p< u,u > =
√n∑
i =1u2
i
Définition 2.3.5 Deux réseaux Γ et Λ de Rn sont dits équivalents, s’il existe un automor-
phisme orthogonal f ∈ On(R) tel que f (Γ) =Λ.
2.3.4 Invariants d’un Réseau
Les invariants d’un réseau sont des propriétés qui reste constantes pour des réseaux équiv-
alents
Définition 2.3.6 Soit (e1, ...,en) une Z-base d’un réseau Γ, la matrice de Gramm par rap-
port à cette base est G = (< ei ,e j >) = B ·B>, avec la matrice correspondante à cette base.
Définition 2.3.7 On appelle déterminant du réseau Γ, le déterminant d’une matrice de
Gramm de Γ.
La proposition qui suit montre que le déterminant d’un réseau est un invariant.
Proposition 2.3.6 Deux réseaux équivalents ont le même déterminant.
Proposition 2.3.7 Soit Γ et Γ′ deux réseaux de Rn , supposons que Γ′ ⊂Γ, alors
det(Γ′) = det(Γ) · [Γ :Γ′]2.
Définition 2.3.8 On appelle le minimum d’un réseau la valeur
Mi n(Γ) = Mi n{‖x‖2 |x ∈Γ, x 6= 0} = Mi n{< x, x > |x ∈Γ, x 6= 0}
Proposition 2.3.8 Deux réseaux équivalents ont le même minimum.
20
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
2.3.5 Dual d’un réseau
Définition 2.3.9 L’espace dual de V = Rn est l’espace vectoriel V∗ = HomR(V,R) des formes
linéaires sur R.
Théorème 2.3.9 L’application V → V∗, v 7→ (x 7→ v ·x) est un isomorphisme. En particulier,
quel que soit ϕ ∈ V∗, il existe un unique vϕ ∈ V tel que ϕ(x) = vϕ · x
Définition 2.3.10 Soit Γ = Ze1 ⊕ ...⊕Zen un réseau. Le dual du Z-module libre est le Z-
module HomZ(Γ,Z) des applications Z-linéaires de Γ dans Z.
Définition 2.3.11 On appelle réseau dual du réseau Γ, le réseau
Γ = {v ∈Rn , v · x ∈Z ∀x ∈Γ} =Ze1 ⊕ ...⊕Zen
avec ei le i-ème vecteur correspondant à la i-ème application du dual de Γ cf. théorème
2.3.9.
Proposition 2.3.10 On peut identifier le dual du réseau Γ à un sous ensemble du dual de
V
ΓwHomZ(Γ,Z)w {ϕ ∈ HomR(V,R), ϕ(ei ) ∈Z pour 1 ≤ i ≤ n}
Réseaux Entiers
Définition 2.3.12 Un réseau Γ est dit entier si pour tout x, y ∈Γ alors x · y ∈Z.
Exemple 2.3.11 Zn est un réseau entier et il coïncide avec son dual
Corollaire 2.3.12 • Si un réseau est entier alors sa matrice de Gramm est à coefficients
dans Z
• Tout réseau entier est inclus dans son réseau dual
• Le déterminant et le minimum d’un réseau entier sont des entiers.
Proposition 2.3.13 Si L est un réseau entier et L son réseau dual, alors
det(L) = [L : L].
21
CHAPITRE 2. RAPPELS MATHÉMATIQUES (CODES, RÉSEAUX)
2.4 Des Codes aux Réseaux
Dans cette partie nous allons définir le lien qui existe entre les réseaux et les codes linéaires.
Nous essayerons à partir d’un code linéaire donner le réseau associé et quelques pro-
priétés de ce réseau en fonction du code sous-jacent.
On considère le réseau Zn ⊂ Rn , p un nombre premier et l’application ρ : Zn → (Z/pZ)n
définie ρ(x1, ...xn) = (x1, ..., xn).
Lemme 2.4.1 Soit C un code linéaire sur Fp de longueur n, alors ρ−1(C) est un sous réseau
de Zn
Preuve 2.5 on considère le morphisme canonique i : Fnp → Fn
p /C et on pose le morphisme
f :Zn → Fnp /C : x 7→ f (x) = i (ρ(x)),
alors ker( f ) = ρ−1(C) un sous groupe de Zn
Définition 2.5.1 Le réseau associé au code linéaire C ⊂ Fnp est :
ΓC =1ppρ−1(C) =
1pp
(C+pZn)
On remarque ici que ΓC = { 1pp (c + pz),c ∈ C et z ∈ Zn}. On déduit de la définition, les
proposition suivantes:
Proposition 2.5.1 Soient C1 et C2 deux codes linéaires sur Fp , avec p premier. Si C1 ⊂ C2
alors ΓC1 ⊂ΓC2
Proposition 2.5.2 Soit C un [n,k]-code sur Fp , avec p premier. alors le déterminant de ΓC
det(ΓC) = pn−2k
Preuve 2.6 ρ−1(C) est un sous réseau du réseau entierZn , alors d’après la proposition 2.3.7,
det(ρ−1(C)) = det (Zn).[Zn : ρ−1(C)]2. Or Zn/ker( f ) ' Fnp /C donc, det(ρ−1(C)) = |Fn
p /C|2 =
(pn−k )2 = p2n−2k
Chaque coefficient de la matrice de Gramm de ΓC est celui de ρ−1(C) multiplié par 1pp
1pp =
1p , donc finalement det(ΓC) = ( 1
p )n det(ρ−1(C)) = pn−2k
Théorème 2.6.1 Le réseau associé au code dual C> est le dual du réseau associé au code C
ΓC> = ΓC
Corollaire 2.6.2 Le réseau ΓC est entier si et seulement si C ⊂ C>.
Proposition 2.6.3 Le réseau associé à un code cyclique est cyclique
22
Chapitre 3
Sécurité Prouvée et Cryptographie
Post-Quantique
“ En mathématiques, prouver que
quelque chose est impossible n’a «
aucun intérêt pratique ». Mais en
cryptologie « si on peut garantir que
l’adversaire est dans l’impossibilité
d’accéder à des données la preuve
devient utile » ”
Jacques Stern
Sommaire
3.1 Généralités sur la cryptographie . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1 Machine de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 Fonctions de base en cryptographie . . . . . . . . . . . . . . . . . . . 25
3.2 Notions de sécurité en cryptographie . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Modèles de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 Quelques problèmes difficiles . . . . . . . . . . . . . . . . . . . . . . 30
3.2.3 Sécurité Prouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Quelques Primitives Cryptographiques Post-Quantiques . . . . . . . . . 37
3.3.1 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2 Fonctions de Hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.3 Chiffrement par flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
23
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
3.1 Généralités sur la cryptographie
3.1.1 Machine de Turing
Tous les ordinateurs d’aujourd’hui ont le même ancêtre, la machine de Turing (TM), une
machine abstraite inventée par Alan Turing en 1936. Dans sa forme canonique simplifiée,
elle est composée de trois objets:
1. un ruban(ou bande) divisé en une suite infinie de cases mémoire;
2. une tête de lecture/écriture qui à chaque instant est placée devant une case et peut
être dans l’état 0 ou 1;
3. une table de transitions qui contient une série de transitions.
La notion de machine de Turing permet de manipuler formellement les problèmes de
calculabilité et de traitement de l’information ainsi que la notion de complexité. Ces ma-
chines permettent donc de formaliser de façon abstraite la difficulté d’un problème et
constituent le modèle de calcul le plus couramment utilisé en cryptologie.
D’une manière formelle, à chaque instant le fonctionnement de la machine ne dépend
que de deux paramètres: le symbole lu, c’est-à-dire celui qui est situé dans la case sur
laquelle est placée la tête de lecture/écriture, et l’état de la machine. Pour contrôler la
machine, le programmeur dispose en effet d’un ensemble fini d’états Q de son choix. Il
fixe également l’état initial. C’est le programme qui va déterminer ce que la machine va
faire en fonction du couple (p,s) constitué par l’état courant de la machine et le symbole
lu. Si la cellule est vide, on considère que le symbole lu est un symbole particulier appelé
"blanc".
Définition 3.1.1 machine de Turing.
Une machine de Turing est un septuplet (Q,Σ,Γ, p0,b,δ,F) où
1. Q est l’ensemble des états (fini) de la tête de lecture/écriture;
2. Γ est l’alphabet de travail (fini);
3. � ∈Γ est un symbole particulier appelé blanc;
4. Σ est l’alphabet d’entrée (fini),Σ⊆Γ\�;
5. p0 ∈ Q est l’état initial;
6. F ⊆ Q est l’ensemble des états acceptants (ou finaux, terminaux);
24
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
7. δ : Q×Γ→ Q∪ {"yes","no"}×Γ× {←,→,−} est la fonction de transition.
Où "yes" est l’état d’accepter, et "non" est l’état de rejet. Les instructions de déplace-
ment sont ← pour déplacer d’une étape à gauche, → pour déplacer d’une étape à
droite, et − pour ne pas déplacer la tête de lecture.
La fonction de transition δ associe l’état courant p ∈ Q et le symbole lu γ ∈ Γ , le triplet
(q,ρ,D) où q ∈ Q∪ {"yes","no"} est l’état suivant, ρ ∈Γ le symbole à écrire à la place de γ
, et D ∈ {←,→,−} indique comment la tête de lecture doit bouger.
La tête reste initialement au début de la bande, et le symbole � est écrit sur la première
case. La fonction de transition doit satisfaire aux conditions suivantes décrites dans la
table:
• si le symbole� est lu, se déplacer vers la gauche est interdit,
• le symbole� ne peut pas être effacé.
Cela garantit que la tête ne quitte jamais la bande sur le côté gauche.
Ce modèle est appelé machine de Turing à une bande. On peut aussi envisager de ma-
chines de Turing avec plusieurs bandes, et une tête sur chaque bande comme dans le cas
des programmes probabilistes pour lesquels on a besoin de rubans aléatoires.
Si on veut résoudre un problème fonctionnel avec une machine de Turing, on écrit
l’entrée sur le ruban, on lance la machine de Turing, et on attend jusqu’à ce qu’il s’arrête.
La sortie sera lue sur la bande. Si la machine s’arrête toujours et renvoie la réponse cor-
recte, on dira qu’il résout le problème en question.
La complexité de temps est le nombre d’étapes avant que la machine de Turing résolve un
problème donné. Une telle machine de Turing est dit déterministe parce que son com-
portement ne dépend que de l’entrée.
Un problème est dit déterministe en temps polynomial s’il existe une machine de Turing
déterministe qui le résout en temps polynomial de la taille de l’entrée.
Définition 3.1.2 On appelle programme ou algorithme le graphe de la fonction de transi-
tion δ d’une machine de Turing.
3.1.2 Fonctions de base en cryptographie
Définition 3.1.3 (Fonction polynomiale).
Une fonction f :N→N est dite polynomiale si,
∃n ∈N,∃K ∈N,∀l > K, f (l ) ≤ l n
25
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Définition 3.1.4 (Fonction négligeable).
Une fonction µ :N→R+ est dite négligeable si,
si, pour tout polynôme p, il existe un nombre entier N tel que µ(n) ≤ 1p(n) , ∀n > N.
Définition 3.1.5 (Fonction à sens unique).
Une fonction f est à sens-unique si elle peut être évaluée en temps polynomial, mais ne peut
être inversée en temps polynomial. En d’autres termes, il existe un algorithme d’évaluation
E dont le temps d’exécution
Ti me(E ) = maxx
{E ( f , x)},
est polynomial en la taille des entrées. Et pour tout adversaire A , fonctionnant en temps
polynomial Ti me(A ), sa probabilité de succès Succow (A ) de l’inversion de la fonction f ,
est négligeable en la taille des entrées:
Succow (A ) = Prx[ f (A ( f (x))) = f (x)]
Définition 3.1.6 (Fonction à sens unique à trappe).
Une fonction ( f , t ) est dite à sens-unique à trappe si la fonction f est à sens-unique, mais
l’information t (appelée trappe) permet une inversion aisée de la fonction f : il existe un
algorithme d’inversion E dont le temps d’exécution
Ti me(E ) = maxx
{E ( f , t , x)},
est polynomial en la taille des entrées.
Définition 3.1.7 (Famille de fonctions à sens unique) Une famille de fonction { fm : {0,1}m 7→{0,1}L} est à sens unique d’une sécurité p(m)(polynôme en m), s’il y a une Machine de Turing
à temps polynomial qui les évalue et pour tout adversaire A qui tourne en temps polyno-
mial, alors
Pr[A i nver t s fm(x)] ≤ 1
2+ 1
p(m).
où la probabilité est calculée avec des paramètres aléatoirement choisis d’une manière uni-
forme x ∈ U({0,1}m).
Définition 3.1.8 (Distinguer une fonction à sens unique en une seule requête) Étant donné
une fonction à sens unique g : {0,1}m → {0,1}L, on définit un distingueur en temps t pour
g , un algorithme probabiliste A qui, prend en argument une séquence de L bits et retourne
comme résultat 0 ou 1. On définit l’avantage de A de distinguer g d’une parfaite séquence
aléatoire comme
Advpr ngg (A ) =
∣∣∣Prx∈{0,1}m (A (g (x)) = 1)−Pry∈{0,1}L (A (y) = 1)∣∣∣ .
26
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Les probabilités sont considérées sur des valeurs choisies uniformément aléatoires x ∈ {0,1}m ,
y ∈ {0,1}L. On définit l’avantage de distinguer la fonction g en temps t comme
Advpr ngg (t ) = maxA
{Advpr ng
g (A )}
.
Définition 3.1.9 (Pseudorandom Number Generator (PRNG)) Nous dirons qu’une fonc-
tion g est une PRNG si Advpr ngg (t ) est négligeable pour t fixé. Cela permet d’ajuster la défi-
nition d’un PRNG aux niveaux de sécurité reconnus.
Définition 3.1.10 (Fonctions de hachage).
Une famille H de fonctions H : {0,1}∗ → {0,1}k est une famille de fonctions de hachage
cryptographiquement sûres si elle vérifie les trois propriétés suivantes :
• résistance à la pré-image : toute fonction H ∈H est une fonction à sens unique;
• résistance à la seconde pré-image : il n’existe pas d’algorithme polynomial permet-
tant, étant donnés un message m ∈ {0,1}∗ et une fonction H ∈H, de trouver m′ 6= m
tel que H (m) = H (m′);
• résistance aux collisions: il n’existe pas d’algorithme polynomial permettant, étant
donnée une fonction H ∈H, de trouver deux messages m′,m ∈ {0,1}∗ tels que m
′ 6= m
et H (m) = H (m′);
A noter que {0,1}∗ =⋃∞
k=1{0,1}k forme l’ensemble des mots binaires de longueur finie.
Définition 3.1.11 Système de chiffrement à clé publique.
Un schéma de chiffrement à clé publique se compose d’un couple (P ,C ) où
1. P est l’espace des textes clairs
2. C est l’espace des textes chiffrés
et de trois algorithmes s’exécutant en temps polynomial (Epk ,Dsk ,K (1k ))
• L’algorithme de génération des clés K (1k ) est un algorithme probabiliste en temps
polynomial qui prend en entrée un paramètre de sécurité k (que l’on note souvent en
notation unaire 1k ) et produit une paire (pk, sk) où pk est appelé la clé publique, et
sk la clé secrète correspondante.On notera (pk, sk) ← K (1k ). On dira aussi que la
paire (pk, sk) correspond à la paire de clés de chiffrement/déchiffrement.
• L’algorithme de chiffrement Epk est un algorithme probabiliste en temps polynomial
qui prend en entrée un paramètre de sécurité 1k , une clé publique pk choisie par
K (1k ), et une chaîne m ∈P , appelée le message, et qui produit une chaîne en sortie
27
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
c ∈ C appelée le chiffré. On utilisera la notation c ← Epk (m,r ) pour dire que c est
un chiffrement du message m en utilisant la clé publique pk avec un paramètre k de
sécurité et un aléa r .
• L’algorithme de déchiffrement Dsk est un algorithme en temps polynomial qui prend
en entrée un paramètre de sécurité 1k , une clé secrète sk choisie dans K (1k ), quelques
fois un aléa s et un chiffré c ← Ep k(m,r ) et qui produit une chaîne m0 ∈P telle que
pour toute paire (pk, sk) dans K , pour tout message m, et pour tout chiffré c ∈C , la
probabilité Pr [Dsk (c, s) 6= m0] soit négligeable.
Définition 3.1.12 Schéma de signature.
Un schéma de signature se compose d’un triplet d’algorithmes (K ,S ,V ) et d’un couple
d’ensembles (P ,S ) où
1. P est l’espace des textes clairs
2. S est l’espace des signatures
• L’algorithme de génération des clés K (1k ) est un algorithme probabiliste en temps
polynomial qui prend en entrée un paramètre de sécurité k et produit une paire
(pk, sk) où pk est appelé la clé de vérification, et sk la clé de signature correspon-
dante. On notera (pk, sk) ←K (1k ). On dira aussi que la paire (pk, sk) correspond à
la paire de clés de signature/vérification.
• L’algorithme de génération de signature Ssk est un algorithme en temps polynomial
qui prend en entrée un paramètre de sécurité 1k , une clé privée sk choisie par K (1k ),
et une chaîne m ∈ P , appelée le message, et qui produit une chaîne en sortie s ∈ S
appelée signature à partir de m ou du haché H (m). On utilisera la notation s ←Ssk (m) pour dire que s est une signature du message m en utilisant la clé privée sk
avec un paramètre k de sécurité.
• L’algorithme de vérification de signature Vpk est un algorithme en temps polynomial
qui prend en entrée un paramètre de sécurité 1k , une clé publique pk choisie dans
K (1k ), un message m ∈P et une signature s ←Ssk(m) , calcule le haché de m haché
H (m) et produit Tr ue ou Fal se telle que pour toute paire (pk, sk) dans K , pour tout
message m ∈ P , et pour toute signature s ← Ssk (m), la probabilité Pr [Vpk (s,m) 6=Tr ue] soit négligeable.
28
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
3.2 Notions de sécurité en cryptographie
L’objectif de la cryptographie est de construire des systèmes de chiffrement inviolables.
D’une manière formelle leur sureté repose sur deux critères : la sécurité inconditionnelle
ou la sécurité calculatoire.
La sécurité inconditionnelle (ou sécurité parfaite) introduite en 1949 par Claude Shanonn,
assure que la connaissance du message chiffré ne donne aucune information sur le mes-
sage claire et d’une manière inductive le choix d’un message ne donne aucune informa-
tion sur le chiffré correspondant. Il montra que ce niveau de sécurité peut être atteint
dans le cas de la cryptographie symétrique que si le message est aussi long que la clé util-
isée et que cette clé soit utilisée une seule fois.
On remarque que cette sécurité n’est applicable qu’au cas symétrique car dans la cryp-
tographie asymétrique la clé de chiffrement (clé publique) est connue de tout le monde
ainsi le texte chiffré contient toujours de l’information sur le texte clair. En effet, une
recherche exhaustive dans l’espace des messages clairs (attaque à texte clair choisi) per-
mettrait de retrouver un message clair correspondant au chiffré fixé.
Cette remarque nous amène à considérer un autre critère de sécurité pour les primi-
tives cryptographiques (asymétriques) à savoir la sécurité calculatoire qui fait appelle à
la théorie de la complexité et qui est actuellement utilisée dans l’évaluation des schémas
cryptographiques. En effet, un schéma est considéré comme calculatoirement sûr si le
casser revient à résoudre un problème algorithmique (supposé) difficile. Par conséquent,
ces schémas asymétriques reposent généralement sur des fonctions à sens unique, voire
des fonctions à sens-unique avec trappe.
3.2.1 Modèles de sécurité
Modèle standard
Dans ce Modèle, aucune hypothèse n’est faite sur l’attaquant. Il s’agit du modèle habituel
de la théorie de la complexité qui permet d’atteindre de fortes propriétés de sécurité qui
ne reposent que sur des hypothèses calculatoires et non sur des constructions idéalisées.
Le modèle standard est moins fort que le modèle de la théorie de l’information, car la
sécurité parfaite induit inconditionnellement à la sécurité calculatoire. Dans la suite nous
verrons quelques hypothèses et problèmes (de décision) utilisés dans ce modèle.
Prouver la sécurité d’un certain système cryptographique signifie prouver une borne
inférieure de la difficulté d’un certain problème de calcul. Malheureusement, pour les
modèles généraux il est difficile de quantifier le but de l’attaquant et les moyens qu’il
utilise, il est alors intéressant d’étudier d’autres modèles pour remplir un certain nombre
29
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
de critères de sécurité.
Modèle de l’oracle aléatoire
Ce modèle fut introduit par A.Fiat et A.Shamir en 1987 et formalisé par M.Bellare et P.Rogaway
en 1993. Il s’agit de faire une hypothèse supplémentaire en introduisant dans le chiffre-
ment des fonctions à sens unique considérées comme parfaitement aléatoires. C’est le
cas des fonctions de hachage et des générateurs pseudo-aléatoires. Dans ce contexte,
l’utilisation d’une fonction de hachage ou d’un générateur pseudo-aléatoire lors d’une
preuve est remplacée par un oracle aléatoire dont la sortie est indistinguable pour un ad-
versaire, de la sortie d’une fonction parfaitement aléatoire.
Une remarque importante est que toute nouvelle question recevra une réponse uniformé-
ment distribuée dans l’espace correspondant, indépendante des précédentes questions
et réponses. Mais une même question aura toujours la même réponse.
Dans les preuves de sécurité, pour ce modèle, il est possible de supposer que l’adversaire
a accès à un oracle aléatoire pour simuler les fonctions de hachage et les générateurs
pseudo-aléatoires, ou bien à un oracle de déchiffrement capable de déchiffrer des mes-
sages.
Il faut noter que dans ce modèle idéaliste, l’existence de schémas sûrs n’assure pas forcé-
ment la sûreté dans la pratique. En effet dans [41] R. Canetti, O. Galdreich et S. Halev ont
prouvé l’existence de schémas sûrs dans ce modèle pour lesquels Il n’existe pas d’implémentation
sûr de l’oracle par une fonction de hachage dû au caractère déterministe des fonctions de
hachage en pratique.
On peut voir l’oracle aléatoire comme un ruban infini qui, à chaque valeur d’entrée, as-
socie une valeur aléatoire dans {0,1}n où n est la taille (tronquée) de sortie de la fonction
de hachage. A la sortie, l’oracle peut retourner, soit des valeurs aléatoires, soit des valeurs
fixées qui paraissent aléatoires.
3.2.2 Quelques problèmes difficiles
Dans la théorie de complexité, il est défini des classes de problèmes considérés comme
difficiles. En cryptographie on utilise souvent des instances de problème NP-complets
ou NP-durs pour concevoir des primitives telles les schémas de chiffrement, des fonc-
tions de compressions et des fonctions d’expansion. Cependant ces classes de complex-
ité n’assurent que l’existence d’instances difficiles pour un choix judicieux de paramètres.
Ce choix de paramètres nous permet en cryptographie de fixer le niveau de sécurité.
• Un problème de décision est un problème dont la réponse est OUI ou NON.
30
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
• un problème de décision est dans la classe P s’il peut être décidé par une machine
de Turing déterministe en temps polynomial en la taille de l’entrée.
• La classe NP est la classe des problèmes décisionnels dont une solution Oui est véri-
fiable en temps polynomial, à l’aide d’une information supplémentaire appelée cer-
tificat;
• problème NP-complet (c’est-à-dire un problème complet pour la classe NP) est un
problème de décision vérifiant les propriétés suivantes:
1. Il est possible de vérifier une solution efficacement (en temps polynomial); la
classe des problèmes vérifiant cette propriété est notée NP;
2. Tous les problèmes de la classe NP se ramènent à celui-ci via une réduction
polynomiale ; cela signifie que le problème est au moins aussi difficile que
tous les autres problèmes de la classe NP.
Ici nous présentons quelques problèmes difficiles liés à la cryptographie post-quantique.
En effets, ils ont en général servit à construire des cryptosystèmes qui sont calculatoire-
ment aussi difficiles sur une machine Turing que sur une machine quantique. Contraire-
ment aux problèmes de factorisation et de logarithmes discrets, aucun algorithme actuelle-
ment connu ne permet d’attaquer ces problèmes liés aux codes et aux réseaux euclidiens.
Sur les Codes
Problème 3.2.1 CSD (Décodage par syndrome Calculatoire)
• Entrée: Soit H une matrice (n − k,n) binaire et w un entier positif et un syndrome
s ∈ Fn−k2
• Sortie: Un mot e ∈ Fn2 telle que w t (e) ≤ w et H ·e> = s.
Souvent appelé de Coset Weight, ce problème correspond au problème de décodage borné
i.e de trouver un mot à distance plus petite qu’une borne donnée.
Ce problème est sous-jacent à la sécurité de la plupart des schémas cryptographiques
basés sur les codes (voir [26, 126, 44] pour plus de détails). En effet Berlekamp, McEliece
et Van Tilborg ont montré en 1978 [21] que le problème de la recherche de syndrome de
mots de poids fixé était un problème NP-complet.
Problème 3.2.2 DMD(Problème de Distance Minimale Décisionnel)
• Entrée: Soit H une matrice (n −k,n) binaire et w un entier >0
31
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
• Question : Existe-t-il un vecteur x ∈ F∗n2 telle que w t (x) ≤ w et H ·x> = 0.
Dans [132], il est montré que le problème de calcul de la distance minimale d’un code
binaire linéaire est NP-difficile, et le problème de décision correspondant est NP-complet.
Ce résultat constitue une preuve de la conjecture de Berlekamp, McEliece, et van Tilborg
(1978).
Définition 3.2.1 (Mot régulier). Un mot binaire x de longueur n et de poids w t (x) = w est
appelé mot régulier, s’il est composé de w blocs de longueur nw qui contiennent chacun un
seul bit non nul.
Définition 3.2.2 (Mot 2-régulier). un mot binaire x de longueur n est 2-régulier, s’il est la
somme de deux mots réguliers de même poids w.
Son poids w t (x) ≤ 2w et chaque bloc est de poids égal à 0 ou 2.
Problème 3.2.3 RSD(Décodage par Syndrome Régulier)
• Entrée: Soit H une matrice (n − k,n) binaire et w un entier positif et un syndrome
s ∈ Fn−k2
• Sortie: Un mot régulier e ∈ Fn2 telle que w t (e) ≤ w et H ·e> = s.
Problème 3.2.4 2-RDM(Problème de Distance Minimale 2-Régulier).
• Entrée: Soit H une matrice (n −k,n) binaire et w un entier >0.
• Sortie: Un mot 2-régulier e ∈ Fn2 telle que w t (e) ≤ 2w et H ·e> = 0.
Dans [10], la version décisionnelle de chacun de ces problèmes est prouvée NP-Complet
et le nombre d’instances faciles est négligeable devant celui des instances difficiles. Ces
problèmes sont aussi difficiles que le SDP, puisqu’il n’y a toujours pas d’algorithme qui
peut significativement faire mieux que le meilleur algorithme connu [11] contre le SDP.
Sur les Réseaux
Les problèmes calculatoires en théorie des réseaux ont été récemment investigués pour
construire un certain nombre de primitives cryptographiques.
Définition 3.2.3 (SVP) Étant donnée une base du réseau A ∈ Zn×m , le Problème du plus
Court Vecteur (SVP) consiste à trouver un vecteur non nul Ax du réseau, avec x ∈ Zm \ {0},
tel que ‖Ax‖ ≤ ‖Ay‖ pour tout autre y ∈Zm \ {0}.
Définition 3.2.4 (SIS sur une anneau arbitraire R) Soient a1, a2, ..., am ∈ R des éléments
de l’anneau R, le problème SIS consiste à trouver les coefficients xi ∈ S ⊆ R de x = (x1, ..., xm)
qui satisfait à l’équation∑m
i =1 ai xi = 0 et de longueur ‖x‖ ≤ b.
32
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Selon les travaux d’Ajtai [107], R peut être l’anneau produit Znq des vecteurs de longueur
n modulo q.
Définition 3.2.5 (SIS(n, q,m,b)) Étant donnée A ∈Zn×mq une matrice, le problème SIS(n, q,m,b)
consiste à trouver un vecteur non nul x ∈ Sm ⊆Zmq qui satisfait à l’équation Ax = 0 (mod q)
et dont la norme vérifie ‖x‖ ≤ b.
Ce problème admet une formulation approximée par un facteur γ ∈R, où la solution soit
satisfaire ‖x‖ ≤ γb.
Définition 3.2.6 (Inhomogène SIS:ISIS(n, q,m,b)) Étant donnée A ∈Zn×mq une matrice et
y ∈ Zn un vecteur, le problème ISIS(n, q,m,b) consiste à trouver un vecteur non nul x ∈Sm ⊆Zm
q qui satisfait à l’équation Ax = y (mod q) et dont la norme vérifie ‖x‖ ≤ b.
Définition 3.2.7 (Shortest Independent Vector Problem (SIVP)) SoitΛ une réseau de di-
mension n. Le problème SIVP consiste à trouver les plus petits vecteurs indépendant entre
eux v1, . . . ,vn ∈Λ.
Définition 3.2.8 (Learning from Parity with Error) En 2005, Regev [16] a introduit un prob-
lème appelé “Learning With Errors” (LWE). Il s’agit de résoudre un système.
Soient p un nombre premier, n , m des entiers tels que 1 ≤ m ≤ n et Soit χ une distribution
de probabilité sur Zp . Pour 1 ≤ i ≤ m, considérons les vecteurs ai choisis indépendamment
à partir d’une distribution uniforme sur Znp , et bi des éléments de Zp .
LWE consiste à trouver s ∈Znp tel que
⟨s,a1⟩+e1 = b1 mod p
⟨s,a2⟩+e2 = b2 mod p
...
⟨s,am⟩+em = bm mod p
où ⟨s,ai ⟩ =∑
j s j (ai ) j est le produit scalaire modulo p de s et ai et et e1 , · · · , em des valeurs
de Zp choisis indépendamment selon χ
3.2.3 Sécurité Prouvée
La preuve de sécurité en cryptographie, pour un modèle d’attaque donné, est modélisée
en général sous forme de scénarios d’attaques appelés jeux d’attaque entre un maître de
jeu appelé (challengeur) et un adversaire qui sont tous des machines de Turing interact-
ifs. le challenger et l’adversaire sont considérés comme des algorithmes probabilistes qui
33
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
communiquent entre eux, ainsi le jeu pourra être considéré comme un espace de prob-
abilité. Selon le type de primitive cryptographique utilisée, il existe plus ou moins un
modèle de sécurité plus adéquat comme on a vu au début du chapitre.
• Cryptographie à clé secrète: on peut utiliser la sécurité inconditionnelle au sens de
Shannon avec une puissance de calcul illimitée pour l’attaquant
• Cryptographie à clé publique (chiffrement et signature): on peut utiliser la sécurité
réductionniste qui transforme toute réussite d’une attaque en la solution d’une in-
stance d’un problème réputé difficile.
• Fonctions de Hachage et Générateur pseudo-aléatoire: on peut utiliser la sécurité
réductionniste qui transforme toute réussite d’une attaque en une contradiction
d’une proposition sur les fonctions à sens unique comme développer dans [71].
Il faut noté que dans le cas de la cryptographie à clé publique, en sus de la sécurité réduc-
tionniste dans le modèle standard, il est préférable d’étudier les primitives dans le modèle
de l’oracle aléatoire pour ainsi leur permettre d’éviter certaines attaques et de vérifier cer-
taines propriétés que nous allons voir dans la suite.
La sécurité des primitives dans le modèle standard peuvent être étudiée suivant deux axes
formés d’une part des propriétés de sécurité qui définissent les différents buts à atteindre
et d’autre part des moyens dont l’adversaire dispose.
Propriétés de sécurité
Les propriétés de sécurité peuvent être classées suivant un ordre de gravité au cas où elles
ne sont pas atteintes en tant que but. A part le but ultime d’un adversaire qui se trouve
être la découverte de la clé privée à partir de la clé publique, on peut définir:
Définition 3.2.9 One-Wayness. Un système de chiffrement à clé publique est dit one-way
si aucun attaquant probabiliste en temps polynomial ne peut retrouver le message clair à
partir d’un chiffré donné, avec une probabilité non négligeable.
De manière formelle, on écrit qu’un système de chiffrement asymétrique est (t ,ε)−OW si
pour tout adversaire A ayant un temps t borné, sa probabilité d’inversion est inférieure à ε:
Succow (A )de f= Pr
Rm←M
[(sk, pk) ←K (1k ) : A (Epk (m,r ))?= m] < ε
Comme dans le cas de la cryptographie asymétrique, il n’est pas possible d’avoir une sécu-
rité inconditionnelle comme dans le cas symétrique, il serait alors intéressant de donner
une propriété de sécurité qui correspond à la sécurité parfaite dans le cas asymétrique.
• indistinguabilité(IND). Un système de chiffrement à clé publique est dit Indistin-
guable(sémantiquement sûr) si aucun attaquant probabiliste en temps polynomial
34
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
ne peut apprendre un seul bit d’information sur le clair à partir du chiffré, excepté
sa longueur.
• non-malléabilité(NM). La non-malléabilité (NM) formalise l’incapacité d’un adver-
saire à obtenir un nouveau chiffré c ′ à partir d’un chiffré c de telle sorte que les clairs
m et m′ des chiffrés c et c ′ soient reliés.
Ces buts (ou propriétés) souvent appelés notions de sécurité nous permettent ainsi
de définir le niveau de vulnérabilité de nos schémas de chiffrement. L’autre aspect carac-
térisé par les moyens de l’adversaire peut être classé en trois niveau en terme de puissance
des moyens utilisés dans l’attaque.
Attaque à textes clairs choisis (CPA). .
L’adversaire a non seulement accès aux textes chiffrés et aux textes clairs correspondants,
mais de plus il peut choisir les textes en clair. Il peut ainsi choisir des textes en clair spé-
cifiques qui donneront plus d’informations sur la clef.
Attaque non adaptative à chiffrés choisis (CCA1) .
aussi appelée “lunch-time attacks”, formalisées par Naor et Yung [111],l’attaquant a accès
à un oracle de déchiffrement uniquement avant de recevoir le challenge c’est à dire le
chiffré à attaquer.
Attaque adaptative à chiffrés choisis (CCA2) .
l’attaquant peut accéder à un oracle de déchiffrement avant et après avoir reçu le chal-
lenge. Mais le challenge n’est pas soumis à l’oracle. Cette attaque est plus forte que les
précédentes car après avoir pris connaissance du challenge il peut adapter les chiffrés
qu’il souhaite faire déchiffrer.
Avec ces deux familles on forme un nouveau modèle d’attaque plus précis appelé
modèle d’adversaire composé d’un but et d’un moyen utilisé par l’adversaire. Ceci permet
d’avoir des jeux d’attaques plus précis pour mesurer la sécurité des primitives et leurs
vulnérabilités.
On peut mixer les buts NM, IND, OW et les modes d’attaques CPA, CCA1, CCA2 pour
obtenir les neuf combinaisons : OW-CPA, OW-CCA1, OW-CCA2, IND-CPA, IND-CCA1,
IND-CCA2, NM-CPA, NM-CCA1, NM-CCA2.
Définition 3.2.10 IND-CPA. Soit A = (A1,A2) un adversaire contre le schéma asymétrique
PKE , on définit l’expérience ExpcpaPKE,A (1k ):
35
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
(sk, pk) ←K (1k )
(m0,m1, s) ←A1(pk)
b ← {0,1}
c ← Epk (mb ,r )
b′ ←A2(c, s)
Si b = b′
r etour ne 1 si non r etour ne 0
,
Alors l’avantage de A est défini par:
Ad vcpaPKE,A (1k )
de f= 2×Pr [Expcpa
PKE,A (1k )?= 1]−1
On dit que le système de chiffrement asymétrique PKE est (t ,ε)− IND−CPA si pour tout
adversaire A ayant un temps t borné, l’avantage Ad vcpaPKE,A (1k ) < ε
Définition 3.2.11 IND-CCA2. Soit A = (A1,A2) un adversaire contre le schéma asymétrique
PKE , on définit l’expérience Expcca2PKE,A (1k ):
(sk, pk) ←K (1k )
(m0,m1, s) ←A Dec(sk,.)1 (pk)
b ← {0,1}
c ← Epk (mb ,r )
b′ ←A Dec(sk,.)
2 (c, s)
Si b = b′
r etour ne 1 el se r etour ne 0
,
l’adversaire A2 n’est pas autorisé à déchiffrer c. Alors l’avantage de A est défini par:
Ad vcca2PKE,A (1k )
de f= 2×Pr [Expcca2
PKE,A (1k )?= 1]−1
On dit que le système de chiffrement asymétrique PKE est (t ,ε)− IND−CCA2 si pour tout
adversaire A ayant un temps t borné, l’avantage Ad vcca2PKE,A (1k ) < ε
Remarque 3.2.1 Soient deux notions de sécurité
A,B ∈ {OW-CPA,OW-CCA1,OW-CCA2,IND-CPA,IND-CCA1,IND-CCA2,NM-CPA,NM-CCA1,NM-CCA2}
on a:
• A → B: tout chiffrement qui rencontre la notion de sécurité A rencontre B
Les relations entre les notions de sécurité ont été étudiées de manière approfondie par
Bellare, Desai, Pointcheval et Rogaway [15], puis par Bellare et al. [16]. Dans [13], les
auteurs ont montré les séparations et les implications entre les principales notions de
sécurité dans le cadre du chiffrement asymétrique.
36
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Théorème 3.2.2 (NM-ATK → IND-ATK → OW-ATK).[15]
Si le schéma de chiffrementΠ est sûr dans le sens de NM-ATK alorsΠ est sûr dans le sens de
IND-ATK, pour toute attaque ATK ∈ {CPA,CCA1,CCA2}.
Théorème 3.2.3 (IND-CCA2 → NM-CCA2).[15]
Si le schéma de chiffrementΠ est sûr dans le sens de IND-CCA2 alorsΠ est sûr dans le sens
de NM-CCA2.
Dans [15] les auteurs ont donné les relations qui existent entre les différentes propriétés
P ∈ {NM,IND,OW} faces aux différentes attaques ATK ∈ {CPA,CCA1,CCA2}.
3.3 Quelques Primitives Cryptographiques Post-Quantiques
La plupart des cryptosystèmes à clé publique utilisés sont basés sur des problèmes de
théorie des nombres. Il est important de connaître des systèmes alternatifs efficaces en
pratique (réseaux, systèmes multivariés, codes correcteurs d’erreurs, fonctions de hachage
...). Ces alternatives sont a priori sûres face à l’ordinateur quantique, rapide et facile à im-
planter et entre autres reposent sur des problèmes N P -complets bien connus.
3.3.1 Chiffrement
Pour assurer une communication sûre à travers un canal, la cryptographie offre deux ser-
vice:
– L’information ne sera intelligible que pour les destinataires légitimes: confidentialité
– L’information reçue correspond à celle envoyée par son véritable auteur: Intégrité
La confidentialité et l’intégrité peuvent être assurées soit grâce à une protection physique
du système de transmission, soit grâce à une protection logique des informations trans-
férées. La confidentialité est assurée en chiffrant le message envoyé, c’est-à-dire en le
transformant de manière à le rendre illisible pour toute personne ne connaissant pas la
clé de déchiffrement, tandis que l’intégrité est garantie par une signature électronique du
message.
Schémas de chiffrement basés sur les codes
Le désavantage majeur de la cryptographie basée sur les codes correcteurs d’erreurs est
la grande taille de clé publique (des centaines de milliers de bits . . . ). Récemment, les
systèmes basés sur les codes QC-MDPC [109, 77] ont été présentés avec de petites tailles
de clés et une sécurité prouvée.
37
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
McEliece Le chiffrement à clé publique de McEliece a été présenté par R. J. McEliece
en 1978 [97]. Le schéma originel utilise les codes de Goppa, qui reste incassé (pour des
paramètres bien choisis), mais le schéma peut être utilisé avec n’importe quelle classe de
codes pour laquelle un algorithme de décodage est connu.
Soient G une matrice génératrice k ×n d’un code binaire de Goppa de paramètres
(n,k, t ), P une matrice de permutation aléatoire de taille n ×n, S une matrice binaire in-
versible de taille k ×k et DG un algorithme de décodage du code généré par G. Tous les
vecteurs et matrices sont définis sur le corps fini F2.
La clé privée est (S,G,P,DG), tandis que G = SGP et t forment la clé publique.
Chiffrement: Pour chiffrer un message m ∈ Fk2 , l’expéditeur génère un vecteur aléa-
toire e ∈ Fn2 avec wt(e) = t et calcule le chiffré c = mG⊕e.
Déchiffrement: En Recevant un chiffré c, le destinataire calcule c = cP−1 = mSG⊕eP−1. Puisque P est une permutation, wt(eP−1) = wt(e), donc DG peut être utilisé pour
décoder cela: mSG = DG(c). Le destinataire choisit alors un ensemble J ⊆ {1, . . . ,n} tel
que GJ (la matrice formée par les colonnes de G indexées par J) soit inversible, et calcule
m = mSGJ ·G−1J ·S−1.
Niederreiter En 1986, H. Niederreiter proposa un cryptosystème [116] qui peut être vu
comme la version dual du schéma de McEliece. Ce cryptosystème utilise la matrice de
parité d’un code (de Goppa) pour calculer le syndrome du message qui sert de message
chiffré. Même si le cryptosystème Niederreiter a été prouvé aussi sûr que le cryptosystème
de McEliece [91], il est menacé par différentes attaques critiques car étant un chiffrement
déterministe.
Soit H une matrice de parité d’un (n,k, t )-code de Goppa binaire, où r = n −k, P une
matrice de permutation aléatoire, S une matrice inversible de taille r × r et DH un algo-
rithme de décodage du code défini par H. Puisque le code de Goppa sous-jacent peut
corriger un certain nombre d’erreurs t < n, le Schéma de Niederreiter utilise une fonction
ϕ qui transforme d’une manière bidirectionnelle le message à un mot de longueur n et de
poids t : ϕ : Fl2 7→Wn,t , où l = dlog2
(nt
)e et Wn,t est l’ensemble des vecteurs de longueur n et
de poids t .
La clé privée est (S,H,P,DH) et (H = SHP, t ,ϕ) la clé publique.
38
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Chiffrement: Soit m ∈ Fl2 le message, alors le chiffré c est calculé comme c = H ·
ϕ(m)T.
Déchiffrement: Le destinataire reçoit un chiffré c et calcule c = S−1c = HP ·ϕ(m)T.
Puisque P est une matrice de permutation, wt(Pϕ(m)T) = wt(ϕ(m)T), donc DH peut être
utilisé pour décoder cela: Pϕ(m)T = DH(c). Finalement, il calcule m =ϕ−1((P−1Pϕ(m)T)T).
HyMES Le schéma HyMES (Hybrid McEliece Encryption Scheme) développé par Biswas
et Sendrier [36] améliore l’efficacité de McEliece en encodant une partie du message dans
le vecteur erreur. Alors que dans le scénario habituel ce schéma est aussi sûr que le
schéma de McEliece d’origine, il se comporte différemment face attaques critiques.
Le schéma HyMES fonctionne comme suit:
• Le message m est découpé en deux parties m = (m1||m2).
• La première partie m1 correspond au message dans le schéma de McEliece originel,
et le second m2 codé en message d’erreur e =ϕ(m2) de poids t .
Soient G, P, S, et DG définis comme dans le schéma de McEliece.
Soit ϕ une fonction définie comme dans le schéma de Niederreiter.
La clé privée est (S,G,P,DG), tandis que G = SGP, t , et ϕ forment la clé publique.
Chiffrement: Soit m ∈ Fk+l2 le message, avec l comme dans la section 3.3.1. Soit m1
les k premiers bits de m et m2 les l bits restants. Le chiffré c est c = m1G⊕ϕ(m2).
Déchiffrement: Le destinataire recouvre m1 comme dans le schéma de McEliece
c = cP−1 = m1SG⊕ϕ(m2)P−1, en appliquant l’algorithme de décodage: mSG = DG(c), et
trouve m1 = mSGJ ·G−1J ·S−1 cf. section 3.3.1. la seconde partie de m est trouver en calcu-
lant m2 =ϕ−1(c ⊕m1G).
Les clés (publique et privée) sont de grandes matrices, ce qui constitue un des plus
grands désavantages de ce chiffre. Par exemple, la clé publique est de 219 bits (64 Ko). Il y a
eu des tentatives de cryptanalyse sur l’algorithme de McEliece, mais des changements ont
permis de les rendre inopérantes. Néanmoins, ce chiffrement n’est pas utilisé en pratique,
d’une part à cause de la grandeur des clés, mais aussi parce que la grandeur du texte
chiffré est de deux fois celle du texte d’origine. La ressemblance entre ce problème et
celui du sac à dos inquiète aussi une partie des spécialistes. En 1991, E.M. Gabidulin et al.
39
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
ont proposé une amélioration, qui, deux ans après, sera prouvée sans avantage par J.K.
Gibson.
Securité de ces schémas Les attaques sur le cryptosystème de McEliece se classent en
deux catégorie : attaques critiques et attaques non-critiques.
Les attaques non-critiques sont celles qui dépendent fortement des paramètres et peu-
vent alors être contrecarrées seulement en augmentant la valeur de ces paramètres. Les
attaques critiques, développées dans le chapitre suivant, sont plus rapides que les at-
taques non-critiques et réalisables pour des paramètres réalistes. Elles peuvent seule-
ment être évitées en utilisant des conversions adaptées (voir [81, 43]) et en évitant les
codes ayant une faiblesse structurelle.
Les attaques non-critiques les plus sérieuses sont l’attaque par recherche de mot de petits
poids et l’attaque par ensemble d’informations.
L’attaque par recherche de mot de petits poids utilise un algorithme qui trouve un mot
de poids faible parmi les mots de code générés par une matrice génératrice arbitraire en
utilisant une base de données obtenue par pré-calcul [129]. Si on considère le nouveau
code de matrice génératrice (k +1)×n suivante :
Gext = [Gc ]
où G est la matrice publique de McEliece et c = mG⊕ e le message chiffré, alors le mot de
code de Gext de poids minimal est e dont le poids est la capacité de correction du code
sous-ajent G. L’un des algorithmes les plus efficaces pour monter ce genre d’attaque sont
le décodage par ensemble d’information (ISD) ou l’algorithme d’anniversaire général-
isé(GBA). L’ISD est un algorithme probabiliste désigné pour décoder n’importe quel code
linéaire. Sa première variante introduite par Prange [121], a tété mise à jour et raffinée
plusieurs fois pendant des années, conduisant à sa meilleure variante développée par
May et al.[11, 96, 57, 28]. L’idée développée derrière cet algorithme est de trouver un sous-
ensemble, appelé ensemble d’information, de k positions ne contenant pas d’erreurs
parmi les n positions de chaque mot de code, où k et n sont respectivement la dimen-
sion et la longueur du code.
La résistance face à cette attaque dépend de plusieurs facteurs entre autres, le poids de
l’erreur et l’alphabet utilisé [119]. Pour un niveau de sécurité de 128 bits, dans [28] les
auteurs suggére l’utilisation des codes de Goppa de longueur 2960 et de dimension 2288
avec un polynome de Goppa de degré 56 et de poids de l’erreur égal à 57, et pour un niveau
de 256 bits une longueur de 6624 et de dimension 5129 avec un polynome de Goppa de
degré 115 et de poids de l’erreur égal à 117. ces paramètres resistent jusqu’à ce jour aux
différentes variantes qui existent.
40
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Schémas de chiffrement basés sur les Réseaux
cryptosystème NTRU Le cryptosystème NTRU a été présenté en 1996 dans la rump ses-
sion de Crypto96 et publié en 1998 [78]. Le domaine de calculs de NTRU est l’anneau des
polynômes
P =Z[X]/(XN −1)
et utilise des réductions modulo deux nombres (ou polynômes) premiers entre eux p et q.
La multiplication dans cet anneau correspond au produit de convolution noté ? i.e. Si
f =∑N−1
i =0 fi Xi et g =∑N−1
j =0 g j X j ∈P , alors h = f ?g ∈P est tel que:
hk =∑
i+ j =k mod nfi g j =
k∑i =0
fi gk−i +N−1∑k+1
fi gN+k−1.
Dans la suite toutes les opérations dans les polynômes seront globalement dans P .
Soit q un entier, on note Pq = Zq [X]/(XN −1) l’anneau des polynômes de degré inférieur
à N à coefficient dans Z/qZ, et p ∈ P alors on définit l’anneau Pp = Z[X] = (XN − 1, p)
obtenu en réduisant P modulo p.
Soient f ∈ P et g ∈ P deux polynômes choisis aléatoirement tels que f soit inversible
dans Pp et Pq d’inverse fp et fq respectivement.
La clée publique est h = p ∗ g ∗ fq mod q et la clé privée ( f , fp ).
Chiffrement: Soient m ∈ Pp le message à envoyer, r ∈ P aléatoire. Alors le chiffré
est
e = r ∗h +m mod q
Déchiffrement: A partir du chiffré e, on calcule a = f ∗ e mod q à coefficients dans
]− q2 , q
2 [. Alors, on a m = fp ∗a mod p.
NTRUCrypt est aujourd’hui standardisé pour le commerce. Son chiffrement est 10
fois plus rapide que celui de RSA et son déchiffrement 100 plus rapide. Il semble résisté
aux attaques pratiques et à la machine quantique à des paramètres bien choisis.
3.3.2 Fonctions de Hachage
Une fonction de hachage h est une fonction de F∗2 → Fn
2 qui prend en entrée un docu-
ment de longueur quelconque et retourne en sortie une suite binaire de longueur donnée.
Le but des fonctions de hachage est d’assurer l’intégrité des données, i.e. détecter toute
modification volontaire ou non du document d’origine.
Une fonction de hachage cryptographique idéale possède les cinq propriétés suivantes:
41
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
• il est possible de calculer rapidement la valeur de hachage pour tout message donné
• il est impossible de reconstruire un message(pré-image) à partir de sa valeur de
hachage ;
• il est impossible de modifier un message sans changer sa valeur de hachage ;
• il y a une très faible probabilité pour trouver deux messages(collision) différents
ayant la même valeur de hachage.
• il est impossible de déduire une quelconque information que ce soit d’un message
à partir de son empreinte numérique.
Bourrage - Padding
Presque toutes les fonctions de hachage et de chiffrement à flot travaillent sur des blocs de
message au lieu de prendre le message dans son ensemble. Ainsi, le message est d’abord
divisé en blocs d’une longueur déterminée de la façon suivante:
Figure 3.1 – Découpage de message
Dans la figure 3.1, Le message est divisé, et les blocs ont la même longueur, sauf peut-
être pour la dernière. Comme le dernier bloc ne peut pas être aussi longue que les autres,
quelques bits sont ajoutés pour le compléter :
Figure 3.2 – Padding de message
Dans la figure 3.2, Certains bits sont ajoutés pour combler le dernier bloc. Pour éviter
une collision trivial (ajout de zéros au message donnerait le même hachage), la longueur
du message initial doit être stocké dans le rembourrage. Si ce qui reste du dernier bloc
n’est pas suffisant un nouveau bloc sera ajouté.
Une fois que le message ait été scindé et rembourré, les blocs seront enchaînés un bloc
après l’autre dans la fonction de compression ou d’expansion. Le point important est que
l’enchaînement doit être conçu de telle sorte que tout changement dans un bloc modifie
le comportement de la fonction. Pour assurer ces propriétés de sécurité et de rapidité,
42
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
il existe aujourd’hui plusieurs constructions, celles qui nous intéressent les plus sont la
construction éponge et celle de Markle-Damgård [48].
La construction Merkle-Damgård
Le paradigme de Merkle-Damgård [99][100][48] est un chaînage réaliste pour traiter les
blocs à partir d’un message de n’importe quelle taille à hacher.
Figure 3.3 – schéma de Merkle-Damgård
Dans la figure 3.3 est représentée la fonction en boite noire (compression) comme le
domaine de Merkle-Damgård .
Le domaine d’expansion de Merkle-Damgård est une méthode permettant de construire
des fonctions de hachage qui résiste à la collision à partir de fonction de compression. Le
principe est de découper le message en blocs et de procéder par rebouclage sur les blocs
pour prendre en compte n’importe quel changement sur un bloc. L’état du compteur in-
terne est initialisé avec un "IV" (Vecteur initialisation) et l’état final est appelé pré-hache.
Le "pré-hache" peut être réutilisé pour avoir un autre "pré-hache" ou le hache final (par
exemple, à travers l’algorithme Whirlpool).
La construction éponge
La construction de l’éponge est une alternative à la construction précédente permettant
de construire des fonctions de hachage. Elle a notamment été utilisée pour la fonction
SHA-3. D’un point de vue théorique, elle permet aussi de construire des preuves de sécu-
rité. Son originalité est d’accepter en entrée à la fois des chaînes de taille arbitraire et de
permettre en sortie des chaînes de la taille que l’on souhaite. Elle généralise à la fois les
fonctions de hachage et le chiffrement par flux.
Elle utilise une permutation ou une transformation aléatoire f , au lieu d’une fonction de
compression et permet d’avoir des sortie à longueur variable. Si f est une permutation
aléatoire, on parle de fonction P-Éponge, dans les autres cas on parle de T-éponge. Cette
fonction opère sur l’état interne de taille b = r + c, où r est la taille de bloc de message et
c la capacité éponge. Initialement l’état (IV) est un vecteur nul de longueur b, aligné par
les r premiers bit du document à hacher.
Cette construction réalise le hachage en ces deux étapes:
43
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
1. l’absorption:
Dans cette étape, le document P ayant subi l’opération de padding, est découpé en
bloc de taille r bits .i.e P = (p1, p2, ...., pl ).
Si si est l’état courant, alors le prochain
si+1 = f (si ⊕ (pi‖0c )), avec s0 = 0b et1 ≤ i ≤ l
Ceci est répété jusqu’à traiter tout les blocs de P.
2. l’essorage:
Cette étape constitue la construction pas à pas de la sortie. Elle consiste en la répéti-
tion des deux étapes suivantes:
• a: les r premiers bits hi de l’état sont retournés comme blocs de sortie
• b: la fonction f est appliquée sur l’état. Le haché h = h1‖h1‖...‖hN est de
longueur l = N · r , ainsi le nombre d’itérations N est choisi par les utilisateurs
pour avoir la sortie désirée.
Figure 3.4 – Construction Éponge
La fonction de Hachage FSB
Le FSB(Fast Syndrome-based hash Functions) est une famille de fonctions de hachage
cryptographique introduite en 2003 par Daniel Augot, Matthieu Finiasz, et Nicolas Sendrier
[8] basée sur l’itération de Merkle-Damgård. Contrairement à la plupart des autres fonc-
tions de hachage cryptographique en usage aujourd’hui, FSB présente une preuve de
sécurité calculatoire. Plus exactement, il est prouvé que casser FSB est au moins aussi
difficile que la résolution du problème NP-complet du décodage par syndrome des mots
réguliers. Donc la sécurité de FSB repose sur le fait que ce problème est supposé non-
résoluble en temps polynomial.
Plusieurs améliorations ont été proposées d’une part pour le réparer contre l’attaque par
linéarisation [124, 55], d’autre part pour augmenter sa vitesse après son élimination à la
compétition du SHA-3. Il y a eu le S-FSB proposé par Meziani et al dans [102] en 2010
qui permet d’améliorer la vitesse de FSB de 30% à l’aide de la construction éponge. Plus
44
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
récemment en 2011, Bernstein et al. ont proposé une fonction de hachage RFSB encore
plus rapidité dans [30] qui est aussi rapide que 2 des 5 SHA-3 finalistes et 10 fois plus
rapide que le FSB-256. RFSB tourne très vite sur la carte FPGA Spartan 6, et a atteint des
débits de l’ordre de 5Gbit/s.
La Fonction de Compression de FSB La fonction de compression de FSB fonctionne
d’une manière très simple, elle est basée sur le calcul de syndrome de mots réguliers.
Soit H une matrice publique quasi-cyclique aléatoire constitué de w sous-matrices circu-
lantes Hi de taille r × nω chacune, avec r et n des entiers positifs tels que r < n.
Input: s l’état de taille ω log2( nω )
1. Découper s en ω blocs: s1, ...sω de taille log2( nω )
2. Convertir chaque si en entier (base 10) compris entre 0 et nω −1
3. Choisir la colonne de Hi correspondante pour chaque i
4. Additionner(XOR) les ω colonnes et obtenir un vecteur de longueur r bits
Output: les r bits obtenus comme haché.
Sécurité théorique de FSB Dans [48], il est montré qu’une fonction de hachage qui suit
le domaine d’extension de Merkle-Damgård resiste à la collision si la fonction de com-
pression est résistante à la collision. Il est aussi montré dans [9], que trouver une collision
revient à résoudre le problème NP-complet 2-RDM vu en 3.2.4
Sécurité pratique et choix des paramètres La fonction FSB résiste en pratique aux at-
taques bien connues sur les codes et fonctions de hachage si les paramètres sont bien
choisis.
Il résiste à l’attaque par ensemble d’information [9], au paradoxe des anniversaires général-
isé [134], et de certaines techniques de cryptanalyse [124, 62]. Les paramètres donnés
pour cette version sont:
Longueur du haché n w r s
160 20×216 80 640 1120
224 28×216 112 896 1568
256 32×216 128 1024 1792
384 23×216 184 1472 2392
512 31×216 248 1984 3224
45
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
3.3.3 Chiffrement par flot
Un chiffrement par flot (flux) se présente souvent sous la forme d’un générateur de nom-
bres pseudo-aléatoires avec lequel on opère un XOR( One-Time Pad) entre un bit à la
sortie du générateur et un bit provenant des données. Toutefois, le XOR n’est pas la seule
opération possible. Il est très utile dans les scénarios où le message à chiffrer vient en
quantité et que sa taille est inconnue comme dans les connexions sans fil.
Pour des raisons de sécurité, la sortie du générateur (keystream) doit être indistinguable
d’une sortie réellement aléatoire. Sa période doit être très grande et il doit être impossible
de retrouver la clé mère ou l’état interne à partir d’un keystream.
chiffrement par flux synchrone Si l’état change indépendamment des messages clairs
ou chiffrés, le chiffrement est classé comme un chiffrement de flux synchrone. Dans ce
type de chiffrement, l’émetteur et le récepteur doivent être exactement à la même étape
pour que le déchiffrement réussisse. Si des bits ont été ajoutés ou supprimés du message
lors de la transmission, alors la synchronisation est perdue. Pour rétablir la synchronisa-
tion, un décalage peut être fait pour obtenir le bon déchiffrement. Une autre approche
consiste à marquer le texte chiffré avec des marqueurs à des points réguliers dans la sor-
tie.
Il faut noter que les schémas de chiffrement par flux utilise en général le modèle Merkle-
Damgard basé uniquement sur une clé mère K et un vecteur d’initialisation IV (SYND,
XSYND), toutefois on voit de nouvelles constructions basées sur le modèle éponge (2SC).
Le chiffrement par flux: SYND
Publié en 2007 par P. Gaborit et al., SYND [67] comme amélioration du PRNG de Fisher-
Stern, est un stream cipher basé sur les codes avec une réduction de sécurité. L’utilisation
des mots réguliers a permis d’accélérer le système et celle des codes quasi-cycliques a
permis de réduire l’espace mémoire requis. Ici les deux fonctions: celle de mise à jour
(update) et de sortie (Output) marchent de la même manière que dans FSB.
SYND accepte des clés mères (K) de taille 128 à 256 bits et produit un keystream de
taille double.
Soit n, ω et s des entiers positifs tels que nω soit une puissance de 2 et s =ω log2( n
ω ).
La génération des clés marche en trois étapes en utilisant les fonctions Ini , Upd et Out
(Figure 3.5). La fonction Ini s’exécute une seule fois en prenant la concaténation de la
clé mère K et du vecteur d’initiation IV de longueur chacun s/2 et retourne l’état initiale
e0 = Ini (K,IV). La fonction Ini utilise la construction de Feistel basée sur Upd et Out :
46
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
Figure 3.5 – Construction de SYND
Ini : F|K|+|IV|2 → Fs
2
Upd : Fs2 → Fs
2
Out : Fs2 → Fs
2
Ini (x) = y ⊕Out (x ⊕Upd(y));
y = x ⊕Upd(x); ∀x = (K,IV) ∈ Fs/22 ×Fs/2
2
où Upd et Out sont définis par
Upd(x) = A ·θ(x); Out (x) = B ·θ(x), ; ∀x ∈ Fs2
Ici, A et B sont des matrices binaires aléatoires définissant le même code quasi-cyclique
binaire de longueur n qui corrige jusqu’à ω erreurs. La fonction x 7→ θ(x) encode une
chaîne de s bit en mot régulier de longueur n et de poids ω. Après initialisation, pour
chaque étape i > 0, la clé de sortie (keystream) est zi = Out (ei ) et l’état suivant ei+1 =
Upd(ei ).
Dans la suite, le chiffrement One-Time-Pad sera utilisé à chaque étape i pour chiffrer un
message mi et on obtient le chiffré ci = zi ⊕mi .
Sécurité théorique de SYND Comme pour FSB (section 3.3.2), la sécurité se réduit cal-
culatoirement au problème du décodage par syndrome d’une part et s’inspire de la preuve
de sécurité de QUAD [17] pour l’indistinguabilité.
choix des paramètres
47
CHAPITRE 3. SÉCURITÉ PROUVÉE ET CRYPTOGRAPHIE POST-QUANTIQUE
n k s
8192 64 128
8192 96 192
8192 128 256
8192 192 384
8192 256 512
8192 512 1024
48
Part II
Résultats
49
Chapitre 4
Les attaques critiques en Cryptographie
basée sur les Codes
“ Si vous croyez que le monde
ressemblera un jour à celui de Big
Brother, détrompez-vous... Vous êtes en
plein dedans! ”
Alex Türk, président de la Cnil
Sommaire
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Les attaques critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2.2 Résumé des attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3 Contre-mesures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Les schémas de cryptographie basés sur les codes sont des candidats prometteurs
pour la cryptographie post-quantique puisse qu’ils sont rapides, d’arithmétique basique,
et ont une sécurité très bien comprise.
Bien qu’il y ait des preuves solides que les cryptosystèmes comme McEliece et Nieder-
reiter sont sûrs, ils présentent certaines faiblesses face aux attaques critiques lorsqu’ils
sont utilisés sans conversions sémantiques. Les attaques critiques ne peuvent générale-
ment pas être évitées en augmentant la taille de la clé de plusieurs systèmes cryptographiques
basés sur les codes.
Dans ce chapitre, nous présentons un survey sur les attaques critiques en cryptogra-
phie basée sur les codes et nous vous proposons une conversion IND-CCA2 spécifique
50
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
aux codes avec une redondance plus petite que celle de Kobara et al. Notre objectif est
d’évaluer trois cryptosystèmes: McEliece, Niederreiter et HyMES face aux attaques cri-
tiques.
Nous analysons leur sécurité contre plusieurs modèles tels que: l’attaque par dif-
fusion, à clair partiel connu, par renvoi de message, par messages associés, par chiffré
choisi, par réaction et malléabilité.
Notre travail est à la suite d’un premier travail effectué par Kobara et al. [89] qui ne couvre
pas l’ensemble des attaques connues et ne traite pas le système HyMES.
Ce travail fait l’objet d’une publication [43] dans "International Journal of Information
and Coding Theory", 3(2):158–176, 2015.
51
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
4.1 Introduction
En 1994, P. Shor [128] a montré que les ordinateurs quantiques peuvent casser la plupart
des systèmes cryptographiques classiques, par exemple ceux basés sur le problème de la
factorisation ou sur le problème du logarithme discret. Il est donc crucial de développer
des systèmes de chiffrement qui sont résistants aux attaques quantiques. La cryptogra-
phie basée sur les codes correcteurs d’erreurs est une candidate très prometteuse pour la
cryptographie post-quantique puisqu’elle est généralement rapide et ne nécessite pas de
matériel spécial, spécifiquement pas de crypto-processeur.
Les codes correcteurs d’erreurs ont été appliqués en cryptographie depuis au moins trois
décennies, depuis que R.J. McEliece a publié son papier en 1978 [97]. L’idée derrière le
système de chiffrement McEliece est la difficulté de décoder un code linéaire aléatoire.
Pour le schéma de chiffrement, un code binaire (n,k)-linéaire qui est en mesure de cor-
riger t erreurs efficacement est sélectionné. Ce code est déguisé en un code linéaire par
multiplication avec une matrice de brouillage et une matrice de permutation. Pour le
chiffrement, le texte en clair est codé et t erreurs sont introduites de manière aléatoire.
Sans la connaissance du code linéaire, des positions d’erreurs et des matrices secrètes, le
déchiffrement du message est NP-dûr. McEliece a proposé l’utilisation de codes de Goppa
binaires qui peuvent facilement être décodés en utilisant l’algorithme Patterson. Avec des
paramètres suffisants cette variante a résisté à la cryptanalyse jusqu’à présent et est con-
sidéré comme sécurisé contre les attaques quantiques [27].
Le cryptosystème de McEliece (et le système de chiffrement de Niederreiter [116] à
partir de 1986) a quelques avantages sur les autres systèmes de chiffrement à clé publique,
par exemple, le chiffrement et le déchiffrement sont plus rapides que l’algorithme RSA
largement répandue. Cependant, il existe certains inconvénients, la taille très grande de
la clé publique (supérieure à 100kb pour les paramètres de sécurité raisonnables) et un
taux d’information inférieure à celle de RSA. Biswas et Sendrier, dans [36], ont abordé
ces problèmes avec Hymes (Hybrid McEliece Encryption Scheme). Ils ont augmenté le
taux d’information par le codage de l’information dans l’erreur et réduit la taille de clé
publique en utilisant une matrice génératrice sous forme systématique (Id ||R).
Ces systèmes cryptographiques sont basés sur le problème du décodage par syndrome
(SD) (ou le problème général de décodage, qui peut être réduit au probleme SD), qui a
été prouvé NP-complet [22]. Il y a des attaques génériques contre ces systèmes cryp-
tographiques, par exemple, celles basées sur le décodage par ensemble d’information
(ISD) ou l’algorithme d’anniversaire généralisé, mais celles-ci peuvent être rendues im-
possibles par le choix des paramètres appropriés. Cependant dans les applications pra-
tiques, un attaquant pourrait ne pas avoir à briser le problème SD et arriver à déchiffrer
52
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
un message. Ces attaques critiques sont possibles généralement lorsque l’attaquant a une
certaine capacité supplémentaire (par exemple, un oracle de déchiffrement) ou des infor-
mations complémentaires (par exemple, des informations partielles sur le texte en clair)
et en général elles ne peuvent être évitées en augmentant la taille de la clé publique. Notre
but est d’évaluer trois systèmes cryptographiques: McEliece, Niederreiter et Hymes PKC.
Nous analysons leur sécurité contre plusieurs modèles d’attaque tels que l’attaque par
diffusion, à clair partiel connu, par renvoi de message, par messages associés, par chiffré
choisi, par réaction et la malléabilité.
Dans ce chapitre, nous fournissons une étude des attaques critiques contre les trois
systèmes cryptographiques ci-dessus et nous discutons des techniques pour s’en pro-
téger. En effet, nous fournissons ou améliorons pour la première fois un certain nombre
d’attaques:
• une version généralisée de l’attaque à clair partiellement connu
• l’attaque par renvoi de message à un niveau de sécurité supérieur (n=2048)
• une preuve de la malléabilité de Niederreiter
• Comme contribution majeure, nous proposons une version modifiée de la conver-
sion de Imai-Kobara qui permet d’obtenir des données de redondance plus petite.
La section décrit 3.3.1 brièvement les trois schémas. La section 4.2 décrit les différentes
attaques critiques et leur application aux trois schémas. Nous concluons ce chapitre dans
la section 4.4.
4.2 Les attaques critiques
Les attaques critiques, contrairement aux attaques structurelles, ne peuvent générale-
ment pas être évitées en augmentant la taille des clés, elles utilisent des manquements
et informations additionnelles sur les textes clairs et textes chiffrés.
En cryptographie asymétrique, les schémas de chiffrement se divisent en deux familles:
les algorithmes de chiffrement déterministes (Ex. Niederreiter et HyMES) et les algo-
rithmes de chiffrement probabilistes (Ex. McEliece). Le chiffrement probabiliste est plus
exposé aux attaques critiques, alors beaucoup de contre-mesures consistent à transformer
ce schéma en un schéma plus robuste en tant que schéma probabiliste. Cependant le
schéma de McEliece bien qu’il soit probabiliste ne resiste pas aux attaques critiques dû
au fait qu’il soit randomisé d’une manière linéaire d’où le besoin de renforcer sa sécurité.
53
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
4.2.1 Description
Les modèles d’attaques spécifient quelle quantité d’information l’adversaire a accès au
moment d’attaquer un message chiffré. Dans ce qui suit, nous les présentons:
¶ Attaque par diffusion de message(Broadcast Attack)
· Attaque à texte clair partiel (Known partial plaintext)
¸ Attaque à texte clair partiel généralisée (Generalized known partial plaintext)
¹ Attaque par renvoi de message (Message-resend)
º Attaque par messages reliés(Related-message)
» Attaque à clair choisi et Attaque à chiffré choisi (CPA et CCA)
¼ Attaque par Réaction (Reaction attack)
½ Malléabilité (Malleability)
Dans cette section, nous donnons une brève description des différentes attaques cri-
tiques que nous avons analysées. Les résultats sont résumés dans le tableau 4.1.
¶ Attaque par Diffusion
Cette attaque a pour but de récupérer un seul message envoyé à un certain nombre de
destinataires. Ici l’adversaire connait seulement plusieurs cryptogrammes du même mes-
sage.
Il a été présenté pour la première fois en 1998 par J. Hastad [75] contre le système de
chiffrement RSA. Puisque le même message est chiffré avec plusieurs clés publiques, il
avait proposé un scénario pour récupérer le message dans le cas de RSA.
Dans [114], Niebuhr et al. ont montré qu’avec un petit nombre de textes chiffrés, le Cryp-
tosystème de Niederreiter sera cassé. Par conséquent, ils montrent que cela ne peut pas
être monté contre McEliece en raison du caractère aléatoire du message chiffré.
Le problème résolu par une attaque par diffusion est la suivante:
problème (Broadcast Attack): étant donnés N ciphertexts ci du même message m, chiffré
en utilisant N clés publiques Gi (Hymes) ou Hi (Niederreiter) avec les mêmes paramètres,
trouver m correspondant.
54
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Attaque contre Niederreiter:
Suivant le schéma Niederreiter, pour chaque ci , nous obtenons la relation cTi = Hiϕ(m)T
pour i de 1 à N.
Pour chaque matrice publique Hi (r lignes et n colonnes), nous établissons, en les con-
caténant verticalement, une nouvelle matrice H =< H1, ...,HN > et cette dernière corre-
spond à un nouveau texte chiffré c = (c1||...||cn) tel que cT = Hϕ(m)T. Comme nous pou-
vons avoir des vecteurs de lignes dépendantes, le nombre d’équations dans ce nouveau
système est au plus Nr (= N× r ). Comme la dimension k ≈ n2 (avec n la dimension de
l’espace ambiant) et r +k = n, d’où 2r ≈ n. Dans ce contexte, nous essayons de trouver
le vecteur ϕ(m) de longueur n (n variables inconnues) dans un système avec moins de
Nr ≈ Nn2 équations.
Dans [114], une attaque qui permet de récupérer le texte en clair en un temps négligeable
(10-20 secondes sur un PC de bureau) a été montée en utilisant seulement un petit nom-
bre de destinataires (≈ 3) avec les paramètres (n,k) = (1024,644) en utilisant l’attaque ISD
en raison de la faible valeur du facteur travail.
Attaquer sur Hymes:
La même procédure peut être utilisée pour monter une attaque contre ce système et
de trouver l’erreur correspondante à la deuxième partie du message ϕ(m2). Après avoir
récupéré m2, il devient facile de trouver m1 par L’ISD. Le principe est d’utiliser une ma-
trice de contrôle de parité de chaque Gi .
Comment protéger ces deux schémas: Selon la résistance du schéma original de McEliece,
il peut être intéressant de protéger Niederreiter et Hymes en utilisant une technique in-
spirée de la première.
L’idée consiste à transformer le message m en un message aléatoire et permettre de le
trouver à partir du texte chiffré par le destinataire légitime.
Considérons m le message et ei un vecteur aléatoire. Le chiffré ci devient :
cTi = Hiϕ(m||ei )T (4.1)
puisqueϕ n’est pas linéaire et que m et ei sont inconnus,ϕ(m|ei ) semblent être aléatoire.
Prenons b et u respectivement la longueur du message et la longueur de la partie aléatoire.
L’attaque proposée dans [114] échouera si le nombre de variables Nu+b = Nu+n−u > Nr ,
alors la longueur adéquate de chaque ei est u > Nr−nN−1 .
· Attaque à texte clair partiel
Une attaque à texte clair partiel est une attaque pour laquelle seulement une partie du
texte en clair est connue. Cela a été étudié dans [113].
55
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Attaque sur schéma de McEliece:
Soient ml et mr respectivement les kl premiers bits à gauche et les kr derniers bits du
message cible m, i.e. k = kl + kr et m = (ml ||mr ). Supposons que l’adversaire connait
mr . Alors la difficulté à récupérer l’inconnu ml dans le McEliece PKC avec des paramètres
(n,k) est équivalente à celle de la récupération complète du texte en clair dans le McEliece
PKC avec des paramètres (n,kl ), puisque:
c = mG⊕e
c = ml Gl ⊕mr Gr ⊕e
c ⊕mr Gr = ml Gl ⊕e
c ′ = ml Gl ⊕e
où Gl et Gr sont les kl lignes supérieures et les autres lignes inférieures kr de G, respec-
tivement.
Dans [42], Canteaut et Sendrier ont proposé un algorithme pour trouver des mots de
code de poids faible: Soit C un code linéaire de longueur n, de dimension k et de distance
minimale d dont on ne connait qu’une matrice génératrice. Ils développent un algo-
rithme pour trouver un mot de poids w dans C où w est proche de d avec des paramètres
(n,k, t ) = (1024,524,50).
NB: avec le schéma Hymes la même méthode est utilisée pour récupérer la totalité du
message avec les mêmes paramètres.
Attaque sur schéma Niederreiter:
Le problème est modélisé de la même manière, sachant une partie el du vecteur erreur
e = (el ||er ), trouver l’autre partie er .
Comme n = nl +nr , nous utilisons la même astuce, en décomposant H = (Hl ||Hr ) où Hl et
Hr sont respectivement les nl colonnes à gauche et les nr colonnes à droite de H.
s = He t
s = Hl e tl ⊕Hr e t
r
s ⊕Hr e tr = Hl e t
l
s′ = Hl e tl .
Puisque le nombre de colonnes de Hl est nl et wt(el ) = t −wt(er ) , alors cela réduit con-
sidérablement la sécurité si nr est assez grande. Dans [42], ils montrent que, avec des
paramètres (n,k, t ) = (1024,524,50), si er contient au moins 15 positions d’erreur, alors
l’ensemble du message sera récupéré.
56
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
¸ Attaque à texte clair partiel généralisée
Nous présentons une nouvelle attaque sur McEliece qui permet de récupérer le texte
en clair en connaissant les positions de certains bits du message d’origine. Puisque, si
{i1, ..., ir } sont r positions de bit connus qui correspondent à mr = mi1 ...mir , nous ex-
trayons de la matrice publique la sous-matrice Gr dont les lignes sont indexées par les
positions connues {i1, ..., ir }.
Ainsi il existe une permutation qui permet de transformer le message en m = (ml ||mr ): ml
est considéré comme l’autre partie du message correspondant à l’autre sous-matrice Gl ,
où k = r + l . En procédant de la même manière qu’avec l’attaque à texte clair partiel(voir
paragraphe 4.2.1), on obtient:
c ′ = ml Gl ⊕e (4.2)
où Gl est formé de lignes qui correspondent aux positions inconnues.
Le même scénario sera monté sur le cryptosystème de Niederreiter.
¹ Attaque par renvoi de message
On assiste à un renvoi de message si le même message est chiffré et envoyé deux fois (ou
plusieurs fois) avec deux vecteurs d’erreur aléatoires différents vers le même destinataire.
Cette attaque est montée sur le schéma de McEliece pour la première fois par Berson dans
[32], il a montré que cette attaque est l’une des plus faciles à monter contre le schéma
de McEliece avec un complexité O (k3), où k est la longueur du message et (n,k, t ) =
(1024,524,50). Dans cette partie, nous montons cette attaque avec les paramètres suiv-
ants (n = 2048,k = 1608,d = 81, t = 40) en suivant la même démarche.
Considérons m le message, pour le premier envoi de m, on obtient c1 = mG⊕ e1 et pour
le renvoi on obtient c2 = mG⊕ e2, alors l’adversaire calcule c1 ⊕ c2 = e1 ⊕ e2 mod 2. Cette
attaque est basée sur le fait que, avec le McEliece (n = 2048,k = 1608,d = 81, t = 40), pour
une position de bit ` donnée, la probabilité d’avoir le bit 1 sur e1 et e2 à la position ` est
faible P(e1(`) = e2(`) = 1) ≤ ( 402048 )2 = 0.0004, avec wt(ei ) ≤ 40 et ` ∈ {1...n}. Définissons :
L0 = {` ∈ {1, . . . ,n} : c1(`)⊕ c2(`) = e1(`)⊕e2(`) = 0} (4.3)
L0 = {` : e1(`) = 0 = e2(`)}∪ {` : e1(`) = 1 = e2(`)} (4.4)
L0 ≈ {` : e1(`) = 0 et e2(`) = 0} (4.5)
et
L1 = {` ∈ {1, . . . ,n} : c1(`)⊕ c2(`) = e1(`)⊕e2(`) = 1}. (4.6)
Ainsi ` ∈ l1 signifie que e1(`) 6= e2(`) dans F2. Comme wt(e1 ⊕ e2) ≤ 2t , alors |L0| ≈ 2048−wt(e1⊕e2) ≥ 2048−2×40 = 1968 et |L1| ≤ 2t = 80. Un adversaire devrait essayer de deviner
57
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
les k = 1608 colonnes non protégées parmi celles indexées par L0.
Soit pi la probabilité pour que juste i coordonnées soient simultanément modifiées par
e1et e2. Alors
pi = P(|{` : e1(`) = 1}∩ {` : e2(`) = 1}| = i ) =
(40i
)(204840−i
)(204840
) . (4.7)
Par conséquent, le cardinal prévu (L’espérance mathématique) de L1 est:
E(|L1|) =∑40
i =0(80−2i )pi ≈ 78.4
Les deux cryptosystèmes HyMES et Niederreiter ne sont pas menacés par cette at-
taque, puisque les deux sont deterministes.
º Attaque par messages reliés
Dans l’attaque par messages reliés contre un système de chiffrement, l’attaquant obtient
plusieurs messages chiffrés tels qu’il existe une relation connue entre les messages clairs
correspondants. Ces textes chiffrés peuvent donc aider l’attaquant à atteindre un certain
objectif, par exemple obtenir des informations utiles sur les messages cachés. Cette at-
taque était aussi montée sur le chiffrement de McEliece par Berson en Crypto’97 [32].
Cette attaque est une généralisation de l’attaque par renvoi de message. Supposons que
m1 et m2 ont été envoyés au même destinataire. La condition de messages reliés est véri-
fiée s’il existe une relation linéaire entre m1 et m2 : par exemple, si nous connaissons
δm = m1 ⊕m2.
Sur le schéma de chiffrement de McEliece, si un adversaire connait c1 = m1G⊕ e1 , c2 =
m2G⊕e2 et δm. Il sera en mesure de calculer:
c1 ⊕ c2 = m1G⊕m2G⊕e1 ⊕e2 = (δm)G⊕e1 ⊕e2.
il obtient c1⊕c2⊕ (δm)G = e1⊕e2 et applique le processus de l’attaque par renvoi de mes-
sage en utilisant c1 ⊕ c2 ⊕ (m1 ⊕m2)G à la place de c1 ⊕ c2.
D’une manière équivalente, nous remarquons que cette attaque fonctionne également
sur le schéma HyMES. Dans ce cas, puisque les deux m1 = m′1||m′′
1 et m2 = m′2||m′′
2 sont
découpés. Si δm = δm′||δm′′ = (m′1⊕m′
2)||(m′′1 ⊕m′′
2 ) et m′′1 6= m′′
2 , alors il sera en mesure de
calculer:
c1 ⊕ c2 = m′1G⊕m′
2G⊕ϕ(m′′1 )⊕ϕ(m′′
2 ) = (δm′)G⊕ϕ(m′′1 )⊕ϕ(m′′
2 )
On obtient c1⊕c2⊕(δm)G =ϕ(m′′1 )⊕ϕ(m′′
2 ) et applique le processus de l’attaque par renvoi
de message en utilisant c1 ⊕ c2 ⊕ (m1 ⊕m2)G à la place de c1 ⊕ c2.
Pour le schéma de Niederreiter cette attaque n’est pas possible parce que le chiffrement
est déterministe et partiellement homomorphe.
58
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
» Chosen plaintext (CPA) et chosen-ciphertext attacks (CCA)
L’attaque à texte clair choisi est un modèle d’attaque qui suppose que l’attaquant a la
capacité de choisir des messages arbitraires à crypter et obtenir les cryptogrammes cor-
respondants. L’objectif de l’attaque est de gagner un peu plus d’informations qui permet
de réduire la sécurité du système de chiffrement. Dans le pire des cas, une attaque à clair
choisi pourrait révéler la clé secrète du schéma.
Pour certaines attaques de type clair choisi, seule une petite partie du texte en clair doit
être choisie par l’attaquant: de telles attaques sont connues comme des attaques par in-
jection de texte en clair. Cela semble, à première vue, être un modèle irréaliste; il serait
certainement peu probable qu’un attaquant puisse persuader un cryptographe humain
de chiffrer de grandes quantités de textes clairs de son choix. La cryptographie moderne,
implémentée en matériel ou logiciel est utilisée pour un large éventail d’applications;
dans de nombreux cas, une attaque de type clair choisi est souvent très faisable. Les at-
taques de type clair choisi deviennent extrêmement importantes dans le contexte de la
cryptographie à clé publique, où la clé de chiffrement est publique et un attaquant peut
crypter tout clair qu’il choisit.
Deux formes d’attaque à clair choisi peuvent être distinguées:
• attaque à clair choisi par lot, où l’adversaire choisit tous les textes en clair avant
qu’ils soient chiffrés.
• attaque à clair choisi adaptative, où l’adversaire fait une série de requêtes inter-
actives, choisissant des messages en se basant sur les informations provenant des
chiffrés précédents.
Les algorithmes de chiffrement à clé publique non-aléatoires (déterministes) comme Nieder-
reiter et Hymes PKC sont vulnérables aux attaques de type "Dictionnaire", où l’attaquant
crée une table de messages probables et de leur texte chiffré correspondant. Certains al-
gorithmes de chiffrement probabiliste tels que McEliece PKC sont également vulnérables.
Soit c le texte chiffré, l’attaquant tente de trouver le texte en clair correspondant en cal-
culant pour chaque texte clair m, le poids de mG⊕ c. S’il est inférieur à la capacité de
correction du code alors m est le texte en clair correspondant.
La complexité de déchiffrer le chiffré décroît exponentiellement pour chaque bit connu.
Par exemple, l’attaque d’un texte chiffré avec l’aide des paramètres du McEliece (n,k) et
sachant kl morceaux équivaut à attaquer un texte chiffré avec McEliece en utilisant les
paramètres (n,k −kl ). Voir la section d’attaque à clair connu.
Dans une attaque à chiffré choisi CCA, un attaquant a accès à un oracle de déchiffre-
ment qui permet de décrypter tout texte chiffré choisi (à l’exception de celui que l’attaquant
tente de révéler). Dans le cadre général, l’attaquant doit choisir tous les textes chiffrés à
59
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
l’avance avant d’interroger l’oracle.
Dans l’attaque à chiffré choisi adaptative, formalisé par Rackoff et Simon dans [122], il est
capable d’adapter cette sélection en fonction de l’interaction avec l’oracle. Il existe une
variante nommée l’attaque à chiffré choisi("lunchtime") dans laquelle un attaquant peut
faire des requêtes mais seulement jusqu’à un certain point, après quoi l’attaquant doit
montrer qu’il est capable d’attaquer le système. Le terme "lunchtime" renvoie à l’idée
que l’ordinateur d’un utilisateur, avec la capacité de déchiffrer, est disponible pour un
attaquant au moment où l’utilisateur est au déjeuner.
L’attaque à chiffré choisi adaptative: Cette attaque est étudiée sur le chiffrement McEliece
par plusieurs auteurs [131, 133].
Comme l’attaquant a accès à l’oracle, pour le challenge reçu (McEliece et Hymes) c =
mG⊕ e, il peut changer deux bits de c pour obtenir c ′ = mG⊕ e ′ et l’envoyer à l’oracle
de déchiffrement. Ce déchiffrement sera réussi que si ces bits modifiés sont à la fois dif-
férents: un bit "1" dans e est changé en "0" et un "0" changé en "1", i.e. wt(e) = wt(e ′) = t
et wt(e ⊕e ′) = 2. Lorsque cela se produit, la sortie de l’oracle sera le texte en clair m. Cette
attaque peut réussir avec la probabilité:
Pr = P(wt(e) = wt(e ′) = t et wt(e⊕e ′) = 2) =(t
1)(n−t1 )
(n2) = 2t (n−t )
n(n−1) , pour n = 1024 et t = 50 Pr = 0,09
(cela signifie au plus environ 11 fois), et pour n = 2048 et t = 81 Pr = 0,08 (cela signifie au
plus environ 12 fois).
Pour le schéma Hymes, la deuxième partie m2 seraϕ(m2) = e = m1G⊕c, soit m2 =ϕ−1(e) =
ϕ−1(m1G⊕ c).
Pour le schéma Niederreiter, avec la même probabilité, puisque c = HeT, l’attaquant peut
envoyer à l’oracle c ′ = c ⊕H[i ]⊕H[ j ], avec H[i ] et H[ j ] les colonnes correspondantes aux
deux bits modifiés du message e, ce qui devient e ′. L’erreur e sera révélée en changeant à
nouveau ces bits.
¼ Reaction attack
Cette attaque peut être considérée comme une version affaiblie de l’attaque à chiffré
choisi. Ici, au lieu de recevoir les textes déchiffrés de l’oracle, l’attaquant se contente
d’observer la réaction de celui-ci. Habituellement, cela permet de savoir si l’oracle est ca-
pable de déchiffrer le texte chiffré. Dans le contexte des attaques par canaux cachés, ceci
peut aussi signifier d’observer le temps de déchiffrement, la consommation d’énergie,
etc. L’une des variantes la plus facile (voir [81]), l’attaquant retourne un ou quelques bits
du texte chiffré cible (de McEliece ou HyMES) c = mG⊕ e. Soit c ′ le cryptogramme avec
des bits modifiés, si le déchiffrement réussit alors, le poids de l’erreur e ′ (c ′ = mG⊕ e ′) est
inférieur à t ; ce qui signifie que les positions de bits modifiés sont des positions d’erreur.
Pour le schéma de Niederreiter, cette attaque peut être montée par le même procédé
60
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
décrit dans l’attaque à chiffré choisi adaptative.
En répétant l’observation ci-dessus en temps polynomial en n, l’erreur sera révélée et
l’algorithme de décodage ISD pourra être utilisé pour révéler le texte clair. Dans le cas
Niederreiter, la même chose peut être réalisée en ajoutant des colonnes de la matrice au
syndrome.
½ Malleability
La malléabilité est une propriété de certains algorithmes cryptographiques. Un algo-
rithme de chiffrement est malléable, s’il est possible pour un adversaire de transformer
un texte chiffré en un autre texte chiffré dont le déchiffrement donne un texte clair lié. En
effet, étant donné c un chiffré du message clair m, il est possible de forger un autre texte
chiffré qui se déchiffre en f (m), pour une fonction connue f , sans besoin de connaitre
m. Comme indiqué dans [81], le schéma de McEliece est malléable: Soit δm une chaîne
de bits de longueur k dont tous les bits sont égaux à "1" , G[i ] la i -ème ligne de la matrice
publique G.
A partir de δm, l’adversaire peut obtenir le texte chiffré:
c ′ = c⊕k
i =1 G[i ] = (m ⊕δm)G⊕e = m′G⊕e, (dans HyMES e =ϕ(m2))
Par conséquent, l’oracle retourne le texte en clair m′ et l’adversaire peut monter une at-
taque à messages reliés entre c et c ′; m′ = m ⊕δm.
Dans le contexte du schéma de Niederreiter, c = Hϕ(m)T, comme nous le savons, wt(ϕ(m))) =
t , l’adversaire peut prendre au hasard la i-ème colonne de H notée H[i ] et envoie à l’oracle
c ′ = c⊕H[i ]. Le déchiffrement sera un succès si nous avions «1» sur le bit du messageϕ(m)
à la position i . Soit e1 un vecteur de longueur n dont le seul bit non nul est à la position
i . L’oracle retourne le vecteur e de poids t −1 tel que c ′ = HeT = c ⊕H[i ] = Hϕ(m)T ⊕HeT1 =
H(ϕ(m)⊕e1)T. Alors:
ϕ(m) = e ⊕e1, i.e. m =ϕ−1(e ⊕e1).
Avec une probabilité de reussite:
Pr = P(e[i ] = 1) =(t
1)(n
1) = tn , pour n = 1024 et t = 50 ,Pr = 0,05, et pour n = 2048 , t = 81,
Pr = 0,04 c’est-à-dire réussite au plus 25 tests.
4.2.2 Résumé des attaques
Dans cette section, nous dressons deux tableaux récapitulatifs des attaques étudiées
précédemment. Le premier tableau représente les attaques sur texte clair et le deuxième
sur le chiffré. ? signifie que l’attaque a marché sur le schéma et "no" que l’attaque ne
marche pas.
61
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Plaintext
Broadcast Known Generalized Mess Related Chosen
Scheme partial Kn. partial resend mes. Adapt. Batch
chosen chosen
McEliece no ? ? ? ? ? no
Niederreiter ? ? ? no no ? ?
HyMES ? ? ? no ? ? ?
Ciphertext
Scheme Chosen Adapt. Chosen Reaction Malleability
McEliece ? ? ? ?
Niederreiter ? ? ? ?
HyMES ? ? ? ?
Figure 4.1 – Résultat des attaques
A partir de ces deux tableaux, on remarque que HyMES hérite des mauvaises propriétés
de McEliece face aux attaques à texte clair connu, messages reliés et des mauvaise pro-
priétés de Niederreiter face aux attaques par broadcast et chiffrés choisis. Sa construc-
tion spéciale n’est pas adaptée aux attaques critiques mais en utilisant une construction
comme celle d’Imai et Kobara, il peut resister au CCA2 (adaptive chosen-ciphertext at-
tack) comme détaillé dans [89].
4.3 Contre-mesures
Dans [13], il a été conclu que l’indistinguabilité et la malléabilité sont équivalentes sous
l’attaque CCA2 et la résistance face à cette dite attaque entrainerait une résistance face à
toutes les autres attaques.
La première conversion réaliste pour la sécurité sémantique: " Optimal Asymmet-
ric Encryption Padding (OAEP)" a été proposée par Bellare et Rogaway [14], mais mal-
heureusement elle ne protégeait pas contre l’attaque par réaction.
Dans [130], H.-M. Sun plusieurs variantes de McEliece probabilistes qui resiste aux at-
taques par renvoi de message et de messages reliés avec le même ratio que le McEliece
originel. H.-M. Sun annonce que l’une des variante proposé satisfait à la non-malléabilité
sous le modèle d’attaque à chiffré choisi adaptative. Toute cette conversion ne présente
62
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
pas de preuve sémantiquement sûre, mais reste quand même une approche pour trans-
former McEliece en chiffrement randomisé efficace de la forme c = (m⊕h(e))G⊕e avec h
une fonction de hachage.
Dans notre contexte, comme nous étudions le chiffrement basé sur les codes qui reposent
sur des fonctions à sens unique (OWE), alors il est possible d’utiliser des conversions
génériques existantes pour le rendre IND-CCA2 ou bien d’utiliser des conversions spé-
cifiques à la cryptographie basée sur les codes comme celle que nous proposerons ci-
après.
L’idée derrière les conversions est de produire une sortie randomisée en protégeant le
message par chiffrement sous-jacent de type One-Pad Time qui est inconditionnel.
Notations :
Dans la suite on note:
• E Mc (x, y) fonction de chiffrement de McEliece PKC, x est le message et y le vecteur
erreur.
• DMc (z) fonction de déchiffrement de McEliece PKC, qui retourne un message clair
du chiffré z .
• E Ne (x) fonction de chiffrement de Niederreiter PKC, x le message clair de longueur
au plus dlog2
(nt
)e• DNe (z) fonction de déchiffrement de Niederreiter PKC, qui retourne un message
clair du chiffré z .
• ϕ : Fl2 7→Wn,t , où l = dlog2
(nt
)e et Wn,t est l’ensemble des vecteurs de longueur n et de
poids t .
• Len(x) la longueur binaire de x.
• H : F∗2 7→ Fl2, où l < k et l = dlog2
(nt
)e: une fonction de compression à sens unique.
• G : Fk02 7→ Fk
2 , où k0 < k et k0 la longueur du message clair: un Générateur pseudo-
aléatoire cryptographiquement sûr.
Conversion générique de Fujisaki-Okamoto :
Cette version, basée sur une fonction de chiffrement à sens unique (One-Way Encryption:
OWE), est proposée dans [63] et est montrée sûre contre CCA2. Puisque les trois schémas
sont OWE, il est possible d’adapter cette conversion pour chacun d’entre eux. Pour un
63
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
message clair m de longueur k0, et une valeur aléatoire r ∈ Fk02 .
Faire:
c1 = E Mc (r,ϕ(H(r ||m)) (4.8)
c2 = (m)⊕G(r ) (4.9)
r etur n c := (c1,c2) (4.10)
Cette conversion est insuffisante pour protéger McEliece contre l’attaque à texte clair
partiel[82] du fait que le schéma de McEliece ne resiste pas à cette attaque.
Cependant il existe des conversion générique à la cryptographie asymétrique applicable
aux fonction(partiellement) à sens unique avec trappe telles celle de McEliece, Niederre-
iter.
Conversion générique de Pointcheval :
Cette conversion [120] basée sur une fonction partiellement à sens unique (Partially Trap-
door One-Way Function:PTOWF) est sémantiquement sûre contre CCA2 (IND-CCA2).
Puisque sans oracle, pour n’importe quel adversaire en temps polynomial et pour n’importe
quel chiffré c à partir des trois schémas definis ci-dessus, il est calculatoirement infais-
able d’obtenir le message clair correspondant. Comme il est aussi facile d’obtenir le mes-
sage clair avec la clé privée, alors ces trois schémas (McEliece, Niederreiter et HyMES)sont
PTOWF.
Cette conversion est décrite comme suit:
Etant donnés m le message de longueur k0, et un couple (r, s) ∈ Fk02 ×Fk−k0
2 de valeurs aléa-
toires.
Faire:
c1 = E Mc (r,ϕ(H(m||s))) et c2 = (m||s)⊕G(r )
return c := (c1,c2).
L’introduction du paramètre aléatoire s a permis ici d’améliorer la conversion de Fujisaki-
Okamoto pour resister à l’attaque à texte clair partiel.
Conversion spécifique de Imai-Kobara :
Du fait que généralement les conversions génériques ajoutent une redondance assez grande(différence
entre la taille du message clair et de celle du message chiffré), dans [82] Imai et Kobara ont
proposé une conversion spécifique qui permet de réduire la redondance.
Étant donnés un message m, une valeur aléatoire r et une constante Const .
Soient Hr : Fk2 7→ Fl
2, où l < k, k = Len(m) + Len(Const ) et l = Len(r ) une fonction de
64
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
hachage.
Faire:
y1 := G(r )⊕ (m||Const )
y2 := r ⊕Hr (y1)
(c1||y4||y3) := (y2||y1)
c2 := E Mc (y3,ϕ(y4))
r etur n c := (c1,c2)
Le point fort de cette conversion est qu’elle est adaptée au chiffrement de McEliece car
le message y3 ainsi que le vecteur erreur y4 sont tirés de y1 qui lui est tiré du massage
d’entrée m et de constante Const .
Notre Conversion spécifique :
La remarque que nous avons sur la conversion de Imai-Kobara est qu’elle s’appuie sur
une constante const qui est publique pour faire le test d’intégrité. Notre idée est de rem-
placer cette constante par une compression de donnée interne du système.
Nous proposons ici une version modifiée de imai-kobara qui permet d’avoir une redon-
dance plus petite et nous montrerons qu’elle est CCA2. Dans cette version, la taille du
message clair est aussi large que dans les autres versions.
Encryption:
Etant donnés un messages m, r une valeur aléatoire
Soit Hr : Fk2 7→ F
l12 , où l1 < k = dLen(r )
2 e une fonction de compression cryptographiquement
sûre.
Faire:
(m1||m2) := m
(r1||r2) := r
y1 := G(r1)⊕ (m1||Hr (r2))
y2 := G(r2)⊕ (m2||Hr (r1))
y3 := (r )⊕H(y1)
(c1||y5||y4) := (y3||y2||y1)
c2 := E Mc (y4,ϕ(y5))
c := (c1,c2)
65
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Decryption:
(c1||c2) := c
(y4,e) := DMc (c2)
y5 := ϕ−1(e)
(y3||y2||y1) := (c1||y5||y4)
r := y3 ⊕H(y1)
(r ′1||r ′
2) := r
(m1||Hr (r2)) := G(r ′1)⊕ y1
(m2||Hr (r1)) := G(r ′2)⊕ y2
i f (Hr (r1) = Hr (r ′1) et Hr (r2) = Hr (r ′
2))
r etur n(m1||m2)
el se r e j ect c
Ici Len(y4) = k (dimension du code), Len(y5) = dlog2
(nt
)e et
Len(c1) = Len(y3||y2||y1)−Len(y5||y4) = Len(m)+Len(r )+Len(Hr (r1))+Len(Hr (r2))−k−dlog2
(nt
)e.
Si Len(m)+Len(r )+Len(Hr (r1))+Len(Hr (r2)) = k +dlog2
(nt
)e, alors c1 sera supprimé.
Pour les mêmes paramètres que les autres conversions (Len(r ) = Len(Const )), nous obtenons
une redondance plus petite en éliminant la valeur Const , découpant r en deux partie
(r1||r2) = r , (Len(r1) = Len(r2)) et le message en deux parties suivant l’idée de HyMES.
Puisque la fonction de compression réduit la taille des inputs, alors:
Len(Hr (r1)) < Len(r1) = d r2e et Len(Hr (r2)) < Len(r2) = d r
2e.
La redondance est :
R = n +Len(r )+Len(Hr (r1))+Len(Hr (r2))−k −dlog2
(nt
)e < n +2Len(r )−k −dlog2
(nt
)e.
Alors que dans [82] la redondance est R1 = n + 2Len(r ) − k − dlog2
(nt
)e, on conclut que
R < R1.
N.B.:
• Pour fournir une conversion pour le schéma de chiffrement de Niederreiter , du fait
que E Ne (x) utilise un seul paramètre x, nous l’adaptons juste comme il a été donné
dans [114].
• Il faut noter que: G,H, et Hr sont considérés totalement aléatoires et s’appuient sur
des fonctions de hachage cryptographiquement sûres.
Nous allons fournir un tableau de synthèse qui explicite la taille et le rendement de chaque
proposition. Pour les paramètres nous fixons H = SHA3− 512 i.e. Len(r ) = 512 et Hr =
66
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Table 4.1 – Comparaison des conversions et de la redondance
Redondance= taille du chiffré - taille du clair
Conversion Conversion (n,k) (2048,1289) (4096,2560)
Scheme Type t 68 128
Pointcheval [120] Générique n +Len(r ) 2560 4608
Fujisaki-Okamoto[63] Générique n 2048 4096
Imai-Kobara[82] spécifique n + 2Len(r ) −k −dlog2
(nt
)e 1352 1743
Notre conversion spécifique n + Len(r ) +Len(Hr (r1)) +Len(Hr (r2)) −k −dlog2
(nt
)e
1288 1679
McEliece Originel - n −k 762 1536
SHA3−224 .i.e Len(Hr (r1)) = Len(Hr (r2)) = 224.
Pour prouver que notre schéma est sûr contre l’attaque à texte clair choisi CPA et
l’attaque à chiffré choisi adaptative CCA2, nous donnons ce lemme.
Lemme 4.3.1 . Soit A un adversaire(Machine de Turing) contre la sécurité sémantique
(IND) de notre conversion dans un scénario CPA avec une complexité au plus t étapes, avec
un avantage égal à ε après au plus qO appels à l’oracle O ∈ {G,H,Hr }. Alors, il existe un
algorithme B contre le schéma de McElice original capable de fournir le message clair de
n’importe quel chiffré c avec un avantage ε′ ≥ ε− qH
2k .
Preuve: Ici nous suivons la même idée dans [120] et [82].
Soit A = (A1, A2) avec A1 le "find-stage" et A2 le "guess-stage". B intercepte les requêtes sur
(G,Hr ,H) en les simulant correctement.
• Premièrement B lance A1 en simulant correctement G, Hr et H. Pour toute requête
q soumise à l’oracle O ∈ {G,Hr ,H}, B prends Oq et le retourne comme la valeur O(q).
A la fin de ce stage, A1 retourne les messages m0,m1.
B choisit un bit aléatoire b ∈ {0,1} et deux valeurs aléatoires c1 et y5 et définit c2 := c
(De 4.11 nous avons c2 := E Mc (y4,ϕ(y5)). ) et c = (c1,c2) comme le chiffré de mb (c
est le chiffré du McEliece original).
• Deuxièmement, B appelle A2 avec c comme entrée et simule les requêtes toujours
de la même manière, A2 retourne d ∈ {0,1}.
67
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
Supposons que l’algorithme B soit conçu de cette manière, montrons que B est capable
de déchiffrer le McEliece PKC:
Soit AskG l’événement où r1 est demandé à l’oracle G, AskHr l’événement où r2 est de-
mandé à l’oracle Hr et AskH l’événement où y1 est demandé à l’oracle H (pour la défini-
tion de r1, r2 et y1 voir 4.11 ).
Ici nous supposons que l’événement AskH est indépendant de G et de Hr , et il se
réalise avant les événement AskG et AskHr .
Pour un certain avantage ε′, l’adversaire B gagne le jeu si:
• AskH se réalise ( i.e. avoir y1 qui contient y4) ou
• AskG et AskHr se réalise (i.e avoir y1 ) ou (exclusif)
• d=b (dû à la condition CPA)
Nous allons évalué la borne inférieure de l’avantage ε′
pour lequel B gagne le jeu pour
n’importe quel message chiffré c. Soit wi n l’événement pour lequel A2 devine correcte-
ment b. Sa probabilité, par définition, est: Pr (wi n) = ε+12 (avec ε l’avantage)
Pr (wi n) ≤ Pr (AskH∨ (AskG∧AskHr ))+Pr (d = b)
Pr (wi n) ≤ Pr (AskH∨ (AskG∧AskHr ))+ 1−Pr (AskH∨ (AskG∧AskHr ))
2
Pr (wi n) ≤ 1+Pr (AskH)+Pr (AskG∧AskHr )
2ε≤ Pr (AskH)+Pr (AskG∧AskHr )
Pr (AskG∧AskHr ) ≥ ε−Pr (AskH)
La probabilité pour que AskH se réalise en une requête est 1Len(y1) = 1
2k , (G : Fk02 7→ Fk
2 ).
Alors après qH requêtes Pr (AskH) ≤ qH2k et la probabilité pour laquelle B gagne le jeu est
ε′ ≥ ε− qH
2k . Le nombre d’étapes au plus d’avoir le message est:
t +TGqG +THr qHr +THqH +TDec (qG +qHr ) = t + (TG +TDec )qG + (THr +TDec )qHr +THqH.
TO, où O ∈ {G,Hr ,H}, est défini comme nombre d’étapes pour l’oracle aléatoire de donner
la réponse à chaque requête. TDec est le nombre d’étapes pour déchiffrer c à partir des
requêtes sur G et H.
Dans ce qui suit, nous allons montrer que notre conversion est IND-CCA2.
Théorème 4.3.2 . Soit A un adversaire(Machine de Turing) contre la sécurité sémantique
(IND) de notre conversion dans un scénario CCA2 avec une complexité au plus t étapes,
68
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
avec un avantage égal à ε après au plus qO appels à l’oracle O ∈ {G,H,Hr } et au plus qD à
l’oracle de déchiffrement D. Alors, il existe un algorithme B contre le schéma de McEliece
original capable de fournir le message clair de n’importe quel chiffré c avec un avantage
ε′ ≥ ε− qH
2k − qD(n
t ) .
Proof:
Selon la sécurité sémantique face à l’attaque à chiffré choisi, on peut répéter ce scénario
en utilisant un oracle de déchiffrement. Ici l’oracle de déchiffrement accepte un chiffré
supposé et retourne le texte clair correspondant ou rejette le soit disant chiffré.
En utilisant le lemme 4.3.1, pour chaque appel à l’oracle O ∈ {G,Hr ,H}, B l’intercepte
comme (q,Oq ). L’oracle de déchiffrement peut réussir au plus après qD requêtes et re-
tourne un message clair (m1||m2) correspondant aux requêtes (r1,Gr1 ) , (r2,Hr2 ) et (y1,Hy1 )
et B calcule y1 = Gr1⊕(m1||Hr2 ), Len(y1) ≥ Len(y4); B révèle le message (y4) qui correspond
au chiffré c2 := c.
Ici, avec l’oracle de déchiffrement, seulement les chiffrés corrects différents du challenge
seront décryptés. Le fait d’avoir un chiffré correct avant la requête r1 à G et r2 à Hr
est défini par la probabilité 1(n
t ) , alors après qD requêtes Pr (AskD) ≤ qD(n
t ) . En se basant
sur le lemme 4.3.1, dans le scénario de chiffré choisi, B gagne le jeu avec la probabilité
ε′ ≥ ε− qH
2k − qD(n
t ) .
Le nombre d’étapes est au plus t +TDqD +TGqG +THr qHr +THqH +TDec (qG + qHr ) = t +(TG +TDec )qG + (THr +TDec )qHr +TDqD +THqH.
TO, où O ∈ {G,Hr ,H,D}, est défini comme nombre d’étapes pour l’oracle aléatoire de don-
ner la réponse pour chaque requête. TDec est le nombre d’étapes pour déchiffrer c à partir
des requêtes sur G et H.
4.4 Conclusion
Dans ce chapitre nous avons analysé la vulnérabilité des cryptosystèmes de McEliece,
Niederreiter, et HyMES face à plusieurs attaques critiques. Tous les schémas ont mon-
tré des faiblesses face à la pluspart de ces attaques, HyMES contre toutes les attaques
sauf l’attaque de messages reliés. Ce résultat montre l’importance des conversions pour
ces cryptosytèmes qui protègent contre les attaques critiques. S’il faut choisir une con-
version appropriée, il est important de considérer toutes les attaques critiques ci-dessus,
puisqu’il existe des conversions qui ne protègent que certaines d’entres elles comme par
exemple le bien connu "Optimal Asymmetric Encryption Padding (OAEP)" par Bellare et
Rogaway [14] qui ne protège pas contre l’attaque par réaction. Des conversions spéci-
fiques pour McEliece ont été proposées dans [82], et pour le cryptosysteme Niederreiter
dans [114].
69
CHAPITRE 4. LES ATTAQUES CRITIQUES EN CRYPTOGRAPHIE BASÉE SUR LES CODES
En fin, nous avons proposé ici une nouvelle version de conversion spécifique aux
schémas basés sur les codes qui permet d’obtenir une plus petite redondance des don-
nées.
70
Chapitre 5
Implémentations Efficaces de Fonctions
de Hachage et chiffrements par Flux
basés sur les Codes
“ Un programme C est comme une
danse rapide sur une piste de danse
fraîchement cirée, par des personnes
tenant des rasoirs. ”
Waldi Ravens
Sommaire
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2 Quelques bases cryptographiques . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.1 Primitives cryptographiques . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 chiffrements par flux basés sur les PRNG . . . . . . . . . . . . . . . . 75
5.3 Fonction de Hachage basée sur les codes . . . . . . . . . . . . . . . . . . . 75
5.3.1 Choix des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.3.2 FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3.3 SFSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3.4 RFSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4 Les Générateurs de Nombres Pseudo-aléatoire(PRNG) basés sur les codes 79
5.4.1 Schéma général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.2 SYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.3 2SC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.4 XSYND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
71
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
5.5 Les Techniques d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.1 Nettoiement du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.2 Registres classiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5.3 Registres XMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5.4 Représentation des données . . . . . . . . . . . . . . . . . . . . . . . 82
5.6 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6.1 Bancs d’essai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6.2 Discussions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Dans cette partie du travail, nous présentons une étude sur les implémentations logi-
cielles de deux familles de primitives cryptographiques basées sur le problème du dé-
codage par syndrome : les fonctions de hachage et de chiffrement par flux. Nous avons
étudié différents algorithmes, à savoir, FSB, SFSB, RFSB, SYND, 2SC et XSYND, et amélioré
leur performance en implémentations logicielles qui sont faites en langage C à l’aide de
registres XMM de Streaming SIMD Extensions (SSE). Nous fournissons une comparaison
équitable des implémentations de ces primitives dans la même plate-forme et donnons
également des liens vers les codes que nous avons développés. Bien que dans certains
cas, nous ne sommes pas parvenus à la vitesse donnée dans le document, nous avons
réussi à battre les résultats des implémentations de référence qui sont disponibles.
Ce travail fait l’objet d’une présentation dans WAIFI2014 et d’une publication [47] dans
Arithmetic of Finite Fields, volume 9061 of Lecture Note on Computer Sciences, pages
187–203. Springer International Publishing, 2015.
72
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
5.1 Introduction
Officieusement, une fonction de hachage est définie comme une fonction qui compresse
une entrée de longueur arbitraire dans une chaîne avec une longueur fixe, appelée haché
ou empreinte. Si elle satisfait à des exigences supplémentaires, elle peut être utilisée
comme un puissant outil dans la cryptographie pour sécuriser les infrastructures infor-
matiques telles que la gestion: des connexions Web sécurisées, des clés de cryptage, des
signatures de virus et des logiciels malveillants, des logins et mots de passe, des signa-
tures numériques. Au cours des dernières années, plusieurs fonctions de hachage ont été
proposées, mais malheureusement, la plupart des propositions utilisées dans la pratique
a été trouvée vulnérable. Cela a remis en question la sécurité à long terme des propo-
sitions ultérieures, dont les concepts sont dérivés de ces fonctions de hachage comme
la famille SHA-2. La réaction de l’Institut National américain des Normes et de la Tech-
nologie (NIST) était d’annoncer au public la compétition pour une nouvelle fonction de
hachage SHA-3, pour le développement de nouveaux algorithmes de hachage. Initiale-
ment, le NIST a reçu 64 propositions, mais seulement 5 candidats ont été sélectionnés
pour passer au troisième (et dernier) tour du concours. Une des 64 soumissions est le FSB
une fonction de hachage rapide, introduit d’abord par Augot, Finiasz et Sendrier [9] en
2003 et améliorée par Finiasz, Gaborit, et Sendrier en 2007 dans [56]. Cette fonction de
hachage est encore intacte à ce jour et a une preuve de sécurité, ce qui signifie que sa sécu-
rité est directement réductible aux problèmes NP-complets de la théorie du codage, qui
sont censés être difficiles en moyenne. Cependant, elle souffre de l’inconvénient d’être
peu efficace par rapport aux autres fonctions de hachage. Cette question est la principale
raison de son élimination au second tour de la compétition. Motivés par son inefficacité,
Meziani et al dans [102] ont proposé une autre fonction de hachage basée sur le problème
du décodage par syndrome qui permet d’améliorer la vitesse de FSB à l’aide de la con-
struction éponge. Plus récemment, Bernstein et al. ont proposé une fonction de hachage
encore plus vite dans [30] qui est aussi rapide que 2 des 5 finalistes de SHA-3 avec moins
de 14 cycles pour hacher un octet pour un niveau de sécurité de 128 bits.
A côté des fonctions de hachage, les chiffrements par flux sont une famille très importante
dans les systèmes de chiffrement à clé secrète. Chaque bloc de texte en clair est com-
biné, une à la fois, avec le bloc correspondant d’une séquence pseudo-aléatoire (appelée
keystream) pour produire un bloc de texte chiffré. En règle générale, la combinaison est
effectuée au moyen de l’opération XOR au niveau de chaque bit du message. Les chiffre-
ments par flux doivent être exceptionnellement rapides et exigent des ressources infor-
matiques faibles. Par conséquent, ils sont utilisés dans de nombreuses applications telles
que GSM, UMTS, RFID, Bluetooth et chiffrement en ligne de grandes quantités de don-
nées en général. Les constructions théoriquement sécurisées de PRNG (Pseudo-Random
73
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Number Generator) ont, jusqu’à présent, la plupart du temps été axées à des méthodes
basées sur des hypothèses de la théorie des nombres. Malgré leur simplicité, la plupart
de ces systèmes sont donc peu pratiques pour de nombreuses applications. Il est donc
souhaitable d’avoir les chiffrements de flux efficaces dont leur sécurité repose sur d’autres
hypothèses. La première construction, sur la base du problème de décodage par syn-
drome, a été proposée par Fisher et Stern [59]. Gaborit et al. ont proposé SYND [67] qui
est une variante améliorée du système de Fisher-Stern. Avec 2SC [104], Meziani et al.
ont proposé un chiffrement par flux plus rapide en utilisant la construction éponge. Plus
récemment, Meziani et al. [103] proposé le chiffrement par flux XSYND comme une vari-
ante améliorée du SYND en termes de performance. Leur proposition surpasse toutes les
constructions à base de codes citées précédemment.
contribution : Nous avons mis en œuvre chacune des fonctions de hachage récem-
ment proposées et les chiffrements par flux. Certaines implémentations ont été améliorées
par une certaine optimisation de bas niveau ou un code simple. Nous avons mené des
bancs d’essai sur une plate-forme unique pour la comparaison des performances.
Organisation du chapitre : Nous présentons d’abord les fonctions de hachage (FSB,
SFSB, RFSB) et les chiffrements par flux (SYND, 2SC, XSYND) sur lesquels nous avons
travaillés. Ensuite, nous nous concentrons sur le choix des paramètres pour chaque fonc-
tion pour les questions de sécurité et d’efficacité. Compte tenu de ces fonctions et des
paramètres, nous donnons les résultats de nos bancs d’essai. Enfin, nous détaillons com-
ment nous avons obtenu ces résultats et optimisations.
5.2 Quelques bases cryptographiques
5.2.1 Primitives cryptographiques
Nous nous concentrons sur deux primitives principales: fonctions de hachage et de chiffre-
ment par flux. La première a l’intention d’assurer une fonction difficile à inverser, qui ne
nécessite pas de clé, et dont la longueur de sortie est fixe. La deuxième a l’intention de
fournir une fonction facile à inverse, protégée par une clé et dont la sortie est de longueur
variable.
Une fonction de hachage doit veiller à ce que les opérations suivantes soient difficiles
à effectuer:
• Résistance à la pré-image ( f (?) = y): pour un haché donné, il est difficile de calculer
un message qui donne la même valeur de hachage une fois fourni à la fonction de
hachage;
74
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
• résistance à la deuxième de pré-image ( f (?) = f (x)): pour un message donné, il est
difficile de trouver un autre qui a le même haché;
• résistance aux collisions ( f (?) = f (?)): Il est difficile de trouver deux messages dif-
férents qui donnent le même haché.
5.2.2 chiffrements par flux basés sur les PRNG
La plupart des dernières définitions de chiffrement par flux ont l’approche suivante: le
message d’entrée (texte brut) est divisé en blocs et rembourré comme expliqué dans le
paragraphe précédent. Le cryptage se fait par une opération très simple, comme un XOR
bit à bit. La sécurité est basée sur l’une des opérandes, qui est donnée par la keystream
précédent comme une clé de session (des chaînes de bits).
Figure 5.1 – Schéma de chiffrement par flux
Dans la Figure 5.1, chaque bloc de message est additionné à un seul flux de clés. Un
keystream est un bloc qui prend une clé de chiffrement et émet une séquence détermin-
iste de nombres qui ne sont pas prévisibles sans la clé. En fait, le flux de clés est produit
par un Générateur pseudo aléatoire (PRNG) qui est initialisé avec une graine qui dépend
de la clé secrète.
5.3 Fonction de Hachage basée sur les codes
5.3.1 Choix des paramètres
Nous aurons à choisir des paramètres pour les fonctions de sorte à augmenter la vitesse
et la sécurité des algorithmes. La vitesse est généralement calculée en cycles par byte, le
nombre moyen de cycles pendant lequel le processeur exécute l’algorithme pour traiter
un octet d’entrée (fonction de hachage) ou pour délivrer en sortie un byte de pseudo-aléa
(PRNG). La sécurité est donnée comme le logarithme du nombre d’opérations nops pour
qu’un attaquant puisse rompre le secret: sec = log2(nops). Un système est actuellement
considéré comme sûr si la sécurité est au-dessus de 128.
75
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Ainsi, nous avons besoin de connaître le nombre minimum d’opérations nécessaires
pour inverser les fonctions. Afin de l’estimer, nous étudions d’abord quelques attaques
bien connues contre SD. Ici, les meilleures attaques sont: le décodage par ensemble d’information
(ISD), l’attaque des anniversaires généralisées (GBA), et l’attaque par linéarisation. En-
suite, pour chaque point de la sécurité (résistance à la pré-image, résistance à la seconde
pré-image, et la résistance à la collision), nous réduisons l’attaque à une instance SD pour
déduire ainsi le nombre d’opérations nécessaires pour le briser. Nous gardons enfin le
plus petit nombre comme un plafond pour la sécurité.
5.3.2 FSB
FSB [9] (Fast Syndrome Based hash function), parmi les fonctions de hachage rapide
basées sur le SD, il était le premier à être proposé en 2003 comme remplacement du
SB [61] (Syndrome Based hash function). Il combine quelques bits de l’état interne et
quelques bits du bloc de message courant pour calculer des indices (en base 10). Les w
indices sont calculés et chacun fait référence à un numéro de colonne d’une matrice (de
parité) . La somme directe des colonnes sélectionnées donne la sortie de la fonction de
compression.
Figure 5.2 – Fonction de mise à jour de FSB
La figure 5.2 représente la fonction de compression (de mise à jour) de FSB basée sur
le modèle de Merkle-Damgård (voir 3.3.2) et un calcul de syndrome.
Voici un résumé des paramètres utilisés par FSB:
76
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
n nombre de colonnes disponibles
w nombre de colonnes à ajouter dans chaque tour
s la taille en bit de l’état interne
r la partie à ne pas modifier de l’état r < s
p la taille des vecteurs à permuter
FSB a été un candidat à la compétition SHA-3 [56] mais éliminé au deuxième tour, à
cause de sa lenteur par rapport aux autres candidats. Les paramètres donnés pour cette
version sont:
Longueur du hache n w r p s
160 20×216 80 640 653 1120
224 28×216 112 896 907 1568
256 32×216 128 1024 1061 1792
384 23×216 184 1472 1483 2392
512 31×216 248 1984 1987 3224
5.3.3 SFSB
SFSB [102] (Sponge for Fast Syndrome Based hash function) était proposé en 2011 et avait
pour but d’augmenter la vitesse de FSB en "fusionnant"(fonction Éponge) l’état interne
et le bloc de message au lieu de faire une concaténation. La fonction éponge utilisée, à
cet effet, a permis de simplifier le calcul des index.
Figure 5.3 – Fonction de mise à jour de SFSB
La figure 5.3 représente la fonction de compression de SFSB basée sur le modèle éponge
(voir 3.3.2).
Voici un résumé des paramètres utilisés par SFSB:
77
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
n nombre de colonnes disponibles
w nombre de colonnes à ajouter dans chaque tour
s la taille en bit de l’état interne
c la capacité éponge
p la taille des vecteurs à permuter
Les spécifications de SFSB donnent l’ensemble des paramètres suivants:
Hash length n s w c Nxor GBAp ISDp GBAc ISBc
160 12×217 384 24 240 64.0 130 99 86 91
224 17×217 544 34 336 88.9 150 144 114 112
256 39×217 624 39 296 90.5 246 172 129 148
GBAp et ISDp signifient la complexité de l’attaque par pré-image utilisant GBA ou bien
ISD tandis que GBAc et ISDc sont pour l’attaque par collision.
5.3.4 RFSB
RFSB [30] (Really Fast Syndrome Based hash function) était proposé en Africacrypt 2011
et change légèrement la manière dont les matrices quasi-cycliques sont manipulées. Une
permutation circulaire est faite durant la sommation des vecteurs colonnes en fonction
de leur position. RFSB sélectionne les colonnes à sommer d’une manière simple, qui al-
lège fortement les calculs en utilisant une représentation polynomiale des vecteurs. cette
approche permet de simplifier l’implémentation autant que possible.
Figure 5.4 – Fonction de mise à jour de RFSB
La Figure 5.4 représente la fonction de compression de RFSB basée sur le modèle de
Merkle-Damgård (voir 3.3.2) , un calcul de syndrome et permutation des colonnes.
Voici un résumé des paramètres utilisés par RFSB:
78
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
r la taille en bit de l’état interne
b les bits lus dans chaque étape
w nombre d’étape pour chaque bloc
Les spécifications de RFSB prennent seulement en compte un ensemble de paramètres
en sorte d’utiliser les registres matériels pour un meilleur niveau de performance.
r b w
509 8 112
5.4 Les Générateurs de Nombres Pseudo-aléatoire(PRNG)
basés sur les codes
5.4.1 Schéma général
Comme les fonctions de hachage dans le modèle Merkle-Damgård, les PRNGs que nous
étudions ont la même structure générale. Pour chaque bloc, l’état est mis à jour et la
sortie est faite sur cet état. Généralement la somme directe est utilisée pour chiffrer les
messages dans le cas du chiffrement par flux(One-Time PAD).
Figure 5.5 – schéma des PRNGs
La Figure 5.5 représente le PRNG basé sur la fonction de mise à jour (d’expansion) du
modèle Merkle-Damgård (voir Figure 3.3).
Un PRNG est en général défini par une fonction de mise à jour, une fonction de sortie
et une fonction d’initialisation.
5.4.2 SYND
SYND [67] était publié en 2007 comme un PRNG basé sur les codes. La fonction de mise
à jour (update) et celle de sortie (Output) marchent de la même manière que dans FSB.
Pour une matrice F donnée: on définit f , une fonction capable de calculer un nouveau
état ou bien qui sort le dernier état.
SYND utilise deux fonctions, f1 et f2 définies par les matrices F1 et F2. Les deux fonc-
tions sont aussi utilisées dans la fonction initialisation à travers un schéma de Feistel.
La Figure 5.6 représente le SYND basé sur le schéma des PRNGs (voir Figure 5.5) et la
fonction update de FSB (voir Figure 5.2).
79
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Figure 5.6 – schéma de SYND
La description des paramètres:
k longueur de la clé
n nombre de colonnes de la matrice
r nombre de lignes de la matrice
n k r
8192 64 128
8192 96 192
8192 128 256
8192 192 384
8192 256 512
8192 512 1024
5.4.3 2SC
En 2011, 2SC [104] (Sponge for Code-based Stream Cipher) proposa l’utilisation de la con-
struction éponge sur SYND. La fonction de mise à jour fonctionne de la même manière
comme dans SYND (la fonction h1 définie par une matrice H1), mais la sortie est calculée
en tronquant l’état interne.
Figure 5.7 – Schéma de 2SC
La Figure 5.7 représente le schéma de 2SC basé sur SYND (voir Figure 5.6) en tron-
quant l’état interne pour les sorties.
Description des paramètres:
n nombre de colonnes de la matrice
s la taille en bit de l’état interne
c la capacité éponge
w nombre de colonnes à sommer
n s w c
1572864 384 24 240
2228224 544 34 336
3801088 928 58 576
80
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
5.4.4 XSYND
XSYND [103] a été publié en 2012. Il utilise le schéma de RFSB dans une structure de
PRNG. Contrairement aux SYND, Les fonctions sont décrites comme elles le sont pour
RFSB:
Figure 5.8 – schéma XSYND: style FSB
La figure 5.8 représente la fonction de style FSB utilisée pour le schéma de XSYND.
Paramètres:
k taille des clés
n nombre de colonnes de la matrice
r la taille en bit des vecteurs à XORé
w nombre de colonnes à sommer
n r w k
8192 256 32 128
12288 384 48 192
16384 512 64 256
20480 640 80 320
24576 768 96 384
28672 896 112 448
5.5 Les Techniques d’optimisation
Ici, nous décrivons les optimisations que nous avons utilisées pour améliorer la vitesse
des fonctions de hachage et de chiffrement à flot. Pour une meilleure compréhension du
code, une version ’brute’ contient la version la plus simple de nos implémentations. Nous
fournissons également les valeurs intermédiaires de ces fonctions.
5.5.1 Nettoiement du code
Bien que nous avons écrit notre code à partir de zéro, nous nous sommes référés à la
mise en œuvre de référence pour une meilleure compréhension du papier et homonymie.
81
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Dans la plupart des cas, le code était plus qu’une traduction de la description théorique
qu’une description de la façon dont l’ordinateur doit fonctionner à un bas niveau. Ainsi,
nous avons évité (presque) toutes les opérations inutiles et déplacé le choix sur des paramètres
préprocesseur. Cela a été une amélioration notable.
5.5.2 Registres classiques
La première étape dans l’optimisation réelle était de profiter de tous les registres disponibles
sur le processeur. Nous avons changé le code de sorte qu’on manipule des variables de
8, 32 ou 64 bits(quitte à faire un padding pour l’alignement) en fonction des options de
compilation. Dans certains cas, il a accéléré les fonctions d’un facteur supérieur à 2.
5.5.3 Registres XMM
Les extensions de XMM introduit huit nouveaux registres de données de 128 bits et SSE2,
et rendent leur utilisation très facile. SSE2 est désormais présent sur presque tous les
processeurs, permettant un usage large public . Tous les registres utilisent des paquets
qui contiennent des nombres flottants et entiers, et supportent plusieurs instructions. En
outre, les processeurs 64 bits fournissent huit registres de plus. Ces seize registres sont
nommés XMM0 à XMM15.
Généralement en utilisant la programmation de bas niveau (ASM), les processeurs SSE
convertissent les données en un vecteur ou unité SIMD (Single Instruction Multiple don-
nées) et font les calculs en parallèle. L’approche, ici, est similaire au circuit intégré tel que
FPGA:
1. Charger seize points de données à la fois dans les registres SIMD
2. Effectuer une seule opération en même temps sur tous les points de données
3. Mettre les données en mémoire.
Ainsi, le principe de vectorisation nous permet d’accélérer les programmes.
Nous avons d’abord adapté nos implémentations à utiliser les huit premiers registres,
mais pour certains paramètres, l’état de FSB a une longueur qui ne rentre pas dans les 8
registres et RFSB a besoin d’un neuvième registre temporaire. Dans ces cas, nous avons
dû utiliser la mémoire pour combler le manque de registres.
5.5.4 Représentation des données
Pour des raisons de comparaison nous faisons les implémentations avec les mêmes paramètres
que les articles originaux (cf. section 5.3) et faisons tourner toutes les implémentations
82
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
de référence sur la même plate-forme: AMD Phenom II X2 550 processor (64 bits) - Debian
GNU/Linux (3.2.0-2-amd64) wheezy/sid comme système d’exploitation.
Le byte est utilisé comme unité d’information dans toutes les implémentations à cause
des registres XMM, et l’allocation de la mémoire y est faite d’une manière contiguë.
Comme notre stratégie est d’utiliser SSE, nous avons jugé nécessaire d’adapter le stock-
age de données en mémoire pour exploiter les registres XMM en profitant du parallélisme.
Donc, pour les systèmes basés sur une représentation matricielle (FSB, SFSB), nous choi-
sissons de faire une division par sous-matrices afin de rendre facile la sélection d’une
seule colonne dans chaque sous-matrice au cours du processus. Pour ceux qui sont basés
sur les anneaux de polynômes (XSYND, RFSB), nous utilisons la représentation polyno-
miale (vecteur).
Pour 2SC et SYND nous utilisons deux matrices (de parité) pour représenter les deux ap-
plications linéaires utilisées.
5.6 Résultats
5.6.1 Bancs d’essai
Les Bancs d’essai qui suivent ont été lancés à partir d’un fichier de 100MiB généré à par-
tir de /dev/urandom sur Debian GNU/Linux (3.2.0-2-amd64) wheezy/sid installé dans un
AMD Phenom II X2 550 processor (64 bits). Le temps d’exécution est mesuré en utilisant
l’utilitaire Unix, time.
Les tableaux ci-dessous donnent les informations sur la vitesse des fonctions implé-
mentées. Les trois premières colonnes donnent la vitesse (nombre de cycles processeur
requis pour traiter un byte) respectivement celle donnée dans l’article de référence, celle
que nous avons obtenue avec l’implémentation de référence(si possible), et enfin celle
que nous avons obtenue avec notre implémentation. Le niveau de sécurité est donné par
son équivalent en terme de longueur (en bits) du facteur travail (log2(WF)).
La formule du cpb est: le temps d’exécution multiplié par la fréquence du processeur
(Hz), le tout divisé par la taille du fichier test (bytes).
Nous avons trouvé les implémentations de référence de FSB 1, SFSB et 2SC 2 et pour
RFSB 3.
1https://www.rocq.inria.fr/secret/CBCrypto/index.php?pg=fsb2http://www.cayrel.net/research/code-based-cryptography/code-based-cryptosystems/article/implementation-
of-code-based-hash3http://bench.cr.yp.to/supercop.html
83
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Function speed in speed in speed in ratio ratio Security
cpb (art.) cpb (ref.) cpb (our) our / art. our / ref.
FSB-160 257 395.12 110.21 0.43 0.28 100
FSB-224 297 482.51 131.50 0.44 0.27 135
FSB-256 324 528.39 137.41 0.42 0.26 153
FSB-384 423 652.20 203.99 0.48 0.31 215
FSB-512 507 820.87 264.33 0.52 0.32 285
SFSB-160 160 286.20 79.82 0.50 0.28 86
SFSB-224 201 422.91 99.92 0.50 0.24 114
SFSB-384 183 604.19 172.65 0.94 0.29 129
RFSB-509 13.62 22.82 17.26 1.27 0.76 142
Figure 5.9 – Performance des fonctions de hachage
Function speed in speed in speed in ratio ratio Security
cpb (art.) cpb (ref.) cpb (our) our / art. our / ref
SYND-64 22 - 23.88 1.09 - 71
SYND-96 46 - 29.91 0.65 - 102
SYND-128 27 108.08 30.27 1.12 0.28 131
SYND-192 47 - 53.80 1.14 - 191
SYND-256 53 280.76 41.50 0.78 0.15 252
SYND-512 83 430.36 149.94 1.81 0.35 493
2SC-144 37 298.97 25.18 0.68 0.08 80
2SC-208 47 387.55 33.22 0.71 0.09 170
2SC-352 72 605.61 80.05 1.11 0.13 366
XSYND-509 - 55.36 15.25 - 0.27 142
Figure 5.10 – Performance des PNRGs et Chiffrement par Flux
84
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
5.6.2 Discussions
Comparaison des implémentations
Cette comparaison sur la base de la vitesse d’exécution de l’algorithme, est mesurée par
le rapport entre le nombre de cpb de notre mise en œuvre et ceux de la mise en œuvre de
référence, car les deux sources sont exécutées sur la même plate-forme.
Fonctions de Hachage: Sauf pour RFSB, nous avons réellement amélioré la vitesse de
toutes les fonctions de hachage. La principale explication est que les implémentations
précédentes ne sont pas optimisées. Concernant RFSB, nous ne pouvions pas atteindre
la vitesse annoncée dans le papier [30], mais notre mise en œuvre est plus rapide que la
mise en œuvre de référence lancée sur la même machine. Très probablement, la mise en
œuvre des auteurs de l’article bénéficiait plus d’optimisations spécifiques à la machine et
ou des techniques d’optimisation qui ne sont pas décrits dans le document.
Pour FSB, le meilleur(plus petit) ratio égal à 0.26 est obtenu avec FSB-256 et le pire ratio
égal à 0.32 avec FSB-512.
Pour SFSB, le meilleur(plus petit) ratio égal à 0.24 est obtenu avec SFSB-224 et le pire ratio
égal à 0.29 avec SFSB-384.
Pour RFSB-509, nous avons amélioré l’implémentation de référence avec un ratio de 0.76,
mais nous n’avons pas obtenu une meilleure vitesse que celle présentée dans l’article [30]
(ratio =1.27).
PRNGs : Les résultats sont plus équilibrés. Nous avons encore de meilleurs résultats
que les implémentations de référence, mais nous ne pouvons pas toujours obtenir de
meilleurs résultats que ceux annoncés dans les articles de référence. Dans deux cas (SYND-
512 et 2SC-352), la vitesse est bien pire que pour les autres. Bien que nos implémentations
fonctionnent dans la même plate-forme pour tous les paramètres et on s’attendait à ce
que la progression de la vitesse soit linéaire, la vitesse ne semble pas être régulière pour
tous.
Pour SYND nous obtenons le meilleur ratio qui égal à 0.15 pour SYND-256 et le pire
ratio égal à 0.35 pour SYND-512 .
Pour 2SC nous obtenons le meilleur ratio qui est égal à 0.08 pour 2SC-144 et le pire ratio
est égal à 0.13 pour 2SC-352 .
Pour XSYND-509, nous avons amélioré la mise en œuvre de référence avec un ratio égal à
0,27.
85
CHAPITRE 5. IMPLÉMENTATIONS EFFICACES DE FONCTIONS DE HACHAGE ETCHIFFREMENTS PAR FLUX BASÉS SUR LES CODES
Comparaison des fonctions
Fonctions de hachage : La fonction de hachage plus rapide parmi celles-ci est RFSB.
Son niveau de sécurité est entre celui de FSB-224 et de FSB-256. Nous estimons que RFSB
améliore la vitesse d’un facteur de 7. Les résultats de SFSB sont plus équilibrés ici, pour
un niveau de sécurité autour de 100, nous obtenons une amélioration de 10% mais notre
SFSB-384 semble tourné beaucoup plus lente que pour les autres paramètres.
PRNGs : Enfin, pour comparer SYND et 2SC, on remarque que les niveaux de sécu-
rité proposés ne sont pas proches; nous allons voir donc à vitesses proches celle qui a
le niveau de sécurité le plus élevé. Autour de 30 cpb, 2SC offre une bonne amélioration
de la sécurité. En effet, la construction éponge est clairement montrée plus efficace que
le chaînage de Markel-Damgård.
5.7 Conclusion
Nous avons étudié FSB, SFSB, RFSB, SYND, 2SC et XSYND et essayé d’améliorer leurs per-
formances en implémentation logicielle. Bien que dans certains cas nous ne sommes pas
parvenus à la vitesse donnée dans le document, nous avons réussi à battre les résultats
des implémentations de référence disponibles.
Le problème du décodage par syndrome conduit à beaucoup d’idées de fonctions
de hachage et PRNGs. Cependant, il n’est pas toujours facile de comparer la vitesse de
chaque fonction parce que les codes sources ne sont pas toujours disponibles pour être
utilisés sur la même plate-forme ou ils ne sont généralement pas optimisés.
À l’avenir, afin d’améliorer la mise en œuvre de ces Implémentations, il serait intéres-
sant de faire cette étude sur d’autres plate-formes telles que l’architecture ARMv8 ou des
processeurs qui prennent en charge des instructions vectorielles (AVX, AVX2).
86
Chapitre 6
Un chiffrement par flux et prouvé sûr:
SBS
“ La théorie, c’est quand on sait tout et
que rien ne fonctionne. - La pratique,
c’est quand tout fonctionne et que
personne ne sait pourquoi. - Si la
pratique et la théorie sont réunies, rien
ne fonctionne et on ne sait pas
pourquoi. ”
Albert Einstein
Sommaire
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Les Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Le chiffrement par flux SBS . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.5 Securité de SBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.11 Les meilleures attaques connues contre SBS . . . . . . . . . . . . . . . . . 99
6.13 Résultats Experimentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.14 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Nous proposons un nouveau chiffrement par flux synchrone, appelé SBS, basé sur
l’itération d’un ensemble de fonctions de Niederreiter. Notre proposition est caractérisée
par une haute performance logicielle. Sa vitesse est comparable au chiffrement AES en
mode compteur. Il fonctionne à 7.8 cycles par byte. Nous avons réalisé une analyse dé-
taillée de la sécurité, en particulier, nous prouvons que la sécurité de SBS est réductible au
87
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
problème du décodage par syndrome. Plus précisément, nous montrons que la distinc-
tion des clés générées par SBS est aussi dure que la résolution d’une instance du problème
de décodage régulier par syndrome.
Ce travail fait l’objet d’une présentation dans "International Conference on Coding and
Cryptography", USTHB, Alger, 2-5 Novembre 2015.
88
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
6.1 Introduction
Grosso modo, un chiffrement par flux (ou encore générateur pseudo-aléatoire) est un al-
gorithme à clé symétrique qui peut être considéré comme une "boîte noire" qui produit
une séquence de bits qui apparaît pseudo-aléatoire en utilisant une clé secrète (et un
vecteur publique, appelé un nonce). Le terme "pseudo-aléatoire" signifie que la séquence
générée est mathématiquement impossible à distinguer d’une séquence véritablement
aléatoire.
Un certain nombre de chiffrements par flux efficaces a été proposé dans la littérature,
plusieurs d’entre eux se sont avérés non sûrs comme indiqué lors du projet eSTREAM 1.
Par conséquent, le principal défi est de concevoir un chiffrement par flux qui a des im-
plémentations très rapides en logiciel et matériel et qui a une sécurité prouvée, en ce
sens que la récupération de la clé secrète ou la production d’un flux de clé valide est ré-
ductible à un problème difficile au sens de la cryptographie. Comme toujours, les pre-
mières propositions en ce sens ont été basées sur la dureté de problèmes bien connus
provenant de la théorie des nombres (par exemple la factorisation [1], le logarithme
discret [84], RSA [1]). Cependant, ce genre de système implique des opérations com-
plexes sur les grands entiers et est vulnérable aux attaques quantiques comme démontré
dans [127].
Les schémas cryptographiques basés sur les codes correcteurs d’erreurs sont parmi
les candidats les plus prometteurs de la cryptographie post-quantique [26, 51, 25]. Leur
sécurité repose sur le problème, en moyenne difficile, à décoder les codes aléatoires génériques.
En outre, ils bénéficient de fonctionnalités très intéressantes. Ils sont très rapides, car ils
utilisent la plupart des opérations très simples tels que les Shifts et les XORs permettant
de faire des implémentations efficientes en matériel et logiciel.
Dans la cryptographie basée sur les codes, Fischer et Stern [60] ont d’abord eu l’idée
de concevoir un générateur pseudo-aléatoire, dont la sécurité est avérée reposer sur la
dureté du problème de décodage par syndrome [21]. Cependant, leur construction était
inefficace parce qu’il a besoin d’énormes exigences de calcul et de mémoire. Le chiffre-
ment de flux SYND, proposé par Gaborit et al. [64], surpasse la proposition de Fischer-
Stern en termes d’espace de stockage et de performance. Il utilise des codes aléatoires
quasi-cycliques(QC) permettant une diminution de la capacité de stockage et introduit
l’encodage régulier pour accélérer le flux de génération de clé. Leur proposition est basée
sur la difficulté à décoder les codes aléatoires QC [65, 20]. Récemment, un nouveau de-
sign, appelé 2SC, fait par Meziani et al. [101] est proposé sur la base du même problème.
1http://www.ecrytp.eu.org/stream
89
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
Il tourne plus vite que la construction précédente, mais a besoin de beaucoup d’espace
de stockage.
Contribution.
Le présent chapitre propose une mise en œuvre efficace d’un chiffrement par flux prouvé
sûr basé sur les code correcteurs d’erreurs que nous appelons SBS(Syndrome-Based Stream
cipher). Sa sécurité est réductible à la dureté du problème de décodage par syndrome. En
outre, ce schéma est très efficace en termes d’espace de stockage, et surpasse toutes les
constructions prouvées sûres précédentes. Sa performance est comparable à AES dans la
mise en œuvre la plus rapide.
L’organisation du chapitre
La structure de ce chapitre est distribuée comme suit. Dans la section 6.2, nous présen-
tons les concepts qui sont utilisés dans l’ensemble du texte et les objets de base sur la
cryptographie basée sur les codes. Ensuite, nous donnons une brève discussion de SYND
[64] comme des travaux connexes dans la section 6.3. Dans la section 6.4, nous décrivons
en détail notre proposition, puis effectuons une analyse détaillée de la sécurité dans la
section 6.5. Dans la section 6.11, nous abordons les attaques et les contre-mesures fondées
sur le choix des paramètres. La section 6.13 présente les résultats expérimentaux et les
compare à d’autres programmes tels que SYND [64], 2SC [101] ou à l’amélioration de leur
version détaillée dans [47]. La section 6.14 conclut le chapitre.
6.2 Les Préliminaires
Notations
? |x| la longueur en bit de la chaîne x.
? Le poids de Hamming de x est le nombre de coordonnées non-nulles et est noté
wt(x).
? x> est la transposé du vecteur x.
? x‖y (resp. X‖Y ) représente la concaténation des chaînes x et y (resp. des matrices
X et Y)
? x ⊕ y représente la somme directe de deux vecteurs x et y , qui ont la même taille.
90
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
? Pour un ensemble fini S, on note par x$←− S l’événement de choisir uniformément
aléatoire un élément x de S.
? Nous écrivons M`,η pour indiquer l’ensemble de toutes les matrices binaires aléa-
toires de taille `×η.
? Nous notons par [N] l’ensemble {0, · · · ,N−1}.
? Si x est une chaine de bit, alors Int(x) représente l’entier correspondant à x en
format.
? Nous écrivons Wη,ω pour l’ensemble des vecteurs binaires de longueur η de poidsω.
? Pour deux chaines binaires a et b ayant la même longueur, la valeur binaire ⟨a,b⟩ =∑i ai bi mod 2 définit leur produit scalaire modulo 2.
6.3 Etat de l’art
Le chiffrement par flux SYND Comme mentioné dans l’introduction du chapitre, Ga-
borit et al. [64] ont proposé une amélioration du générateur pseudo-aléatoire de Fisher-
Stern [60] en apportant deux modifications majeures: l’introduction des codes aléatoires
quasi-cycliques a considérablement permis de diminuer l’espace de stockage requis, et
l’utilisation des mots réguliers au lieu des mots classiques a significativement amélioré les
performances du système. Dans la suite, nous décrivons les éléments de base du schéma
de chiffrement par flux SYND sans trop entrer dans les détails.
Soit η, ω, et ` trois entiers positifs tels que le rapport ηω est une puissance de deux et
` = ω log2( ηω ). SYND fonctionne essentiellement en 2 étapes: phase d’initialisation et la
phase de génération de clés. Les deux utilisent les deux fonctions f1 et f2 de F`2 → F`2 qui
sont définies par
f1(x) = A ·θ(x)>; f2(x) = B ·θ(x)>, ∀x ∈ F`2 ,
où A et B sont des matrices binaires aléatoires décrivant chacune une code binaire quasi-
cyclique (QC) de longueur η, qui corrige jusqu’à ω erreurs et x 7→ θ(x) est une fonction
d’encodage qui transforme une chaîne de ` bits en mot régulier. On omet ici comment
marche cette fonction, on renvoie le lecteur à [8, 7].
En outre, nous décrivons seulement la phase de génération de clés sans expliquer
comment les états initiaux internes sont générés. Compte tenu de l’état initial e0 généré
en utilisant une clé secrète k et une valeur initiale IV, le flux de clés formé par un certain
91
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
nombre de blocs zi est produit comme suit: appliquer f1 sur l’état actuel ei pour obtenir
le prochain état ei+1 = f1(ei ) (mise à jour de l’état actuel), puis calculer le bloc de sortie
zi par zi = f2(ei ). Comme indiqué dans [64], ce processus peut être modélisé en utilisant
une fonction f , ce qui est une concaténation de f1 avec f2, soit f (x) = f1(x)‖ f2(x), pour
x ∈ F`2 .
Comme nous pouvons le voir, afin de produire un bloc de sortie, la fonction f2 doit
d’abord attendre l’évaluation de f1 à chaque tour. Cela empêche à l’ensemble du pro-
cessus d’être pleinement parallélisable. Notre principale motivation dans ce travail est
de savoir comment concevoir un chiffrement de flux à base de SYND qui peut être com-
plètement mis en œuvre de manière parallèle. Il aura donc de meilleures fonctionnalités
de calcul, et sera doté de preuve de sécurité. Nous notons que les auteurs de SYND n’ont
pas donné de détail à propos de la réduction de sécurité de leur proposition, mais ils affir-
ment que la réduction de la sécurité peut être déduite du chiffrement par flux QUAD [18]
et le PRNG de Fischer-Stern [60].
6.4 Le chiffrement par flux SBS
Dans cette section, nous fournissons une description détaillée du chiffrement SBS et ses
éléments de base. Les lettres dans son nom se tiennent pour "Syndrome-Based Stream
cipher».
Les blocs de construction de l’algorithme de chiffrement SBS sont deux fonctions injec-
tive ϕ1 et ϕ2 qui acceptent en entrée une chaîne de bits et renvoient une chaîne de bits
de même taille que l’entrée. SBS est un chiffrement de flux synchrone et paramétré par
un ensemble de nombres entiers positifs (η,`,ω) satisfaisant ` = ω log2( ηω ), où ω < ` < η.
Cet ensemble détermine la taille d’un état interne, la longueur des clés et la taille d’un
vecteur initial (IV). Pour des raisons de sécurité, IV est de la même longueur que la clé
secrète, les deux ont b`2 c bits. SBS est composé de deux blocs principaux, Initializer ,
et Generator , les deux utilisent implicitement deux transformations ϕ1 et ϕ2 que nous
allons décrire plus tard.
On considère la fonction d’encodage ε qui transforme une entrée x ∈ F`2 en ε(x) ∈Rη,ω
(Rη,ω l’ensemble des mots de longeur η et de poids ω)tel que
ϕ1(x) = A ·ε(x)>, (6.1)
ϕ2(x) = B ·ε(x)>. (6.2)
Où A et B sont pris aléatoires dans M`,η. En pratique, l’existence de l’algorithme x → ε(x)
92
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
a été montré dans [60, 8]. Comme on peut le voir, ϕ1 et ϕ2 sont tous les deux liés au
problème du décodage par syndrome.
Initializer: F : F|K|2 ×F|IV|
2 → F`2 ×F`2 .
Il prend en entrée le Vecteur d’Initialisation (IV) et la clé initiale (K) pour calculer l’état
initial du compteur s0 = (x0, y0), en suivant ces étapes:
α = K‖IV (6.3)
β = α⊕ϕ1(α) (6.4)
γ = α⊕ϕ2(α) (6.5)
s0 = (x0, y0) = F(α) = (β⊕ϕ2(β),γ⊕ϕ1(γ)) (6.6)
Au cours de la phase d’initialisation aucun bit de sortie n’est retourné, seulement
après que s0 soit produit, la génération de clé est autorisée à prendre place.
Generator: G : F`2 ×F`2 → F`2 ×F`2 .
Il prend en argument l’état interne du compteur s0 généré par F, et produit une chaîne de
2` bits (ui , vi ), i ≥ 1 à chaque tour. Le principe de design de ce générateur est représenté
sur la Figure 6.1. Pour produire {si+1}i≥0 à partir de si = (xi , yi ), le générateur G sort (ui , vi )
et met à jour si (ou calcule si+1 = (xi+1, yi+1)) en exécutant ce calcul suivant(en parallèle):
1. xi+1 ←ϕ1(xi ) et yi+1 ←ϕ2(yi )
2. ui ←ϕ1(yi ) et vi ←ϕ2(xi )
Durant ce processus, seulement ui et vi sont retournés comme sortie et sont visibles
à l’utilisateur.
Figure 6.1 – Générateur de SBS
A noter que les fonctions ϕ1 et ϕ2 sont appelées au même moment avec des entrées dif-
férentes, alors l’implémentation de G peut être faite en parallèle sur les CPUs modernes.
Tout le processus de génération de clé peut être décrit avec une seule fonction h qui prend
93
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
en entrée une chaîne de 2` bits et étend cela sur une chaîne de 4` bits dans chaque itéra-
tion. Cette fonction est décrite comme suit:
h(x, y) := f(x, y)‖g(x, y) ∈ F4`2 , (6.7)
où (x, y) → f(x, y) := (ϕ1(x),ϕ2(y))) est une fonction de mise à jour, qui actualise l’état
interne (x, y), pendant que (x, y) → g(x, y) := (ϕ1(y),ϕ2(x) est la sortie de la fonction qui
produit une chaîne de 2` bits qui forme le flux de clé obtenu.
Maintenant nous allons décrire comment les transformationsϕ1 etϕ2 dans le chiffre-
ment SBS sont implémentées. Soient A et B deux matrices choisies aléatoirement de
même taille `×η. Soit (x1, · · · , xω) la décomposition de x ∈ F`2 , i.e., en ω chaînes binaires,
chacune d’elles est de longueur log2( ηω ). En notant σ := log2( ηω ), on obtient 2σ valeurs
décimales possibles pour chaque xi , dans l’intervalle [0, 2σ−1]. Puisque η =ω2σ, alors à
chaque valeur décimale de xi correspond une certaine colonne de la matrice A et B. En
combinant toutes les colonnes choisies, on obtient une chaîne de ` bits, qui sera la sortie
de la transformation. Dans SBS nous utilisons la somme directe bit à bit dans la combi-
naison des vecteurs choisis. La Figure 6.2 décrit le fonctionnement de la fonction ϕ1 (or
ϕ2).
Figure 6.2 – structure des transformations utilisées dans SBS
6.5 Securité de SBS
Cette section traite de la sécurité de chiffrement par flot SBS. Avant d’entrer dans les dé-
tails, nous introduisons quelques hypothèses que nous utiliserons pour prouver la sécu-
rité de SBS. Ces hypothèses sont généralement à la base de la sécurité du générateur
pseudo-aléatoire de Fisher-Stern [60].
La première hypothèse (A1), appelée indistinguabilité, est ainsi définie:
"Il est calculatoirement impossible de distinguer deux matrices A et B de celles aléa-
toires uniformes ayant les mêmes dimensions".Nous utilisons la même idée en QUAD
94
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
[18] pour la réduction de la sécurité de problème de décodage par syndrome. Cette ré-
duction de la sécurité permet de dire: briser le système SBS signifie briser le problème du
décodage par syndrome qui est N P -complet.
Lemme 6.5.1 Soit L = 2λ` la taille d’une séquence de clé produite en λTS unité de temps en
utilisant λ itérations.
Supposons qu’il existe un algorithme(machine de Turing probabiliste) A qui discerne la
séquence de L bits associée à deux matrices `∗η choisies aléatoirement A et B et un état
interne inconnu x, y de poids au plus 2ω de {0,1}η à partir d’une séquence de L bits en T
unité de temps avec un avantage ε.
Alors, il existe un algorithme B, qui prend en argument l’image H · z> d’un mot régulier
z de poids ω de {0,1}η par une matrice choisie aléatoirement H de taille `×η et permet de
retrouver z en T = T+λTS unité de temps avec un avantage au moins ελ .
Preuve 6.6 on peut voir H · z> =
(H 0
0 H
)(z>
0
)comme une sortie d’état initial (z,0).
Alors on peut voir H ·z> = g (z,0), avec les matrices aléatoires A = B := H et pour chaque tour
0 ≤ i ≤ λ−1, le flux de sortie est g ( f i (z,0)) avec f et g les fonctions définies dans la section
??. Pour le reste nous suivons la preuve de QUAD car le problème ainsi posé est le même de
celui de QUAD[18].�
La deuxième hypothèse (A2), appelée le Décodage par Syndrome, est déclarée comme suit:
"La collection des fonctions {FM}M∈M`,ηdéfinies sur l’ensemble Wη,ω comme FM(x) =
M ·x> est à sens unique".
La troisième hypothèse (A3), appelée le Décodage par Syndrome de mots réguliers, est un
cas particulier de A2 et se définit comme:
"La collection des fonctions {FM}M∈M`,ηdéfinies sur l’ensemble Rη,ω comme FM(x) =
M · x> est à sens unique".
Pour A1 et A3 voir [8]. Maintenant nous avons besoin de ces lemmes.
Lemme 6.6.1 Si l’hypothèse A3 est garantie, alors la fonction ϕ1 (et ϕ2) implémentée dans
SBS est à sens unique.
Preuve 6.7 Pour prouver ce lemme, il suffit de montrer queϕ1 (etϕ2) peut être transformée
en une fonction de la collection définie dans A2. On prend la matrice A $←− M`,η telle que
` =ω ·σ, où ω < ` < η, σ = log2( ηω ), et η =ω2σ. Alors la matrice A peut être partitionnée en
ω sous matrice de 2σ colonnes et ` lignes, i.e., A = A1| . . . |Aω . Soit (x1, · · · , xω) l’entrée de la
fonctionϕ1, où |xi | =σ. Par conséquent, chaque xi peut être associé de manière unique avec
95
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
un numéro de colonne di ∈ [2σ], de la sous matrice Ai en utilisant la forment du bit de poids
fort (big-endian). Ces positions de colonne (di )ωi =1 forme un mot régulier z = (z1, · · · , zη) de
longueur η et de poids ω tel que z j = 1 si j = di et z j = 0 sinon. En faisant ceci, on peut
facilement vérifier que ϕ1(x) = A · z>.�
Lemme 6.7.1 Si l’hypothèse A2 est garantie, alors les fonctions f et g sont à sens unique.
Preuve 6.8 Ceci résulte simplement de [70, 136], qui affirment que pour chaque collec-
tion de fonctions à sens unique F = { fk }k∈S , où S est un ensemble fini, la collection Fn =
{ fi1,··· ,in }i1,··· ,in∈Sn , dont les éléments sont définis comme fi1,··· ,in (x1, · · · , xn) = ( fi1 (x1), · · · , fin (xn))
est aussi à sens unique. En outre, cela est vrai même en ayant une seule application (i.e.,
quand i1 = · · · = in). Dans notre contexte, nous avons S = {1,2}.�
Afin de prouver que SBS est un générateur pseudo-aléatoire, nous prouvons que la
séquence (ui , vi ) est pseudo-aléatoire, ce qui signifie qu’il est impossible de la distinguer
d’une chaîne aléatoire bits 2`. Nous allons le démontrer par induction. Pour ce faire nous
avons besoin de la définition suivante:
Soit Fune fonction à sens unique. Un prédicat inconditionnel (hardcore bit) b : {0,1}∗ →{0,1} pour F est une fonction calculatoire en temps polynomial telle que si pour tout ad-
versaire PPT A il existe une fonction négligeable ε, telle que
Pr[A (F(x)) = b(x)] ≤ 1
2+ε(n), ∀n
Où x est choisie au hasard. Goldreich et Levin ont prouvé le théorème suivant, qui peut
être officieusement déclaré comme suit: pour toute fonction à sens unique, le produit
scalaire de son argument avec une chaîne de bits choisie au hasard est un prédicat incon-
ditionnel.
Théorème 6.8.1 (Goldreich-Levin theorem) Soit F : {0,1}∗ → {0,1}∗ une fonction à sens
unique. Pour tout algorithme PPT A , pour tout polynôme p et pour tout entier n fini,
Pr[A (F(x),ν) = ⟨x,ν⟩] ≤ 1
2+ 1
p(n)
où la probabilité est exprimée sur x. les deux aléas x et ν sont uniformément choisis.
Théorème 6.8.2 Soient R et L deux fonctions définies sur F`2 par
R =ϕ1(x)‖ϕ2(x) et L(y) =ϕ2(y)‖ϕ1(y)
Relatif à R et L, nous définissons 2 générateurs de chaînes de 2` bits GR et GL représentés sur
la Figure 6.3 et Figure 6.4, respectivement. La fonction ϕ1 (resp. ϕ2) est la fonction de mise
à jour (resp. de sortie) de GR contrairement à GL. Si les hypothèses A1 et A3 sont vérifiées,
alors GR et GL sont des générateurs pseudo-aléatoires.
96
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
Figure 6.3 – Illustration de G1 Figure 6.4 – Illustration de G2
Preuve 6.9 Il suffit de prouver cette affirmation pour GR, car ils sont semblables. La preuve
est une adaptation de celle donnée dans [60]. Noter que R et L sont des fonctions d’expansion
de Facteur 2.
Le lemme 6.6.1 montre que la fonction ϕ1 (resp. ϕ2) peut être réécrite comme ϕ1(x) = A · z>
(resp. ϕ2(x) = B · z>), où z est un mot régulier qui correspond à l’entrée x. Alors, si l’on
empile verticalement A et B, on obtient une nouvelle matrice M de taille 2`×η donnée par
M =
(AB
)
Cette nouvelle matrice satisfait à l’hypothèse A1. On peut alors écrire R(x) = M · z>.
Donc, il suffit de prouver que la sortie de M · z> est pseudo-aléatoire. Maintenant, nous
allons montrer par contradiction que la sortie de R est pseudo-aléatoire. Supposons le con-
traire. Alors il existe un distingueur Ψ qui peut faire la différence entre cette sortie et une
séquence aléatoire u de 2` bits. Ce distingueur prend en entrée un matrice binaire de taille
2`×η: M et un aléa u ∈ {0,1}2` en tant que candidat étant égal à M ·z> pour un certain mot
régulier z. Si M · z> = u, Ψ retourne 1 avec une probabilité supérieure à 12 + 1
p(η) , pour tout
polynôme p(n). Sinon, lorsque u est choisie de manière uniforme dans {0,1}2`, Ψ retourne
1 avec une probabilité au plus 12 . Plus précisément, le comportement de Ψ est le suivant:Pr[Ψ(M,u) = 1] ≥ 1
2 + 1p(η) , si u = M · z>, pour un certain mot régulier z
Pr[Ψ(M,u) = 1] < 12 , si u est choisie de manière uniforme dans {0,1}2`
Notre prochaine étape est de construire un algorithmeΘ qui appelleΨ comme une sous-
routine, afin de prédire le produit scalaire d’un mot inconnu régulier z et un aléa choisi v de
η bits (i.e., ⟨z, v⟩) avec une probabilité 12 + 1
2p(η) . Pour ce faire, nous écrivons v = (v1, · · · , vη)
et définissons π comme le nombre de positions j telles que z j = v j = 1, i.e. la taille de de
l’intersection des supports de z et v. Soit ε la parité cette taille, i.e. qu produit scalaire ⟨z, v⟩.Ce faisant, sur les entrées M · z> et v, l’algorithmeΘ va effectuer les opérations suivantes:
• Choisir un aléa ε′ ∈ {0,1} comme candidat de ε
• Choisir aléatoirement δ ∈ {0,1}2`
97
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
• Construire une nouvelle matrice M = (a1, · · · , aη) de taille 2`×η telle que pour tout
j ∈ {1, · · · ,η} on a
a j =
a j +δ si v j = 1,
a j si v j = 0
où (a1, · · · , aη) est la décomposition de M, cela signifie que M = M+δ> · v
• Alimenter le distingueur Ψ avec M et M · z> = M · z>+ε′ ·δ>
• Si Ψ retourne 1, alors on retourne ε′. Dans le cas contraire, retourne l’opposé de ε′.
Montrons queΘprédit le produit scalaire ⟨z, v⟩ avec une probabilité supérieure 12+ 1
2p(η) .
Il y a deux cas distincts à traiter:
(1) C1:= {ε correctement deviné}. Alors la valeur prédite pour ⟨z, v⟩ est correcte si le
distingueur sort 1. Mais la distribution vue par le distingueur sur (M,M · z>+ ε′ ·δ>)
est similaire à la distribution sur l’entrée (M,M·z>). Par construction, cela se produit
avec une probabilité d’au moins 12 + 1
p(η) .
(2) C2:= {ε incorrectement deviné }. Le distingueur reçoit d’une manière uniformé-
ment distribuée les entrées en raison du caractère aléatoire δ et donc sort 1 avec une
probabilité 12 .
Vu que Pr[C1] = Pr[C2] = 12 , nous pouvons clairement conclure que l’ensemble de la prob-
abilité de succès de prédiction du produit ⟨z, v⟩ est au moins 12 + 1
2p(η) . Cela conduit à une
contradiction avec le Goldreich-Levin Theorem [71] due à l’hypothèse A3. En conséquence,
la fonction R (et aussi L) est pseudo-aléatoire.�
Maintenant, nous sommes prêts à présenter le résultat principal concernant l’aspect pseudo-
aléatoire du chiffrement par flux SBS. La preuve en est inductive sur le nombre d’itération
et implique 6.8.2.
Théorème 6.9.1 Soit (x0, y0) un état initial du compteur interne de SBS. Si nous choisis-
sons les paramètres (η,`,ω) tels que A1 et A3 soient vérifiées, alors SBS est un générateur
pseudo-aléatoire.
Preuve 6.10 À cette fin, nous allons montrer par récurrence que les suites ui et vi sont
pseudo-aléatoires.
98
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
• Pour i = 1. D’après le théorème 6.8.2 nous concluons que R(x0) = ϕ1(x0)‖ϕ2(x0) et
L(y0) = ϕ2(y0)‖ϕ1(y0) sont deux séquences de chaînes de 2` bits pseudo-aléatoires.
Cela implique également que u0 = ϕ1(y0) et v0 = ϕ2(x0) sont pseudo-aléatoires. Le
même argument se tient sur x1 =ϕ1(x0) et y1 =ϕ2(y0).
• Supposons que u j et v j (et aussi x j et y j ) sont pseudo-aléatoires pour un certain
entier positif j . on montrera que u j+1 et v j+1 sont pseudo-aléatoires. Nous avons la
les relations suivantes:
ui+1 =ϕ1(yi+1), y j+1 =ϕ2(y j )
vi+1 =ϕ2(xi+1), x j+1 =ϕ1(x j )
Par l’hypothèse d’induction, les séquences R(x j ) =ϕ1(x j )‖ϕ2(x j ) et L(y j ) =ϕ2(y j )‖ϕ1(y j )
sont pseudo-aléatoires. Ce qui signifie, ϕ1(x j ) = x j+1 et ϕ2(y j ) = y j+1 sont pseudo-
aléatoires et en appliquant le Théorème 6.8.2 sur ces séquences, on complète l’étape
de récurrence et par conséquent, SBS est un générateur pseudo-aléatoire.
�
6.11 Les meilleures attaques connues contre SBS
Dans cette section, nous présentons les algorithmes génériques les plus connus pour at-
taquer SBS et vérifier si elles sont applicables. Nous nous concentrons uniquement sur la
dureté de l’inversion des fonctions sous-jacentes ϕ1 et ϕ2 appelées dans l’initialisation et
la procédure de génération de clés car elles constituent les composantes principales de la
conception de SBS. L’inversion de ϕ1 et ϕ2 permet évidemment de recouvrer avec succès
les clés et l’état interne. L’estimation de la complexité d’une attaque Z sur une instance
de SBS avec des paramètres (η,ω,`) sera notée CEZ(η,ω,`). Cette complexité est définie
comme le nombre d’opérations binaires nécessaire pour inverser une des fonctions ϕ1
(ou ϕ2). Dans nos estimations, l’ensemble des paramètres (η,ω,`) est choisi comme suit:
` =ωσ avec σ = log2
( ηω
).
Il y a généralement trois différentes attaques potentielles en théorie des codes: le Dé-
codage par Ensemble d’Information (ISD), les Attaques par Linéarisation(LA) et L’attaque
des anniversaires Généralisée (GBA). Dans cette analyse, nous essayerons de donner une
borne inférieure pour estimer la complexité de chacune de ces attaques.
99
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
Décodage par ensemble d’Information(ISD).
C’est un algorithme probabiliste désigné pour décoder n’importe quel code linéaire. Sa
première variante introduite par Prange [121], a été mise à jour et raffinée plusieurs fois
pendant des années, conduisant à sa meilleure variante développée par May et al.[11].
L’idée développée derrière cet algorithme est de trouver un sous-ensemble, appelé en-
semble d’information, de κ positions ne contenant pas d’erreurs parmi les η positions de
chaque mot de code, où κ et η sont respectivement la dimension et la longueur du code.
Pour chaque ensemble choisi, une élimination de Gauss est faite sur la matrice de parité
de taille `×η (les colonnes correspondantes) pour tester la validité de l’ensemble, ce qui
permet d’estimer la complexité CEISD(η,ω,`) de cet algorithme par GE(`)PR(η,`,ω)
. La quantité
GE(`) exprime la complexité de l’élimination de Gauss, pendant que PR(η,`,ω) est la prob-
abilité de trouver un ensemble d’information valide. Dans [8], une borne inférieure de
cette complexité de résoudre une instance de RSDP (le coût d’inversion deϕ1) est présen-
tée et estimée à
CEISD(η,ω,`) ≈ (ωσ)3 ·(
2σ
σ
)ω. (6.8)
Attaque par linéarisation(LA).
Ce genre d’attaque appartient à la cryptanalyse linéaire qui est probablement l’outil le
plus puissant disponible pour attaquer les cryptosystèmes. D’une manière basique, une
attaque par linéarisation consiste à construire une expression linéaire qui résout facile-
ment un système non-linéaire avec les techniques de l’algèbre linéaire. Contre SBS on
peut identifier deux algorithmes de linéarisation possibles: celui de Saarinen [125] et
celui de Bellare-Micciancio [12]. La première attaque a été désignée pour attaquer la
famille des fonctions de hachage FSB [8] et consiste brièvement à réduire le problème de
trouver des collisions ou pré-images en solvant un système d’équation linéaire. Si `≤ 2ω,
sa complexité est seulement aux environs de 0.29`3, où 0.29 est une approximation de la
probabilité pour qu’une matrice carrée soit non-singulière.
D’autre part, si ω ≤ λ, pour un certain entier cette complexité devient 2`(λ+1)ω . En partic-
ulier pour λ = 2µ, Berstein et al. [29] ont récemment révisé cette complexité à 2`(µ+1)2ω .
Le second algorithme a pour but d’inverser la fonction appelée XHASH en trouvant une
relation linéaire entre ω colonnes de longueur ` bits. Ceci permet de construire un sys-
tème ayant ω+ ` équations avec 2` inconnues, qui sera facilement résoluble si ω = `+1.
Plus généralement, la complexité d’inverser la fonction mentionnée requiert au moins
2`−ω opérations binaires (c.f. [12, Appendix A, Lemma A.1] pour plus de détails).
100
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
Figure 6.5 – GBA pour k = 4.
Attaque des anniversaires généralisée(GBA).
Cette classe d’attaque a pour but de résoudre le problème suivant: étant donné k listes
aléatoires L1,L2, . . . ,Lk indépendantes de chaînes de ` bits sélectionnées uniformément,
trouver x1 ∈ L1, x2 ∈ L2, . . . , xk ∈ Lk tels que ⊕ki =1xi = 0. Pour k = 2, la solution peut être
trouver en 2r2 en utilisant le paradoxe des anniversaires standard. Pour k > 2, l’algorithme
de Wagner [134] et ces variantes étendue [8, 24, 108, 58] peuvent être appliqués. Si k =
2 j−1 et |Li | > 2`j , l’algorithme de Wagner peut trouver au moins une solution avec une
complexité de 2rj .
L’idée principale derrière l’algorithme GBA est présentée à la figure Fig. 6.5. Nous con-
sidérons le cas où k = 4. Soit L1, . . . ,L4 quatre listes, chacune de taille 2`3 . L’algorithme
tourne en deux itérations. Dans la première, on construit deux nouvelles listes L1,2 et L3,4.
La liste L1,2 contient toutes les sommes x1 ⊕ x2 avec x1 ∈ L1 et x2 ∈ L2 telles que les pre-
miers `3 bits de la somme sont des zéro. D’une manière similaire, La liste L3,4 contient
toutes les sommes x3⊕x4 avec x3 ∈ L3 et x4 ∈ L4 telles que les premiers `3 bits de la somme
sont des zéro. Ainsi la taille de L1,2 est égale à 2−`3 · |L1| · |L2| = 2`3 . D’une manière similaire,
la longueur attendue de L3,4 est aussi 2`3 . Dans la seconde itération de l’algorithme, on
construit une nouvelle liste L′1 qui contient toutes les paires (x ′
1, x ′2) ∈ L1,2 ×L3,4 telles que
les dernières 2`3 bits de la somme x ′
1 ⊕ x ′2 sont zéro. Alors la probabilité que x ′
1 ⊕ x ′2 soit
égale à zéro est 2− 2`3 ce qui donne un nombre de candidats égal à 2− 2`
3 · |L1,2| · |L3,4| = 1. Et
on trouve la solution. Cette idée peut être généralisée pour k = 2 j−1 en répétant la même
procédure j −2 fois. Dans chaque itération a, on construit des listes, chacune contenant
2`j éléments qui ont zéro sur leurs premiers a`
j bits, jusqu’à obtenir en moyenne un élé-
ment de ` bits avec toute les positions égales à 0.
Pour les paramètres de sécurité de SBS contre l’attaque GBA, on utilise l’algorithme
de [58]. Cet algorithme essaie de trouver un ensemble d’indices I = {1,2, · · · ,2γ} qui sat-
isfait ⊕i∈IHi = 0, où les Hi sont des colonnes de la matrice H. Comme mentionné [58],
l’algorithme est applicable quand( 2b w
2(1−γ)w
)≥ 2bw+γ(γ−1). Sous cette condition, le coût pour
résoudre une instance de RSD avec les paramètres (n,r, w) est au moins approximé par
101
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
(wbγ −1
)2
wbγ −1.
Noter que [115] montre que le temps et la mémoire requis pour l’attaque GBA peuvent
être améliorés, mais seulement par un petit facteur.
Remarque. Les équations qui définissent ui et vi peuvent exprimées comme une fonc-
tion en y0 et x0, respectivement. On peut vérifier facilement quexi =ϕ(i )1 (x0), yi =ϕ(i )
2 (y0)
ui =ϕ1(ϕ(i−1)2 (y0)), vi =ϕ2(ϕ(i−1)
1 (x0))
Avec ces paramètres, si x0 (resp. x0) est un point fixe deϕ1 (resp. ϕ2), alors SBS va produire
un flux clé identique à chaque itération et donc l’attaquant peut deviner correctement
le flux de clé subséquent généré par SBS. Heureusement, cet événement va se produire
avec une probabilité négligeable. Afin de prouver cette affirmation, nous avons besoin du
lemme suivant.
Lemme 6.11.1 Soient 0 < θ< 1, et Z1,Z2, · · · ,Zt des variables aléatoires indépendantes sur
{0,1} telles que Pr[Zi = 1] = θ, ∀i ∈ {1, · · · , t }. Alors, Pr
[t∑
i =1Zi ≡ 1 mod 2
]= 1
2 − (1−2θ)t
2 .
Preuve 6.12 Il est facile de montrer (par induction) que
t∑i =1
Zi ≡ 0 mod 2 ⇔t∏
i =1(−1)Zi = 1 (6.9)
De là, il suit :
Pr
[t∑
i =1Zi ≡ 0 mod 2
]= Pr
[t∏
i =1(−1)Zi = 1
]. (6.10)
En outre, si W est une variable aléatoire qui prend ses valeurs dans {−1,1} alors son es-
pérance mathématique E(W) est égale
E (W) = Pr[W = 1]−Pr[W = −1] = 1−2Pr[W = −1] . (6.11)
Si on prend W =t∏
i =1(−1)Zi , alors en utilisant le fait que Z1,Z2, · · · ,Zt sont indépendantes,
on obtient
E (W) =t∏
i =1E
((−1)Zi
)=
t∏i =1
(1−2θ) = (1−2θ)t . (6.12)
En combinant les équations (6.11) et (6.12), on obtient:
Pr
[t∑
i =1Zi ≡ 1 mod 2
]= P [W = −1] = Pr
[t∏
i =1(−1)Zi = −1
]=
1
2− (1−2θ)t
2. (6.13)
102
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
�
Maintenant, nous voulons estimer la probabilité d’avoir des points fixes pour ϕ1 (or ϕ2).
De tels points satisfont à l’équation ϕ1(x) = x, qui est l’équivalent de la somme directe de
ω+1 vecteurs inconnus de ` bits, qui donne zéro. Si x est choisi d’une manière aléatoire
dans F`2 , alors la probabilité d’avoirϕ1(x) = x est égale à 12 . En fait, les entrées de ligne de la
matrice de sous-jacenteϕ1 et x peuvent être associées à des variables aléatoires indépen-
dantes (Z( j )i ) définies sur {0,1}, respectivement, où i ∈ {1, · · · ,ω+1} et j ∈ {1, · · · ,`} sont des
position de colonne et de ligne . On a Pr[
Z( j )i = 1
]= θ = 1
2 . En utilisant le lemme 6.11.1 on
obtient:
Pr
[ω+1∑i =1
Z( j )i ≡ 0 mod 2
]=
1
2, ∀ j ∈ {1, · · · ,`}. (6.14)
et par conséquent
Pr[ϕ1(x) = x
]=
(1
2
)`=
1
2`(6.15)
Cela signifie que la probabilité d’occurrence des points fixes au cours de la génération
de flux de clé est négligeable quand ` est choisi assez grand. Dans ce travail, les valeurs de
` est au moins 128.
6.13 Résultats Experimentaux
Le chiffrement par flux SBS décrit ci-dessus a été mis en œuvre en utilisant le langage
de programmation C/C++ fonctionnant sur un AMD Phenom(tm) 9950 Quad-Core, tour-
nant à un rythme d’horloge de 1300 MHz et ayant de 4 Go de RAM. L’implémentation est
basée sur les codes binaires aléatoires sans structure particulière. En tenant compte de
toutes les attaques discutées précédemment, nous avons sélectionné un grand ensem-
ble de paramètres sûrs offrant une meilleure performance mesurée en cycles par byte
(cpb). le Tableau 6.1 illustre les résultats de simulation des ensembles de paramètres dif-
férents (η,`,ω) dans lesquels le niveau de sécurité fourni (en log2 opérations binaires),
les tailles de la clé secrète K et du vecteur initialisation IV, et la vitesse sont répertoriées.
Afin d’augmenter la performance et diminuer la capacité de stockage requise par notre
proposition, on peut introduire des codes quasi-cycliques en raison de la propriété aléa-
toire obtenue dans [65].
Le Tableau 6.1 représente la vitesse obtenue par SBS pour un niveau de sécurité crois-
sant. On voit que le cpb généralement croit avec le paramètre ` (la moitié de la taille de
sortie) et pour une longueur du code fixée η(=8192), la croissance devient linéaire. En ef-
fet, pour un niveau de sécurité fixé comme but, on peut prendre η et ω en sorte d’avoir `
le plus petit possible en minimisant la fonction qui lie ces trois paramètres.
103
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
sécurité η ` ω K/IV performance (cpb)
80 8192 256 32 128 7.85
100 8192 384 48 192 12.63
100 8192 512 64 256 21.13
100 8192 640 80 320 26.90
100 8192 1024 128 512 29.56
120 12288 384 48 192 12.29
160 16384 512 64 256 35.40
200 20480 640 80 320 26.819
240 24576 768 96 384 32.413
280 28672 896 112 448 39.59
260 32768 1024 128 512 29.867
Table 6.1 – Paramètres et performance de SBS.
sécurité η ` ω key/IV performance (cpb) annoncée
80 8192 256 32 128 27
128 8192 384 48 192 47
180 8192 512 64 256 41.50
400 8192 1024 128 512 83
Table 6.2 – performance annoncée pour SYND [64, 47].
Comparée aux performances des autres propositions basées sur les codes, comme
SYND [64] et the 2SC [101], notre implémentation confirme que pour un niveau de sécu-
rité comparable, SBS tourne plus rapidement, même pour leur version améliorée que
nous avions réalisée dans le chapitre précédent [47].
Les vitesses rapportées de SYND [64] et de 2SC [101] sont affichées dans Table 6.2 et
Table 6.3, respectivement.
En outre, les résultats de nos implémentations présentés dans le tableau 6.1 montrent
clairement que notre proposition va aussi vite que le schéma de chiffrement AES mode
compteur. En effet, l’implémentation en assembleur de AES en mode CTR de Käsper et
al. [85] fournit une vitesse de 7.59 cycles par byte sur Intel 2 Q9550 et 6.92 cycles par byte
sur Core i7 920, pendant que la notre tourne à 7.85 cycles par byte.
104
CHAPITRE 6. UN CHIFFREMENT PAR FLUX ET PROUVÉ SÛR: SBS
sécurité n r w key/IV performance (cpb)
100 1572864 384 24 144 25.18
160 2228224 544 34 208 33.22
250 3801088 928 58 352 72
Table 6.3 – performance annoncée 2SC [101, 47].
Notre proposition est seulement deux fois plus lent que les finalistes eSTREAM 2 (HC-
128, Rabbit, Salsa20/12, SOSEMANUK, Grain v1, MICKEY v2, et Trivium).
6.14 Conclusion
Dans ce chapitre, nous avons proposé un nouveau chiffrement par flux basé sur les codes,
appelé SBS. En utilisant le parallélisme, notre système est très rapide par rapport à toutes
les propositions précédentes basées sur les codes. Sa sécurité est basée sur le problème de
décodage par syndrome de mots réguliers et sa performance est comparable à l’AES-CTR.
Il fonctionne à 7,8 cycles par byte, tandis que la performance de l’AES-CTR est d’environ
7,59 cycles par byte. Nous avons effectué une analyse détaillée de sécurité, en particulier,
nous avons montré que SBS est sécurisé contre les attaques les plus connues telles que
les attaques ISD et attaques GBA. En outre, nous avons prouvé que la distinction du flux
de clés générées par SBS est aussi dure que la résolution d’une instance du problème de
décodage des mots réguliers.
2http://www.ecrypt.eu.org/stream/phase3perf/2007a/amd64/
105
Chapitre 7
Un PRNG basé sur des Problèmes de la
Théorie des Réseaux
“ Rien dans la nature n’est aléatoire. Le
hasard n’apparaît qu’à travers
l’insuffisance de nos connaissances. ”
B. Spinoza
Sommaire
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.1.1 Acronymes et Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.1.2 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.3 Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.4 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3 Un PRNG basé sur ISIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.1 Construction du Bloc Central . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.2 Construction Itérative . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.3 Principe de Conception . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.4 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.6 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.7 L’attaque par paradoxe d’anniversaire généralisé . . . . . . . . . . . . . . 116
7.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Dans ce chapitre, nous construisons un générateur de nombres pseudo-aléatoire en
utilisant seulement des hypothèses standards au pire des cas des problèmes de réseau
106
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
arithmétique. Avec une technique courante, nous pouvons alors construire un chiffre-
ment par flux en combinant la séquence pseudo-aléatoire générée avec le texte en clair.
Notre mise en œuvre pour les unités de traitement graphique (GPU) tire parti du paral-
lélisme inhérent aux réseaux et atteint des performances comparables aux constructions
rapides connues qui ont les preuves de sécurité.
Ce travail fait l’objet d’une présentation dans "International Conference on Coding and
Cryptography", USTHB, Alger, 2-5 Novembre 2015 et d’une publication à paraitre dans
"Applicable Algebra in Engineering, Communication and Computing".
107
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
7.1 Introduction
La cryptographie basée sur les réseaux arithmétiques s’appuie généralement sur des prob-
lèmes présumés difficiles tels que Le Problème du plus Court Vecteur(SVP) ou la Plus
Courte Solution Entière(SIS) qui permettent de construire des fonctions à sens unique. En
raison de leur vitesse et de la non-existence présumée d’algorithmes quantiques qui sont
en mesure de les résoudre en temps polynomial, les schémas cryptographiques basés sur
les réseaux deviennent alors des candidats sérieux pour la cryptographie post-quantique.
Une famille de ces primitives cryptographique est celle des Générateurs Pseudo-aléatoires
(PRNG) qui ont plusieurs applications en cryptographie. Parmi eux, l’un des plus fréquem-
ment utilisé sont les chiffrement par flux. Ce sont des constructions qui utilisent des clés
symétriques dans lesquelles un flux chiffré est obtenu à travers une combinaison des bits
du message clair et d’une séquence de bit pseudo-aléatoire. Dans un chiffrement par flux,
les bits du message clair sont chiffrés les uns à la suite des autres, à l’opposé du chiffre-
ment par bloc, qui typiquement opère sur de larges portions du message.
Récemment, plusieurs PRGNs sont proposés dans le but d’améliorer les schémas ineffi-
caces. La sécurité de certains d’entre eux repose sur certaines hypothèses de la théorie
des codes [[103], [47]], des système multivarié,...
Dans le contexte de la théorie des réseaux arithmétiques, des PRNGs robustes sont tirés
des fonctions à sens unique dont leur sécurité est basée sur des problèmes difficiles pour
un niveau de sécurité au pire des cas, ce qui signifie que les casser est au moins aussi
difficile que résoudre n’importe quelle instance des problèmes basés sur les réseaux. Le
premier, avec une preuve de sécurité, a été celui de Ajtai [107] et se réduit au problème
SVP.
La difficulté au pire des cas des fonctions à sens unique n’est pas efficace due aux con-
traintes de sécurité, c’est pourquoi récemment quelques travaux sont faits pour améliorer
leur rapidité en utilisant le parallélisme tel que SWIFFT avec l’utilisation de la transformé
de Fourier rapide(FFT).
La sécurité de SWIFFT repose sur la réduction au SVP des réseaux cycliques (idéaux) dans
le pire des cas et sa preuve a été donnée dans [105] et [94]. Malheureusement il n’était
pas directement utilisable comme PRNG. C’est ainsi qu’il est important de faire des de-
signs efficients des PRGN avec un niveau de sécurité au moins aussi élevé que celle de la
fonction de compression SWIFFT.
7.1.1 Acronymes et Définitions
• DDH - Decisional Diffie-Hellman assumption.
• FFT - Fast Fourier Transform
108
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
• GPU - Graphics Processing Unit.
• LPN - Learning from Parity with Noise.
• LWE - Learning With Errors.
• PRNG - Pseudorandom Number generator.
• QUAD - A multivariate QUADratic stream cipher.
• SIS - Short Integer Solution.
• TDF - Trapdoor function.
• ϕm,t est une application injective :{0,1}l −→ Wm,t . Wm,t représente l’ensemble des
mots de longueur m, de poids de Hamming t et l est inférieur ou égal à log2(mt ).
7.1.2 Etat de l’art
Les problèmes calculatoires en théorie des réseaux ont été récemment investigués pour
construire un certain nombre de primitives cryptographiques. Dans la suite, nous lis-
teront quelques constructions qui traitent des PRNGs.
Basés sur la difficulté du problème LPN, Applebaum, Cash, Peikert et Sahai [2] consen-
tirent un PRNG qui double la taille des entrées en sortie et peut être implanté en circuit
binaire (sans crypto-processeur) de taille O (n). Le PRNG proposé ici est basé sur la diffi-
culté de LPN qui n’est pas connu comme un problème au pire des cas. En résumé nous
montrerons que notre construction est sûre sous l’hypothèse de la difficulté au pire des
cas et est efficace en pratique.
7.1.3 Contribution
Dans ce chapitre, en utilisant le problème ISIS 3.2.6 comme brique de sécurité de base,
nous sommes en mesure de construire un PRGN plus rapide, qui s’implémente facile-
ment, et marche avec de petits paramètres et ayant une réduction classique au pire des
cas aux problèmes des réseaux. Notre instanciation appliquée aux réseaux cycliques, avec
des paramètres similaires que ceux de SWIFFT [95], fournit un niveau de sécurité pratique
de 100 bits. Notre implémentation en GPU augmente l’efficacité à partir du parallélisme
inhérent et atteint les performances qui surpassent certaines implémentations connues
avec des preuves de sécurité tirées des autres domaines. Par exemple, on peut être plus
performant que QUAD [19], qui est basé sur la difficulté de résoudre des système multi-
variés quadratiques.
109
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
7.1.4 Organisation
La structure de ce chapitre est la suivante. Dans la section 7.2 nous présentons les con-
cepts qui seront utilisés à travers le texte pour expliquer les PRNG. Plutard, nous décrivons
en détail notre PRNG dans la Section 7.3. Dans la section 7.4 nous listons une serie de
théorèmes qui nous permettra de montrer que notre système est à la fois sûr et indistin-
guable d’une source réellement aléatoire. Après cela, dans la section 7.6 nous présentons
quelques résultats concrets et discutons sur les performances et paramètres de notre im-
plémenetation sur CPU et GPU. Nous abordons les attaques et les contremesures dans la
Section 7.7. Une appréciation globale de notre système est donnée dans la Section 7.8 en
guise de conclusion.
7.2 Préliminaires
Dans cette section nous définissons quelques concepts qui seront traités tout au long de
ce chapitre dans les discussions de sécurité et de performance sur la cryptographie basée
sur les réseaux. Pour tout ce qui est de la théorie des réseaux nous renvoyons le lecteur au
chapitre 2 de ce manuscrit.
Nous proposons l’ensemble des paramètres, dans la table 7.1, qui sont compatibles à
ceux utilisés par la fonction de compression SWIFFT [95]. L’une des meilleures attaques
pour trouver des vecteurs courts dans un réseau [135] est la méthode combinatoire et a
une complexité calculatoire au dessus de 2100(Attaque des anniversaires généralisée).
7.3 Un PRNG basé sur ISIS
7.3.1 Construction du Bloc Central
Considérons la famille F des fonctions à sens unique définies comme f : Fm2 →Zn
q , qui à x
fait correspondre f (x) = Ax mod q , tel que le poids de hamming de x, ‖x‖ = m4 , A ∈Zn×m
q et
q un nombre premier. Il est calculatoirement à sens unique pour un choix judicieux des
paramètres, comme montré dans [106]. Notre choix pour q , de ne pas être une puissance
de 2, peut être justifié par le fait qu’on obtienne parfois des séquences biaisées. Nous
montrerons dans la suite comment l’éviter dans la description du module de mise à jour.
7.3.2 Construction Itérative
Nous proposons l’utilisation d’un générateur itérative capable de produire un flux de bits
pseudo-aléatoires de longueur arbitraire. Chaque itération correspond à une application
110
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
InitializerState
Updater
x
zwK, IV
y
P-RAND STREAM
Figure 7.1 – PRNG basé sur ISIS
de la construction basique vue dans la figure 7.1. Une description plus détaillée de chaque
bloc qui constitue le PRNG est donnée dans la suite.
• Input: Key K ∈ Fm/22 and initialization vector IV ∈ Fm/2
2 .
1 Initializer : Obtain the current state w through a Feistel network applied to K and
IV, see 7.3.3.
2 State updater :
Compute S = Ax mod q , where S ∈Znq and x ∈ Fm
2 with Hamming weight m/4.
Split the current state S = (y|t|z) in output vector y ∈ Zn/2q , feedback vector z ∈
Zn/4q and t ∈Zn/4
q .
• Output: The vector y ∈ Zn/2q is further mapped into Zn/2
256 and fed to a permutation
SBox before being saved to the pseudorandom output stream to break the linear
structure. This last step helps to improve non-linearity.
• Feedback: The vector z ∈ Zn/4q is further mapped into Zn/4
256 , fed to a permutation
SBox . Since dup(Zn/4256 ) = F2n
2 and 2n ≤ log2(mm4
), it is fed to x := ϕm, m4
(z) ∈ Fm2 with
Hamming weight m/4, see Table 7.1
Go to step 2.
7.3.3 Principe de Conception
Son design général est donné dans la figure 7.1. Il est composé de trois blocs majeurs:
Initializer: g : Fm/22 ×Fm/2
2 → Fm2 . Il suit le paradigme de Feistel appliqué dans le modèle
du chiffrement par flux SYND [66]. Ici on choisit deux fonctions f1 et f2 qui trans-
forment un vecteur de longueur m en un vecteur de Fm2 via f1(x) = dup(A1x mod q)
et f2(x) = dup(A2x mod q), où A1,A2 ∈ Zn/2×mq et dup : Zn/2
q → Fm2 qui permet de
représenter chaque entrée en binaire, tel que A = [A1;A2] ∈ Zn×mq correspond à la
111
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
Variable Domain Description Bitsize
w Fm2 State m = 256 or 512 or 1024
y Zn/2q PRNG pre-output bn/2log2(q)c = 256
z Zn/4q Feedback stream bn/4log2(q)c = 128
K Fm/22 Key m/2 = 128 or 256 or 512
IV Fm/22 Initialization vector m/2 = 128 or 256 or 512
A Zn×mq Lattice basis bnm log2(q)c
Table 7.1 – Les paramères de SWIFFT[95] (n, q,m) = (64,257,1024).
matrice utilisée dans le module State Updater. Les matrices A1 et A2 sont consid-
érées comme des paramètres du système. L’état initial du compteur est obtenu par
g (K,IV) = z+ f2(y+ f1(z))
où y = K || IV et z = f1(y)+y.
State Updater: Soit f : Fm2 → Zn
q telle que f (x) = Ax mod q , avec A ∈ Zn×mq . Alors, la sor-
tie de f est découpée en trois vecteurs. la partie gauche est assignée à y ∈ Zn/2q ,
et fournie à la sortie du générateur, après que chaque cordonnée ait été conver-
tie dans Z256, en supprimant le bit de poids fort. La partie de droite identifiée par
z ∈Zn/4q , est utilisée pour la rétro-action. La matrice A est un paramètre d’entrée du
système. Nous appliquons les paramètres prescrits dans la table 7.1. Le State Up-
dater représente une instance du problème ISIS. Pour des paramètres bien choisis,
il existe des réductions des instances au pire des cas aux instances au moyens des
cas du problème ISIS, comme discuté dans [106].
la table 7.1 liste la taille des paramètres utilisés dans le design du PRNG. La valeur de n,
m et q est choisie de sorte que notre système soit aussi sûr que SWIFFT[95]. Notre généra-
teur peut être utilisé pour un chiffrement par flux en faisant une opération de somme
directe entre le message clair et la séquence générée.
7.4 Sécurité
Dans cette section nous montrons que les fonctions choisies aléatoirement dans la famille
Hn,q,m ={
fA : {0,1}m −→Znq : x 7−→ Ax mod q | A ∈Zn×m
q
}sont des générateurs pseudo-aléatoires. Pour ce faire, on a besoin de deux résultats.
112
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
Premièrement, on utilise le fait que Ajtai ait prouvé que ces fonctions sont à sens
unique en considérant la difficulté à résoudre des problèmes standard de la théorie des
réseaux dans le pire des cas [107]. Ces preuves ont été plus tard améliorées et rafinées
dont l’une de ses variantes les plus récentes est dûe à Micciancio et Regev [106].
Deuxièmement, on adapte un résultat de Impagliazzo et Naor, qui ont montré que
notre affirmation reste valable dans le cas des fonctions qui additionnent les sous ensem-
bles (sac à dos)[83]. Comme eux, nous allons utiliser le théorème de Goldreich et Levin,
qui donne un prédicat pour une fonction à sens unique[72].
Être en mesure de prédire ce prédicat permet aussi de briser l’aspect "sens-unique".
En outre, le prédicat peut souvent être prédit par un oracle qui brise un générateur pseudo-
aléatoire, ce qui en fait un candidat idéal pour notre environnement.
Nous commençons par un rappel du théorème Goldreich-Levin pour prouver l’aspect
pseudo-aléatoire de notre fonction.
Théorème 7.4.1 ([72]) Soit f une fonction à sens unique. Pour tout algorithme PTT A ,
tout polynôme p, et un nombre fini de m ∈N, on a
Pr[A ( f (x),r) = r ¯x] < 1
2+ 1
p(m),
où les probabilités sont évaluées sur des paramètres aléatoires uniformément choisis x,r ∈U({0,1}m) et r ¯x = rxT mod 2.
Théorème 7.4.2 Si la fonction fA ∈ Hn,q,m est à sens unique, alors il est aussi un généra-
teur pseudo-aléatoire.
Preuve 7.5 on considère que la matrice A ∈Zn×mq est choisie uniformément.
Supponsons que le fonction n’est pas pseudo-aléatoire, i.e il existe un algorithme PTT D
efficace et un polynôme p tels que:
Pr[D(A, fA(x)) = 1] ≥ 1
2+ 1
p(m)et Pr[D(A,y) = 1] =
1
2(7.1)
Pour montrer comment exploiter ce distingueur afin de prédire le prédicat de Goldreich-
Levin. Considérons cet algorithme suivant:
A (A, fA(x),r):
Choose k ←− U({0,1}) uniformly at random
Choose y ←− U(Znq ) uniformly at random
Set B ←− A+yTr mod q
Set b ←−D(B, fA(x)+yTk mod q)
Return k ⊕ (1⊕b)
113
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
Maintenant on considère k,A,y des variables aléatoires uniformément choisies et soient
x,r des paramètres fixés. On compare trois distributions décrivant l’entrée de D
I1 = (B, fB(x)+yT(k ⊕ r ¯x) mod q), I2 = (B, fB(x)), I3 = (B,y).
On note que I1 est la réelle distribution d’entrée, puisque par construction fA(x)+ yTk =
fB(x)+ yT(k ⊕ r ¯ x). Alors, sous la condition k = r ¯ x := rxT mod 2, I1 est identique à I2
et sous la condition k 6= r ¯ x := rxT mod 2, I1 est identique à I3. Si k est le bit que nous
cherchons (hard-core bit: r ¯ x), alors notre algorithme réussit si D retourne 1 ou 0 les seul
cas possible. En combinant les deux avec l’équation (7.1) on obtient en utilisant le théorème
de Bayes:
Pr[A success] = Pr[D(I1) = 1 | k = r¯x]Pr[k = r¯x]+Pr[D(I1) = 1 | k 6= r¯x]Pr[k 6= r¯x]
=1
2Pr[D(I2) = 1]+ 1
2(Pr[D(I3) = 1])
≥ 1
2+ 1
p(m).
Ceci signifierait qu’on peut prédire le prédicat de Goldreich-Levin avec un avantage non-
négligeable et par conséquent avoir une contradiction sur le fait que la fonction soit à sens
unique.
7.6 Performance
Pour des raisons d’optimisation de nos algorithmes, nous avons utilisé la programmation
en parallèle sur cartes GPU qui offrent plus de ressources (transistors) que les cartes CPU
sur le marché. Nos mises en œuvre sont basées sur le langage CUDA C et sur les cartes
NVIDIA GTX460. Ce type de carte est spécialisé dans le calcul intensif et dans le calcul
hautement parallèle. Comme une plate-forme hybride, CUDA est caractérisé par des en-
tités:
• Host : pour désigner la carte CPU,
• Device: pour désigner la carte GPU,
• Kernel: les fonctions lancées par Host et exécutées par Device.
La carte contient une grille 3D (x,y,z) qui contient des blocs et fait tourner chacun in-
dépendamment des processus (threads) qui font la même action simultanément sur les
différents blocs de données. L’index global suivant une direction (x par exemple) pour
chaque processus dans la grille est obtenu par: index =threadIdx.x + blockIdx.x
* blockDim.x où
• threadIdx.x : l’index du processus dans le bloc courant
114
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
Cipher/PRNG Cycles/Byte Key Size (bits)
QUAD 4347 80
Ours/CPU 432 128
Ours/GPU 367 128
SYND 27 128
AES-CTR 15 128
Table 7.2 – Peformance comparée avec d’autre Stream Cipher
• blockIdx.x : l’index du bloc dans la grille
• blockDim : le nombre de processus dans chaque bloc
En effet, suivant l’architecture de telle carte, la conception suit ces étapes:
1. Définition de nos kernels: convertir les vecteurs de Znq en chaînes binaires, le pro-
cessus de duplication, la fonction de mise à jour,
2. Allocation de la mémoire et transfert de données de IV et de l’état interne sur GPU
3. Lancement indéfiniment de la fonction mise à jour déjà définie
4. Recouvrement de la sortie après chaque mise à jour.
Cette section montre le résultat d’une mise en œuvre en appliquant les paramètres
indiqués dans le tableau 7.1. Nous avons utilisé les optimisations proposées dans la fonc-
tion de hachage SWIFFT [95] afin d’obtenir des opérations de FFT efficaces. Nous avons
atteint un débit de 27 Mbps avec pour notre PRNG sur un dual core Intel Celeron E3300 à
2,50 GHz exécutant Linux Ubuntu 10.04, avec 2,0 Gio de RAM. Le compilateur utilisé pour
générer le code était gcc, la version 4.4.3-4. Ce débit est environ 30 fois plus lent que AES
en mode CTR, de la bibliothèque de Crypto++, Version 5.6.1.
Une performance comparative avec QUAD (qui a aussi la sécurité prouvée), AES en
mode CTR, et une amélioration de la SYND par P.-L. Cayrel et al. [47]sont donnés au
tableau 7.2. Pour notre mise en œuvre CPU, environ 49% du traitement temps est passé
sur le calcul FFT. En ayant FFT exécuté dans un GPU, à la place, de façon similaire à ce
qui était réalisé par de Beer et al. dans [50], on peut espérer voir la performance à près
90% plus rapide. Les tentatives faites avec AES en GPU, comme rapportées par Mei et al.
[98], montrent des gains de près de 36% en débit. Cette implémentation GPU sur Nvidia
GTX460 a atteint une amélioration de 15%, comparativement à notre mise en œuvre de la
CPU.
115
CHAPITRE 7. UN PRNG BASÉ SUR DES PROBLÈMES DE LA THÉORIE DES RÉSEAUX
7.7 L’attaque par paradoxe d’anniversaire généralisé
Notre conception applique une instance d’ISIS dans son noyau. On pourrait appliquer
des attaques d’anniversaire ou de base réduction pour tenter de reproduire un flux pseudo-
aléatoire de bits, et ainsi récupérer le texte brut. L’ensemble des paramètres qui sont sug-
géré dans ce chapitre exclut ce genre d’attaques. Pour le niveau de sécurité appliqué dans
cet article, l’état actuel de la technique n’est pas assez forts pour briser notre système [31].
Comme indiqué dans [74, 79], l’Attaque par Compromis Temps-Mémoire (TMTA) peut
être évitée en prenant les conditions suivantes en compte: le vecteur initial devrait être
au moins aussi grand que la clé, et l’état interne doit être au moins deux fois la clé et dans
[110, 34, 35] les attaques de différentielles (DA) en utilisant une fonction initiale(réseau
de Feistel) sûre et des Sboxes.
L’agorithme du paradoxe des anniversaire généralisé est dû à Wagner [135] et il est
réductible au problème SIS. Une collision Ax1 = Ax2 mod q ⇐⇒ A(x1−x2) = 0 mod q pour
x1 6= x2 mod q , est calculable quand on est capable de répondre à cette question:
Soit une matrice A ∈ Zn×mq et b un entier positif, existe-il un vecteur x ∈ Fm
2 tel que
Ax = 0 mod q et qui a pour poids de hamming ‖x‖ ≤ b?
L’ensemble des solutions est ker (A) = {x ∈ Fm2 : Ax = 0 mod q} est un réseau,donc ré-
soudre ce problème est aussi dur que la résolution SIVP et SVP dans le pire des cas. [31].
7.8 Conclusion
Dans ce chapitre, nous avons présenté un PRNG basé sur des problèmes de réseau arith-
métique au pire des cas , en se basant sur la difficulté à résoudre ISIS. Il présente des simil-
itudes avec la conception proposée dans certains chiffrements de flux à sécurité prouvée
comme QUAD [19] et SYND [66]. Nous avons prouvé l’indiscernabilité de notre PRNG
d’une véritable séquence purement aléatoire, à condition que le SIS soit difficile pour
l’ensemble de paramètres appliqués.
Les hypothèses de sécurité légers utilisés dans la conception de notre construction
nous permet de relier sa performance à celle de SWIFFT [95]. Ceci conduit à un rapide et
plus simple système que celui obtenu à partir de constructions avec trappe. [118].
Étant donné que la conception de SYND peut également être utilisée pour dériver les
fonctions de hachage, en fonction de l’ensemble des paramètres choisis, et que notre con-
struction est structurellement similaire à ce système, nous croyons qu’un résultat ana-
logue pourrait être dérivé ici. En outre, comme représentées sur [33], les constructions
éponges peuvent être appliquées avec succès comme bloc de construction pour les fonc-
tions de hachage et chiffrement par flux. Elles peuvent être combinés avec notre hy-
pothèse de sécurité du ISIS, conduisant à un système structurellement différent.
116
Chapitre 8
A LPN-Based Chameleon Hash Function
“ Avec l’Internet et le Web, la demande
en cryptologie a explosé. Et
paradoxalement, la cryptologie est
passée d’une science du secret à une
science de confiance. ”
Jacques Stern
Sommaire
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8.2.1 The Learning from Parity with Noise Problem . . . . . . . . . . . . . 121
8.2.2 LPN-based cryptography . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.3 LPN-based chameleon hash-function . . . . . . . . . . . . . . . . . . . . . 122
8.3.1 Chameleon hash function . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.3.2 Our chameleon hash: . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4 The security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.6.1 Chameleon signature . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
In some collaboration scenarios, a hashed message needs to be modified by a third
party different from the original publisher without changing the message digest.
To ensure data integrity for such a modification, the message has to be rehashed without
the control of the original publisher. However, this is usually only possible in case the
original editor is available.
As a solution to this problem, we present in this paper the first chameleon hash func-
117
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
tion based on the LPN (Learning Parity with Noise) problem. In addition, we show it is
semantically secure and resistant to collision forgery attacks.
Keywords: cryptographic chameleon hash functions, provable security, LPN.
118
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
8.1 Introduction
Hash functions, a powerful encryption tool, are a crucial ingredient for many applications.
They are typically used in order to reduce the size of data to be processed by the encryp-
tion functions, to build secure encryption schemes in the random oracle model, to ensure
the data integrity and also to secure the infrastructures such as: secure web connections,
encryption key management, virus and malware-scanning, password logins, and digital
signatures.
In literature there are several hash functions whose security is based on some diffi-
cult problems such as number theory [38], the arithmetic networks [93] and particularly
on the theory of error correcting codes(ECC) [9, 102, 30]. One particular ECC-scheme,
called FSB [9] received a lot of attention after the Augot, Finiasz, and Sendrier’s proposal
[56] during the SHA-3 competition. However, FSB has been eliminated because of its in-
efficiency compared to the others in the second round. Thus some improvements and
new schemes have been proposed to reposition code based cryptography in the race as
candidate for post-quantum cryptography due to the existence of quantum algorithms
solving some problems related to number theory. Motivated by its inefficiency, Augot et
al. proposed improvements still based on the Markle-Damegard construction by using a
masked random quasi-cyclic matrix [56].
In the following reviews, another hash function based on the syndrome decoding
problem has been proposed by Meziani et al. in [102] which improves the speed of the
FSB by using a sponge construction.
Bernstein et al. have proposed an even faster hash-function in [30] which is as fast as
two of the five finalists SHA-3 with less than 14 cycles on one byte hash for 128 bit security
level.
More recently, Cayrel et al. have proposed an improvement in these diagrams by using
the Streaming SIMD Extensions registers (SSE) and proposed a benchmark based on the
same platform [47].
In some collaboration scenarios an already hashed message needs to be modified in off-
line mode by a third party different from the original publisher without changing the mes-
sage digest.
However, all those hash functions provide no answer for the above mentioned prob-
lem of rehashing a message by authorized persons without the presence of the original
119
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
publisher and without changing the message digest. Indeed, sometimes this is not pos-
sible because the editor is not available as in the case of a very large hierarchy in organi-
zations, in the routing information with routers or proxies, in the case of release update
software, or in the internet advertising system where one allows the organizations to at-
tach advertisements on broadcast messages. The ideal solution would be to ensure that
authorized persons can edit the original message without changing the message digest:
in this case we speak of a chameleon hash function. The corresponding signature is also
called chameleon or signing sanitizable signature.
The chameleon hash function was proposed for the first time by H.Krawczyk T.Rabin [90]
, which had a weakness against a key exposure attack. Today there are solutions, such as
those presented by G.Ateniese and B. de Medeiros in [6] proven secure in the random or-
acle model. Recently, new chameleon hash functions were proposed e.g. identity-based
chameleon hash [5, 138]. Many applications of hash functions and signatures charac-
terised as chameleon are given in [3].
Related Work.
Our contribution.
In this paper we give the first chameleon hash function on LPN-based cryptography. We
give also a provable security by showing it is semantically secure and resistant to collision
forgery attacks.
Organization of the paper.
This paper is organized as follows: After preliminaries in section 2, we give the descrip-
tion of our new scheme in section 3, a security study in section 4 and finally we give a
discussion about performance.
8.2 Preliminaries
A chameleon hash function is a secure hash function with a secret key that permits to
generate efficiently a new pre-image for any modification of the original message. That
means it is possible to delegate people to modify the message without changing the hash
value or the signature.
We denote the Bernoulli distribution over F2 with parameter p ∈]0, 12 [ by Berp i.e. if x ←
Berp , then Pr [x = 1] = p and Pr [x = 0] = 1− p. We write Ber np to denote the distribution
over Fn2 of a sequence of n independent Bernoulli trials with parameter p. We write U k to
120
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
denote the distribution over F2 of a sequence of k independent uniform trials.
The inner product of a,b ∈ Fn2 is a ·b =< a,b >=
∑n−1i =0 a[i ] ·b[i ] mod 2
8.2.1 The Learning from Parity with Noise Problem
The Learning from Parity with Noise (LPN) problem has been well studied and has been
used to build some cryptographic primitives such as HELEN public key [53, 49].
Solving this problem consists of finding out an unknown vector s, given some noisy
versions of its scalar product with some known random vector. Formally :
Définition 8.2.1 (LPN Oracle) An LPN oracle∐
s,p for a hidden vector s ←U k and 0 < p <12 is an oracle returning an LPN k +1-vector, i.e. vector of the form
< r ← {0,1}k , s · r ⊕e >
where e ← Berp
Définition 8.2.2 (The search LPN problem.) For p ∈]0, 12 [, l ∈N the search LPNl ,p is (q, t ,ε)-
hard if for every distinguisher D running in time at most t and making at most q queries to
the oracle∐
s,p :
Pr [s ← {0,1}k : D∐
s,p (1κ) = s] < ε
Définition 8.2.3 (The decisional LPN problem.) For p ∈]0, 12 [, l ∈ N the decisional LPNl ,p
is (q, t ,ε)-hard if for every distinguisher D running in time at most t and making at most q
queries to the oracle∐
s,p :
| Pr [s ← {0,1}k : D∐
s,p (1κ) = 1]−Pr [U k+1(1κ) = 1] |< ε
in [86, 123], authors show that decisional and search LPN are polynomially equivalent.
There is in literature some equivalent Versions of LPN by considering new Oracle which
take r or s as matrices and change the uniform distribution with an other one.
Lemme 8.2.1 The oracle∏
s,p for a hidden vector s ← Ber kp and 0 < p < 1
2 is an equivalent
LPN oracle returning an LPN k +1-vector of the form
< r ← {0,1}k , s · r ⊕e >
where e ← Berp
121
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
Lemme 8.2.2 The oracle∧
S,p for a hidden matrix S ∈ {0,1}n×k where every line is taken
from U k and 0 < p < 12 is an equivalent LPN oracle returning an LPN n +k-vector of the
form
< r ← {0,1}k , S · r ⊕e >where e ← Ber n
p
Lemme 8.2.3 The oracle∨
s,p for a hidden vector s ← U k and 0 < p < 12 is an equivalent
LPN oracle returning an LPN n ×k-matrix and n-vector, i.e. an output of the form
< R ← {0,1}n×k , R · s ⊕e >
where e ← Ber np
Lemme 8.2.4 (Multi-bit LPN Oracle) The oracle ΣS,p for a hidden matrix S ← U k×l and
0 < p < 12 is an equivalent LPN oracle returning an LPN n ×k-matrix and a ×l -matrix, i.e.
an output of the form
< R ← {0,1}n×k , R ·S ⊕E >where E ← Ber n×l
p
8.2.2 LPN-based cryptography
The oracle∨
s,p is connected to well known problems such as decoding random linear
codes [23] and the Learning with Errors problem (LWE) [123]. It is used in several crypto-
graphical primitives like pseudorandom generators (PRG) [76], pseudorandom functions
(PRF)[69] or pseudorandom permutations (PRP)[92], Secret-key encryption scheme [68],
Secret-Key Identification and Message Authentication [80] The HB protocol.
Hardness of LPN The security of LPN is well studied by several authors and its complex-
ity remain subexponential. One of the best algorithm to solve the LPN problem called
BKW had been proposed in [37] by Blum, Kalai and Wasserman. In that paper; they esti-
mate the complexity to the order 2O ( klog(k) )
8.3 LPN-based chameleon hash-function
8.3.1 Chameleon hash function
A chameleon hash function is a trapdoor collision-resistant hash function associated with
a key pair (d sk,d pk) that permits to efficiently generate new pre-images for any modifi-
cation of the original message.
122
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
That means it is possible to delegate people to modify the message without changing
the hash value. The knowledge of the public key d pk permits to compute efficiently the
hash value for each message. Therefore, except for the owner of the delegate private key
d sk, it must be impossible for anyone to find a collision.
Design principle
:
• Key generation : KG accepts as input a security parameter κ and runs a proba-
bilistic polynomial-time algorithm to generate a pair of delegate secret/public keys
(d sk,d pk) :
(d sk,d pk) ←KG(1κ)
• Chameleon hash : CH accepts as input a public key d pk, a message m and a random
parameter r and outputs a binary string ch of fixed length.
ch ←CH(d pk,m,r )
• Forgery : Forge permits to the private key owner to generate collision on the mes-
sage for a new message m′. This algorithm takes as inputs the private key d sk, the
message m and its corresponding random element r , the chameleon hash value ch
and the modified message m′. This returns a random element r ′ s.t. CH(d pk,m,r ) =
CH(d pk,m′,r ′)
r ′ = Forge(d sk,m,r,m′,ch)
8.3.2 Our chameleon hash:
In this section, we provide a detailed description of our hash function and its basic com-
ponents.
Let us define a chameleon hash function
CH : F(n×`)2 ×F∗2 ×F(k+n)
2 −→ Fn2 CH(d pk,m,r ) = ch
Let A be an n×k random matrix, 0 < p < 12 , and hash : F∗2 −→ F`2 be a collision-resistant
hash function.
• Key generation : KG
Let X be a random (k×`)-matrix in which each column is independently generated.
The delegate private key is d sk := (X,E) while d pk := (S = AX ⊕E), is made public,
where E ← Ber n×`p
123
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
• Chameleon hash : CH
The message sender generates a random vector r = (r1‖r2) of size (k +n), where
(r1‖r2) represents the concatenation of r1 and r2, such that r1 ← Ber np , r2 ∈ Fk
2 and
computes :
h = hash(m)
and
ch = CH(d pk,m,r ) = r1 ⊕S ·h ⊕A · r2
• Forgery : Forge
For a new modified message m′, the recipient generates a vector e ∈ Fk2 , computes
the corresponding random vector
h′ := hash(m′) r ′1 = r1 ⊕E · (h ⊕h′)⊕A ·e and r ′
2 = e ⊕X · (h ⊕h′)⊕ r2
and provides as chameleon hash r ′ = (r ′1‖r ′
2).
Remarque 8.3.1 The same hash (collision) is obtained with m′ and r ′; note that :
CH(d pk,m′,r ′) = r ′1 ⊕S ·h′⊕A · r ′
2
= r1 ⊕E · (h ⊕h′)⊕A ·e ⊕S ·h′⊕A[e ⊕X · (h ⊕h′)⊕ r2]
= ch ⊕E ·h′⊕A ·e ⊕S ·h′⊕A ·e ⊕AX ·h′
= ch = CH(d pk,m,r )
8.4 The security
A chameleon hash function is claimed as secure generically, if it is collision and (second)
pre-image resistant like a standard hash function, and additionally semantically secure.
Définition 8.4.1 (Semantic security)
A chameleon hash function is said to be semantically secure if, for all pairs of messages m
and m′, the probability distributions of the random variables CH(d pk,m,r ) and CH(d pk,m′,r )
are computationally indistinguishable.
Définition 8.4.2 A collision-forgery strategy is an efficient, probabilistic algorithm that,
given a message m, and random bits r , outputs another message m′ and random bits r ′,
such that CH(d pk,m,r ) = CH(d pk,m′,r ′), with high probability.
Définition 8.4.3 A chameleon hash function is secure against existential collision forgery
by passive attacks if no collision-forgery strategy against it exists.
124
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
Définition 8.4.4 (Resistance to collision forgery by active attacks)
The chameleon hash function is secure against (existential) collision forgery by active at-
tacks if, there is no probabilistic algorithm A which has oracle access to the Forge function
and runs in polynomial time, and succeeds with non-negligible advantage in computing
random values r and r ′, and binary string m′, where m′ 6= m, such that CH(d pk,m,r ) =
CH(d pk,m′,r ′).
Définition 8.4.5 (Trapdoor Collision Resistance)
There is no efficient algorithm that, for any pair (m,r ), a delegate public key d pk and an
additional message m′, finds a value r ′ such that CH(d pk,m,r ) = CH(d pk,m′,r ′) (forge a
collision).
Théorème 8.4.1 Our chameleon hash is resistant to Trapdoor Collision attacks.
Preuve 8.5 Let A be a Trapdoor Forgery oracle that may forge a collision.
The attacker B receives the LPN challenge S = AX⊕E and try to find X and E. It takes as the
delegate public key d pk := (S = AX⊕E).
r ′ ←A (d pk,m,r,m′,ch) m′ 6= m
such that CH(d pk,m,r ) = CH(d pk,m′,r ′), ∀ message m,m′, public key d sk and fixed r
and ch.
So the attacker B make ` request to the oracle A , in each
r ′i ←A (d sk,m0,
−→0 ,m′
i ,−→0 ) 1 ≤ i ≤ ` ∈N and m′
i 6= m′j f or i 6= j .
this experience will give :
h′i := hash(m′
i ) r ′i ,1 = E · (h ⊕h′
i )⊕A ·e and r ′i ,2 = e ⊕X · (h ⊕h′
i )
Since the Forgery oracle A chose e independently to any consideration, we may suppose
e =−→0 without harming generality. Then we have:
h′i := hash(m′
i ) r ′i ,1 = E · (h ⊕h′
i ) and r ′i ,2 = X · (h ⊕h′
i )
1 ≤ i ≤ ` ∈N.
Since X and E has ` columns, it gives for every line of both matrices we will have system of `
equations with ` unknown variables. So this reveals the private key d sk := (X,E) and breaks
an instance of Multi-bit LPN.
This proof reveals that it is important to choose a not null hash ch for a publisher and and
a not null random vector e for the delegate which also makes the scheme semantically
secure.
125
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
Théorème 8.5.1 Our chameleon hash is semantically secure.
Preuve 8.6 The semantical security is obtained if the chameleon hash
ch = r1 ⊕S ·h ⊕A · r2 where h := hash(m), reveals nothing about the message (m), i.e. the
entropy H [m|ch] = H [m].
Indeed, since we suppose hash to be a secure hash function, took random vectors r1 and r2
independent from each other even in Forge stage because of the one-pad time applied to the
vector e.
The probability p(m|ch) = p(m|r1 ⊕S ·h⊕A · r2) = p(m|(r1,r2)) = p(m,e) = p(m). So the
Shannon entropy H [m|ch] = H [m]
This means the chameleon hash ch does not give any information about the message
and permits to guarantee the transparency i.e. only the publisher and the delegate shall be
able to distinguish an original pair message-hash from a modified pair.
Parameters: Usually hash functions have security of 2n2 against collisions attacks pro-
cessed by the general birthday paradox. Here we suggest parameters (n,`,k, p) = (160,160,770,0.05)
such that the cost of GISD in work-factor(binary operations) is 2120 [54]. For the under-
line hash hash, we used the RFSB based on coding theory. The matrix A is presented in the
systematic form to reduce the required storage space.
8.6.1 Chameleon signature
A chameleon signature scheme is a signature scheme which allows the signer of a mes-
sage to designate a delegate who may subsequently modify parts of the signed message
while maintaining a valid signature of the signer on the new message.
It is a direct application of the chameleon hash functions. The general principle is to
permit the modification of the message by authorized persons called delegate without
changing the signature (hash). For this chameleon signature, we give a scheme that al-
lows to modify only some parts of the message. Formally before signing, the signer splits
the message into several parts and hashes every modifiable part by a chameleon hash
function attached to a delegate public key.
Let S be a cryptographically classical secure signature scheme with associated verification
algorithm VerifS. Indeed as defined in [73] we assume that S is existentially unforgeable
against chosen message attacks(EU-CMA).
In the following we will restrict the study to a single delegate because the process is the
same for more delegates. It is simply sufficient to use the chameleon hash for each block
by the specific public key of the chosen delegate. We will use a similar construction as
[4, 39, 40].
126
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
Design principle
:
• Keys Generation (KG):
Generate two key pairs, one for the signer and one for the delegate.
– (d sk,d pk), the delegate key pair of the chameleon hash see the section 8.3.2.
– (ssk, spk), the signer key pair for the signature scheme S.
• Sign: Sign a message m ∈ F∗2 by using the signer private key ssk, the delegate public
key d pk and a random coins to produce the signature σ
Σ := (σ,r ) ← Sign(m,r, ssk,d pk)
• VerifSign: Outputs a bit b ∈ {true, false} verifying the correctness of a signature of σ
by using both public keys spk and d pk
b ←VerifSign(m,Σ, spk,d pk)
• ForgeSign: Modification of m by m′ without changing σ by using the delegate secret
key d sk
Σ′ := (σ,r ′) = ForgeSign(d sk,m,m′,Σ)
Our chameleon signature: CS
Let m = (m0, ...,mn) the message, K ⊆ {0, ...,n} the set of the modifiable parts index and
q = |K|.Before signing, the signer converts the message m into a new message m attached to a
random coin r $←− Fq(n+`)2 that allows to the delegate to modify the message without chang-
ing the signature because by this way the internal hash function used by S will get the
same input for an appropriate delegate.
• Sign:
– Compute, for each i ∈ K
mi =
CH(d pk,mi ,ri ) if i ∈ K, wher e ri $←− Fn+`2 ;
mi otherwise.
and set m = (m0, ...,mn), r = ri1‖...‖riq .
127
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
– Compute σ = S(m, ssk, spk), and provideΣ := (σ,r )
the chameleon signature is (m,Σ)
• ForgeSign: for a new message m′ from which modifications are done only on prede-
termined blocks, for instance if the the block mi where i ∈ K is modified to m′i , the
delegate computes r ′i such that CH(d pk,mi ,ri ) = CH(d pk,m′
i ,r ′i ) corresponding to
the modified part as it is done in the section 8.3.2, that means m = m′ since mi = m′i
for i ∉ K.
• VerifSign: For Verification, compute m, and verify with the public key spk.
Given (m,Σ := (σ,ri1‖...‖riq )), Compute for K := {i1, ..., iq }
mi =
CH(d pk,mi ,ri ) if i ∈ K
mi otherwise.
and set m = (m0, ...,mn).
{true, false} = VerifS(m, spk,d pk)
Security of chameleon signature: CS
As a classical signature scheme, the data integrity and the non-repudiation must also be
met in the chameleon context.In [4] Ateniese et al. identify security requirements for
chameleon signature and this work was revisited and improved by Brzuska et al. in [39].
They defined properties that a strong chameleon signature scheme should provide:
1. Unforgeability: It should be impossible for anyone to forge signatures in the name
of the original signer or one delegate signer.
• Only the legitimate signer can generate a valid original signature.
• Only the legitimate delegate signer can generate a valid chameleon signature,
even the original signer can not.
2. Immutability: The delegate is able to modify admissible parts of a message, but he
should not be able to modify other parts of the message.
3. Privacy: It should be infeasible to reproduce or to derive information of the original
message (part) from modified messages.
4. Transparency: Only the signer and the delegate should be able to distinguish a orig-
inal pair Message-signature from a modified pair.
5. Accountability: the signer and/or the delegate are able to prove in some case a
trusted third party a pair Message-signature is original or modified.
128
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
In [39], Brzuska et al. considered that a chameleon signature is secure if it meets simulta-
neously all these properties. And they showed at the same time the relationships of these
security properties by claiming that Transparency meets Privacy, Accountability meets
Unforgeability and for any other pair, they are independent from each other.
Théorème 8.6.1 The chameleon signature defined above is immutable, transparent, ac-
countable if the signature scheme is EU-CMA.
Preuve 8.7
• Immutability:
Let A be a polynomial time adversary against this property and SIGN a chameleon
signature oracle.
A chameleon signature is immutable if the follow experiment returns 1 with a negli-
gible advantage.
ExpCSImm :
– Generate a signer key pair (ssk, spk)
– From (mi ,d pki ) getΣi ← SIGN(mi ,d pki ) with 0 ≤ i ≤ q
– (m,d pk,Σ) ← A Sign(.,.,ssk,.)(spk), where m a non legitimate modification of a
certain mi for d pki = d pk.
– Return 1 if VerifSign(m,Σ, spk,d pk) = true and
for every i = 0...., q, we have
* d pki 6= d pk or
* m is not a correct modification of mi under the same key d pk = d pki
Now, by this experiment:
– if d pki 6= d pk for every i = 0...., q that means σ ∈Σ is obtain without using the
underlying signature scheme S.
– If m is not a correct modification of a certain mi under the same key d pk =
d pki .
Then ∃ j ∉ Ki such that m j 6= mi j , where Ki the set of the modifiable parts index
of mi . As S processes directly on the block mi j without using the underlying
chameleon hash function.
Then both these two states break S with some advantage.
129
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
• Transparency:
Notice that for a chameleon signatureΣ := (σ,ri1‖...‖riq )), the ri j parameters are only
used into the underlying chameleon hash function which and the semantically secure
of. Since, as seen in section 8.3.2, r ′1 = r1 ⊕E · (h⊕h′)⊕A ·e and r ′
2 = e ⊕X · (h⊕h′)⊕ r2
for a random e then these entropies H [r ′1|ch] = H [r ′
1] and H [r ′2|ch] = H [r ′
2].
• Accountability:
Here, for simplicity, we consider the accountability defined in [4] called weak-accountability
in [39] where a non honest signer is not able to accuse the honest delegate. For the
other direction, we do a slightly modification by appending the every message from a
additional private as it is done in [40].
Here the adversary A has access to a forge oracle FORGE which is able to give "legit-
imate" collision (m′i ,Σ′
i ) ← FORGE(mi ,Σi ), for i = 0, ..., q. at the end the A returns
(m,Σ, spk) a probably correct modified signature where m is the modification of a
mi . This means adversary have got an chameleon hash collision without private key.
8.8 Conclusion
In this chapter, we have proposed a new chameleon hash function based on the LPN Prob-
lem. The resulting chameleon hash function, is not non-interactive, easy to implement,
uses unforgeable standard hash function secure against chosen message attacks. For fur-
ther works, we will study the implementation of this scheme on embedded device and to
improve the efficiency and key size, we will investigate the use of Toeplitz matrices.
130
Conclusion et perspectives
“Comment la fin justifierait-elle les
moyens? Il n’y a pas de fin, seulement
des moyens à perpétuité.”
René Char
Cette thèse a été pour moi une riche exploration à travers les concepts mathématiques
de la cryptographie du futur. Cette exploration m’a permis de trouver de nouvelles appli-
cations de la théorie des codes correcteurs d’erreurs, et de la théorie des réseaux arithmé-
tiques.
Ceci trouve sa motivation du fait de l’existence d’un certain nombres d’algorithmes qui
une fois implémentés sur machines quantique permettrait de casser les problèmes sous-
jacents à la cryptographie basée sur la théorie des nombres. Entre autres les principaux
challenges étaient de concevoir des systèmes rapides, résistants de manière théorique aux
machines classiques et quantiques, et qui présentent aussi une sécurité pratique faces at-
taques connues selon la primitive étudiée.
Nos contributions ont été développées à travers les quatre derniers chapitres et ici nous
faisons le point ici sur les différents chapitres de cette thèse et proposons quelques per-
spectives.
Les attaques critiques en Cryptographie basée sur les Codes Dans ce chapitre nous
avons analysé la vulnérabilité des cryptosystèmes de McEliece, Niederreiter, et HyMES
face à plusieurs attaques critiques. Tous les schémas ont montré des faiblesses face à la
pluspart de ces attaques, HyMES contre toutes les attaques sauf l’attaque de messages
reliés. Ce résultat montre l’importance des conversions pour ces cryptosytèmes qui pro-
tègent contre les attaques critiques.
Nous avons proposé ici une nouvelle version de conversion spécifique aux schémas basés
sur les codes qui permet d’obtenir une plus petite redondance des données.
À l’avenir, il serait peut être intéressant de penser à réduire davantage le redondance
et de le nombre d’étapes de la conversion.
131
CHAPITRE 8. A LPN-BASED CHAMELEON HASH FUNCTION
Implémentations de Fonctions de Hachage et chiffrements par Flux basés sur les Codes
Nous avons étudié FSB, SFSB, RFSB, SYND, 2SC et XSYND et essayé d’améliorer leurs per-
formances en implémentation logicielle. Nous avons réussi à battre les résultats des im-
plémentations de référence disponibles.
Le problème du décodage par syndrome conduit à beaucoup d’idées de fonctions de
hachage et PRNGs.
À l’avenir, afin d’améliorer la mise en œuvre de ces Implémentations, il serait intéres-
sant de faire cette étude sur d’autres plate-formes telles que l’architecture ARMv8 ou des
processeurs qui prennent en charge des instructions vectorielles (AVX, AVX2) ou-bien im-
plémentation sur GPU.
Un chiffrement par flux et prouvé sûr: SBS nous avons proposé un nouveau chiffre-
ment par flux basé sur les codes, appelé SBS, en utilisant le parallélisme. Sa performance
est comparable à l’AES-CTR, il fonctionne à 7,8 cycles par byte, tandis que la performance
de l’AES-CTR est d’environ 7,59 cycles par byte. Nous avons effectué une analyse détaillée
de sécurité, en particulier, nous avons montré que SBS est sécurisé contre les attaques les
plus connues telles que les attaques ISD et attaques GBA.
Un PRNG basé sur des Problèmes de la Théorie des Réseaux Dans ce chapitre, nous
avons présenté un PRNG basé sur des problèmes de réseau arithmétique au pire des cas ,
en se basant sur la difficulté à résoudre ISIS. Nous avons prouvé l’indistingabilité de notre
PRNG d’une véritable séquence purement aléatoire, à condition que le SIS soit difficile
pour l’ensemble de paramètres appliqués.
Notre algorithme est de loin plus lent que les références telles que AES-CTR et requiert
beaucoup d’espace pour stocker les deux matrices. Il serait judicieux de penser à définir
le concept de mot régulier afin de ganger en vitesse sur les calculs.
A LPN-Based Chameleon Hash Function Dans ce chapitre nous avions proposé une
première fonction de Hachage caméléon basé sur le problème LPN. notre fonction de
hachage est non-interactive et est facile à implémenter. Cependant nous avons suggérer
l’utilisation de matrice uniformément aléatoire qui demande beaucoup d’espace mé-
moire. Nous pensons à l’avenir bâtir une telle fonction de hachage sur la version poly-
nomiale de LPN et/ou d’utiliser les matrices Toeplitz aléatoires tout en gardant le même
niveau de sécurité.
132
Bibliographie
[1] W. Alexi, B. Chor, O. Goldreich, and C. P. Schnorr. RSA and Rabin functions: certain
parts are as hard as the whole. SIAM J. Comput., 17(2):194–209, 1988. 89
[2] B. Applebaum, D. Cash, C. Peikert, and A. Sahai. Fast cryptographic primitives and
circular-secure encryption based on hard learning problems. In Shai Halevi, ed-
itor, CRYPTO, volume 5677 of Lecture Notes in Computer Science, pages 595–618.
Springer, 2009. 109
[3] G. Ateniese, D. H. Chou, B. De Medeiros, and G. Tsudik. Sanitizable sig-
natures. In Computer Security–ESORICS 2005, pages 159–177. Springer, 2005.
http://www.ics.uci.edu/ gts/paps/esorics-2005.pdf. 120
[4] G. Ateniese, D.H. Chou, B. de Medeiros, and G. Tsudik. Sanitizable signatures.
In Sabrinade Capitani di Vimercati, Paul Syverson, and Dieter Gollmann, editors,
Computer Security ESORICS 2005, volume 3679 of Lecture Notes in Computer Sci-
ence, pages 159–177. Springer Berlin Heidelberg, 2005. 126, 128, 130
[5] G. Ateniese and B. de Medeiros. Identity-based chameleon hash and applications.
In Financial Cryptography, pages 164–180. Springer, 2004. 120
[6] G. Ateniese and B.d Medeiros. On the key exposure problem in chameleon hashes.
In Security in Communication Networks, pages 165–179. Springer, 2005. 120
[7] D. Augot, M. Finiasz, P. Gaborit, S. Manuel, and N. Sendrier. SHA-3 proposal: FSB.
Submission to the SHA-3 NIST competition, 2008. 91
[8] D. Augot, M. Finiasz, and N. Sendrier. A Family of Fast Syndrome Based Crypto-
graphic Hash Functions. In E. Dawson and S. Vaudenay, editors, Mycrypt 2005, vol-
ume 3715, pages 64–83. Springer, 2005. 44, 91, 93, 95, 100, 101
[9] Daniel Augot, Matthieu Finiasz, and Nicolas Sendrier. A fast provably secure cryp-
tographic hash function. IACR Cryptology ePrint Archive, 2003:230, 2003. 45, 73, 76,
119
133
BIBLIOGRAPHIE
[10] Daniel Augot, Matthieu Finiasz, and Nicolas Sendrier. A family of fast syndrome
based cryptographic hash functions. In Ed Dawson and Serge Vaudenay, editors,
Progress in Cryptology - Mycrypt 2005, First International Conference on Cryptology
in Malaysia, Kuala Lumpur, Malaysia, September 28-30, 2005, Proceedings, volume
3715 of Lecture Notes in Computer Science, pages 64–83. Springer, 2005. 32
[11] A. Becker, A. May A. Joux, and A. Meurer. Decoding random binary linear codes
in 2(n/20) : How 1+1=0 improves information set decoding. Eurocrypt 2012. LNCS,
Springer-Verlag, 2012. 32, 40, 100
[12] M. Bellare and D. Micciancio. A new paradigm for collision-free hashing: incre-
mentality at reduced cost. In Proceedings of the 16th annual international confer-
ence on Theory and application of cryptographic techniques, EUROCRYPT’97, pages
163–192. Springer, 1997. 100
[13] M. Bellare, D. Pointcheval, A. Desai, and P. Rogaway. Relations among notions of
security for Public-Key Encryption schemes. Crypto ’98, LNCS 1462:26–45, 1998.
36, 62
[14] M. Bellare and P. Rogaway. Optimal asymmetric encryption. In EUROCRYPT, pages
92–111, 1994. 62, 69
[15] Mihir Bellare, Anand Desai, David Pointcheval, and Phillip Rogaway. Relations
among notions of security for public-key encryption schemes. In Hugo Krawczyk,
editor, Advances in Cryptology — CRYPTO ’98, volume 1462 of Lecture Notes in Com-
puter Science, pages 26–45. Springer Berlin Heidelberg, 1998. 36, 37
[16] Mihir Bellare and Amit Sahai. Non-malleable encryption: Equivalence between two
notions, and an indistinguishability-based characterization. In Michael Wiener, ed-
itor, Advances in Cryptology CRYPTO99, volume 1666 of Lecture Notes in Computer
Science, pages 519–536. Springer Berlin Heidelberg, 1999. 36
[17] C. Berbain, H. Gilbert, and J. Patarin. Quad: A Multivariate Stream Cipher with
Provable Security. J. Symb. Comput., 44(12):1703–1723, 2009. 47
[18] C. Berbain, H. Gilbert, and J. Patarin. QUAD: A multivariate stream cipher with
provable security. J. Symb. Comput., 44(12):1703–1723, 2009. 92, 95
[19] Côme Berbain, Henri Gilbert, and Jacques Patarin. Quad: A multivariate stream
cipher with provable security. J. Symb. Comput., 44(12):1703–1723, 2009. 8, 109,
116
134
BIBLIOGRAPHIE
[20] T. P. Berger, P.-L. Cayrel, P. Gaborit, and A. Otmani. Reducing Key Length of the
McEliece Cryptosystem. In Progress in Cryptology – Africacrypt’2009, volume 5580
of LNCS, pages 77–97. Springer, 2009. 89
[21] E. Berlekamp, R. McEliece, and H. van Tilborg. On the Inherent Intractability of
Certain Coding Problems. IEEE Trans. Inform. Theory, 24(3):384–386, 1978. 31, 89
[22] E. Berlekamp, R. McEliece, and H. van Tilborg. On the Inherent Intractability of
Certain Coding Problems. IEEE Transactions on Information Theory, 24(3):384–386,
1978. 52
[23] E. Berlekamp, R. McEliece, and H. van Tilborg. On the inherent intractability of
certain coding problems. IEEE Transactions on Information Theory, 24(2):384–386,
May 1978. 122
[24] D. J. Bernstein. Better price-performance ratios for generalized birthday attacks.
In Workshop Record of SHARCS’07: Special-purpose Hardware for Attacking Crypto-
graphic Systems (2007), 2007. 101
[25] D. J. Bernstein. Grover vs. McEliece. In PQCrypto, volume 6061 of LNCS, pages
73–80. Springer, 2010. 89
[26] D. J. Bernstein, J. Buchmann, and E. Dahmen. Post Quantum Cryptography.
Springer, 1st edition, 2008. 31, 89
[27] D. J. Bernstein, J. Buchmann, and E. Dahmen. Post-Quantum Cryptography.
Springer, 2008. 52
[28] D. J. Bernstein, T. Lange, and C. Peters. Attacking and defending the McEliece cryp-
tosystem. In J. Buchmann and J. Ding, editors, PQCrypto, volume 5299 of LNCS,
pages 31–46. Springer, 2008. 40
[29] D. J. Bernstein, T. Lange, C. Peters, and P. Schwabe. Really fast syndrome-
based hashing. In A. Nitaj and D. Pointcheval, editors, Progress in Cryptology–
AFRICACRYPT 2011, volume 6737 of LNCS, pages 134–152. Springer, 2011. http:
//cryptojedi.org/papers/#rfsb. 100
[30] Daniel J Bernstein, Tanja Lange, Christiane Peters, and Peter Schwabe. Really fast
syndrome-based hashing. In Progress in Cryptology–AFRICACRYPT 2011, pages
134–152. Springer, 2011. 45, 73, 78, 85, 119
[31] D.J. Bernstein, J. Buchmann, and E. Dahmen. Post Quantum Cryptography.
Springer Publishing Company, Incorporated, 2008. 116
135
BIBLIOGRAPHIE
[32] T. A. Berson. Failure of the McEliece Public-Key Cryptosystem Under Message-
Resend and Related-Message Attack. Crypto 97, 1997. 57, 58
[33] G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche. Sponge functions. In ECRYPT
hash workshop. Citeseer, 2007. 116
[34] E. Biham and A. Shamir. Differential cryptanalysis of des-like cryptosystems. In
Proceedings of the 10th Annual International Cryptology Conference on Advances in
Cryptology, CRYPTO ’90, pages 2–21. Springer, 1991. 116
[35] E. Biham and A. Shamir. Differential cryptanalysis of the full 16-round des. In
Proceedings of the 12th Annual International Cryptology Conference on Advances
in Cryptology, CRYPTO ’92, pages 487–496. Springer, 1993. 116
[36] B. Biswas and N. Sendrier. Mceliece Cryptosystem Implementation: Theory and
Practice. In PQCrypto, pages 47–62, 2008. 39, 52
[37] A. Blum, A. Kalai, and H. Wasserman. Noise-tolerant learning, the parity problem,
and the statistical query model. J. ACM, 50(4):506–519, July 2003. 122
[38] E. Brier, J.-S. Coron, T. Icart, D. Madore, H. Randriam, and M. Tibouchi. Efficient
indifferentiable hashing into ordinary elliptic curves. In Tal Rabin, editor, Advances
in Cryptology – CRYPTO 2010, volume 6223 of Lecture Notes in Computer Science,
pages 237–254. Springer Berlin Heidelberg, 2010. 119
[39] C. Brzuska, M. Fischlin, T. Freudenreich, A. Lehmann, M. Page, J. Schelbert,
D. Schröder, and F. Volk. Security of sanitizable signatures revisited. In Stanislaw
Jarecki and Gene Tsudik, editors, PKC 2009, volume 5443 of LNCS, pages 317–336,
Irvine, CA, USA, March 18-20, 2009, 2009. Springer, Berlin, Germany. 126, 128, 129,
130
[40] S. Canard and A. Jambert. On extended sanitizable signature schemes. In Josef
Pieprzyk, editor, Topics in Cryptology - CT-RSA 2010, volume 5985 of Lecture Notes
in Computer Science, pages 179–194. Springer Berlin Heidelberg, 2010. 126, 130
[41] R. Canetti, O. Goldreich, and S. Halevi. The random oracle methodology, revisited.
J. ACM, 51(4):557–594, July 2004. 30
[42] A. Canteaut and N. Sendrier. Cryptoanalysis of the original McEliece cryptosystem.
In ASIACRYPT, pages 187–199, 1998. 56
[43] P.-L. Cayrel, C.T. Gueye, O. Ndiaye, and R. Niebuhr. Critical attacks in code-based
cryptography. International Journal of Information and Coding Theory, 3(2):158–
176, 2015. 7, 8, 9, 40, 51
136
BIBLIOGRAPHIE
[44] P.-L. Cayrel and M. Meziani. Post-quantum cryptography: code-based signatures.
In Proceedings of the 2010 international conference on Advances in computer science
and information technology, pages 82–99. Springer-Verlag, 2010. 31
[45] P.-L. Cayrel, M. Meziani, and O. Ndiaye. Sbs: A fast and secure syndrome-based
stream cipher. USTHB, Algiers, Algeria, November 2-5, 2015, 2015. 8, 9
[46] P.-L. Cayrel, M. Meziani, O. Ndiaye, R. Lindner, and R. Silva. A Pseudorandom Num-
ber Generator Based on Worst-Case Lattice Problems. 2016. 8, 9
[47] P.-L. Cayrel, M. Meziani, O. Ndiaye, and Q. Santos. Efficient software implemen-
tations of code-based hash functions and stream-ciphers. In Çetin Kaya Koç, Si-
hem Mesnager, and Erkay Savas, editors, Arithmetic of Finite Fields, volume 9061 of
LNCS, pages 187–203. Springer International Publishing, 2015. 1, 7, 8, 9, 72, 90, 104,
105, 108, 115, 119
[48] Ivan B. Damgaard. A design principle for hash functions. In Advances in Cryptology
(CRYPTO ’89), pages 416–427, Berlin - Heidelberg - New York, August 1990. Springer.
43, 45
[49] I. Damgård and S. Park. Is public-key encryption based on lpn practical? IACR
Cryptology ePrint Archive, 2012:699, 2012. 121
[50] R. de Beer, D. van Ormondt, F. Di Cesare, D. Graveron-Demilly, DA Karras, and
Z. Starcuk. Accelerating batched 1D-FFT with a CUDA-capable computer. In Imag-
ing Systems and Techniques (IST), 2010 IEEE International Conference on, pages
446–451. IEEE, 2010. 115
[51] H. Dinh, C. Moore, and A. Russell. McEliece and Niederreiter cryptosystems that re-
sist quantum Fourier sampling attacks. In Proceedings of the 31st annual conference
on Advances in cryptology, CRYPTO’11. Springer-Verlag, 2011. 89
[52] A. Diouf and O. Ndiaye. Idempotent, zero divisors and nilpotent elements of the
quaternion and octonion rings over Fpk . Pioneer Journal of Algebra, Number Theory
and its Applications, 8(1-2):17–32, September & December 2014. 9
[53] A. Duc and S. Vaudenay. Progress in Cryptology – AFRICACRYPT 2013: 6th Interna-
tional Conference on Cryptology in Africa, Cairo, Egypt, June 22-24, 2013. Proceed-
ings, chapter HELEN: A Public-Key Cryptosystem Based on the LPN and the De-
cisional Minimal Distance Problems, pages 107–126. Springer Berlin Heidelberg,
Berlin, Heidelberg, 2013. 121
137
BIBLIOGRAPHIE
[54] D. Engelbert, R. Overbeck, and A. Schmidt. A summary of mceliece-type cryptosys-
tems and their security. J. Mathematical Cryptology, 1(2):151–199, 2007. 126
[55] M. Finiasz, P. Gaborit, and N. Sendrier. Improved fast syndrome based crypto-
graphic hash functions. In V. Rijmen, editor, ECRYPT Hash Workshop 2007, 2007.
44
[56] M. Finiasz, P. Gaborit, N. Sendrier, and S. Manuel. Sha-3 proposal: Fsb, Oct 2008.
Proposal of a hash function for the NIST SHA-3 competition. 73, 77, 119
[57] M. Finiasz and N. Sendrier. Security Bounds for the Design of Code-Based Cryptosys-
tems, pages 88–105. Springer Berlin Heidelberg, Berlin, Heidelberg, 2009. 40
[58] M. Finiasz and N. Sendrier. Security Bounds for the Design of Code-based Cryp-
tosystems. In Mitsuru Matsui, editor, Advances in Cryptology - ASIACRYPT 2009,
number 5912 in LNCS, pages 88–105. Springer, 2009. 101
[59] J.-B. Fischer and J. Stern. An efficient pseudo-random generator provably as secure
as syndrome decoding. In EUROCRYPT’96: Proc. of the 15th annual international
conference on Theory and application of cryptographic techniques, pages 245–255.
Springer, 1996. 74
[60] J.-B. Fischer and J. Stern. An efficient pseudo-random generator provably as secure
as syndrome decoding. In EUROCRYPT’96: Proc. of the 15th annual international
conference on Theory and application of cryptographic techniques, pages 245–255.
Springer, 1996. 89, 91, 92, 93, 94, 97
[61] Jean-Bernard Fischer and Jacques Stern. An efficient pseudo-random generator
provably as secure as syndrome decoding. In Ueli Maurer, editor, Advances in
Cryptology—EUROCRYPT 96, volume 1070 of Lecture Notes in Computer Science,
pages 245–255. Springer-Verlag, 12–16 May 1996. 76
[62] P.-A. Fouque and G. Leurent. Cryptanalysis of a hash function based on quasi-cyclic
codes. In Tal Malkin, editor, CT-RSA, volume 4964 of LNCS, pages 19–35. Springer,
2008. 45
[63] E. Fujisaki and T. Okamoto. Secure integration of asymmetric and symmetric en-
cryption schemes. Proc. of CRYPTO ’99, LNCS 1666:535–554, 1999. 63, 67
[64] P. Gaborit, C. Laudaroux, and N. Sendrier. SYND: a Very Fast Code-Based Cipher
Stream with a Security Reduction. In IEEE Conference, ISIT’07, pages 186–190, Nice,
France, July 2007. 1, 89, 90, 91, 92, 104
138
BIBLIOGRAPHIE
[65] P. Gaborit and G. Zémor. Asymptotic improvement of the gilbert-varshamov bound
for linear codes. volume abs/0708.4164, 2007. 89, 103
[66] Philippe Gaborit, Cedric Lauradoux, and Nicolas Sendrier. Synd: a fast code-based
stream cipher with a security reduction. In Information Theory, 2007. ISIT 2007.
IEEE International Symposium on, pages 186 –190, 24-29 2007. 8, 111, 116
[67] Philippe Gaborit, Cedric Lauradoux, and Nicolas Sendrier. Synd: a very fast code-
based cipher stream with a security reduction. In Proceedings of the 2007 IEEE
International Symposium on Information Theory - ISIT 2007, pages 186–190, Nice,
France, june 2007. 46, 74, 79
[68] H. Gilbert, M. J. B. Robshaw, and Y. Seurin. How to Encrypt with the LPN Problem,
pages 679–690. Springer Berlin Heidelberg, Berlin, Heidelberg, 2008. 122
[69] O. Goldreich, S. Goldwasser, and S. Micali. How to construct random functions. J.
ACM, 33(4):792–807, August 1986. 122
[70] O. Goldreich, R. Impagliazzo, L. Levin, R. Venkatesan, and D. Zuckerman. Security
preserving amplification of hardness. In Proceedings of the 31st Annual Symposium
on Foundations of Computer Science, SFCS ’90, pages 318–326 vol.1. IEEE Computer
Society, 1990. 96
[71] O. Goldreich and L. A. Levin. A hard-core predicate for all one-way functions. In
Proceedings of the twenty-first annual ACM symposium on Theory of computing,
STOC ’89, pages 25–32. ACM, 1989. 34, 98
[72] Oded Goldreich and Leonid A. Levin. A hard-core predicate for all one-way func-
tions. In STOC, pages 25–32. ACM, 1989. 113
[73] S. Goldwasser, S. Micali, and R.L. Rivest. A digital signature scheme secure against
adaptive chosen-message attacks. SIAM J. Comput., 17(2):281–308, April 1988. 126
[74] J. D. Golic. Cryptanalysis of alleged a5 stream cipher. In Proceedings of the 16th
annual international conference on Theory and application of cryptographic tech-
niques, EUROCRYPT’97, pages 239–255. Springer, 1997. 116
[75] J. Håstad. Solving simultaneous modular equations of low degree. SIAM J. Comput.,
17(2):336–341, 1988. 54
[76] J. Håstad, R. Impagliazzo, L. A. Levin, and M. Luby. Construction of a pseudo-
random generator from any one-way function. SIAM Journal on Computing, 28:12–
24, 1993. 122
139
BIBLIOGRAPHIE
[77] S. Heyse, I. von Maurich, and T. Güneysu. Smaller keys for code-based cryptogra-
phy: Qc-mdpc mceliece implementations on embedded devices. In Proceedings of
the 15th International Conference on Cryptographic Hardware and Embedded Sys-
tems, CHES’13, pages 273–292, Berlin, Heidelberg, 2013. Springer-Verlag. 37
[78] J. Hoffstein, J. Pipher, and J. H. Silverman. Algorithmic Number Theory: Third In-
ternational Symposiun, ANTS-III Portland, Oregon, USA, June 21–25, 1998 Proceed-
ings, chapter NTRU: A ring-based public key cryptosystem, pages 267–288. Springer
Berlin Heidelberg, Berlin, Heidelberg, 1998. 41
[79] J. Hong and P. Sarkar. Rediscovery of time memory tradeoffs. Cryptology ePrint
Archive, Report 2005/090, 2005. http://eprint.iacr.org/. 116
[80] N. J. Hopper and M. Blum. Secure Human Identification Protocols, pages 52–66.
Springer Berlin Heidelberg, Berlin, Heidelberg, 2001. 122
[81] H. Imai and K. Kobara. Semantically Secure McEliece Public-Key Cryptosystems -
Conversions for McEliece PKC. Proc. of 4th International Workshop on Practice and
Theory in Public Key Cryptosystems (PKC 01), pages 19–35, 2001. 40, 60, 61
[82] H. Imai and K. Kobara. Semantically Secure McEliece Public-Key Cryptosystems -
Conversions for McEliece PKC. Proc. of 4th International Workshop on Practice and
Theory in Public Key Cryptosystems (PKC 01), pages 19–35, 2001. 64, 66, 67, 69
[83] Russell Impagliazzo and Moni Naor. Efficient cryptographic schemes provably as
secure as subset sum. J. Cryptology, 9(4):199–216, 1996. 113
[84] B. S. Kaliski. Elliptic Curves and Cryptography: A Pseudorandom Bit Generator and
Other Tools. Phd thesis, MIT, Cambridge, MA, USA, 1988. 89
[85] E. Käsper and P. Schwabe. Faster and timing-attack resistant AES-GCM. In
Christophe Clavier and Kris Gaj, editors, Cryptographic Hardware and Embedded
Systems – CHES 2009, volume 5747 of LNCS, pages 1–17. Springer, 2009. 104
[86] J. Katz and J.S. Shin. Advances in Cryptology - EUROCRYPT 2006: 24th Annual In-
ternational Conference on the Theory and Applications of Cryptographic Techniques,
St. Petersburg, Russia, May 28 - June 1, 2006. Proceedings, chapter Parallel and Con-
current Security of the HB and HB + Protocols, pages 73–87. Springer Berlin Hei-
delberg, Berlin, Heidelberg, 2006. 121
[87] A. Kerckhoffs. La cryptographie militaire. des sciences militaires, IX:161–191, 1983.
3
140
BIBLIOGRAPHIE
[88] K. Kobara and H. Imai. Semantically secure McEliece public-key cryptosystems -
conversions for McEliece PKC. In In Proc. of 4th International Workshop on Practice
and Theory in Public Key Cryptosystems (PKC ’01), pages 19–35, 2001. 7
[89] K. Kobara and H. Imai. On the One-Wayness Against Chosen-Plaintext Attacks of
the Loidreau’s Modified McEliece PKC. IEEE Transactions on Information Theory,
49(12):3160–3168, 2003. 51, 62
[90] H. Krawczyk and T. Rabin. Chameleon hashing and signatures. In Proc. of NDSS,
pages 143–154. Citeseer, 2000. 120
[91] Y.X. Li, R.H. Deng, and X.M. Wang. The equivalence of McEliece’s and niederreiter’s
public-key cryptosystems. IEEE Trans. Inform. Theory, 40:271–273, 1994. 38
[92] M. Luby and C. Rackoff. How to construct pseudorandom permutations from pseu-
dorandom functions. SIAM J. Comput., 17(2):373–386, April 1988. 122
[93] V. Lyubashevsky, D. Micciancio, C. Peikert, and A. Rosen. Swifft: A modest proposal
for fft hashing. In Kaisa Nyberg, editor, Fast Software Encryption, volume 5086 of
Lecture Notes in Computer Science, pages 54–72. Springer Berlin Heidelberg, 2008.
119
[94] Vadim Lyubashevsky and Daniele Micciancio. Generalized compact knapsacks are
collision resistant. In Michele Bugliesi, Bart Preneel, Vladimiro Sassone, and Ingo
Wegener, editors, ICALP (2), volume 4052 of Lecture Notes in Computer Science,
pages 144–155. Springer, 2006. 108
[95] Vadim Lyubashevsky, Daniele Micciancio, Chris Peikert, and Alon Rosen. Swifft:
A modest proposal for fft hashing. In Kaisa Nyberg, editor, FSE, volume 5086 of
Lecture Notes in Computer Science, pages 54–72. Springer, 2008. 1, 109, 110, 112,
115, 116
[96] A. May, A. Meurer, and E. Thomae. Decoding random linear codes in O(20.054n).
In Proceedings of the 17th international conference on The Theory and Application
of Cryptology and Information Security, ASIACRYPT’11, pages 107–124. Springer-
Verlag, 2011. 40
[97] R. McEliece. A Public-Key Cryptosystem Based on Algebraic Coding Theory. The
Deep Space Network Progress Report, DSN PR 42–44, 1978. http://ipnpr.jpl.
nasa.gov/progressreport2/42-44/44N.PDF. 18, 38, 52
[98] C. Mei, H. Jiang, and J. Jenness. CUDA-based AES parallelization with fine-tuned
GPU memory utilization. In Parallel & Distributed Processing, Workshops and Phd
141
BIBLIOGRAPHIE
Forum (IPDPSW), 2010 IEEE International Symposium on, pages 1–7. IEEE, 2010.
115
[99] Ralph C. Merkle. Secrecy, authentication, and public key systems. PhD thesis, Stan-
ford University, 1979. 43
[100] Ralph C. Merkle. A certified digital signature. In Advances in Cryptology (CRYPTO
’89), pages 218–238, Berlin - Heidelberg - New York, August 1990. Springer. 43
[101] M. Meziani, P.-L. Cayrel, and S. M. Alaoui El Yousfi. 2SC: An Efficient Code-Based
Stream Cipher. In ISA, volume 200 of Communications in Computer and Informa-
tion Science, pages 111–122. Springer, 2011. 1, 89, 90, 104, 105
[102] M. Meziani, Ö. Dagdelen, P.-L. Cayrel, and S.M.Y. Alaoui. S-FSB: An improved vari-
ant of the FSB hash family. In Tai-Hoon Kim, Hojjat Adeli, Rosslin John Robles, and
Maricel O. Balitanas, editors, Information Security and Assurance - International
Conference, ISA 2011, Brno, Czech Republic, August 15-17, 2011. Proceedings, vol-
ume 200 of Communications in Computer and Information Science, pages 132–145.
Springer, 2011. 44, 73, 77, 119
[103] M. Meziani, G. Hoffmann, and P.-L. Cayrel. Improving the performance of the SYND
stream cipher. In Aikaterini Mitrokotsa and Serge Vaudenay, editors, AFRICACRYPT,
volume 7374 of LNCS, pages 99–116. Springer, 2012. 74, 81, 108
[104] Mohammed Meziani, Pierre-Louis Cayrel, and Sidi Mohamed El Yousfi Alaoui. 2SC:
An efficient code-based stream cipher. In Tai-Hoon Kim, Hojjat Adeli, Rosslin John
Robles, and Maricel O. Balitanas, editors, ISA, volume 200 of Communications in
Computer and Information Science, pages 111–122. Springer, 2011. 74, 80
[105] Daniele Micciancio. Generalized compact knapsacks, cyclic lattices, and efficient
one-way functions. In Computational Complexity. Springer, 2007. 108
[106] Daniele Micciancio and Oded Regev. Worst-case to average-case reductions based
on gaussian measures. SIAM J. Comput., 37(1):267–302, 2007. 110, 112, 113
[107] A. Miklós. Generating hard instances of lattice problems. Electronic Colloquium on
Computational Complexity (ECCC), 3(7), 1996. 33, 108, 113
[108] L. Minder and A. Sinclair. The extended k-tree algorithm. In Proc. of the twenti-
eth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA’09, pages 586–595,
2009. 101
142
BIBLIOGRAPHIE
[109] R. Misoczki, J. P. Tillich, N. Sendrier, and P. S. L. M. Barreto. Mdpc-mceliece: New
mceliece variants from moderate density parity-check codes. In Information The-
ory Proceedings (ISIT), 2013 IEEE International Symposium on, pages 2069–2073,
July 2013. 37
[110] F. Muller. Differential attacks and stream ciphers. In The State of the Art of Stream
Ciphers, Workshop Record, ECRYPT Network of Excellence in Cryptology, pages 133–
146, 2004. 116
[111] M. Naor and M. Yung. Public-key cryptosystems provably secure against chosen
ciphertext attacks. In Proceedings of the Twenty-second Annual ACM Symposium on
Theory of Computing, STOC ’90, pages 427–437, New York, NY, USA, 1990. ACM. 35
[112] O. Ndiaye. One cyclic codes over Fpk + vFpk + v2Fpk + ... + v rFpk . CoRR,
abs/1511.01955, 2015. 9
[113] R. Niebuhr. Application of Algebraic-Geometric Codes in Cryptography. Verlag Dr.
Müller, 2006. 55
[114] R. Niebuhr and P.-L. Cayrel. Broadcast attacks against code-based encryption
schemes. In WEWORC, 2011. 54, 55, 66, 69
[115] R. Niebuhr, P.-L. Cayrel, and J. Buchmann. Improving the efficiency of Generalized
Birthday Attacks against certain structured cryptosystems. In WCC 2011, LNCS,
pages 163–172. Springer, Apr 2011. 102
[116] H. Niederreiter. Knapsack-type Cryptosystems and Algebraic Coding Theory. Prob-
lems of Control and Information Theory, 15(2):159–166, 1986. 38, 52
[117] N. Patterson. The algebraic decoding of goppa codes. IEEE Trans. Inf. Theor.,
21(2):203–207, September 2006. 18
[118] Chris Peikert and Brent Waters. Lossy trapdoor functions and their applications. In
Richard E. Ladner and Cynthia Dwork, editors, STOC, pages 187–196. ACM, 2008.
116
[119] C. Peters. Information-Set Decoding for Linear Codes over Fq . In PQCrypto, pages
81–94, 2010. 40
[120] D. Pointcheval. Chosen-Ciphertext security for any One-Way Cryptosystem. In
Proc. of PKC 2000, LNCS 1751:129–146, 2000. 64, 67
[121] E. Prange. The use of information sets in decoding cyclic codes. In Information
Theory, IRE Trans., volume 8, pages 5–9, 1962. 40, 100
143
BIBLIOGRAPHIE
[122] C. Rackoff and D. Simon. Non-interactive zero-knowledge proof of knowledge
and chosen ciphertext attack. volume 576 of LNCS. in Advances in Cryptology-
CRYPTO’91, 1991. 60
[123] O. Regev. On lattices, learning with errors, random linear codes, and cryptography.
In Proceedings of the Thirty-seventh Annual ACM Symposium on Theory of Comput-
ing, STOC ’05, pages 84–93, New York, NY, USA, 2005. ACM. 121, 122
[124] M.-J. O. Saarinen. Linearization Attacks Against Syndrome Based Hashes. In K. Sri-
nathan, C. Pandu Rangan, and Moti Yung, editors, INDOCRYPT, volume 4859 of
LNCS, pages 1–9. Springer, 2007. 44, 45
[125] M.-J. O. Saarinen. Linearization attacks against syndrome based hashes. In K. Sri-
nathan, C. Pandu Rangan, and Moti Yung, editors, INDOCRYPT, volume 4859 of
LNCS, pages 1–9. Springer, 2007. 100
[126] N. Sendrier. Code-based cryptography. In Encyclopedia of Cryptography and Secu-
rity (2nd Ed.), pages 215–216. Springer, 2011. 31
[127] P. W. Shor. Algorithms for Quantum Computation: Discrete Logarithms and Factor-
ing. In SFCS ’94: Proc. of the 35th Annual Symposium on Foundations of Computer
Science, pages 124–134. IEEE Computer Society, 1994. 89
[128] P. W. Shor. Polynomial-Time Algorithms for Prime Factorization and Discrete Loga-
rithms on a Quantum Computer. SIAM Journal on Computing, 26:1484–1509, 1995.
3, 52
[129] J. Stern. A method for finding codewords of small weight. In G. D. Cohen and
J.Wolfmann, editors, Coding Theory and Applications, volume 388 of Lecture Notes
in Computer Science, pages 106–113. Springer, 1998. 40
[130] H.-M. Sun. Enhancing the security of the mceliece public-key cryptosystem. J. Inf.
Sci. Eng., 16(6):799–812, 2000. 62
[131] H.-M. Sun. Further cryptanalysis of the mceliece public-key cryptosystem. IEEE
Communications Letters, 4(1):18–19, Jan 2000. 60
[132] A. Vardy. The intractability of computing the minimum distance of a code. Infor-
mation Theory, IEEE Transactions on, 43(6):1757–1766, Nov 1997. 32
[133] E. R. Verheul, J. M. Doumen, and H. CA van Tilborg. Sloppy alice attacks! adaptive
chosen ciphertext attacks on the mceliece public-key cryptosystem. In Informa-
tion, Coding and Mathematics, pages 99–119. Springer, 2002. 60
144
BIBLIOGRAPHIE
[134] D. Wagner. A Generalized Birthday Problem. In Yung [137], pages 288–303. 45, 101
[135] David Wagner. A generalized birthday problem. In Yung [137], pages 288–303. 110,
116
[136] A. C. Yao. Theory and applications of trapdoor functions (extended abstract). In
FOCS, pages 80–91. IEEE Computer Society, 1982. 96
[137] M. Yung, editor. Advances in Cryptology - CRYPTO 2002, 22nd Annual International
Cryptology Conference, Santa Barbara, California, USA, August 18-22, 2002, Pro-
ceedings, volume 2442 of LNCS. Springer, 2002. 145
[138] Fangguo Zhang, Reihaneh Safavi-Naini, and Willy Susilo. Id-based chameleon
hashes from bilinear pairings. IACR Cryptology ePrint Archive, 2003:208, 2003. 120
145
Résumé
Nom et prénoms du Candidat : Ousmane NDIAYE
Protocoles Post-Quantiques et Attaques Critiques
Les cryptosystèmes basés sur la théorie des codes et ceux basés sur la théorie des réseaux
font partie des familles de cryptographies qui resiteraient à la machine quantique.
Dans cette thèse, nous avons apporté quelques contributions à la cryptographie (symétrique
et asymétrique) basée sur les codes et sur les réseaux.
Entre autres nous avons regardé les attaques critiques face à la cryptographie basée sur
les codes en proposant de façon concrète des modèles d’attaque et donnant une conver-
sion IND-CCA2 spécifique de ces schémas.
Nous avons aussi amélioré la performance logicielle de pratiquement toutes les fonctions
de hachage, PRNG et les schémas de chiffrement par flux basés sur les codes en utilisant
les extensions SIMD. Nous avons réussi à donner de nouveaux PRNG et Chiffrement par
flux basés respectivement sur les réseaux et sur les codes. Enfin nous avons proposé une
fonction de hachage caméléon basée sur les codes ainsi que la signature caméléon corre-
spondante. Tous les schémas que nous avons proposés sont dotés de preuves de sécurité
théorique et pratique.
Mots clés : Cryptographie basée sur les Codes, Cryptographie basée sur les Réseaux, At-
taques Critiques, CCA2, Preuve de sécurité, Modèle Oracle Aléatoire, implémentation
logicielle, chiffrement par flux, décodage par Syndrome, NP-Complétude, Générateur de
nombres pseudo-aléatoire, fonction de hachage caméléon.
Abstract
Full Name of the Candidate : Ousmane NDIAYE
Post-Quantum Protocols and Critical Attacks
Code-based Cryptography and and Lattice-Based cryptography belong to the cryptogra-
phy’s family which are able to resist against the quantum machine.
In this thesis, we provide some contributions in cryptography(symetric and asymetric)
based on Codes et Lattices.
Indeed, he have studied critical attacks against the code-based cryptography by providing
some concrete attack models and giving an IND-CCA2 specific conversion for schemes.
We also have improved the software implementation of several code-based hash func-
tions , PRNGs and stream ciphers by using the XMM registers. We succeed to build new
PRNGs and stream ciphers based respectively on coding theory and lattice theory. Fi-
nally we provide a chameleon hash function based codes et the corresponding signature
scheme.
All schemes that we have proposed are provided with theoretical and practical security
proofs.
Mots clés : Code-based cryptography, lattice-based cryptography, Critical attacks, CCA2,
Provable security, Random oracle model, software implementations, Stream ciphers, Syn-
drome decoding, NP-Completeness, Pseudorandom number generator, chameleon hash
functions.
BIBLIOGRAPHIE
148