Je construis un chiffrement de fichier basé sur AES qui doit pouvoir fonctionner en mode accès aléatoire (accès à n'importe quelle partie du fichier). AES in Counter par exemple peut être utilisé, mais il est bien connu que nous avons besoin d'une séquence unique jamais utilisée deux fois. Est-il correct d'utiliser un PRNG Fortuna simplifié dans ce cas (cryptage d'un compteur avec une clé unique choisie au hasard et spécifique au fichier en question)? Y a-t-il des points faibles dans cette approche?Chiffrement d'accès aléatoire avec AES En mode compteur utilisant Fortuna PRNG:
Donc, le cryptage/décryptage peut ressembler à ceci
Le chiffrement d'un bloc à décalage:
rndsubseq = AESEnc(Offset, FileUniqueKey)
xoredplaintext = plaintext xor rndsubseq
ciphertext = AESEnc(xoredplaintext, PasswordBasedKey)
Décryptage d'un bloc à décalage:
rndsubseq = AESEnc(Offset, FileUniqueKey)
xoredplaintext = AESDec(ciphertext, PasswordBasedKey)
plaintext = xoredplaintext xor rndsubseq
Une observation. Je suis venu à l'idée utilisée dans Fortuna par moi-même et sûrement découvert plus tard qu'il est déjà inventé. Mais comme je l'ai lu partout le point clé à ce sujet est la sécurité, mais il y a un autre bon point: c'est un grand générateur de nombres pseudo-aléatoires à accès aléatoire pour ainsi dire (sous forme simplifiée). Donc le PRNG qui produit non seulement une très bonne séquence (je l'ai testé avec Ent et Die Hard) mais permet aussi d'accéder à n'importe quelle sous-séquence si vous connaissez le numéro d'étape. Donc est-il généralement acceptable d'utiliser Fortuna en tant que PRNG "à accès aléatoire" dans les applications de sécurité?
EDIT:
En d'autres termes, ce que je suggère est d'utiliser Fortuna PRNG comme tweak pour former un tweakable AES Cipher avec la capacité d'accès aléatoire. J'ai lu le travail de Liskov, Rivest et Wagner, mais je ne pouvais pas comprendre quelle était la principale différence entre un chiffre dans un mode de fonctionnement et un chiffre modifiable. Ils ont dit qu'ils ont suggéré d'amener cette approche de haut niveau à l'intérieur du chiffre lui-même, mais par exemple dans mon cas en xoring le texte brut avec le tweak, est-ce un tweak ou pas?
Bien que j'ai déjà lu l'article (Disk encryption theory), il est bon de le mentionner ici (+1). Je viens de lire le document sur les chiffrements de bloc tweakable et éditera le post – Maksee