Chiffrement par flot ou chiffrement par flux

    Les algorithmes de chiffrement par flot tirent leur origine du principal système de chiffrement offrant une confidentialité absolue, le chiffrement de Vernam (ou One Time Pad). Celui-ci consiste à chiffrer un message de n bits à  l’aide d’une clé de n bits au moyen d’un simple « ou exclusif ».
    Cependant, cela n’est valable que si plusieurs conditions sont vérifiées :

    • La clé doit être aussi longue que le message clair ;
    • La clé doit être une chaîne de bits parfaitement aléatoire ;
    • La clé ne doit être utilisée qu’une fois.

    Ces trois conditions font du chiffrement de Vernam une méthode difficile à utiliser en pratique.

     

    En effet, ces conditions imposent que le destinataire d’un message chiffré connaisse
    Préalablement la clé qui est aussi longue que le message. De plus cette clé ne pouvant être réutilisée sans compromettre la sécurité du système, il est nécessaire que le destinataire possède à l’avance suffisamment de clés, ou puisse recevoir les clés utilisées par un canal sûr.

     

    Un chiffrement par flot se présente souvent sous la forme d'un générateur de nombres pseudo-aléatoires avec lequel on opère un XOR entre un bit à la sortie du générateur et un bit provenant des données.

    La définition des algorithmes de chiffrement par flot induit les propriétés suivantes :

    • La suite chiffrante ne dépend pas du message clair, mais uniquement de la clé.
    • Il est possible de chiffrer des messages de tailles variables.
    • Le chiffrement et le déchiffrement s’effectuent de la même manière, puisque le « ou exclusif» est une opération involutive ;
    • L’impact de la modification d’une partie du message chiffré pendant la transmission du message est limité à cette partie du message déchiffré.

     

    L’étude des algorithmes de chiffrement à flot se résume généralement à l’étude du générateur de nombres.
    Un chiffrement par bloc peut être converti en un chiffrement par flot grâce à un mode opératoire qui permet de chaîner plusieurs blocs et traiter des données de taille quelconque.

     

    Une des principales caractéristiques des algorithmes de chiffrement à flot est qu’ils permettent d’atteindre un très haut niveau de performances. Ces performances s’expriment soit en termes de vitesse de chiffrement soit en termes d’efficacité matérielle. On distingue deux principaux types d’algorithmes à flot :

    • Les algorithmes adaptés à une implantation logicielle, qui peuvent atteindre des vitesses de chiffrement très élevées (de l’ordre de plusieurs Gbits/s sur le processeur d’un ordinateur standard).
    • Les algorithmes adaptés à une implantation matérielle, dont les implantations sont efficaces en termes de taille ou de consommation électrique.

     

    Il existe différents types de chiffrement par flot.

    RC4 (utilisé notamment par le protocole WEP du Wi-Fi)
    E0 (utilisé par le protocole Bluetooth)
    A5/1 (utilisé dans les téléphones mobiles de type GSM pour chiffrer la communication par radio entre le mobile et l'antenne-relais la plus proche)

    OFB : Output Feedback (Chiffrement de rétroaction de sortie)

    Le chiffrement de rétroaction de sortie est similaire au CFB. La différence réside au niveau du chiffrement :
    On partage le texte en bloc de n bits m1m2…mr.
    On se donne un bloc d'initialisation de n bits Z1. Ce bloc z1 est la première clé de contexte.
    Pour chaque bloc i, on calcule
    Le bloc chiffré correspondant, par la formule ci=mi⊕zi;
    La clé de contexte suivante, par la formule zi+1=CK(zi).

     

    C'est un mode de chiffrement de flot qui possède les mêmes avantages que CFB. De plus, il est possible de le pré-calculer en chiffrant successivement le vecteur d'initialisation. Il n'est donc sûr que si la fonction de chiffrement alliée à la clé forme une bonne suite pseudo-aléatoire.
    Dans les modes CFB et OFB, le bloc d'initialisation V ne doit pas nécessairement être secret. En revanche, il doit être à usage unique.

    L'algorithme AES est de plus en plus utilisé avec les modes  CFB et OFB dans les protocoles de communication comme le wifi, bluetooth ou la téléphonie mobile, où il remplace des algorithmes de chiffrement par flots comme RC4.

    CTS : CipherText Stealing (Chiffrement avec vol de texte)

    Les deux derniers blocs sont échangés et combinés en partie, ce qui nécessitera de les obtenir tous les deux pour en déchiffrer un. CTS n'est pas un mode de chiffrement par flot, mais permet d'éviter l'utilisation de bourrage dans les chiffrements par blocs, et donne une taille de message chiffré égale à la taille du message clair. Il est très utilisé dans les protocoles ou formats ne supportant pas une taille quelconque.

    Ce type de chiffrement n'assure pas l'intégrité des données, il faut les coupler avec des MAC (Message Authentication Code)

    CFB : Cipher Feedback (chiffrement par rétroaction)

    Il s'agit ici d'utiliser la fonction de chiffrement CK comme un générateur pseudo-aléatoire de clés.
    On partage le texte en bloc de n bits m1m2…mr.
    On se donne un bloc d'initialisation de n bits Z1. Ce bloc z1 est la première clé de contexte.
    Pour chaque bloc i, on calcule
    Le bloc chiffré correspondant, par la formule ci=mi⊕zi;
    La clé de contexte suivante, par la formule zi+1=CK(ci).

     

    Dans ce mode, le flux de clé est obtenu en chiffrant le précédent bloc chiffré. CFB est un chiffrement par flot. Son grand intérêt est qu'il ne nécessite que la fonction de chiffrement, ce qui le rend moins cher à câbler ou programmer pour les algorithmes ayant une fonction de chiffrement différente de la fonction de déchiffrement (AES)

    On retrouve certaines propriétés du mode CBC, comme par exemple le fait que la modification d'un bloc de texte clair entraîne la modification de tous les blocs chiffrés à partir de celui-ci.

    CTR : Counter Mode (Chiffrement basé sur un compteur)

    Ce mode est très rapide, ce qui le rend utile dans les réseaux à grande vitesse.
    Dans ce cas, c'est la valeur d’un compteur qui est chiffrée et le résultat est ajouté par un « ou exclusif » au message (bloc) en clair produisant un message (bloc) chiffré.
    Le compteur est une fonction simple, cependant garantissant que la séquence utilisée pour chiffrer ne sera pas réutilisée.

    Avantages

    N'utilise pas la fonction de chiffrement.
    Pas d'erreur de propagation.
    La suite des chiffreurs peut être pré-calculée.
    Accès aléatoire aux données possible.
    Très facilement parallélisable

    Quelques réalisations