Rapport de stage introduction sur la cryptographie, tutoriel & guide de travaux pratiques en pdf.
Deux méthodes pour chiffrer en clé secrète
Les deux méthodes les plus usitées en cryptographie à clé secrète sont le chiffrement à flot et le chiffrement par blocs.
Chiffrement à flot
Le principe des algorithmes à flots informatiquement sûr repose sur le partage d’une clé K de longueur constante et non sur le partage d’une clé de longueur égale à celle du message à chiffrer. L’algorithme utilisé chiffre « à la volée » le flot de message clair par un ou-exclusif bit à bit (ou une opération similaire) avec une suite chiffrante (ki) pour produire un flot de texte chiffré, comme dans le cas du chiffrement de Vernam. La suite chiffrante k= (ki) est produite par un générateur pseudo-aléatoire G à partir de la clé K et d’un vecteur d’initialisation IV.
Chiffrement par blocs
Le chiffrement par bloc s’oppose à celui par flot. Contrairement à ce dernier, il ne chiffre pas bit à bit, mais découpe des blocs entiers de bits pour les passer à la moulinette des algorithmes. On peut ainsi schématiser le circuit emprunté par les données. Pour calculer la valeur chiffrée C, le bloc de bits M est utilisé avec une clé K de longueur définie, par l’algorithme E.
Ce circuit peut être plus ou moins complexe en fonction du mode employé. Il en existe quatre pour le chiffrement par bloc. Ces modes ont été définis lors de la mise en place de Data Encryption Standard. Il est possible d’en implémenter plusieurs sur un même support mais cela n’est pas une obligation.
Mode dictionnaire
L’Electronic Code Book mode est le plus simple des quatre présentés. Il traite chaque bloc indépendamment des autres, ce qui permet d’insérer un ordre aléatoire de traitement. En contre partie, il se voit plus sensible aux attaques par regroupement et analyse statistique.
Mode chainage de blocs chiffrés
Mode le plus couramment utilisé, le Cipher Block Chaining mode permet d’augmenter la sécurité en introduisant une complexité supplémentaire dans le processus de chiffrement en créant une dépendance entre les blocs successifs.
Comme le montre la figure 1.06, chaque m[i] est transformée avant le chiffrement. On applique pour le Chiffrement : C[0]=E(m[0]^IV) (1.02) C[n] = E (m[n] ^ C [n-1]), si (n > 0) (1.03) Où représente ^ désigne le ou exclusif (XOR), et C [i-1] le résultat du bloc précédent venant d’être chiffré. Pour le premier bloc, il est nécessaire d’employer un vecteur d’initialisation noté IV, puisqu’il n’y a pas de valeur C-1 existante. Ce vecteur est constitué d’un bloc de bits aléatoires qui sera transmis au destinataire du message, afin de pouvoir effectuer le déchiffrement. Il peut être transmis publiquement sans que cela n’affecte la sécurité.
Mode de rebouclage chiffré
Le Cipher Feedback mode se rapproche d’un algorithme par flot. Le message M est divisé en sous blocs m[i] de taille allant de 1 à n bits. Contrairement au mode précédent, L’opération XOR est appliquée entre le bloc de texte clair et le résultat précédent chiffré à nouveau par la fonction de chiffrement. Pour le Chiffrement: I[0] = VI I[n]=C[n-1],si(n>0) (1.04) C[n] = m[n] ^ E (I[n]) (1.05).