Je suis un débutant en cryptographie. Jai conçu un algorithme de chiffrement-déchiffrement basé sur un mot de passe, qui utilise un sel aléatoire et un mot de passe pour chiffrer un message. Jutilise SHA-512 pour le hachage, les opérations matricielles pour le shuffling, XOR bit à bit pour mélanger les données et la récupération. La longueur du sel et du texte chiffré est de 256 lettres.
À ma connaissance, le effet davalanche signifie quun léger changement dans lun des éléments suivants:
- chiffrement
- mot de passe
- salt
doit changer radicalement la sortie.
Dans mon implémentation, si je change le sel ou le chiffrement, je ne vois pas de gros changements dans mon production. Cependant, quand il y a un léger changement de mot de passe, la sortie change radicalement.
Donc, mes questions:
- Ma compréhension de leffet davalanche est-elle généralement correcte? Sinon, que devrait-il être?
- Que puis-je faire pour produire au mieux leffet davalanche dans mon (ou nimporte quel) chiffrement? Dois-je réduire moins la longueur du sel et générer un texte chiffré plus petit pour créer un effet davalanche? Sinon, comment puis-je y parvenir?
Commentaires
- Par curiosité, pourquoi utilisez-vous le hachage?
- Bienvenue dans Cryptography Stack Exchange. @Avinash, votre question a été migrée ici car elle est plus sur le sujet ici que sur Stack Overflow. Veuillez enregistrer votre compte ici pour pouvoir commenter et accepter une réponse.
- Si vous voulez des réponses constructives, vous devez montrer comment votre chiffrement fonctionne actuellement (dans des formules mathématiques, de préférence). Ensuite, nous pouvons voir comment laméliorer.
- Jai ‘ supprimé les commentaires du type » don ‘ t concevez votre propre chiffrement » – ici sur le chiffrement ‘ s parfaitement acceptable dessayer, même si vous devez comprendre que tout est à vos risques et périls bien sûr 🙂 Jai ‘ également édité un peu la question pour me concentrer davantage sur leffet davalanche en labsence des constructions de chiffrement pertinentes. Si quelquun estime que ce nest pas nécessaire, nhésitez pas à revenir en arrière et / ou à améliorer ce que jai ‘ fait.
Réponse
Ne vous souciez pas de changer lalgorithme de chiffrement actuel. En savoir plus sur le principe de Kerckhoffs : vous devriez ne changez que des choses comme la clé et lIV, pas lalgorithme actuel.
Pour tester votre avalanche, retournez un bit dans votre clé. Cela devrait changer environ la moitié des bits de votre sortie.
Pour la conception du chiffrement, la Cryptographie appliquée a déjà été suggérée. De plus, vous devez envisager dintroduire la diffusion et la confusion dans votre algorithme. Il vaut également la peine détudier les algorithmes existants pour voir comment ils fonctionnent. Jai commencé par concevoir mon propre chiffrement Feistel simple, de cette façon une grande partie de la structure environnante est déjà faite pour vous. Cela simplifie également la conception, en ce que la fonction F na pas besoin dêtre inversible. Cela vous donne beaucoup plus de flexibilité dans ce domaine.
Lavertissement de ne pas utiliser votre propre design pour autre chose quun exercice dapprentissage est bon.
Commentaires
- Merci beaucoup ….
- Cypher / cipher est une chose UK / US.
Réponse
Je pense que cest génial que vous construisiez votre propre algorithme de chiffrement-déchiffrement. Vous en apprendrez beaucoup sur la cryptographie de cette façon. Jusquà présent, tous ceux qui créent un lalgorithme de cryptage-décryptage construit quelque chose dhorriblement défectueux dune manière ou dune autre – très éducatif – la première fois.
terminologie
Si je comprends bien votre question, vous avez parfaitement question raisonnable sur leffet davalanche, mais la plupart des gens sur ce site sont tellement confus au sujet de votre terminologie non standard quils ne peuvent même pas comprendre ce que vous demandez.
Si je comprends bien votre question, vous créez un système de cryptage-décryptage qui prend le texte en clair comme entrée, stocke les données sous forme de fichiers cryptés, puis permet plus tard à quelquun avec le mot de passe correct de décrypter ces fichiers stockés et de récupérer le texte en clair déchiffré bit à bit identique à lentrée de texte brut dorigine.
vous le savez probablement déjà, un programme de cryptage typique crée des fichiers cryptés qui commencent par un vecteur dinitialisation (IV) qui a été fraîchement généré par un générateur de nombres aléatoires cryptographiquement sécurisé lorsque le fichier crypté a été créé.Le programme de chiffrement découpe ensuite le fichier dentrée en blocs de texte brut de certains blocksize fixes, utilise un mode de chiffrement par blocs de fonctionnement en « mode de chiffrement » pour traiter chaque bloc (et la clé de chiffrement) via un chiffrement par bloc pour finir par aboutir à un bloc chiffré de la même taille de bloc, qui est ajoutée au fichier crypté. Il y a souvent des bits délicats à la fin liés au « remplissage » et à « lauthentification de message ».
Plus tard, le programme de décryptage découpe le fichier crypté en blocs cryptés de la même taille de bloc fixe, alimente chaque bloc ( et la clé de chiffrement) via le chiffrement par bloc en utilisant le même mode de fonctionnement de chiffrement par bloc en « mode de déchiffrement » pour récupérer le bloc de texte en clair, et concatène tous les blocs de texte en clair ensemble pour récupérer un fichier bit par bit identique au fichier en clair dorigine .
Jutilise SHA-512 pour le hachage
OK, SHA-512 est un excellent algorithme de hachage. Si vous lutilisez dans le cadre de la fonction darrondi interne, ou pour générer des sous-clés à partir de la clé de chiffrement principale, cela fonctionnerait; cela semble simplement inutilement compliqué.
Si vous utilisez SHA-512 comme une fonction de dérivation de clé (KDF) pour générer la clé de chiffrement principale à partir du mot de passe, beaucoup de gens diront que ce nest pas assez compliqué.
opérations matricielles pour lecture aléatoire
Cest un peu inhabituel, mais cela pourrait fonctionner.
XOR bit à bit pour mélanger les données et récupérer.
Pratiquement tous les algorithmes de chiffrement modernes utilisent beaucoup dopérations XOR bit à bit. De nombreux algorithmes de chiffrement modernes sont conçus pour nutiliser que des ajouts modulaires, une rotation avec des montants de rotation fixes et des XOR (ARX) dans la boucle interne (itération ronde).
Je suis plutôt quune fonction ronde interne qui utilise seulement XOR, ou seulement rotation, ou seulement ajout modulaire, sera fatalement non sécurisé quel que soit le nombre ditérations darrondi utilisées.
(Je nen sais pas assez pour dire quoi que ce soit sur la sécurité de votre combinaison particulière dopérations XOR et matricielles).
La longueur du salt et le texte chiffré est de 256 lettres.
Je suppose que vous vouliez dire « La longueur du vecteur dinitialisation (IV) et chaque bloc de texte chiffré est de 256 lettres . «
Un » sel « est utilisé dans le hachage cryptographique à sens unique – voir Pouvez-vous maider à comprendre ce quest un salt » est? . Un «IV» est utilisé dans la cryptographie bidirectionnelle – à la fois le cryptage et le décryptage. « Salt » et « IV » sont des valeurs aléatoires fraîchement générées qui sont supposées être connues du public, mais la terminologie laisse entendre quelles seront utilisées dans différents types de systèmes.
Presque tout le monde définit la longueur de lIV est égal à la taille du bloc, donc cest génial.
Daprès ce que je comprends, pratiquement tous les chiffrements développés avant lannonce du concours AES de 1997 utilisaient une taille de bloc de 64 bits (8 octets) ou moins. Certains cryptographes Je pensais apparemment que ce nétait pas suffisant, mais pour autant que je sache, tout le monde semble maintenant penser quune taille de bloc de 128 bits (16 octets) est adéquate.
Une taille de bloc de 256 octets fonctionnerait; cela semble simplement inutilement important.
leffet avalanche
Lors de lexécution de chaque bloc de texte en clair à travers le chiffrement par bloc (dans certains modes de chiffrement), leffet davalanche signifie quun seul bit change dans lun des éléments suivants:
- les données du bloc en texte brut
- mot de passe
- IV
doivent modifier le sortie le bloc de texte chiffré de manière drastique (environ la moitié des bits).
Lors de lexécution de chaque bloc de texte chiffré à travers le chiffrement par bloc (dans certains modes de déchiffrement), leffet davalanche signifie quun seul bit change dans lun des éléments suivants:
- bloc de texte chiffré
- mot de passe
- IV
doit changer radicalement le bloc de « texte clair » de sortie (environ la moitié des bits).
Dans mon implémentation, si je change le sel ou le chiffre, je ne vois pas de gros changements dans ma sortie.
Je « suppose que vous vouliez dire une des deux choses suivantes:
- » si je change un seul bit près du début o f le fichier chiffré (cest-à-dire dans le IV ou dans un bloc de texte chiffré au début), je ne vois pas de gros changements vers la fin de mon fichier de sortie en clair.
Ce manque de le changement se produit toujours lors de lutilisation du (sécurisé) Cipher Block Chaining (CBC) ou de certains autres modes de fonctionnement. Ce nest donc pas nécessairement un problème.
Cependant, cela peut être un problème si vous pensiez utiliser le mode (sécurisé) Propagating Cipher Block Chaining (PCBC), où cette absence de changement indique un bogue dans la mise en œuvre.
De plus, cette absence de changement est le résultat attendu lors de lutilisation du mode ECB (Electronic Codebook) (non sécurisé).
Quel que soit le mode de fonctionnement que vous sélectionnez, le programme de décryptage devrait imprimer de gros avertissements effrayants indiquant que le fichier a échoué à la vérification dauthentification MAC chaque fois quun seul bit du fichier crypté est endommagé.
- « si je change un seul bit dans un bloc de texte chiffré unique dans un fichier chiffré, je ne vois pas de gros changements dans le bloc de texte en clair correspondant dans mon fichier en clair de sortie. «
Oui, cela indique une faille grave – le Lalgorithme de chiffrement par blocs na pas un bon effet davalanche. Cest un signe que lalgorithme na pas un mixage suffisant. Cela signifie généralement que le système est vulnérable aux attaque par texte chiffré choisi et aux attaques similaires.
Que puis-je faire pour produire au mieux leffet avalanche dans mon (ou nimporte quel) chiffrement? Dois-je réduire la longueur du sel moins et générer un texte chiffré plus petit pour créer un effet davalanche?
Je suppose que vous vouliez demander « devrais-je réduire la taille de lIV et la taille du bloc pour créer un effet davalanche? «
Ce nest généralement pas nécessaire.
Les approches les plus courantes pour produire leffet davalanche sont répertoriées dans Wikipedia article de chiffrement par blocs :
Je ne connais aucun chiffrement par blocs qui produit une avalanche complète après un seul tour. Les concepteurs de chiffrements par blocs essaient de choisir un nombre de tours suffisant pour que le chiffrement par blocs résiste à toutes les attaques cryptographiques standard , ce qui est plus que suffisant pour produire une avalanche complète .
Les personnes qui conçoivent un chiffrement par bloc choisissent généralement un schéma de conception général de chiffrement par bloc, et font en sorte que le programme de chiffrement par bloc litère encore et encore le nombre de tours sélectionné. Certains des schémas de conception de chiffrement par blocs généraux les plus populaires sont:
- réseau de permutation de substitution
- Chiffrement de Feistel
- Chiffre de Lai-Massey
Chacun de ceux-ci nécessite une fonction interne non linéaire. Les premiers chiffres de bloc utilisent souvent une fonction interne compliquée à chaque tour qui produit presque une avalanche en un seul tour. Les chiffrements modernes utilisent souvent une fonction interne très simple et rapide à chaque tour (quelques fonctions ARX) avec juste assez de non-linéarité pour finalement obtenir une avalanche après un grand nombre de tours.
Commentaires
- Note latérale: Le chiffrement khazad a une diffusion complète après un seul tour. Jai ‘ créé des jouets qui le font aussi, ‘ est certainement possible, et découvrir des moyens de le faire est amusant.