6.2.1. OFB and CTR Sequences (Séquences OFB et CTR)
6.2.1. OFB and CTR Sequences (Séquences OFB et CTR)
Une façon de produire une séquence forte est de prendre une valeur de graine et de hacher les quantités produites en concaténant la graine avec des entiers successifs, ou similaire, puis de masquer les valeurs obtenues de manière à limiter la quantité d'état du générateur disponible pour l'adversaire.
Il peut également être possible d'utiliser un algorithme de "chiffrement" avec une clé aléatoire et une valeur de graine pour chiffrer des entiers successifs, comme dans le chiffrement en mode compteur (CTR). Alternativement, on peut rétroagir toute la valeur de sortie du chiffrement dans la valeur à chiffrer pour l'itération suivante. C'est un exemple particulier de mode de rétroaction de sortie (OFB) [MODES].
Un exemple est montré ci-dessous dans lequel le décalage et le masquage sont utilisés pour combiner une partie de la rétroaction de sortie avec une partie de l'ancienne entrée. Ce type de rétroaction partielle devrait être évité pour les raisons décrites ci-dessous.
+---------------+
| V |
| | n |--+
+--+------------+ |
| | +---------+
shift| +---> | | +-----+
+--+ | Encrypt | <--- | Key |
| +-------- | | +-----+
| | +---------+
V V
+------------+--+
| V | |
| n+1 |
+---------------+
Notez que si un décalage d'un est utilisé, c'est la même chose que la technique de registre à décalage décrite dans la Section 6.1.3, mais avec la différence capitale que la rétroaction est déterminée par une fonction complexe non linéaire de tous les bits plutôt que par une combinaison linéaire ou polynomiale simple de sortie à partir de quelques positions de prise de bit.
Donald W. Davies a montré que ce genre de rétroaction de sortie partielle décalée affaiblit significativement un algorithme, par rapport à la rétroaction de tous les bits de sortie comme entrée. En particulier, pour DES, chiffrer à plusieurs reprises une quantité complète de 64 bits donnera une répétition attendue en environ 2^63 itérations. Rétroagir quoi que ce soit de moins de 64 (et plus de 0) bits donnera une répétition attendue entre 2^31 et 2^32 itérations!
Pour prédire les valeurs d'une séquence à partir d'autres lorsque la séquence a été générée par ces techniques équivaut à casser le cryptosystème ou à inverser le hachage "non inversible" avec seulement des informations partielles disponibles. Moins d'informations sont révélées à chaque itération, plus il sera difficile pour un adversaire de prédire la séquence. Ainsi, il est préférable d'utiliser seulement un bit de chaque valeur. Il a été montré que dans certains cas, cela rend impossible de casser un système même lorsque le système cryptographique est inversible et pourrait être cassé si toute chaque valeur générée était révélée.