Question:
Quelle est la valeur du secret d'un algorithme?
tylerl
2012-11-24 13:21:44 UTC
view on stackexchange narkive permalink

En apparence, le caractère inadapté de la sécurité par l'obscurité est en contradiction directe avec le concept de secrets partagés (c'est-à-dire de "mots de passe"). C'est-à-dire: si le secret autour des mots de passe est précieux, alors, par extension, il doit sûrement avoir une certaine valeur pour garder secret l'algorithme qui utilise le mot de passe. De nombreuses organisations (sans doute erronées) peuvent même aller jusqu'à dire que le système est le mot de passe.

Mais dans quelle mesure le secret d'un algorithme peut-il être invoqué? Ou peut-être plus approprié, en quoi le secret entourant un algorithme est-il voué à l'échec alors que le secret entourant les mots de passe ne l'est pas?

Si, au contraire, le secret d'un algorithme est souhaitable , alors quelle est son importance? Jusqu'où un développeur devrait raisonnablement aller pour garder son crypto secret?

EDIT
Pour être clair, il ne s'agit pas de créer un nouvel algorithme non testé, mais plutôt garder secrets les détails de l'algorithme que vous choisissez. Par exemple, la technique que Windows utilise pour hacher les mots de passe consiste à appliquer des algorithmes de hachage connus dans une séquence qui n'est pas publiée et qui semble changer entre les différentes versions de Windows.

Un mot de passe peut être n'importe quoi, aléatoire, sans règles, donc imprévisible. Alors qu'un algorithme doit finalement être compris par un processeur dont l'architecture / le jeu d'instructions est probablement disponible en public. Et tout ce qu'un tel processeur peut comprendre peut sûrement être traduit en un algorithme.
Regardez le nouveau * James Bond *. La sécurité par l'obscurité est une bonne chose! 11 (Et apparemment, cela implique que vos données changent lorsque quelqu'un essaie de les regarder.)
@KonradRudolph Je n'utilise pas toujours les noms de rue pour crypter mes données polymorphes cryptées d'obscurité, mais quand je le fais, je choisis «Grandborough».
La modification des éléments internes du schéma de hachage de mot de passe Windows (si cela est fait; je ne sais pas) empêche également les éditeurs de logiciels de se fier à un schéma particulier utilisé. Cela pourrait en fait valoir la peine en soi, * même si * l'algorithme exact était public. Notez que tout ce qui est officiellement documenté est généralement considéré * par contrat * par le fournisseur qui le documente, et ne peut donc pas être facilement modifié à l'avenir s'il y a un problème avec cette conception.
@tylerl: l'élément de cryptographie est le calcul de l'algorithme en cours d'exécution, pas l'algorithme lui-même.
Cinq réponses:
Thomas Pornin
2012-11-24 19:08:29 UTC
view on stackexchange narkive permalink

Une grande partie du travail sur les mots de passe et les clés est liée au contrôle ils sont stockés et copiés.

  • Un mot de passe est stocké dans l'esprit d'un utilisateur humain. Il est saisi sur un clavier (ou équivalent) et parcourt les registres d'un CPU et de la RAM de l'ordinateur, pendant son traitement. Sauf erreur terrible, le mot de passe n'atteint jamais une zone de stockage permanente comme un disque dur.

  • Un algorithme existe en tant que code source quelque part, sur la machine d'un développeur, un système de gestion des versions source et des sauvegardes. Il existe des documents de conception, qui ont été montrés à diverses personnes (par exemple, ceux qui décident de financer ou non le développement du système), et souvent déposés par négligence sur une étagère anonyme ou dans une couche de croûte sur le bureau typique. Plus important encore, l'algorithme existe également sous forme de fichier exécutable sur le système déployé lui-même; binaire n'est pas aussi lisible que le code source mais le reverse engineering fonctionne néanmoins.

Par conséquent, nous ne pouvons raisonnablement pas considérer que l'algorithme est secret, ou du moins aussi secrète que le mot de passe (ou la clé).

En réalité, les méthodes cryptographiques ont été divisées il y a un siècle en algorithme et clé précisément à cause de cela: dans un système qui fonctionne, une partie de la méthode fuit forcément des traces partout. Avoir une clé signifie concentrer le secret dans l'autre moitié, la partie que nous pouvons garder secrète.


"La sécurité par l'obscurité" est une expression qui utilise le terme obscurité , pas secret . La cryptographie consiste à assurer la sécurité grâce au secret . C'est toute la différence: un mot de passe peut être secret ; un algorithme est, au mieux, obscur . L'obscurité est dissipée dès qu'un type intelligent pense à apporter une lanterne métaphorique. Le secret ressemble plus à un coffre-fort en acier: pour le percer, vous avez besoin d'outils plus puissants.

Un homme intelligent Auguste Kerckhoffs l'a déjà écrit il y a plus d'un siècle. Malgré l'invention de l'ordinateur et de toute la technologie actuelle, ses découvertes s'appliquent toujours. Il a fallu un certain temps aux praticiens de la cryptographie pour apprendre cette leçon; 60 ans plus tard, les Allemands mettaient encore beaucoup dans le "secret" de la conception de la machine Enigma. Notez que lorsque les Allemands ont mis en service la Navy Enigma à 4 rotors, les cryptographes alliés ont été incommodés (le craquage de routine s'est arrêté pendant quelques mois) mais n'ont pas été totalement déconcertés car certains documents capturés de l'année précédente faisaient allusion au développement de la nouvelle version, avec un quatrième rotor "réflecteur". Voilà: l'algorithme secret n'a pas pu être atteint en pratique.


Une autre particularité est que l'obscurité de l'algorithme peut nuire à la sécurité . Ce que j'explique ci-dessus, c'est qu'on ne peut pas faire confiance à l'obscurité pour la sécurité: elle pourrait augmenter la sécurité, mais pas de beaucoup (et vous ne pouvez pas vraiment savoir "combien"). Il s'avère que cela peut également diminuer la sécurité. Le problème est le suivant: il est très difficile de faire un algorithme cryptographique sécurisé. La seule méthode connue est de publier l'algorithme et d'attendre que la sagesse collective des cryptographes du monde entier la ronge et parvienne à une conclusion qui peut être exprimée comme «peut être brisé de cette façon» ou «apparemment robuste». Un algorithme n'est déclaré "bon" que s'il a résisté à l'assaut de dizaines ou de centaines de cryptographes compétents pendant au moins trois ou quatre ans.

Internet, la procrastination académique et l'orgueil humain sont tels qu'avec la bonne campagne de communication, vous pouvez amener ces quelques centaines de cryptographes à faire ce travail d'évaluation difficile gratuitement - à condition algorithme public (et «attractif» en quelque sorte). Si vous souhaitez maintenir l'algorithme obscur, vous ne pouvez pas bénéficier d'une telle consultation gratuite. Au lieu de cela, vous devez payer. Vingt bons cryptographes pour, disons, deux ans d'efforts: on parle ici de millions de dollars. Personne ne fait ça, c'est beaucoup trop cher. De même, les algorithmes obscurs sont invariablement beaucoup moins soumis à des tests de stress que les algorithmes publics, et donc moins sûrs .

(Notez les petits caractères: la sécurité ne consiste pas seulement à ne pas être brisée, mais aussi avoir une certaine a priori savoir que les violations ne se produiront pas. Je veux pouvoir dormir la nuit.)


Résumé:

  • Vous ne devez pas garder votre algorithme secret.
  • Vous ne savez pas combien votre algorithme est secret.
  • Vous ne pouvez pas garder votre algorithme secret.
  • Mais vous pouvez et devez garder votre mot de passe secret, et vous pouvez savoir "combien" il est secret est (c'est tout le business de "l'entropie").
** Security through Obscurity ** s'opposant à ** Security through Secrecy ** est probablement la chose la plus succincte que j'ai entendue tout le mois.
+1 excellente réponse. Une pensée: dans votre exemple Enigma, les Alliés ont cessé de craquer les mots de passe pendant quelques mois après l'introduction du nouvel algorithme et jusqu'à ce qu'il soit divulgué, alors que se serait-il passé si l'algorithme n'était pas obscurci? Cela aurait peut-être été un avantage pour les alliés, et le temps comptait. Je dirais que puisque les nazis étaient apparemment incapables de construire une machine avec des mots de passe plus sûrs, ils ont utilisé le meilleur d'eux-mêmes, qui était Enigma, et que le bonus de courte durée était toujours précieux pour eux. Donc, ne pas publier le nouvel algorithme Enigma était probablement une bonne idée.
@FelixDombek Si l'Enigma avait été conçue à partir de zéro pour être un design publié, et pour que sa sécurité réside dans la clé, les efforts pour la casser auraient dû se concentrer sur la clé plutôt que sur la machine. Dans ce cas, même avoir accès à Enigmas aurait supprimé le besoin d'en construire, mais cela n'aurait pas fondamentalement changé beaucoup: vous auriez toujours eu besoin de casser la clé, et avec un bon algorithme, cela signifie essentiellement essayer tous les possibles clé. Rendez la clé suffisamment longue et ce n'est tout simplement pas faisable. Les clés sont également à certains égards plus faciles à protéger.
Désormais, concevoir quelque chose de telle sorte qu'il puisse être rendu public sans nuire gravement à la sécurité, et le rendre public, sont deux choses différentes. Regardez aujourd'hui: je ne doute guère que la grande majorité de la sécurité du cryptage militaire repose sur la clé (et la distribution de clé), mais cela ne signifie pas que chaque algorithme de cryptage militaire est rendu public en temps voulu, seulement que * si cela devait arriver * la sécurité ne serait pas grandement affectée. En particulier dans de telles situations, il n'est pas nécessaire de rendre les choses * plus faciles * pour votre adversaire que nécessaire.
Lucas Kauffman
2012-11-24 13:47:23 UTC
view on stackexchange narkive permalink

Garder votre crypto secret n'est pas possible. Vous devez l'avoir là-bas, si c'était juste pour que les gens puissent le tester si cela fonctionne réellement. Je ne vois aucune raison de garder le secret cryptographique. Vous pouvez mettre une serrure sur la porte, tout le monde peut voir votre serrure tout le monde sait comment fonctionne votre serrure et sait que sans la clé, elle est inutile. Le mot de passe est votre clé.

En plus de tout cela, il existe quelques règles d'or comme «ne réinventez pas la roue» et «n'essayez pas de créer votre propre crypto». Nous avons des normes de cryptographie car ils peuvent le tester à grande échelle. Reportez-vous également au principe de Kerckhoffs

D.W.
2012-11-24 13:56:44 UTC
view on stackexchange narkive permalink

Il existe deux différences importantes entre les algorithmes et les mots de passe / clés:

  1. Vous pouvez (et devriez) changer les clés cryptographiques de façon routinière - ou lorsqu'un compromis est suspecté. Cela atténue la perte de secret. De même, vous devez changer votre mot de passe chaque fois que vous avez des raisons de soupçonner que le mot de passe peut être compromis. En revanche, il est rarement possible de changer l'algorithme de chiffrement utilisé en temps opportun, vous devez donc être capable de survivre (sans perte de sécurité) à des situations où l'algorithme devient connu.

  2. Une copie de l'algorithme est incluse dans chaque logiciel qui peut crypter ou décrypter. Cela signifie qu'il suffit d'un seul utilisateur du logiciel pour procéder au reverse-engineering de l'algorithme et le publier sur Internet, et l'algorithme n'est plus secret. En d'autres termes, vous ne pouvez pas raisonnablement vous attendre à garder l'algorithme secret. En revanche, votre mot de passe ou votre clé de cryptage est stocké uniquement sur votre machine - pas sur la machine de millions d'autres utilisateurs.

Ces raisons ont été exposées par Auguste Kerckhoffs retour en 1883 - oui, il y a plus d'un siècle. (Il semble que ces gens n'étaient pas des mannequins!) Voir Wikipedia sur le principe de Kerckhoff, en particulier la règle 2 ("[L'algorithme] ne doit pas être tenu d'être secret, et il doit pouvoir tomber entre les mains de l'ennemi sans inconvénient ").

Je vous recommande également de lire ici d'autres questions sur la" sécurité par l'obscurité ", y compris, par exemple, Comment définir les exigences de sécurité pour garantir que les développeurs ... n'assurent pas la sécurité par l'obscurité? et Le rôle valide de l'obscurité et Démonstration de l'échec de la sécurité par l'obscurité et NSA Suite A Cryptography: La sécurité à travers l'obscurité? et la Version de masquage - utile ou simplement la sécurité par l'obscurité?. Ils couvrent des sujets connexes et la justification. N'oubliez pas d'utiliser la barre de recherche ou de regarder à droite la barre latérale "Associés".

Changer régulièrement les mots de passe est en contradiction avec une fonctionnalité importante, à savoir la possibilité de se souvenir des mots de passe. Cela peut nuire à la sécurité. Par exemple, sur mon lieu de travail, ils me forcent à changer mes mots de passe tous les 42 jours, ce qui m'oblige à les écrire sur des morceaux de papier (ou, alternativement, à utiliser des mots de passe «spirituels» qui peuvent être mémorisés facilement, mais qui sont également devinable).
@ThomasPornin, bon point, je suis d'accord! J'ai modifié ma réponse en conséquence.
Mike Scott
2012-11-24 13:43:19 UTC
view on stackexchange narkive permalink

Il n'y a qu'une poignée de bons algorithmes, alors qu'il y a peut-être 10 40 bons mots de passe de 20 caractères ou moins. Il est donc assez facile pour un attaquant de deviner votre algorithme ou d'énumérer tous les algorithmes probables, alors qu'il lui est impossible de faire de même avec un mot de passe bien choisi. Imaginez la situation si les utilisateurs devaient choisir leur mot de passe dans une liste de dix possibilités, et c'était la même liste pour tout le monde - c'est essentiellement la position des algorithmes.

Lie Ryan
2012-11-24 23:46:22 UTC
view on stackexchange narkive permalink

Une chose que tout le monde n'avait pas mentionnée ici est que présupposer que l'algorithme est connu du public permet de prouver beaucoup plus facilement qu'un schéma de sécurité est vraiment sécurisé. En supposant que votre attaquant connaît le schéma que vous avez utilisé, il est plus facile de prouver qu'un schéma n'est pas sécurisé. Par conséquent, vous sauriez qu'il faut éviter d'utiliser le schéma.

La sécurisation de l'algorithme est beaucoup plus difficile que la sécurisation de la clé pour les différentes raisons mentionnées dans les autres articles, donc si quelqu'un peut obtenir la clé, il est très probable qu'il serait également en mesure d'obtenir l'algorithme; mais l'inverse est beaucoup moins probable.

De plus, c'est un principe de sécurité général sur lequel moins le schéma s'appuie pour maintenir sa sécurité, plus le schéma est sécurisé. En fin de compte, cela se résume à: sur les schémas les plus sécurisés, seule la clé doit être gardée secrète.

Cela ne signifie pas nécessairement que vous devez publier l'algorithme que vous utilisez. L'obscurité peut être utilisée comme couche de défense (bien que, comme mentionné, la publication d'objecterait le système à un examen plus public), mais l'obscurité ne devrait jamais être utilisée comme seule couche de défense.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...