it-swarm.com.de

Wie wertvoll ist die Geheimhaltung eines Algorithmus?

An der Oberfläche steht die Unempfehlbarkeit von Sicherheit durch Dunkelheit in direktem Widerspruch zum Konzept von gemeinsamen Geheimnissen (dh "Passwörter"). Das heißt: Wenn die Geheimhaltung von Passwörtern wertvoll ist, muss sie sicherlich einen gewissen Wert haben, um den Algorithmus, der das Passwort verwendet, ebenfalls geheim zu halten. Viele (wohl fehlgeleitete) Organisationen gehen sogar so weit zu sagen, dass das System das Passwort ist.

Inwieweit kann man sich auf die Geheimhaltung eines Algorithmus verlassen? Oder vielleicht passender: Inwiefern ist die Geheimhaltung eines Algorithmus zum Scheitern verurteilt, während die Geheimhaltung von Passwörtern nicht zum Scheitern verurteilt ist?

Wenn andererseits die Geheimhaltung eines Algorithmus wünschenswert ist, wie wichtig ist es dann? Wie weit sollte ein Entwickler gehen, um seine Krypto geheim zu halten?

EDIT
Um es klar auszudrücken, geht es nicht darum, einen neuen, nicht getesteten Algorithmus zu erstellen, sondern die Details des von Ihnen gewählten Algorithmus geheim zu halten. Die Technik, mit der Windows Kennwörter hasht, besteht beispielsweise darin, bekannte Hashing-Algorithmen in einer Reihenfolge anzuwenden, die nicht veröffentlicht wird und sich zwischen verschiedenen Windows-Versionen zu ändern scheint.

48
tylerl

Es ist nicht möglich, Ihre Krypto geheim zu halten. Sie müssen es da draußen haben, wenn es nur so ist, dass die Leute es testen können, ob es tatsächlich funktioniert. Ich sehe keinen Grund, Krypto geheim zu halten. Sie können ein Schloss an der Tür anbringen. Jeder kann Ihr Schloss sehen. Jeder weiß, wie Ihr Schloss funktioniert und weiß, dass es ohne Schlüssel nutzlos ist. Das Passwort ist Ihr Schlüssel.

Abgesehen davon gibt es ein paar goldene Regeln wie "Erfinde das Rad nicht neu" und "Versuche nicht, deine eigene Krypto zu erstellen". Wir haben Kryptostandards, weil sie diese in großem Maßstab testen können. Siehe auch Kerckhoffs-Prinzip

8
Lucas Kauffman

Es gibt zwei wichtige Unterschiede zwischen Algorithmen und Passwörtern/Schlüsseln:

  1. Sie können (und sollten) kryptografische Schlüssel routinemäßig ändern - oder wenn ein Kompromiss vermutet wird. Dies verringert den Verlust der Geheimhaltung. Ebenso sollten Sie Ihr Passwort ändern, wenn Sie Grund zu der Annahme haben, dass das Passwort möglicherweise kompromittiert ist. Im Gegensatz dazu ist es selten möglich, den verwendeten Verschlüsselungsalgorithmus rechtzeitig zu ändern, sodass Sie in der Lage sein müssen, Situationen (ohne Verlust der Sicherheit) zu überleben, in denen der Algorithmus bekannt wird.

  2. Eine Kopie des Algorithmus ist in jeder Software enthalten, die verschlüsseln oder entschlüsseln kann. Dies bedeutet, dass nur ein Benutzer der Software erforderlich ist, um den Algorithmus zurückzuentwickeln und im Internet zu veröffentlichen, und der Algorithmus ist nicht mehr geheim. Mit anderen Worten, Sie können nicht erwarten, dass der Algorithmus geheim gehalten wird. Im Gegensatz dazu wird Ihr Kennwort oder Ihr Verschlüsselungsschlüssel nur auf Ihrem Computer gespeichert - nicht auf dem Computer von Millionen anderer Benutzer.

Diese Gründe wurden bereits 1883 von Auguste Kerckhoffs formuliert - ja, vor über einem Jahrhundert. (Es scheint, dass diese Leute keine Dummköpfe waren!) Siehe Wikipedia nach Kerckhoffs Prinzip , insbesondere Regel 2 ("[Der Algorithmus] muss nicht geheim sein und muss in die Hände fallen können des Feindes ohne Unannehmlichkeiten ").

Ich empfehle Ihnen auch, hier andere Fragen zum Thema "Sicherheit durch Dunkelheit" zu lesen, z. B. Wie werden Sicherheitsanforderungen definiert, um sicherzustellen, dass Entwickler ... keine Sicherheit durch Dunkelheit bieten? und Die gültige Rolle der Dunkelheit und Demonstration, wie Sicherheit durch Dunkelheit nicht funktioniert und NSA Suite A-Kryptographie: Sicherheit durch Dunkelheit? und Version ausblenden - wertvoll oder nur Sicherheit durch Dunkelheit? . Sie behandeln verwandte Themen und Begründungen. Denken Sie daran, die Suchleiste zu verwenden - oder schauen Sie rechts in die Seitenleiste "Verwandte".

7
D.W.

Es gibt nur eine Handvoll guter Algorithmen, während es vielleicht 10 gibt40 Gute Passwörter mit 20 Zeichen oder weniger. Für einen Angreifer ist es also recht einfach, Ihren Algorithmus zu erraten oder alle wahrscheinlichen Algorithmen aufzulisten, während es für ihn unmöglich ist, dasselbe mit einem gut gewählten Passwort zu tun. Stellen Sie sich die Situation vor, in der Benutzer ihr Passwort aus einer Liste von zehn Möglichkeiten auswählen mussten und es für alle dieselbe Liste war - das ist im Grunde die Position für Algorithmen.

3
Mike Scott

Eine Sache, die alle hier nicht erwähnt hatten, ist die Annahme, dass der öffentliche Kenntnisstand des Algorithmus es viel einfacher macht, zu beweisen, dass ein Sicherheitsschema wirklich sicher ist. Wenn Sie davon ausgehen, dass Ihr Angreifer das von Ihnen verwendete Schema kennt, können Sie leichter nachweisen, dass ein Schema unsicher ist. Daher sollten Sie das Schema vermeiden.

Das Sichern des Algorithmus ist aus den verschiedenen in den anderen Beiträgen genannten Gründen viel schwieriger als das Sichern des Schlüssels. Wenn also jemand den Schlüssel erhalten kann, ist es sehr wahrscheinlich, dass er auch den Algorithmus erhalten kann. aber das Gegenteil ist viel weniger wahrscheinlich.

Darüber hinaus ist es ein allgemeines Sicherheitsprinzip, dass das System umso sicherer ist, je weniger sich das System auf die Aufrechterhaltung seiner Sicherheit stützt. Letztendlich läuft dies darauf hinaus: Bei den sichersten Systemen muss nur der Schlüssel geheim gehalten werden.

Dies bedeutet nicht unbedingt, dass Sie den von Ihnen verwendeten Algorithmus veröffentlichen sollten. Dunkelheit kann als Verteidigungsschicht verwendet werden (obwohl, wie erwähnt, eine Veröffentlichung das System einer stärkeren öffentlichen Kontrolle widersetzen würde), aber Dunkelheit sollte niemals als einzige Verteidigungsschicht verwendet werden.

2
Lie Ryan