web-dev-qa-db-fra.com

Pourquoi gardons-nous notre secret de clés, plutôt que nos algorithmes?

Sur presque tout site Web qui rapporte des informations sur la cryptographie en général, il existe cette notion commune que presque tous tous les algorithmes de cryptage/de déchiffrement devraient utiliser une clé comme l'une de leurs intrants. La raison derrière ceci est que les algorithmes de cryptage qui n'utilisent pas une clé sont techniquement inutiles.

À cause de cela, je ne peux pas m'empêcher de me demander comment ils sont venus à cette conclusion. Pourquoi est-ce que la tendance commune de la cryptographie est de garder la clé de sécurité un secret, mais permettant aux algorithmes de cryptage et de déchiffrement d'être public. Et si les algorithmes de cryptage et de déchiffrement étaient-ils le secret? Dans ce cas, il n'y aurait plus besoin de clé et de simplifierait beaucoup les choses.

Par exemple: Supposons que je suis un développeur de logiciel qui souhaite envoyer des messages textuels d'un ordinateur à une autre (et arrière) pour permettre la communication (une simple application de discussion). Supposons que les ordinateurs communiquent les uns avec les autres sur un réseau non sécurisé avec le protocole TCP/IP. Supposons que je souhaite assurer leur conversation une certaine intimité et proposer cet algorithme de "cryptage" très basique dans lequel j'ajouterai simplement 10 à chaque ASCII code pour chaque lettre du texte en clair avant de l'envoyer comme Bytes bruts sur le réseau. En tant que tel message tel que "Bonjour, frère!" serait intercepté par n'importe quel attaquant comme "Rovvy6 * L | Y ~ RO | +".

Comment quelqu'un peut-il intercepter le message reconstituer le plaintre original s'il n'avait aucune connaissance des algorithmes de cryptage ou de déchiffrement? Quelle serait la meilleure approche pour briser ce cryptosystème? Est-il vraiment facile de casser des schémas de cryptage qui n'utilisent pas les clés, ce n'est pas des solutions viables?

Enfin, si vous voulez dire quelque chose comme "Eh bien ... vous n'avez pas besoin d'un génie pour déterminer que vous allez simplement ajouter 10 à chaque octet du clairext", je l'ai fait pour la simplicité. Si vous voulez rendre le message encore plus cryptique, n'hésitez pas à imaginer que la formule mathématique étant beaucoup plus complexe (comme l'ajout 7 puis soustrayez 10 puis de multiplier par 2).

10
Mr Sir

Une réponse moins académique:

Imaginez que vous soyez le gouvernement d'un pays. Imaginez que vous ayez embauché des personnes à concevoir ce nouvel algorithme de crypto génial, et vous avez embauché des personnes à construire des machines qui l'appliquent et que vous avez déployé tous vos navires et avions et vos centres de commandes et bureaux de commandes mobiles, ainsi que des ambassades et des bureaux. . avec ça.

Et puis votre ennemi capture une des machines, ou votre ennemi tourne l'une des personnes qui ont construit les machines, ou ...

Ce qui est plus facile? Concevoir un nouvel algorithme, concevoir de nouvelles machines et les remplacer tous? Ou changer la clé?

0
honker

Eh bien, combien d'algorithmes pouvez-vous imaginer? N'oubliez pas qu'elles ne devraient pas compter sur une clé pour être différente sinon vous utilisez des clés.

Combien ne partage pas un moyen d'attaquer? Par exemple. replace x with x+10 et replace x with k[d] sont les deux vulnérables à une attaque de fréquence de lettres.

Combien ne sont pas l'équivalent de 123456 et password I.e. ne sera pas dans la liste des meilleurs algorithmes à vérifier?

Y a-t-il assez de choses pour rendre trop lentement pour que quelqu'un vérifie tous?

0
Thanos Tintinidis