Chiffrement de flux

En cryptographie, un chiffrement à flux est un chiffrement à clé symétrique dans lequel les bits de texte en clair sont combinés à un flux de bits de chiffrement pseudo-aléatoire (flux de clés) en utilisant une opération exclusive ou (xor). Dans un chiffrement à flux continu, les chiffres en texte clair sont chiffrés un à la fois, et la transformation des chiffres successifs varie au cours de l'état de chiffrement. Un autre nom est un chiffrement d'état, car le chiffrement de chaque chiffre dépend de l'état actuel. En pratique, les chiffres sont généralement des bits ou des octets simples.

Le chiffrement en flux représente une approche différente du chiffrement symétrique par rapport au chiffrement par blocs. Les chiffres par blocs fonctionnent sur de grands blocs de longueur fixe. Les chiffres à flux s'exécutent généralement à une vitesse plus élevée que les chiffres par blocs et nécessitent moins de matériel. Cependant, les chiffres à flux peuvent être susceptibles de poser de sérieux problèmes de sécurité s'ils sont utilisés de manière incorrecte ; par exemple, le même état de départ ne doit jamais être utilisé deux fois.

Un chiffrement en continu utilise une clé cryptographique beaucoup plus petite et plus pratique, par exemple des clés de 128 bits. Sur la base de cette clé, il génère un flux de clés pseudo-aléatoires qui peut être combiné avec les chiffres du texte en clair, de manière similaire à l'algorithme de chiffrement par clavier à usage unique. Cependant, comme le flux de clés est pseudo-aléatoire et non véritablement aléatoire, la sécurité associée au clavier à usage unique ne peut pas être appliquée et il est tout à fait possible qu'un chiffrement en flux soit totalement non sécurisé.

Le fonctionnement du générateur de flux de clés en A5/1, un chiffrement de flux basé sur le LFSR utilisé pour crypter les conversations de téléphone portable.Zoom
Le fonctionnement du générateur de flux de clés en A5/1, un chiffrement de flux basé sur le LFSR utilisé pour crypter les conversations de téléphone portable.

Types de chiffrement des flux

Un chiffrement en flux génère des éléments successifs du keystream basés sur un état interne. Cet état est mis à jour de deux manières :

  1. Si l'état change indépendamment des messages en texte clair ou en texte chiffré, le chiffrement est classé comme un chiffrement à flux synchrone.
  2. Si l'état est mis à jour sur la base de modifications antérieures des chiffres du cryptogramme, le chiffre est classé comme un chiffre à flux auto-synchronisé.

Chiffres à flux synchrone

Dans un flux synchrone de chiffrement, un flux de chiffres pseudo-aléatoires est généré indépendamment des messages en texte clair et en texte chiffré, puis combiné avec le texte clair (pour le chiffrement) ou avec le texte chiffré (pour le déchiffrement). Dans la forme la plus courante, des chiffres binaires (bits) sont utilisés, et le flux de clés est combiné avec le texte en clair en utilisant l'opération ou l'exclusivité (XOR). C'est ce que l'on appelle un chiffrement binaire additif à flux continu.

Dans un chiffrement à flux synchrone, l'émetteur et le récepteur doivent être synchrones pour que le décryptage soit réussi. Si des chiffres sont ajoutés ou retirés du message pendant la transmission, la synchronisation est perdue. Pour rétablir la synchronisation, on peut essayer systématiquement différents décalages afin d'obtenir le décryptage correct. Une autre approche consiste à marquer le texte chiffré avec des marqueurs en des points réguliers de la sortie.

Toutefois, si un chiffre est corrompu lors de la transmission, plutôt qu'ajouté ou perdu, un seul chiffre du texte en clair est affecté et l'erreur ne se propage pas aux autres parties du message. Cette propriété est utile lorsque le taux d'erreur de transmission est élevé ; cependant, elle rend moins probable que l'erreur soit détectée sans autres mécanismes. De plus, en raison de cette propriété, les chiffrages à flux synchrone sont très sensibles aux attaques actives - si un attaquant peut changer un chiffre dans le texte chiffré, il peut être en mesure d'apporter des modifications prévisibles au bit correspondant du texte en clair ; par exemple, inverser un bit dans le texte chiffré entraîne l'inversion (Toggled) du même bit dans le texte en clair.

Chiffres de flux auto-synchronisés

L'autosynchronisation des flux de chiffres est une autre technique qui utilise une partie des N chiffres précédents pour calculer le flux de clés. De tels systèmes sont également connus sous le nom de chiffrement asynchrone en flux ou de chiffrement automatique (CTAK). L'idée de l'auto-synchronisation a été brevetée en 1946 et présente l'avantage que le récepteur se synchronise automatiquement avec le générateur de flux de clés après avoir reçu N chiffres de chiffrement, ce qui facilite la récupération si des chiffres sont supprimés ou ajoutés au flux de messages. Les erreurs d'un seul chiffre sont limitées dans leur effet, n'affectant que jusqu'à N chiffres en clair. Il est un peu plus difficile d'effectuer des attaques actives sur des flux de chiffrement auto-synchronisés que sur des équivalents synchrones.

Un exemple de chiffrement à flux auto-synchronisé est un chiffrement par blocs en mode de retour d'information (CFB).

Chiffres en flux basés sur un registre à décalage à rétroaction linéaire

Les chiffrages de flux binaires sont souvent construits à l'aide de registres à décalage à rétroaction linéaire (LFSR) car ils peuvent être facilement mis en œuvre dans le matériel et peuvent être rapidement analysés mathématiquement. Toutefois, l'utilisation des seuls LFSR est insuffisante pour assurer une bonne sécurité. Divers dispositifs ont été conçus pour accroître la sécurité des LFSR.

Fonctions de combinaison non linéaires

Les LFSR étant intrinsèquement linéaires, une technique permettant de supprimer la linéarité consiste à alimenter les sorties d'un groupe de LFSR parallèles dans une fonction booléenne non linéaire pour former un générateur de combinaisons. Les diverses propriétés d'une telle fonction de combinaison sont importantes pour assurer la sécurité du schéma résultant, par exemple, afin d'éviter les attaques de corrélation.

Générateurs commandés par horloge

Normalement, les LFSR sont régulièrement mis à jour. Une technique permettant d'introduire la non-linéarité consiste à faire en sorte que la LFSR soit cadencée de manière irrégulière, contrôlée par la sortie d'une seconde LFSR. Ces générateurs comprennent le générateur d'arrêt et de marche, le générateur de pas alternatif et le générateur de rétrécissement.

Le générateur d'arrêt et de départ (Beth et Piper, 1984) est constitué de deux LFSR. Un LFSR est synchronisé si la sortie d'une seconde est un "1", sinon il répète sa sortie précédente. Cette sortie est ensuite (dans certaines versions) combinée avec la sortie d'un troisième LFSR cadencé à un rythme régulier.

Le générateur de rétrécissement utilise une technique différente. Deux LFSR sont utilisés, tous deux cadencés régulièrement de la manière suivante :

  1. Si la sortie du premier LFSR est "1", la sortie du second LFSR devient la sortie du générateur.
  2. Si la sortie du premier LFSR est "0", la sortie du second est rejetée, et aucun bit n'est émis par le générateur.

Cette technique souffre d'attaques de synchronisation sur le deuxième générateur, puisque la vitesse de la sortie est variable de manière à dépendre de l'état du deuxième générateur. Cette technique peut être améliorée en mettant la sortie en mémoire tampon.

Générateur de filtres

Une autre approche pour améliorer la sécurité d'une LFSR consiste à passer l'état complet d'une seule LFSR dans une fonction de filtrage non linéaire.

Autres dessins et modèles

Au lieu d'un dispositif d'entraînement linéaire, on peut utiliser une fonction de mise à jour non linéaire. Par exemple, Klimov et Shamir ont proposé des fonctions triangulaires (Fonctions T) avec un seul cycle sur des mots à n bits.

Sécurité

Pour être sûr, la période du keystream (le nombre de chiffres émis avant que le flux ne se répète) doit être suffisamment longue. Si la séquence se répète, alors les cryptogrammes qui se chevauchent peuvent être alignés les uns par rapport aux autres "en profondeur", et il existe des techniques qui permettent d'extraire les cryptogrammes en texte clair générés par ces méthodes.

Utilisation

Le chiffrement en continu est souvent utilisé dans des applications où le texte en clair se présente en quantités de longueur inconnaissable, comme dans les connexions sans fil sécurisées. Si un chiffrement par blocs devait être utilisé dans ce type d'application, le concepteur devrait choisir entre l'efficacité de la transmission ou la complexité de la mise en œuvre, car les chiffrement par blocs ne peuvent pas fonctionner directement sur des blocs plus courts que leur taille. Par exemple, si un chiffrement par blocs de 128 bits reçoit des rafales distinctes de 32 bits de texte en clair, les trois quarts des données transmises ont besoin d'un remplissage. Les chiffres par blocs doivent être utilisés en mode de vol de texte ou de terminaison de bloc résiduel pour éviter le remplissage, tandis que les chiffres par flux éliminent ce problème en opérant sur la plus petite unité transmise (généralement des octets).

Un autre avantage des flux de chiffrement dans la cryptographie militaire est que le flux de chiffrement peut être généré par un dispositif de chiffrement soumis à des mesures de sécurité strictes, puis transmis à d'autres dispositifs, par exemple un poste de radio, qui effectueront l'opération xor dans le cadre de leur fonction. L'autre dispositif peut être conçu pour être utilisé dans des environnements moins sûrs.

RC4 est le chiffrement de flux le plus utilisé dans les logiciels ; il en existe d'autres : A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 et WAKE.

RC4 est l'une des conceptions de chiffrement en continu les plus utilisées.Zoom
RC4 est l'une des conceptions de chiffrement en continu les plus utilisées.

Comparaison des codes de flux

StreamCipher

CreationDate

Vitesse
 (cycles/octets)

(bits)

Attaque

EffectiveKey-Length

Vecteur d'initialisation

InternalState

Les plus connus

ComputationalComplexity

A5/1

1989

Voix (Wphone)

54

114

64


Compromis temps-mémoire actif KPA ORKPA

~2 secondes OR239.91

A5/2

1989

Voix (Wphone)

54

114

64 ?

Actif

4,6 millisecondes

FISH

1993

Assez rapide (Wsoft)

Enorme

?

?

Attaque à l'aide d'un texte connu

211

Grain

Avant 2004

Rapide

80

64

160

Dérivation des clés

243

HC-256

Avant 2004

4 (WP4)

256

256

65536

?

?

ISAAC

1996

2,375 (W64-bit) -
4,6875 (W32-bit)

8-8288 habituellement
 40-256

N/A

8288

(2006) Premier tour de table - Dérivation interne de l'État

4.67×101240 (2001)

MUGI

1998-2002

?

128

128

1216

N/A (2002)

~282

PANAMA

1998

2

256

128 ?

1216 ?

Collisions de hachures (2001)

282

Phelix

Avant 2004

jusqu'à 8 (Wx86)

256 + un Nonce 128 bits

128 ?

?

Différentiel (2006)

237

Pike

1994

0,9 x POISSON (Wsoft)

Enorme

?

?

N/A (2004)

N/A (2004)

Py

Avant 2004

2.6

8-2048?
généralement 40-256 ?

64

8320

Théorie de la cryptanalyse (2006)

275

Lapin

2003-fév

3.7(WP3)-9.7(WARM7)

128

64

512

N/A (2006)

N/A (2006)

RC4

1987

Impressionnant

8-2048, généralement
 40-256

8

2064

Initiales de Shamir - Octets dérivés de la clé OU KPA

213 OU 233

Salsa20

Avant 2004

4,24 (WG4) -11
,84 (WP4)

128 + un Nonce 64 bits

512

512 + 384 (clé+IV+index)

Différentiel (2005)

N/A (2005)

Crier

2002

4 - 5 (Wsoft)

128 + un Nonce 128 bits

32 ?

Fonction de ronde 64 bits

?

?

SEAL

1997

Très rapide (W32-bit)

?

32 ?

?

?

?

SNOW

Avant 2003

Très bien (W32-bit)

128 OU 256

32

?

?

?

SOBER-128

2003

?

jusqu'à 128

?

?

Forge de messages

2−6

SOSEMANUK

Avant 2004

Très bien (W32-bit)

128

128

?

?

?

Trivium

Avant 2004

4 (Wx86) - 8 (WLG)

80

80

288

Attaque de la force brute (2006)

2135

Turing

2000-2003

5,5 (Wx86)

?

160

?

?

?

VEST

2005

42 (WASIC) -64
 (WFPGA)

Variable - généralement
 80-256

Variable - généralement
 80-256

256 - 800

N/A (2006)

N/A (2006)

WAKE

1993

Rapide

?

?

8192

CPA & CCA

Vulnérable

StreamCipher

CreationDate

Vitesse
 (cycles/octets)

(bits)

Attaque

EffectiveKey-Length

Vecteur d'initialisation

InternalState

Les plus connus

ComputationalComplexity

Pages connexes

  • eSTREAM

Questions et réponses

Q : Qu'est-ce qu'un algorithme de chiffrement ?


R : Un chiffrement par flux est un chiffrement à clé symétrique dans lequel les bits du texte en clair sont combinés à un flux de bits de chiffrement pseudo-aléatoire (flux de clés) à l'aide d'une opération de type "or exclusif" (xor).

Q : Quelle est la différence avec le chiffrement par blocs ?


R : Les algorithmes de chiffrement par flux s'exécutent généralement à une vitesse supérieure à celle des algorithmes de chiffrement par bloc et nécessitent moins de matériel. Les algorithmes de chiffrement par blocs fonctionnent sur de grands blocs de longueur fixe, tandis que les algorithmes de chiffrement par flux chiffrent les chiffres un par un et la transformation des chiffres successifs varie au cours de l'état de chiffrement.

Q : Quel type de clés utilise-t-il ?


R : Les algorithmes de chiffrement par flux utilisent des clés cryptographiques beaucoup plus petites et plus pratiques, par exemple des clés de 128 bits.

Q : Comment génère-t-il le flux de clés ?


R : Le flux de clés est généré sur la base de la clé cryptographique utilisée, de la même manière que l'algorithme de cryptage par tampon à usage unique. Toutefois, comme le flux de clés est pseudo-aléatoire et non véritablement aléatoire, la sécurité associée à l'algorithme de chiffrement à usage unique ne peut être appliquée.

Q : Pourquoi ne faut-il jamais utiliser deux fois le même état initial ?


R : Le fait d'utiliser deux fois le même état de départ peut entraîner de graves problèmes de sécurité, car cela permet aux pirates de déchiffrer plus facilement des données sans connaître votre clé cryptographique ou sans y avoir accès.

Q : L'utilisation des algorithmes de chiffrement par flot présente-t-elle des risques ?


R : Oui, s'ils sont utilisés de manière incorrecte ou sans prendre les précautions qui s'imposent, les algorithmes de chiffrement par flot présentent des risques, car ils peuvent être totalement non sécurisés s'ils ne sont pas manipulés correctement.

AlegsaOnline.com - 2020 / 2023 - License CC3