Société de Sécurité Informatique - Audit Firewall Appliances
La sécurité informatique - La sécurité des informations

La cryptographie à algorithmes symétriques


Qu'est-ce que c'est ?


La cryptographie à algorithmes symétriques utilise la même clé pour les processus de codage et de décodage; cette clé est le plus souvent appelée "secrète" (en opposition à "privée") car toute la sécurité de l'ensemble est directement liée au fait que cette clé n'est connue que par l'expéditeur et le destinataire. La cryptographie symétrique est très utilisée et se caractérise par une grande rapidité (cryptage à la volée, "on-the-fly"), des implémentations aussi bien software (Krypto Zone, firewalls logiciels type Firewall-1 et VPN-1 de Checkpoint) que hardware (cartes dédiées, processeurs cryptos 8 à 32 bits, algorithmes cablés...) ce qui accélère nettement les débits et autorise son utilisation massive.
Ce type de cryptographie fonctionne habituellement suivant deux procédés différents, le cryptage par blocs et le cryptage de "stream" (en continu).

Le chiffrement par flot


Pour comprendre le cryptage en continu, il suffit de connaître par exemple les videos au format RealVideo très répandues sur internet : on visualise l'image au fur et à mesure que les données sont reçues. Le principe est le même dans le cas de nos "stream-ciphers" : le cryptage est effectué bit-à-bit sans attendre la réception complète des données à crypter.
Une technique de chiffrement, du nom de "One-Time Pad" est utilisé pour chiffrer les flux. C'est le chiffrement inconditionnel le plus sûr. Pour cela, on a besoin d'une chaîne aléatoire de la même longueur que le message d'origine, ce qui n'est pas partique. Le but d'un stream cipher est de générer une chaîne aléatoire à partir d'une clé de longueur courte.
Une autre technique consiste à "xorer", c'est-à-dire à appliquer un OU exclusif (XOR) au message avec un autre message prédéfini. Bien entendu, cela nécessite que le destinataire (la personne qui décrypte) connaisse le message prédéfini et donc cela rajoute de la complexité au schéma général.
Les stream-ciphers sont utilisés aujourd'hui par différentes applications. Pour chiffrer les flux, l'algorithme RC4 est très utilisé.

Le chiffrement par bloc


Quatre modes de chiffrement par bloc sont utilisés : Electronic CodeBook (ECB), Cipher Block Chaining (CBC), Cipher FeedBack (CFB) ou Output FeedBack (OFB).
Le cryptage en blocs (block-cipher) est au contraire beaucoup plus utilisé et permet une meilleure sécurité. Les algorithmes concernés sont également plus connus (DES, AES, Skipjack...); leur nom leur vient du fait qu'ils s'appliquent à des blocs de données et non à des flux de bits (cf. stream-ciphers). Ces blocs sont habituellement de 64 bits mais cela dépend entièrement de l'algorithme utilisé et de son implémentation. De même, la taille de la clé varie suivant l'algorithme et suivant le niveau de sécurité requis; ainsi, un cryptage de 40 bits (c'est-à-dire utilisant une clé longue de 40 bits) pourra être déclaré faible puisque aisément cassable. Un cryptage de 56 bits (qui est le standard dans le cas du DES) sera qualifié de moyen puisque cassable mais nécessitant pas mal de moyens pour être exploitable (vis-à-vis du temps requis et de la valeur des données). Enfin, un cryptage de 128 bits (valeur standard utilisée par Rijndael alias AES) est plutôt fort à l'heure actuelle.
Rappelons à cette occasion que la Loi de Moore prévoit le doublement de la puissance de calcul des processeurs tous les 18 mois (Loi toujours vérifiée de la fin des années 70 à nos jours). Sans entrer dans les détails, il faut savoir que le cassage de cryptés nécessite essentiellement des ressources processeur, RAM et éventuellement ROM ou disque dur si le cassage se fait par précalcul. L'évolution générale est donc extrêmement rapide, sans parler des ordinateurs plus perfectionnés (scientifiques ou autres), à architectures parallèles, ou distribuées... Il reste donc relatif de parler de sécurité absolue, en tout cas en ce qui concerne la cryptographie symétrique.
Les quatres modes cités précédement sont plus ou moins indépendants de l'algorithme choisi. Toutefois, tout les algorithmes ne permettent pas d'utiliser tout les modes possibles. Pour mieux comprendre, voyons ces modes plus en détails. Pour désigner le processus de cryptage simple (tel que décrit précédement), on utilisera la notation suivante :

où K désigne la clé utilisée par l'algorithme, E désigne le cryptage en lui-même, M (ou m, mi) désigne le message en clair (c'est-à-dire un bloc) et C (ou c, ci) le chiffré résultant.

- Le mode Electronic CodeBook (ECB) est le plus simple des modes et s'applique aux block ciphers. Il revient à crypter un bloc indépendamment des autres; cela permet entre autre de crypter suivant un ordre aléatoire (bases de données, etc...) mais en contre-partie, ce mode est très vulnérable aux attaques. Il est par exemple possible de recenser tous les cryptés possibles (code books) puis par recoupements et analyses statistiques recomposer une partie du message original sans avoir tenté de casser la clé de chiffrement. Il demeure que si la clé fait 128 bits ou plus, cette attaque n'es pas exploitable en pratique de nos jours.
Cette technique est sensible à l'inversion ou la duplication de blocs sans que le destinataire s'en aperçoive. On peut l'utiliser pour pipeliner du hardware.

- Le mode Cipher Block Chaining (CBC) peut-être utilisé par les algorithmes en bloc. C'est d'ailleurs le mode le plus courant. Il permet d'introduire une complexité supplémentaire dans le processus de cryptage en créant une dépendance entre les blocs successifs; autrement dit, le cryptage d'un bloc va être -d'une manière ou d'une autre- lié à ou aux blocs/chiffrés précédents. Le schéma de base sera le suivant :

Le message initial M est divisé en n blocs mi conformément aux spécifications de l'algorithme (par exemple en blocs de 64 bits). Chaque bloc donne un chiffré correspondant (ci) après cryptage suivant le même algorithme E utilisant la même clé K. Comme expliqué ci-dessus, le mode CBC introduit une dépendance entre deux cycles de cryptage : le chiffré obtenu au rang i-1 est utilisé pour obtenir le chiffré du rang i. Concrètement, ce chiffré ci-1 subit un XOR avec le bloc mi.
On peut se demander ce qu'il se passe lors du premier cycle d'encodage, lorsqu'il n'y a pas encore de chiffré à xorer avec notre premier bloc. La réponse est que l'on utilise une valeur par défaut prédéfinie appelée Vecteur d'Initialisation (Initialization Vector, IV). Ce vecteur d'initialisation change à chaque session, et doit être transmis au destinataire. Par contre, il n'est pas nécessaire de le chiffrer avant de l'envoyer : il peut être connu de l'adversaire. Il évite l'attaque sur le mode ECB en multipliant la taille de la base de données précalculées. Il ne faut néanmoins pas négliger l'importance de ce vecteur qui peut constituer une faille sérieuse s'il est mal choisi et compromettre ainsi l'intégrité de l'ensemble malgré l'utilisation de composantes fortes (algos, clés, etc).
Le déchiffrement est auto-synchonisé comme le mode EBC. Si on pert un bloc de chiffré, on pourra se resynchoniser en ne perdant que deux blocs.

- Le mode Cipher FeedBack (CFB) est un mode destiné aux block ciphers dans le but d'en autoriser une utilisation plus souple, qui s'apparente plus à celle des algorithmes en continu. On peut le considérer comme un intermédiaire entre les deux. En effet, en partant d'un algorithme en bloc utilisant une longueur standard de n bits/blocs, le mode CFB va permettre de crypter des blocs dont la longueur pourra varier de n à 1 bits/blocs. Sachant que dans ce dernier cas, il serait plus économique en calculs d'utiliser directement un algorithme en continu. Quant au cas où la longueur est celle de l'algorithme (à savoir n), le schéma de CFB se simplifie et ressemble quelque peu à celui de CBC (à quelques nuances près) :

- Le mode Output FeedBack (OFB) est une variante de mode CFB précédemment abordé. Il est d'ailleurs parfois appelé internal feedback. Il présente beaucoup de problèmes de sécurité et il est peu conseillé sauf dans le cas où sa longueur est égale à celle de l'algorithme utilisé.

SoGoodToBe

Relu par Pierre Alain Fouque

Partagez cet article

Envoyer cet article par Email ! Imprimer cet article ! Exporter cet article en PDF ! Facebook Twitter Google Bookmarks

SecuriteInfo.com est une entreprise française de sécurité informatique. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités.
Twitter SecuriteInfo.com
Facebook SecuriteInfo.com
BOINC calcul scientifique
© 2004-2016 - Tous droits réservés - SecuriteInfo.com