Frage:
Warum ist Sicherheit durch Dunkelheit keine gute Option für die Verschlüsselung?
ArnoldM904
2014-09-02 05:18:22 UTC
view on stackexchange narkive permalink

Ich habe das Gefühl, dass es eine einfache Erklärung geben muss, aber ich habe mich umgesehen und keine gesunden Antworten gefunden.

Nehmen wir zum Beispiel meinen Namen Alice und meinen besten Freund Bob und wir wollen sicher kommunizieren.

Wenn ich ein Programm schreibe, das meinen Text durch mehrere Dutzend Filter verdeckt und den Vorgang erfolgreich umkehren kann, vorausgesetzt, ich habe das Programm dann auf ein Blatt Papier geschrieben und Bob mein Papier in der Mitte gegeben In der Wüste, in der er es dann auswendig gelernt und verbrannt hat, wie könnte jemand jemals unseren Code knacken?

Um die Dunkelheit näher zu erläutern, nehme ich zum Beispiel Folgendes:

  • Nehmen meine ursprüngliche Zeichenfolge und konvertiere sie in eine binäre
  • Von dort füge ich jeder Zahl die letzte Ziffer des Jahres hinzu
  • Dann habe ich den Text umgekehrt
  • Dann habe ich hinzugefügt ein zufällig generiertes Zeichen einmal alle 3 Zeichen
  • Und so weiter und so fort, bis ich mehrere Dutzend Unklarheiten durchgefiltert hatte.

Warum sollte es nicht mehr sein? -oder weniger unmöglich, unsere Nachricht ohne das Programm oder die Formel selbst (oder zumindest für mehrere Jahre) zu entschlüsseln?

Randnotiz: Ich würde vollständig verstehen, warum Sicherheit durch Dunkelheit für Leute, die Dinge sagen, nicht funktionieren würde wie "Ich werde benutze einfach ein seltsames Betriebssystem und ich bin in Sicherheit, denn wer zum Teufel versteht ein seltsames Betriebssystem! " Ich frage nur nach dem Senden einer verschlüsselten Nachricht hin und her, die, wenn sie von einem Dritten abgefangen wird, aufgrund ihrer Dunkelheit nicht realistisch knacken kann.

Verwenden Sie ein [einmaliges Pad] (http://en.wikipedia.org/wiki/One-time_pad). (Für einige Leute mag es schwer zu merken sein, aber [Shereshevsky] (http://en.wikipedia.org/wiki/Solomon_Shereshevsky) hätte keine Probleme.)
Selbst wenn der erstellte Chiffretext schwer genug zu analysieren ist, ist der Mechanismus nur für Alice, Bob und Sie gut. Im Allgemeinen möchten wir Algorithmen haben, die wir weit verbreitet einsetzen, was bedeutet, dass wir früher oder später Personen, die in der Lage sind, sie rückzuentwickeln, Implementierungen dieses Algorithmus geben müssen.
Um Schneiers Beobachtung zu zitieren: Jeder, vom ahnungslosesten Amateur bis zum besten Kryptographen, kann einen Algorithmus erstellen, den er selbst nicht brechen kann. Oft fällt Sicherheit durch Dunkelheit darunter, weil mit zunehmender Verwendung Dinge bemerkt werden. Und der zugrunde liegende Nachrichtenverkehr hält statistischen Analysen nicht stand, sodass es sich letztendlich um eine Seelensalbe handelt, die sich bitter als nutzlos erweist.
Fünf antworten:
dr jimbob
2014-09-02 09:42:11 UTC
view on stackexchange narkive permalink

Der Grund, warum es verpönt ist, sich auf Sicherheit durch Dunkelheit zu verlassen, ist, dass Sie die gesamte durch Dunkelheit gewonnene Sicherheit vollständig verloren haben, sobald der Algorithmus durchgesickert oder defekt ist. Wenn also ein Akteur mit Zugriff auf den Algorithmus jemals Ihre Organisation verlässt oder Sie gehackt werden oder der Quellcode (oder eine ausführbare Datei) eines Verschlüsselungs- / Entschlüsselungsprogramms irgendwie durchgesickert / gestohlen wird, haben Sie die gesamte Sicherheit Ihres Unternehmens vollständig verloren Algorithmus ist dunkel.

Um die Sicherheit durch Dunkelheit wiederzugewinnen, müssen Sie einen völlig neuen kryptografischen Algorithmus entwickeln, kryptografische Experten dazu bringen, den neuen Algorithmus sicher zu analysieren und den Algorithmus heimlich mit allen Parteien auszutauschen, die dies benötigen kommunizieren.

Währenddessen trennen wir bei der Verwendung von gut überprüften kryptografischen Standardalgorithmen den Algorithmus (bei dem es Ihnen nichts ausmacht, wenn jemand ihn stiehlt) von dem Schlüssel, der für Brute-Force (z. B. Brute) rechnerisch nicht durchführbar ist - Erzwingen Sie einen symmetrischen 256-Bit-Schlüssel, wenn jedes Proton / Neutron auf der Erde (alle 10 ^ 51) eine Milliarde Schlüssel pro Sekunde ausprobiert. In einer Million Jahre brutalen Erzwingens hätten Sie nur eine Chance von 1 zu 1000

Nur der Schlüssel muss geheim gehalten werden. Wenn Sie durch einen Angriff einen Schlüssel verlieren oder sicher Nachrichten an eine neue Partei senden müssen, müssen Sie keinen völlig neuen Algorithmus erfinden. Sie müssen nur einen neuen Schlüssel generieren.

Mit einem gut überprüften öffentlichen Algorithmus kann jeder mitkommen und versuchen, ihn zu analysieren und festzustellen, ob es ernsthafte Schwachstellen gibt. Dies ist mit Ihrem privaten Algorithmus nicht möglich, der oft viel schwächer ist, als der Implementierer denkt. (Zum Beispiel, wie Daniel erwähnte, wäre der von Ihnen beschriebene Algorithmus anfällig für viele Standardangriffe wie die Analyse der Buchstabenhäufigkeit, die Analyse von Perioden im Text, das Ausnutzen von Mustern im zugrunde liegenden Klartext usw.)


Darüber hinaus ist die Verwendung geheimer Algorithmen unter dem Gesichtspunkt der Benutzerfreundlichkeit erheblich schwieriger. Es gibt viel mehr, an das sich der Benutzer bei jedem Austausch mit jedem anderen Benutzer erinnern muss. Wenn Sie eine Datei finden, die Sie vor 5 Jahren verschlüsselt haben, oder jemand Ihnen eine Datei sendet, ist die Entschlüsselung viel einfacher, wenn Sie wissen, dass sie mit AES256 im CBC-Modus verschlüsselt wurde, da dort Datei-Meta vorhanden ist -Daten, die diese Informationen angeben, anstatt zu versuchen, sich daran zu erinnern, welche Art von geheimem benutzerdefinierten Verschlüsselungsalgorithmus Sie möglicherweise für diese bestimmte Person verwendet haben. Wenn Benutzer auf einer Vielzahl von Plattformen arbeiten, wird es schwierig, Ihren benutzerdefinierten geheimen Verschlüsselungsalgorithmus für alle perfekt einzusetzen.

Daniel
2014-09-02 05:35:28 UTC
view on stackexchange narkive permalink

Wenn Sie nur eine kurze Nachricht (ein oder zwei Sätze) senden, ist es schwierig, diese zu unterbrechen. Sobald Sie jedoch anfangen, große oder häufige Nachrichten zu senden, ist es wahrscheinlich sehr einfach, mit Techniken wie der Häufigkeit von Sprachbuchstaben zu brechen.

Bei vielen einfachen Verschlüsselungstechniken wird beispielsweise ein "a" immer übersetzt der gleiche verschlüsselte Brief. Wenn Sie genügend Text haben, können Sie anhand der Häufigkeit leicht herausfinden, welche Buchstaben welche sind.

Sie können dies sogar tun, ohne etwas über die Formel zu wissen, die den Text verschlüsselt hat. Sogar Chiffren, die die Buchstabenhäufigkeit zu verbergen scheinen, können sie dennoch verfügbar machen (siehe diese zum Beispiel). Mit Computern kann die Auswertung der Buchstabenhäufigkeit sehr schnell automatisiert und durchgeführt werden.

Es gibt andere Möglichkeiten, Codes zu knacken. Die Häufigkeit von Buchstaben ist nur ein leicht verständliches Beispiel.

Dies ist die logischste Antwort, die ich bisher gefunden habe. Danke.
Hier ist ein Gegenbeispiel: Wenn ich einen obskuren PRN-Generator verwende, jede Nachricht mit einem großen Zufallsschlüssel als Startwert sende und die Nachricht mit der Ausgabe des Generators XOR, ist es ziemlich schwierig, Analysetechniken zu verwenden, um herauszufinden, was los ist on, und der Angreifer wird sich wahrscheinlich sowieso nicht darum kümmern, da er glaubt, dass es wahrscheinlich AES-verschlüsselt ist, wie heutzutage viel verschlüsselter Datenverkehr. Selbst wenn sie sich die Mühe machen (aber den Algorithmus unseres PRN nicht kennen), wird es für sie sehr schwierig. Wir müssen nicht einmal unser eigenes PRN erfinden - kombinieren Sie einfach einige verschiedene Typen.
@Evgeni Sergeev - Das ist eine schlechte Idee. Wenn Sie nur ein RNG von der Stange nehmen, besteht eine erhebliche Wahrscheinlichkeit, dass Sie so etwas wie einen 32-Bit-Zufallszahlengenerator mit einem kleinen Zeitraum verwenden, der sehr angreifbar wäre. Siehe [diese Frage besagt, dass Ihre Methode mit elementaren Techniken leicht angegriffen werden kann] (http://security.stackexchange.com/questions/6740/). Selbst wenn Sie mehrere lineare Kongruenzgeneratoren mit großen nicht überlappenden Perioden kombinieren, sind im Wesentlichen die Parameter der LCGs der Schlüssel - und stammen wahrscheinlich aus einem kleineren Schlüsselraum und wären dennoch ziemlich anfällig.
@drjimbob Mit "obskur" meinte ich, dass der Algorithmus dunkel sein würde, nicht die Implementierung. Angenommen, ich beschränke mich auf ein paar LCGs, die parallel laufen und sich gegenseitig auf dunkle Weise beeinflussen. In der Diskussion, die Sie verlinken, wird Salsa20 erwähnt. Http://en.wikipedia.org/wiki/Salsa20 Sehen Sie, wie einfach das ist? Und die beste Kryptoanalyse braucht 2 ^ 251 Operationen, um sie zu brechen ... Während ich in meinem Schema die Bits mit noch mehr Turbulenzen verwechseln würde, da ich mir keine Sorgen um die Leistung mache.
tylerl
2014-09-02 11:23:25 UTC
view on stackexchange narkive permalink

Sehen Sie sich Diese Frage und insbesondere Diese Antwort an. Ihre Frage ist fast identisch mit meiner, und Thomas Pornin gab die beste Antwort auf diese Frage wie immer. Am besten lesen Sie es einfach. Hier ein Auszug:

"Sicherheit durch Dunkelheit" ist ein Ausdruck, der den Begriff "Dunkelheit" und nicht "Geheimhaltung" verwendet. Bei der Kryptografie geht es darum, Sicherheit durch Geheimhaltung zu erreichen. Das ist der ganze Unterschied: Ein Passwort kann geheim sein; Ein Algorithmus ist bestenfalls dunkel . Die Dunkelheit wird beseitigt, sobald ein kluger Kerl daran denkt, eine metaphorische Laterne mitzubringen. Geheimhaltung ist eher wie ein Stahltresor: Um sie zu durchbrechen, benötigen Sie leistungsfähigere Werkzeuge.

vaab
2014-09-02 12:23:05 UTC
view on stackexchange narkive permalink

Die Verwendung von Schlüsseln oder eines geheimen Algorithmus ist dasselbe . Lassen Sie mich das wiederholen: Die Verwendung von Schlüsseln in einem bekannten Verschlüsselungsalgorithmus oder eines speziellen cleveren Algorithmus Ihrer Erfindung ist dasselbe: In beiden Fällen gibt es ein gemeinsames Geheimnis, das in Rohdaten gemessen werden kann.

Alle Verschlüsselungsmethoden basieren auf "Dunkelheit" , was im Grunde der Schutz des gemeinsamen Geheimnisses ist. Grundsätzlich geht es darum, das geteilte Geheimnis geheim zu halten. Die Geheimhaltung Ihres Schlüssels hängt mit der Zufälligkeit (seiner Entropie) zusammen. Je weniger zufällig es sein wird, desto mehr könnte ich einen Teil Ihres Geheimnisses erraten. Da diese erratenen Teile nicht mehr geheim sind und wir sagen könnten, dass das geteilte Geheimnis Rohdaten sind.

Und Sie haben vollkommen Recht in dem Sinne, dass Sie können einen Weg finden, der unzerbrechlich ist , vorausgesetzt, Sie haben ein ausreichend langes vorab freigegebenes Geheimnis .

Sie müssen jedoch nicht zu kompliziert werden Informationen zum Algorithmus: Wenn Sie eine Standardschlüsselverschlüsselung verwenden und Ihr Schlüssel lang genug ist (beispielsweise länger als die Nachricht), ist es leicht zu verstehen, dass Ihr Schutz perfekt ist. Nur zur Erinnerung: eine einfache XOR-Verschlüsselung mit einem wirklich zufälligen Schlüssel, der länger als die Nachricht ist, ist unzerbrechlich. Vergessen Sie jedoch nicht Folgendes: Sie benötigen ein ausreichend langes vorab freigegebenes Geheimnis (und ein neues für jede Kommunikation).

Wo liegt also das Problem? Warum machen wir das nicht einfach? Weil Ihr gemeinsames Geheimnis sich bei jeder Verwendung verschlechtert . Und irgendwann wird es dir ausgehen. Die Verwendung Ihres Schlüssels verrät einen subtilen Teil davon: Wenn Sie beispielsweise betrachten, was Ihren Algorithmus erzeugt, erhalten Sie einige subtile Hinweise. Je mehr wir aus Ihrem Algorithmus herauskommen, desto mehr Muster werden bemerkt.

In den meisten praktischen Fällen beginnen wir also gerne an dem Punkt, an dem Alice und Bob zunächst kein Geheimnis teilen , oder zumindest Dieses Geheimnis ist nicht lang genug, um ihre Kommunikation abzudecken. Denken Sie daran, dass in Ihrem Fall das Geheimnis der Algorithmus ist und im Standardfall häufig ein Schlüssel, und wir nennen dies gemeinsames Geheimnis .

Also , Im kryptografischen Standardfall verlagern sich die Bedenken auf die Schaffung eines (mehr) gemeinsamen Geheimnisses . Der größte Teil der Anstrengungen wird dann aufgewendet, um einen Weg zu finden, einen Schlüssel zu erstellen, der dann zu dem Punkt führt, an dem Bob und Alice durch Theorie und eine unzerbrechliche Standardchiffre geschützt sind: ein ausreichend langes Geheimnis zu haben

Der Großteil der heutigen kryptografischen Kommunikation funktioniert folgendermaßen: Erstellen Sie dann einen gemeinsam genutzten Schlüssel im laufenden Betrieb (häufig in regelmäßigen Zeitintervallen bei kontinuierlicher Kommunikation) Verwenden Sie mit diesem Schlüssel einen beliebigen trivialen, aber perfekten Verschlüsselungsalgorithmus (z. B. den XOR-Algorithmus). Diffie Hellman ist einer dieser Algorithmen. Normalerweise ist der erste Teil der komplizierteste und kann viel Computerleistung beanspruchen, und der zweite Teil ist trivial.

Der schwierige Teil besteht also darin, genügend gemeinsames Geheimnis zu haben (oder zu generieren) stark>, um Ihre Daten zu verschlüsseln.

Eigentlich ist das nicht richtig. Eine grundlegende Grundannahme jeder symmetrischen Krypto ist, dass der Absender und der Empfänger (unabhängig davon, ob verschiedene Entitäten oder dieselbe Entität zeitlich oder räumlich getrennt sind) ** ein Geheimnis gemeinsam haben. ** (Bei den meisten modernen Algorithmen ist dieses Geheimnis das Geheimnis Schlüssel.) Das * Einrichten eines solchen gemeinsamen Geheimnisses * ist ein separates Problem und kann mithilfe von Techniken wie Kryptografie mit öffentlichem Schlüssel, vorab gemeinsam genutzten Geheimnissen usw. durchgeführt werden.
@MichaelKjorling Vielen Dank für Ihren Kommentar. Ich habe meinen Inhalt umformuliert, um Ihre Bemerkung zu berücksichtigen. Ich hoffe das ist jetzt klarer.
Andrew Hoffman
2014-09-02 10:46:12 UTC
view on stackexchange narkive permalink

Imo sicher zu sein und beweisen zu können, dass Sie sicher sind, sind zwei verschiedene Dinge. Idealerweise möchten Sie in der Lage sein, alles zur Überprüfung auf den Tisch zu legen.

Dazu müssen Sie Ihre Fehlerquellen identifizieren und feststellen, welche Geheimnisse im System vorhanden sind und wie diese Geheimnisse geschützt werden. P. >

Für Infrastrukturgeheimnisse verwenden Ihre Anwendungen möglicherweise Schlüsselphrasen, um auf Ressourcen zuzugreifen. Diese Schlüssel sind in der DMZ-Firewall geschützt und mit Maschinenschlüsseln verschlüsselt. Und Sie können dies und die Prüfer beweisen und sie sind glücklich.

Für den Benutzerzugriff ist die Idee, dass nur der Benutzer dieses Geheimnis kennt, und Sie können den Prüfern beweisen, dass Sie die Geheimnisse nicht speichern Überall auf eine Art und Weise, die neben anderen Best Practices für Passwörter abgeleitet werden kann, und Sie können dies den Prüfern beweisen und sie sind glücklich.

Dunkelheit ist, wenn Sie etwas verstecken, und dies ist etwas anderes als das Behalten Ihre Schlüssel und Passwörter geheim. Sie verstecken, wie das System oder Ihr Algorithmus funktioniert.

Ich denke nicht, dass Dunkelheit schlecht ist. Ich denke, es ist wahrscheinlich eine schlechte Wahl für die meisten Unternehmen. Dies ist nicht erforderlich und kann im gesamten Unternehmen zu Komplikationen führen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...