Le mode CFB de OpenPGP

OpenPGP fait du cryptage symétrique en utilisant une variante de Cipher Feedback Mode (CFB mode). Cette section décrit la procédure qu'elle utilise en détails. Ce mode est celui qui est utilisé pour l'encryptage symétrique de paquets de données; le mécanisme utilisé pour en-crypter la clé secrète matérielle est similaire, mais décrit dans le sections ci-dessous.

Le mode CFB de OpenPGP utilise un vecteur d'initialisation (IV) constitué de zéros, et prévalue le texte en clair avec 10 octets de données aléatoires, de manière a ce que les octets 9 et 10 correspondent aux octets 7 et 8. Il effectue une CFB << resynchronisation >> après avoir cryptés ces 10 octets.

Remarquez que pour un algorithme qui possède une taille de blocs supérieures a 64 bits, la fonction équivalente sera faite avec cet entière bloc. Par exemple, un algorithme de blocs de 16 octets travaillera sur 16 octets, et produira alors deux octets de vérification, et travaillera alors sur des blocs de 16 octets.

Voici la procédure étape par étape :

  1. Le registre de retour (FR [Feedback Register]) est mis au IV, et ne contient que des zéros.

  2. FR est encrypté pour former FRE (FR Crypté). C'est le cryptage d'une valeur constituée de zéros.

  3. On fait un ou exclusif [xor] entre FRE et les 8 premiers octets de données aléatoires pré-valués dans le texte en clair pour former C1-C8, les 8 premiers octets du texte chiffré.

  4. FR est chargé avec C1-C8.

  5. FR est crypté pour former FRE, le cryptage des 8 premiers octets du texte chiffré.

  6. On fait un ou exclusif entre les deux octets de gauche de FRE et les deux octets de données suivants qui ont été pré-fixés au texte en clair. Cela crée C9-C10, les deux octets suivants du texte chiffré.

  7. (L'étape de resynchronisation) FR est chargé avec C3-C10.

  8. FR est crypté pour former FRE.

  9. On fait un ou exclusif entre FRE et les 8 premiers octets du texte en clair donné, maintenant que nous avons fini le cryptage des 10 octets de données pré-valués. Cela produit C11-C18, les 8 prochains octets du texte chiffré.

  10. FR est chargé avec C11-C18.

  11. FR est crypté pour produire FRE.

  12. On effectue un ou exclusif entre FRE et les 8 prochains octets de texte en clair, pour créer les 8 prochains octets du texte chiffré. Ceux-ci sont chargés dans FR et la procédure est répétée jusqu'à ce que le texte en clair soit terminé.