Frage:
Wie würde man ein schwaches, aber unbekanntes Verschlüsselungsprotokoll knacken?
Ram Rachum
2013-03-18 20:03:57 UTC
view on stackexchange narkive permalink

Ich habe diese interessante Frage gelesen:

Ist die Sicherheit meines Entwicklers für das selbstgebraute Passwort richtig oder falsch und warum?

Sie zeigt eine schwache Frage Der von "Dave" entwickelte Home-Brew-Algorithmus und die Antworten diskutieren, warum dies eine schlechte Idee ist. (Eigentlich eher Hashing-Algorithmus als Verschlüsselung, aber meine Frage gilt für beide.)

Es macht für mich Sinn, dass ein Home-Brew-Algorithmus eine sehr schlechte Idee ist, aber eines verstehe ich nicht.

Angenommen, ich bin ein Angreifer und stehe vor einem schwachen, aber unbekannten Verschlüsselungsalgorithmus, der von "Dave" entwickelt wurde. Wie würde ich es knacken? Ich würde nicht einmal wissen, wo ich anfangen soll. Es wäre eine scheinbar bedeutungslose Zeichenfolge.

Angenommen, der Home-Brew-Algorithmus sieht folgendermaßen aus:

  • Verwenden Sie einen schwachen, bekannten Verschlüsselungsalgorithmus für Die Originaldaten dann:
  • Führen Sie ein bitweises Negativ für jedes Byte durch, dessen Seriennummer in der Datei eine wiederholte Ziffernsumme enthält, die eine Primzahl ist. (Oder irgendeine andere solche mathematische Manipulation, dies ist nur ein Beispiel.)

Wie würde man eine von einem solchen Algorithmus erstellte Datei hacken, ohne sie vorher zu kennen?

Bearbeiten: Alle, bitte versuchen Sie nicht, mich davon zu überzeugen, wie schwierig es ist, einen Algorithmus geheim zu halten. Bitte beantworten Sie diese Frage unter der Annahme, dass der Algorithmus vollständig geheim gehalten wird, obwohl dies im wirklichen Leben schwierig zu erreichen ist.

Nehmen Sie außerdem an, dass ich überhaupt keinen Zugriff auf den Algorithmus habe, sondern nur auf die resultierenden Daten.

Wenn Sie nach Antworten im Zusammenhang mit der Kryptoanalyse suchen, möchten Sie möglicherweise einige zusätzliche Informationen angeben. Erstens, auf wie viele Chiffretexte hätte der Angreifer Zugriff, zweitens auf wie viele Chiffretexte hätte der Angreifer Zugriff und drittens, welche Art von Daten durch den Chiffretext verschlüsselt werden (z. B. sind es Binärdaten oder Text).
Fühlen Sie sich frei, die Frage entweder für den Fall mehrerer Chiffretexte oder nur für einen zu beantworten. Bezüglich der Art der Daten: Sagen Sie binär.
Außerdem: Siehe hier: http://old.honeynet.org/scans/scan16/som/som34.html
Kein "unbekannter" Verschlüsselungsalgorithmus kann als "schwach" bezeichnet werden, bis er verstanden und geknackt wurde. Unbekannt bedeutet nicht Schwäche, es ist der Entdeckungsversuch, der die Natur des Tieres und fortan seine Stärke bei der Verschleierung offenbart.
Nun, es scheint, dass Sie Ihren Standpunkt klar gemacht haben. Das war's, du gewinnst. Ein paar Leute auf einer Sicherheitsseite konnten Ihre "Verschlüsselung" nicht knacken.
Hallo RamRachum, [Herausforderung, etwas mit Stilfragen zu dekodieren] (http://meta.crypto.stackexchange.com/questions/100/do-we-want-challenge-analyse-this-questions-and-if-so-what -Beschränkungen (falls vorhanden) werden hier als nicht zum Thema gehörend betrachtet.
Hallo Ram, ich denke du hast ein paar falsche Annahmen. Zunächst einmal, so wie ich es verstehe, fragen Sie * nur * nach den rein mathematischen Aspekten der Kryptoanalyse. Wenn dies der Fall ist, sollte die Frage wahrscheinlich nach [crypto.se] verschoben werden, anstatt auf [security.se] zu bleiben. Hier sehen wir uns das ganze Bild an und bleiben definitiv im Reich der Realität und kein perfekt kugelförmiges Huhn (wie einer der erwähnten Kommentatoren).
In realen Szenarien ist es wahrscheinlich einfacher, die Details dieses Algorithmus zu stehlen, wenn die Vertraulichkeit Ihrer Daten von der Geheimhaltung Ihres Verschlüsselungsalgorithmus abhängt (vorausgesetzt, der Algorithmus ist nicht trivial). Schwächste Verbindung und das alles. Darüber hinaus ist es in nicht trivialen realen Nutzungsszenarien nahezu unmöglich, den Algorithmus geheim zu halten, selbst ohne die Beteiligung des Angreifers - unabhängig davon, ob es sich um andere Benutzer des Algorithmus handelt oder um Entwickler mit Zugriff auf den Quellcode Repository oder andere interne Angreifer.
Da es sich um die reale Welt handelt, ist es oft viel einfacher, einige automatisierte Tools für die grundlegende Kryptoanalyse einzusetzen, ohne sich mit den mathematischen Details befassen zu müssen. Okay, gut - genau diese Details möchten Sie wissen, aber auch das wäre hier kein Thema. (Genau wie die Details eines Verschlüsselungsalgorithmus nicht zum Thema gehören würden).
Schließlich - ich bezweifle, dass irgendjemand hier dazu neigen würde, mehr als eine unbedeutende Zeit damit zu verbringen, Ihre Verschlüsselung zu brechen. Das bedeutet natürlich nicht, dass dies nicht mit angemessener Zeit und angemessenen Ressourcen möglich ist. Was meinen letzten Punkt aufwirft: Wie einfach es ist, Ihre Verschlüsselung zu brechen, ist für Ihr Risikoprofil und Ihr Bedrohungsmodell relevant. Ist das eine Bankanwendung oder der Katzenblog Ihrer kleinen Schwester? Die entsprechenden Belohnungen legen fest, wie viel Aufwand - von wie vielen Angreifern - wahrscheinlich versucht wird, Ihre Verschlüsselung zu unterbrechen. Es ist tatsächlich * einfacher * - geschweige denn sicherer - nur eine starke Verschlüsselung zu verwenden.
Ihrer Frage fehlen wirklich die Details, die @RoryMcCune erwähnt, mit starkem Einfluss auf die "richtige" Antwort: Wenn Sie nur verschlüsselte Nachrichten und kein Hintergrundwissen darüber haben, ist die schlimmste Annahme, dass jemand etwas verwendet hat, das einem [einmaligen Pad entspricht ] (http://en.wikipedia.org/wiki/One-time_pad) - Wenn ein wirklich zufälliger, nicht reproduzierbarer Schlüssel verwendet wurde, können Sie die Nachricht ohne weitere Interaktion mit dem Absender oder Empfänger (direkt oder indirekt) nicht erhalten. Aber es könnte auch ein triviales Schema sein, dass ein erfahrener Kryptoanalytiker zum Frühstück pausieren kann. Sie können nur versuchen und sehen.
@Thomas wow! Anscheinend bin ich jetzt auch ein l33th4x0r. Ich habe <5 Minuten mit Python gebraucht (ich lerne Python) und ich habe keine nennenswerte Erfahrung in der Kryptoanalyse ... :)
Ich kann Ihnen "The Code Book" von Simon Singh empfehlen. Möchten Sie wissen, wie Enigma während des Zweiten Weltkriegs geknackt wurde? Dieses Buch erklärt es in einfachen Worten. Es listet auch viele der berühmten Chiffren aus der Geschichte auf und wie sie geknackt wurden. Es ist eine schöne Lektüre für alle, die sich für Kryptographie interessieren.
"Wie würde ich es knacken? Ich würde nicht einmal wissen, wo ich anfangen soll." Sie gehen dort davon aus, dass die Person, die versucht, es zu knacken, sich mit Krypto-Cracking genauso schlecht auskennt wie Sie oder ich.
Übrigens: Im wirklichen Leben erhalten Sie die verschlüsselten Daten von einer bestimmten Quelle (die Sie kennen) und zu einem bestimmten Zeitpunkt, wahrscheinlich wissen Sie bereits etwas über die Quelle. Dies ermöglicht eine Reihe von Hypothesen über den Inhalt des Textes, die beim Entschlüsseln sehr hilfreich sein können. Das gleiche wurde während des Zweiten Weltkriegs von Turing et al. im Umgang mit Enigma: Sie wussten, dass es um 06:00 Uhr eine Nachricht bezüglich des Wetters gab, und nahmen an, dass einige Teile der verschlüsselten Nachricht auf Wetterbedingungen bezogen waren, sodass sie die Chiffre in viel kürzerer Zeit brechen konnten (obwohl sie * mehr oder weniger * die kannten Algorithmus).
Ich habe jetzt eine ähnliche Frage zu crypto.stackexchange gestellt: http://crypto.stackexchange.com/questions/6752/how-would-one-crack-a-weak-but-unknown-encryption-protocol
Bitte stellen Sie nicht dieselbe Frage auf zwei verschiedenen Websites. Das ist entmutigt / nicht erlaubt. Stattdessen können Sie auf die Schaltfläche "Flag" klicken, um zu fragen, ob die Frage nach Crypto.stackexchange verschoben werden soll.
Acht antworten:
#1
+60
user2213
2013-03-18 20:31:09 UTC
view on stackexchange narkive permalink

Angenommen, ich bin ein Angreifer und stehe vor einem schwachen, aber unbekannten Verschlüsselungsalgorithmus, der von "Dave" entwickelt wurde. Wie würde ich es knacken? Ich würde nicht einmal wissen, wo ich anfangen soll. Es wäre eine scheinbar bedeutungslose Zeichenfolge.

Das ist richtig, würden Sie nicht. Hier sind einige verschlüsselte Daten (4587556841584465455874588). Hast du eine Ahnung, was das bedeutet? Absolut nicht.

Es fehlt Ihnen jedoch der grundlegende Schlüssel für das Universum, der die Kryptographie zusammenhält. Die Idee ist einfach:

  der Schlüssel ist alles  

Das war's. Das ist das Stück, das du schützen musst. Das Stück, das Sie mit Ihrem Leben schützen müssen und hoffen, dass niemand Sie mit einem Hammer schlagen wird, bis Sie ihnen sagen, was es ist.

Auf dieser Basis müssen Sie davon ausgehen, dass Ihr Algorithmus vom Angreifer gelesen werden kann . Sie wissen, wie es funktioniert. Sie können den Prozess dokumentieren. Wenn es Schwächen gibt, werden sie diese finden. Und sie werden sie ausbeuten. Wie dieser verärgerte CIA-Vater von Taken.

Es stellt sich heraus, dass dies weniger eine Annahme als vielmehr ein praktischer Fall ist. Dave, der selbstgebraute Kryptograf, möchte einen Verschlüsselungsalgorithmus in sein Programm aufnehmen. Er beschließt, all die Test- und Designarbeiten zu vermeiden, die Kryptographen im Laufe der Jahre kostenlos für ihn geleistet haben, schreibt etwas mit dem ungeraden xor, kompiliert sein Programm und gibt es hilfreich an Freunde weiter.

Dieser Algorithmus ist jetzt in ihre Hände. Spiel vorbei.

Nun könnten Sie fragen: "Kann ich den Algorithmus nicht einfach geheim halten? Das wird funktionieren, oder?" Oh Dave, bitte hör auf. Nein nein Nein. Das Problem mit geheimen Algorithmen ist, dass sie viel häufiger gestohlen werden. Schließlich ist der Schlüssel für jeden Benutzer unterschiedlich (eigentlich ist dies keine Voraussetzung, aber nehmen wir zur Vereinfachung einfach an), aber der Algorithmus bleibt unverändert. Sie benötigen also nur eine Ihrer Implementierungen, um einem Angreifer ausgesetzt zu sein, und das Spiel ist wieder von vorne.


Bearbeiten : Ok, als Antwort auf die aktualisierte Frage des OP. Nehmen wir für einen Moment an, dass der Algorithmus völlig unbekannt ist. Jeder der beiden Teilnehmer an einer verschlüsselten Konversation hat die perfekte Sicherheit für die Implementierung seines Algorithmus.

In diesem Fall müssen Sie Daten analysieren. Sie können eine der folgenden Aktionen ausführen:

  • Analysieren Sie auf häufig bekannte Buchstaben. Auf diese Weise würden Sie eine typische Caesar-Shift-Chiffre brechen.
  • Versuchen Sie, die Länge des Schlüssels zu erraten. Mit diesen Informationen können Sie nach wiederholten Chiffretextblöcken suchen, die möglicherweise demselben Klartext entsprechen.
  • Versuchsindex und andere solche Maßnahmen, die zum Aufbrechen der Vigenere-Chiffre verwendet werden, da dies (möglicherweise) viele polyalphabetische Chiffren sind ) nur Varianten davon.
  • Achten Sie auf Muster. Jedes Muster kann Ihnen den Schlüssel geben.
  • Suchen Sie nach anderen Hinweisen. Entsprechen die Längen einem bestimmten Maß, sind sie beispielsweise Vielfache eines bestimmten Werts wie einer Bytegrenze und werden daher (möglicherweise) aufgefüllt?
  • Versuchen Sie, mit einer der symmetrischen Chiffren zu analysieren Kryptoanalyse-Techniken. Diese hängen in vielen Fällen von der Kenntnis des Algorithmus ab und gelten hier möglicherweise nicht.
  • Wenn Sie der Meinung sind, dass die fraglichen Daten einen Schlüsselaustausch darstellen, können Sie eine der vielen Techniken ausprobieren, um public zu brechen Schlüsselalgorithmen.

Tatsache ist, dass ein kurzes Datenelement eines unbekannten Algorithmus möglicherweise nicht entschlüsselt werden kann. Dies bedeutet jedoch nicht, dass Sie sich darauf verlassen sollten, dass dies der Fall ist. Je mehr Daten ein Kryptoanalytiker wiederherstellen kann, desto wahrscheinlicher ist es, dass er Ihren Algorithmus beschädigt. Ohne ernsthafte Kryptoanalyse wissen Sie wahrscheinlich nicht, was diese Grenze ist - es ist beispielsweise anzunehmen, dass man einen Caeser-Cipher-Algorithmus für Wörter mit drei Buchstaben brutal erzwingen könnte, da es nur wenige gibt, die Sinn machen.

Sie haben auch Probleme mit der Wiederverwendung. Im Zweiten Weltkrieg haben die Engima dieses Problem überwunden, indem sie programmierbare Einstellungen für ihren geheimen Algorithmus hatten, aber dies wurde auch gebrochen.

Es gibt auch das menschliche Element der Kryptographie zu berücksichtigen. Mir ist klar, dass auf dem Etikett auf der Dose "Einmal verwenden, nicht verdauen" usw. steht, aber Menschen sind Menschen und werden wahrscheinlich zweimal, dreimal usw. verwenden. Jedes derartige Verhalten spielt dem Kryptoanalytiker in die Hände.

Sie haben argumentiert, dass es sehr schwierig ist, die Geheimhaltung des Algorithmus zu wahren. Ich stimme vollkommen zu. Dies ist jedoch nicht das, worum es bei der Frage geht, daher ist diese Antwort nicht hilfreich.
@RamRachum: Vielleicht möchten Sie Ihre Antwort aktualisieren, um anzugeben, dass unsere Ausgangsannahmen ein perfekt kugelförmiges Huhn auf einer reibungslosen Ebene sind.
Scott: Normalerweise nimmt das Huhn eine Punktmasse ein, weil der Luftwiderstand mit all diesen Federn wirklich kompliziert ist und ähm, ja. @Ram ok, ich habe die Antwort aktualisiert, um einige allgemeine Hinweise zu geben, wo Sie mit zufälligen Daten beginnen würden und was ein Risiko für die "zufälligen" Daten darstellt. Haftungsausschluss: Wenn Sie sich auf diese Informationen verlassen, geschieht dies auf eigenes Risiko.
@AntonyVennard Vielen Dank für das Hinzufügen nützlicher Informationen!
Hätte einer der von Ihnen erwähnten Ansätze in der Beispielverschlüsselung funktioniert, die ich in meiner obigen Frage angegeben habe?
@Ram wahrscheinlich. Das Ändern einer Datei pro Byte-Position kann einen Teil des Textes verwirren, aber wenn Sie genug haben, werden Sie bald herausfinden, dass dies das Muster ist, insbesondere wenn Teile von Wörtern erscheinen. Sie würden es im Wesentlichen in zwei Stufen aufteilen: 1) den schwachen Algorithmus, dann 2) ok, ich habe Teile von Wörtern, wie sieht nun das Muster mit den übrigen aus?
Wenn Sie den Algorithmus nicht kennen und je nachdem, wie gut sein Design ist, ist er nicht trivial, aber es wurde bewiesen, dass Sie entweder nur genügend verschlüsselte Nachrichten oder ein paar klare Nachrichten und deren verschlüsselte Versionen benötigen, um das Rauschen zu entfernen und daraus zu schließen die Transformation durch Anwendung eines Korrelationsalgorithmus zwischen verschlüsselten Nachrichten und ihrer wahrscheinlichsten Entschlüsselung (unter Verwendung der bekannten Nachrichten als Trainingssequenz, falls verfügbar). Wenn Sie sich für Mathematik interessieren, kann Ihnen das Lesen über Informationstheorie, Signalverarbeitung und maschinelles Lernen helfen.
Ich weiß nicht, wer du bist, aber +1 für die Referenz.
Diese Antwort wäre hilfreich gewesen, als ich vor einigen Jahren die Galle hatte, Kryptos zu lösen: http://en.wikipedia.org/wiki/Kryptos
#2
+51
Tom Leek
2013-03-18 22:30:27 UTC
view on stackexchange narkive permalink

Ein unbekannter "Verschlüsselungs" -Algorithmus wurde in der Vergangenheit mindestens einmal erreicht. Ich spreche von minoischer linearer B-Schrift, einer Schreibmethode, die auf Kreta um 1300 v. Chr. Verwendet wurde. Die Methode ging einige Jahrhunderte später mit dem Tod aller Praktizierenden und dem allgemeinen Zusammenbruch der Zivilisation während des sogenannten griechischen Mittelalters verloren. Als Archäologen Ende des 19. Jahrhunderts begannen, die Erde um Knossos und andere Orte herum zu sichten, bekamen sie nur ein paar Tafeln mit unbekannten Zeichen, ohne einen Hinweis auf das Schriftsystem, mit dem sie hergestellt wurden.

Die interessante Geschichte hier ist, dass Linear B in den 1950er Jahren entwirrt wurde, wobei dieselben Analysewerkzeuge verwendet wurden, die auch für Verschlüsselungssysteme dieser Zeit verwendet wurden. Tatsächlich wurde das Schreiben als "unbekannter Verschlüsselungsalgorithmus" angesehen. Es erlag statistischen Analysen, verketteten Schlussfolgerungen und einigen Hypothesen zum Klartext (im Grunde genommen die Annahme, dass die Basissprache für eine Variante des Griechischen ist). Dies ist eine klassische und meisterhafte Illustration der Funktionsweise der Kryptoanalyse gegen "manuelle Kryptosysteme".


Die Annahme, dass ein kryptografischer Algorithmus verwendet werden kann und dennoch geheim bleibt, ist natürlich unplausibel. Unter der gleichen Annahme gibt es keine Piraterie von Videospielen oder Medieninhalten. Die reale Welt erinnert uns unerbittlich daran, dass dies nicht wahr ist. Der einzige bekannte Weg, auf dem ein Algorithmus geheim bleiben kann, besteht darin, seine Erfinder und Praktiker zu töten, ihren Apparat zu zerstören und einige Jahrhunderte zu warten. Dies hat einige unangenehme Nebenwirkungen.

Und selbst wenn in einem bestimmten Fall Details zu einem Algorithmus noch nicht durchgesickert sind , gibt es keine Möglichkeit, zu quantifizieren, wie viel Geheimnis der Algorithmus ist, d. h Wie viel Zeit wird es dauern, bis Reverse Engineering, Bestechung oder gesunder Diebstahl den Algorithmus neu erstellt haben? Dies ist der Hauptgrund, warum Kryptografen vor etwa 40 Jahren beschlossen haben, Schlüssel und Algorithmus zu teilen, wobei der Schlüssel geheim und der Algorithmus nicht geheim ist: Sie können die Geheimhaltung eines Schlüssels quantifizieren , nicht die Geheimhaltung eines Algorithmus.

Dies gibt uns einen Einblick in Ihre spezifische Frage. Ihr "geheimer Algorithmus" hängt von der Vorstellung einer "mathematischen Manipulation" ab. Wie viele davon sind sie? Können Sie die Menge der "mathematischen Manipulationen" schätzen oder beschreiben? Sie werden feststellen, dass ein Verschlüsselungsalgorithmus selbst eine "mathematische Manipulation" ist, sodass Ihre Frage eher schlecht definiert ist.

+1 Dies hat einige unangenehme Nebenwirkungen.
Hervorragende Antwort, zeigt deutlich, warum die Frage an sich "fehlerhaft" ist.
Ich verstehe das alles nicht wirklich. "Die reale Welt erinnert uns unerbittlich daran, dass dies nicht wahr ist." in allen Antworten. Beispiel aus der Praxis: Zum Schutz sensibler Benutzerdaten auf dem Server wird ein reversibler Verschlüsselungsalgorithmus verwendet. Das bedeutet, dass es kein Einwegalgorithmus sein kann, wie wir ihn zum Speichern von Passwörtern verwenden können. Daher muss er einen Schlüssel haben. Wie genau unterscheidet sich der Schutz dieses Schlüssels vom Schutz des Algorithmus? Nehmen Sie einfach an, dass der Typ, der diesen Algorithmus geschrieben hat, derselbe ist, der die Verschlüsselungsschlüssel generiert / verwaltet. Bestechung, Diebstahl usw. würden für beide Methoden in gleicher Weise gelten.
Ich sage nicht, dass es der richtige Weg ist und ich werde so etwas niemals in der Produktion verwenden, aber alle Antworten sind nur faul, imho.
Der Algorithmus existiert als kompilierter Code in Dateien sowie als Quellcode auf Entwicklermaschinen, Revisionskontrollsoftware, Backups ... und es gibt Designdokumente wie gedrucktes Papier, E-Mails und im Kopf mehrerer Personen. Es wäre sehr schwierig, sie alle zu verfolgen und die Geheimhaltung zu gewährleisten. Dies steht im Gegensatz zu einem Schlüssel, der nur im RAM oder im schlimmsten Fall in einer einzelnen Datei vorhanden ist und nicht in allen anderen Medien, die ich gerade aufgelistet habe. Sie können alle Entwickler entführen, keiner von ihnen hat die geringste Ahnung vom Wert des Schlüssels, da er überhaupt nicht in sein Gehirn gelangt ist.
@Tom Leek, Als ich die OP-Frage gelesen habe, erwartete ich interessante Antworten, die erklären, wie schwierig es ist, einen Algorithmus zu entwerfen, der mit modernen Kryptoanalysemethoden (zum Beispiel goo.gl/IEkfh) nicht gebrochen werden kann. Stattdessen habe ich nur die erhalten Meldung "Sie können den Algorithmus nicht geheim halten". Sie schreiben "Es wäre sehr schwierig, sie alle zu verfolgen und die Geheimhaltung zu gewährleisten", aber es ist durchaus möglich, und der Grund, warum die Leute dies nicht tun, liegt nicht darin, dass es schwierig ist, sondern darin, dass selbst die komplexesten selbst gebrauten Algorithmen am meisten dazu beitragen haben wahrscheinlich "Löcher", die von Angreifern ausgenutzt werden können, auch ohne den Algorithmus zu kennen
Bitte, verstehe das nicht falsch, ich habe deine Antwort nicht abgelehnt und es ist in vielen Fällen richtig und ich hätte meine eigene Antwort schreiben sollen, wenn ich etwas an deiner ändern möchte. Nur ... Ich bin kein Kryptograf und obwohl ich an diesem Thema interessiert bin, bin ich nicht wirklich qualifiziert, eine vollständige Antwort auf diese Frage zu geben, und ich habe mehr von einem der Top-Benutzer erwartet :)
@XzKto: gut, ein Algorithmus zu entwerfen, der der Kryptoanalyse widersteht, ist ein ganz anderes Thema. Die Frage betraf das Knacken eines unbekannten Algorithmus (Hervorhebung bereits in der ursprünglichen Frage) im Gegensatz zu einem bekannten Algorithmus. Kryptographen gehen davon aus, dass der Algorithmus aus allen von mir erläuterten Gründen bekannt ist. Wie bekannte Algorithmen der Kryptoanalyse immer noch widerstehen, ist ein sehr großes Thema, das am besten in [crypto.SE] (http://crypto.stackexchange.com/) behandelt wird. Wenn der Algorithmus völlig unbekannt ist, passiert es nie wirklich. Es gibt also keine mögliche Antwort außer weisem Knacken über Archäologie.
@Tom Leek "Die Frage war, einen unbekannten Algorithmus zu knacken" - ja, ich habe auch darüber geschrieben. "Kryptographen gehen davon aus, dass der Algorithmus bekannt ist" - darüber sind wir uns wohl nicht einig. Ich kenne nicht viele populäre Fälle von Reverse Engineering eines unbekannten Algorithmus, aber ich weiß, dass es passiert und es gibt Methoden, dies zu tun. Ich habe nichts Gutes gefunden, aber dies kann ein Beispiel dafür sein, wovon ich spreche: http://goo.gl/sgvBY. Ich denke, dies sollte der Grund sein, warum selbst gebraute Algorithmen schlecht sind, aber wenn ich mir noch einmal alle Antworten ansehe, gebe ich zu, dass ich mich vielleicht geirrt habe.
#3
+32
Adi
2013-03-18 21:32:28 UTC
view on stackexchange narkive permalink

Um ein kryptografisches Protokoll anzugreifen, haben Sie die folgenden Angriffsmethoden:

  • Bekannter Klartext: Es wird versucht, Korrelationen zwischen dem vorhandenen Klartext und dem entsprechenden zu finden Chiffretext.

  • Ausgewählter Klartext: Verschlüsseln von spezifischem Klartext und Untersuchen der Änderungen am Chiffretext, wenn sich der Klartext ändert.

  • Chiffretext auswählen: Entschlüsseln eines bestimmten Chiffretextes und Untersuchen der Änderungen am Klartext und am Chiffretext.

  • Bekannte Chiffre Text: Wenn Sie nur den Chiffretext haben, finden Sie unten ein einfaches Beispiel.

Vor langer Zeit habe ich an einem Kryptografiekurs teilgenommen, in einer der Vorlesungen, die wir gehalten haben wurde die Kryptonanalyse von Substitutions-Chiffren beigebracht. So wird es jetzt nicht gemacht, aber hier hatte die Wissenschaft der Kryptographie begonnen, und so hatte die Kryptonanalyse begonnen.

Nehmen wir an, Sie können diesen Chiffretext durchgehen.

Mx qeoiw wirwi xs qi xlex e lsqi-fvia epksvmxlq mw e zivc feh mhie, fyx xlivi'w sri xlmrk M'q rsx yrhivwxerhmrk.

Sie kennen das nicht Algorithmus, Sie kennen den Schlüssel nicht. Wie sollten Sie beginnen?

  • Analysieren Sie die Buchstabenhäufigkeit: Die Gesamtlänge beträgt 87 Buchstaben. Wir sehen, dass i 12 Mal verwendet wurde -> ~ 13%. Laut dem Artikel von Wikipedia über die Häufigkeit von Briefen ist dieser Brief wahrscheinlich e . Unser Chiffretext lautet jetzt:

Mx qeoew werwe xs qe xlex e lsqe-fvea epksvmxlq mw e zevc feh mhee, fyx xleve'w sre xlmrk M'q rsx yrhivwxerhmrk.

  • Jetzt ist der zweithäufigste Buchstabe x 11 Mal verwendet worden -> ~ 11%, also ist es wahrscheinlich t . Unser Chiffretext lautet jetzt:

Mt qeoew werwe ts qe tlet e lsqe-fvea epksvmtlq / p>

  • Jetzt sehen wir die Muster. Das Ersetzen von i->e und x->t legt nahe, dass der Schlüssel 4 sein könnte. Probieren wir es aus:

Für mich ist es sinnvoll, dass ein selbstgebrauter Algorithmus eine sehr schlechte Idee ist, aber eines verstehe ich nicht.

Ahaa! Wir haben es! Jetzt haben Sie Ihre erste Kryptonanalyse durchgeführt. Dies ist eine Möglichkeit, den Chiffretext zu analysieren.

#4
+15
Nakedible
2013-03-19 01:16:39 UTC
view on stackexchange narkive permalink

Ich denke, niemand hat es hier laut gesagt, also werde ich es tun.

Wenn einem Kryptographen nur ein Chiffretext gegeben wird, ohne dass er mehr erreichen kann, ist der Chiffretext kurz und es gibt keine Kenntnis des Klartextes Es ist nahezu unmöglich, den Text zu entschlüsseln. Dies ist nur möglich, wenn sich die Verschlüsselung in der Nähe des Schwierigkeitsgrades einer Substitutionsverschlüsselung befindet.

Wenn bei demselben Algorithmus eine Möglichkeit besteht, bei Bedarf mehr Chiffretexte zu erhalten, wenn der Chiffretext ausreichend ist lange oder wenn es einige bekannte Teile des Klartextes gibt, die helfen können, ist es wahrscheinlich, dass der Algorithmus bei ausreichendem Aufwand geknackt werden kann.

Trotzdem ist die Kryptoanalyse im Vergleich zum Aufwand beim Erstellen sehr aufwändig Ein einfacher Kryptoalgorithmus von Grund auf neu, daher ist es unwahrscheinlich, dass jemand den Aufwand aufwenden wird, es sei denn, es gibt einen guten Grund dafür.

Hmm, die ultimative Sicherheitsvorkehrung wäre also, einen bekannten Verschlüsselungsalgorithmus mit einem selbstgebrauten zu koppeln, nicht wahr? Denn dann genießen Sie die Vorteile von beidem: Sie genießen die Sicherheit des bekannten Algorithmus, aber wenn darin eine Sicherheitslücke entdeckt wurde, sind Sie immer noch durch die hausgemachte geschützt. Nein?
Keine unangemessene Position, wenn Sie die Algorithmen sicher kombinieren können, ohne neue Schwachstellen einzuführen. Eine andere Möglichkeit, wenn Sie über ausreichende Kenntnisse verfügen, besteht darin, eine geringfügige Änderung an einem bekannten Algorithmus vorzunehmen und die Änderung geheim zu halten. In der realen Welt ist es jedoch fast zu 100% garantiert, dass Sie die Situation verschlimmern, indem Sie etwas hinzufügen - Kryptografie ist schwierig, auch wenn es manchmal so scheint, als wäre es nicht so.
Wenn Sie bei der symmetrischen Verschlüsselung Ihren Home-Brew-Algorithmus vor oder nach einem bekannten Algorithmus anwenden, werden Sie die Situation in keinem Fall verschlimmern. Ich denke, dass es besser wäre, Ihren Home-Brew-Algorithmus nach einem bekannten Verschlüsselungsalgorithmus (und damit vor dem bekannten Entschlüsselungsalgorithmus) anzuwenden, als ihn vor dem bekannten Algorithmus anzuwenden. Was Sie in Ihrem Kommentar sagen, ist wahrscheinlich wahr, Ram.
Um ein anderes Beispiel für den Kombinationsansatz "Sicherheit durch Dunkelheit" und "bekannte Algorithmen" zu geben: Wenn Sie einen kryptografischen Hash ausführen, wenden Sie vorher oder nachher eine injizierende Funktion (z. B. Salting oder Xor-ing mit einer Konstanten) auf die Daten an Hashing kann die Sicherheit nicht verringern, wenn die Hash-Funktion keine Schwachstellen aufweist.
#5
+13
mgjk
2013-03-18 21:40:51 UTC
view on stackexchange narkive permalink

Wenn Sie einen geheimen Algorithmus verteilen möchten, warum nicht stattdessen einfach einmalige Pads verteilen? Es ist sicherer.

Wenn Ihnen die Idee von einmaligen Pads nicht gefällt, weil zu viele Daten über das Kabel übertragen werden, warum nehmen Sie dann an, dass der Angreifer nur einen Chiffretext hat? P. >

Angenommen, jemand hat nur einen Chiffretext und nicht den Algorithmus (zwei schlechte Annahmen), dann hat Ihr schwaches, aber bekanntes zugrunde liegendes Verschlüsselungssystem wahrscheinlich zunächst keine Schwachstellen.

#6
+8
user10211
2013-03-18 20:07:16 UTC
view on stackexchange narkive permalink

Es gibt verschiedene Möglichkeiten.

Die erste und offensichtlichste ist, dass die Angreifer Ihren Server in dem Maße kompromittiert haben, in dem sie Ihren Quellcode erhalten haben. In diesem speziellen Fall ist Ihr selbst erstelltes Schema so gut wie nichts.

Der zweite Weg besteht darin, dass der Angreifer möglicherweise seine eigenen Werte an Ihren Algorithmus senden und das Vorher / Nachher-Ergebnis anzeigen kann. Dies wird als Ausgewählter Nur-Text-Angriff bezeichnet. Ein gutes Verschlüsselungsschema sollte dafür nicht anfällig sein. Ein selbst entwickeltes Schema ist wahrscheinlich.

Selbst ohne einen ausgewählten Klartextangriff ist ein selbst entwickeltes Schema normalerweise lächerlich schwach. Ein Laie wie Sie und ich sind möglicherweise nicht in der Lage, die Ergebnisse eines hausgemachten Schemas zu verstehen. Es gibt jedoch eine Klasse sehr kluger Leute, die ihre Zeit und Mühe darauf verwenden, solche kryptografischen Schemata zu brechen, normalerweise als Gegenleistung für einen guten Gehaltsscheck. Sie haben vielleicht von ihnen gehört, wir nennen sie Kryptographen.

Ich bin hier vielleicht ein bisschen pedantisch, aber ist es nicht "so gut wie nichts", anstatt "schlechter als nichts" zu sein?
@AndySmith Gut, gut. : P bearbeitet.
@RamRachum, bitte sagen Sie uns, warum halten Sie das für nutzlos? Vielleicht könnte Ihnen Terry oder jemand anderes mit mehr Informationen helfen. Soweit ich sehen kann, ist dies eine ziemlich gute Antwort.
@RamRachum Es tut mir leid, aber warum ist das nutzlos? Sie können nicht erwarten, dass ich Ihnen sage, wie Sie jedes einzelne hausgemachte Schema da draußen brechen können, oder? Der Kern der Sache ist, dass einheimische Systeme schwach sind und es sehr kluge Leute gibt, die sie brechen.
@RamRachum Sie möchten also, dass ich eine für Ihren Algorithmus spezifische Antwort mit ehrlich gesagt sehr unrealistischen Einschränkungen gebe? Entschuldigung, das kann ich nicht. Das wäre "zu lokalisiert". Meine Antwort ist gesund, solange Sie in der realen Welt leben.
@Ram - wie wäre es höflich zu bleiben, okay?
Schlimmer als nichts, weil es ein falsches Sicherheitsgefühl erzeugt. Zumindest wenn Sie keine Kontrolle haben, rationalisieren Sie weiterhin zukünftige Sicherheitsentscheidungen unter dieser Annahme, anstatt sich auf die Annahme zu verlassen, dass Sie eine Kontrolle haben, die besser ist als sie wirklich ist.
#7
+4
matugm
2013-03-18 21:25:19 UTC
view on stackexchange narkive permalink

Bitte beantworten Sie diese Frage unter der Annahme, dass der Algorithmus vollständig geheim gehalten wird, obwohl dies im wirklichen Leben schwierig zu erreichen ist.

Das Problem dabei ist, dass Sie ignorieren das Kerckhoffs-Prinzip, wonach die Sicherheit eines Verschlüsselungsschemas nicht von der Geheimhaltung des Algorithmus abhängen sollte.

Wenn Sie wirklich an Krypto interessiert sind, sollten Sie dies tun ein Kurs wie dieser.

Es ist ein Prinzip. Es soll die Entscheidungsfindung leiten. Es ist kein Gesetz, keine Regel oder Theorie, die tatsächlich eine Tatsache ist.
Es ist eine Regel.
@Rushyo Angesichts der Tatsache, wie gut Kerckhoffs Prinzip für moderne Algorithmen funktioniert hat, würde ich sagen, dass dies eine Tatsache ist.
@SmitJohnth Damit dies eine Regel ist, wäre eine Verpflichtung erforderlich. Sie können eine Regel auf ein Prinzip anwenden (d. H. Jeder muss Kerckhoffs Prinzip befolgen, um an dieser Bibliothek arbeiten zu können), aber das macht das Prinzip selbst nicht zu einer Regel.
@TerryChia Ein Prinzip kann 100% der Zeit erfolgreich angewendet werden und wird immer noch nicht zur Tatsache. Eine Tatsache ist nicht umsetzbar, wie es ein Prinzip ist. Sie können ein Prinzip aufstellen, indem Sie es befolgen. Sie können keine Tatsache aufstellen. Sie sagen nicht "Wir müssen dafür die Gesetze der Schwerkraft anwenden". Sie sagen "Wir müssen dafür das Kerckhoff-Prinzip anwenden". Jemand kann Kerckhoffs Prinzip ignorieren (auf eigene Gefahr). Sie können sich nicht entscheiden, die Gesetze der Schwerkraft zu ignorieren.
#8
+3
Chloe
2013-03-20 12:09:04 UTC
view on stackexchange narkive permalink

Da es nicht erwähnt wurde und diese Frage schon eine Weile her ist ...

Ein Informatiker half dabei, den verschlüsselten Text einer Geheimgesellschaft aus dem 18. Jahrhundert zu entschlüsseln. Der Text war sehr reich verziert, mit Symbolen und Glyphen. Es hat Literaturexperten jahrhundertelang verblüfft. Der Trick bestand darin, einige der Buchstaben und deren Bedeutung zu erraten und auch die Originalsprache zu erraten, da Deutsch andere Buchstabenhäufigkeiten als Englisch oder Italienisch hat.

Hier ist die Beschreibung des Chiffretextes und wie es entwirrt wurde.

http://phys.org/news/2011-10-scientist-mysterious-copiale-cipher.html

http://stp.lingfil.uu.se/~bea/copiale/

http://www.wired.com/dangerroom/2012/11/ ff-the-Manuskript / all / (Sehr lang, sehr interessant.)

Mit der Copiale-Chiffre begann das Codebrecher-Team, nicht einmal die Sprache des verschlüsselten Dokuments zu kennen. Aber sie hatten eine Ahnung von den römischen und griechischen Schriftzeichen, die im gesamten Manuskript verteilt waren, also isolierten sie diese von den abstrakten Symbolen und griffen sie als den wahren Code an.

"Es dauerte ziemlich lange und führte zu einer vollständigen Misserfolg ", sagt Knight. Nachdem das Kryptografieteam 80 Sprachen ausprobiert hatte, stellte es fest, dass die römischen Zeichen "Nullen" waren, die den Leser irreführen sollten. Es waren die abstrakten Symbole, die die Nachricht enthielten.

Das Team testete dann die Hypothese, dass abstrakte Symbole mit ähnlichen Formen denselben Buchstaben oder dieselben Buchstabengruppen darstellen. Schließlich tauchten die ersten bedeutungsvollen Wörter des Deutschen auf: "Initiationszeremonien", gefolgt von "Geheimabteilung".



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...