Warum ist die XOR in der Kryptographie verwendet?
Warum ist nur XOR verwendet kryptografische algorithmen, und andere Logik-Gatter wie ODER, UND, und NOCH nicht verwendet?
- Was macht Sie denken, dass dies der Fall ist?
- Versuchen Sie zu Fragen "warum tun die kryptografische algorithmen benutzen nur XOR?" Ich habe XOR anderswo...
- Ja, thast, was ich genau meine. Alle wichtigen algoriths ich studiert habe (korrigiert mich wenn ich falsch Liege), Sie verwenden Sie nur XOR und keine anderen Tore.
- Austin, ist er nicht sagen, dass XOR nicht an anderer Stelle eingesetzt, aber XOR ist die einzige, die verwendet wird als eine Methode der Verschlüsselung
- ...oder als redundanter Speicher sowie eine kanonische Beispiel.
- Keccak(jetzt SHA-2) verwendet, XOR, not, and UND ROT.
- SHA-2 nicht in einem kryptographischen Algorithmus. Es ist nur eine hash-Funktion.
- Es ist nicht ein Verschlüsselungsalgorithmus. Es ist eine kryptographische hash-Funktion und damit ein kryptografischer Algorithmus. Die SHA-2-Komprimierung-Funktion aufgebaut ist aus einem block-Chiffre. | Aber ich habe einen Fehler im obigen Kommentar wollte ich sagen, "Keccak(jetzt SHA-3) ...". Im Gegensatz zu Keccak, SHA-2 verwendet, FÜGEN Sie zusätzlich die oben genannten Vorgänge.
- Du hast Recht in deiner Art, ich bin sorry, ich war nicht aufwendig genug, was ich sagen wollte war, dass SHA-2 wird nicht verwendet für die Verschlüsselung/Entschlüsselung durch irreversiblity.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht genau wahr, zu sagen, daß die logische operation XOR ist der einzige, der durchgängig in allen Kryptographie, aber es ist die einzige zwei-Wege-Verschlüsselung, wo es ausschließlich verwendet wird.
Hier ist das erklärt:
Vorstellen, Sie haben eine Reihe von binären Ziffern
10101
und Sie XOR der Zeichenkette
10111
mit Ihr erhalten Sie00010
nun Ihre original-string kodiert ist und die zweite Zeichenfolge wird Ihr Schlüssel
wenn Sie XOR Ihren Schlüssel mit Ihrem kodierten string bekommen Sie Ihre original-string zurück.
XOR können Sie ganz einfach verschlüsseln und entschlüsseln einer Zeichenkette, die einer anderen Logik-Operationen nicht.
Wenn Sie eine längere Zeichenfolge können Sie Ihren Schlüssel bis zu seiner lang genug
zum Beispiel, wenn Ihr string war
1010010011
dann würden Sie einfach schreiben Sie Ihre-Taste zweimal, und es würde1011110111
- und XOR mit dem neuen stringHier ein wikipedia-link auf die XOR-Verschlüsselung.
Ich sehe 2 Gründe:
1) (Hauptgrund) XOR nicht Leck Informationen über den ursprünglichen Klartext.
2) (Nice-to-have Grund) XOR ist ein involutory Funktion, d.h., wenn Sie sich bewerben, XOR zweimal, erhalten Sie den ursprünglichen Klartext zurück (ich.e
XOR(k, XOR(k, x)) = x
, wox
ist Ihr Klartext undk
ist Ihr Schlüssel). Die innere XOR ist die Verschlüsselung und die äußeren XOR ist die Entschlüsselung, D. H., die genau die gleiche XOR-Funktion kann verwendet werden, für die ver-und Entschlüsselung.Exemplarisch für den ersten Punkt betrachten, der Wahrheit-Tabellen von UND, ODER und XOR:
Und
0 UND 0 = 0
0 UND 1 = 0
1 UND 0 = 0
1 UND 1 = 1 (Leck!)
Oder
0 ODER 0 = 0 (Leck!)
0 ODER 1 = 1
1 ODER 0 = 1
1 ODER 1 = 1
XOR
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Alles auf die ersten Spalte ist unser input (ie, the plain text). Die zweiten Spalte ist unser Schlüssel und die letzten Spalte ist das Ergebnis Ihre Eingabe "gemischt" (verschlüsselt) mit der Taste mit der bestimmten operation (ie, the ciphertext).
Nun, stellen Sie sich ein Angreifer Zugriff auf einige verschlüsselte byte, sagen: 10010111, und er will, um den ursprünglichen Klartext-byte.
Lassen Sie uns sagen, dass der UND-operator verwendet wurde, um zu generieren, diese verschlüsselten byte von der ursprünglichen Klartext-byte. Wenn UND verwendet wurde, dann wissen wir für bestimmte, dass jedes mal, wenn wir sehen, das bit '1' in der verschlüsselten byte dann ist der Eingang (dh die erste Spalte, die die Klartext) MUSS ebenfalls auf '1' gemäß der Wahrheitstabelle der UND. Wenn das verschlüsselte bit ein '0' statt, wir wissen nicht, ob der input (also der text) ist eine '0' oder '1'. Deshalb können wir schließen, dass der ursprüngliche Klartext ist: 1 _ _ 1 _ 111. Also 5 bits des ursprünglichen Klartext ausgelaufen waren (ie, zugegriffen werden konnte, ohne den Schlüssel).
Anwendung der gleichen Idee, ODER, wir sehen, dass jedes mal, wenn wir finden, dass eine '0' in der verschlüsselten byte, wissen wir, dass der input (also der text) muss eine '0'. Wenn wir finden, eine '1', dann wissen wir nicht, ob die Eingabe eine '0' oder '1'. Deshalb können wir schließen, dass die Eingabe im Klartext: _ 00 _ 0 _ _ _. Dieses mal waren wir in der Lage, Leck 3 bits der ursprünglichen Klartext-byte, ohne etwas über den Schlüssel.
Schließlich mit XOR, wir können nicht jedem bit der ursprünglichen Klartext-byte. Jedes mal sehen wir eine " 1 "in das verschlüsselte "byte", " 1 " konnte wurden generiert aus einer '0' oder '1'. Dasselbe mit '0' (es könnte sowohl '0' oder '1'). Daher, nicht ein einzelnes bit ist durchgesickert von der ursprünglichen Klartext-byte.
Hauptgrund ist, dass, wenn eine zufällige variable mit unbekannter Verteilung R1 ist XORed mit einer zufälligen variable R2 mit dem gleichmäßigen Verteilung das Ergebnis ist eine Zufallsvariable mit uniformer Verteilung, so dass im Grunde Sie können randomize einer verzerrten input-leicht ist nicht möglich, mit anderen binären Operatoren.
Den Ausgang der XOR-kommt immer auf beide Eingänge. Dies ist nicht der Fall für die anderen Vorgänge, die Sie erwähnen.
Ich denke, da XOR umkehrbar ist. Wenn Sie möchten, erstellen Sie hash-Werte, dann werden Sie wollen vermeiden, XOR.
XOR ist das einzige Tor, das direkt verwendet werden, weil, egal, was für ein Eingang ist, den anderen Eingang hat immer einen Effekt auf den output.
Es ist jedoch nicht das einzige Tor in der kryptografischen algorithmen. Das mag wahr sein von der alten Schule, der Kryptographie, der Typ mit Tonnen von bit mischt und XORs und rotierenden Puffer, aber für die prime-Zahl-basierte Krypto-Sie brauchen alle Arten von Mathematik, die nicht implementiert ist, durch XOR.
XOR wirkt wie ein Schalter, wo man umdrehen können spezifische bits auf und ab. Wenn Sie auf "scramble" eine Zahl (ein Muster von bits), Sie XOR mit einer Zahl. Wenn Sie die verschlüsselten Zahl und XOR es wieder mit der gleichen Nummer, die Sie Ihre ursprüngliche Nummer zurück.
Wenn Sie "scramble" eine Nummer (oder text oder ein Muster von bits) mit XOR, haben Sie die Grundlage der viel von Kryptographie.
XOR verwendet weniger transistoren (4 NAND-Gatter) als mehr komplizierte Operationen (z.B. ADD, MUL) die macht es gut für die Implementierung in hardware, wenn die gate-count ist wichtig. Darüber hinaus wird ein XOR ist Ihre eigene inverse, das macht es gut für die Anwendung Schlüssel-material (der gleiche code kann verwendet werden für die Verschlüsselung und Entschlüsselung) Der schön einfach AddRoundKey Betrieb von AES ist ein Beispiel dafür.
Für die symmetrische Kryptographie, die nur echte Entscheidungen Operationen, mischen Sie bits mit der Ziffer-und nicht zu verlängern sind Operationen add with carry, hinzufügen ohne tragen (XOR) und vergleichen (XNOR). Jede andere operation entweder verliert bits erweitert, oder steht nicht auf CPUs.
Dem XOR-Eigenschaft (a xor b) xor b = a kommt in handliches für die stream-Chiffren: die zum verschlüsseln einer n bit breiten Daten, eine pseudo-zufällige Sequenz von n bits ist, die mit Hilfe der Krypto-Schlüssel und crypto-Algorithmus.
Betrachten wir die drei gemeinsamen bitweise logische Operatoren
Sagen wir, wir können wählen Sie eine Zahl (nennen wir es mal die Maske) und kombinieren Sie es mit einem unbekannten Wert
XOR ist eher subtil, Sie können nicht wissen, für sicher, dass der Wert von jedem bit des Ergebnisses, was die Maske, die Sie wählen. Aber wenn Sie Ihre Maske zwei mal Sie wieder Ihren ursprünglichen Wert.
In anderen Worten, der Zweck von UND und ODER ist, entfernen Sie einige Informationen, und das ist definitiv nicht das, was Sie wollen, in der kryptografischen algorithmen (symmetrische oder asymmetrische Verschlüsselung oder digitale Signatur). Wenn Sie verlieren Informationen, die Sie nicht in der Lage, es wieder zu bekommen (entschlüsseln) oder der Unterschrift dulden würde, dass einige wenige Veränderungen in der Nachricht, damit es den Zweck zu besiegen.
Alles, was gesagt, das gilt für kryptographische algorithmen, die nicht Ihrer Implementierungen. Die meisten Implementierungen von kryptographischen algorithmen nutzen auch viele Unds, in der Regel zu extrahieren einzelner bytes von 32 oder 64 internen Register.
Sie erhalten in der Regel code, wie (dies ist eine fast zufällige extrahieren von aes_core.c)
8 XORs und 7 Und wenn ich count Recht
Ich denke einfach, da ein paar zufälligen Reihe von binären zahlen, die eine große Anzahl von 'ODER' Operationen würden tendenziell alle ' - 1, ebenfalls eine große Anzahl von 'UND' Operationen würden tendenziell alle Nullen. Wheres eine große Anzahl von 'XOR' s erzeugt einen random-ish Auswahl von Einsen und Nullen.
Dies ist nicht zu sagen, dass UND und ODER sind nicht nützlich - nur das XOR ist mehr nützlich.
Die Prävalenz ODER/UND XOR in der Kryptographie ist aus zwei Gründen:-
Diese sind blitzschnelle Anweisungen.
Beiden, Sie sind schwer zu modellieren, die mit herkömmlichen mathematischen Formeln
XOR ist eine mathematische Berechnung, die in der Kryptographie. Es ist ein logischer Vorgang. Es gibt auch andere logische Operationen: UND, ODER, NICHT, Modulo-Funktion etc. XOR ist die wichtigste und am häufigsten verwendet.
Ob es das gleiche ist, ist es 0.
Wenn es anders ist, es ist 1.
Beispiel:
Nachricht : Hallo
Binary-Version Hallo : 01001000 01100101 01101100 01101100 01101111
Schlüssel-stream : 110001101010001101011010110011010010010111
Cipher-text mit XOR : 10001110 11000110 10100001 00110110 01001010
Anwendungen : Das one-time-pad/Vern-bin-Chiffre verwendet die Exklusiv-oder-Funktion, in der der Empfänger über den gleichen Schlüssel-stream und erhält den Chiffretext über eine verdeckte transport-Kanal. Der receiver dann den Chiffretext Xor mit dem Schlüssel-stream, um zu offenbaren, den Text von "Hallo". In One Time Pad, der Schlüssel-stream sollte mindestens so lang wie die Nachricht.
Tatsache : Das One Time Pad ist die einzige wirklich unzerbrechlich Verschlüsselung.
Exklusiv-Oder verwendet in Feistel-Struktur, die in der block-cipher DES-algo.
Hinweis : die XOR-operation hat eine chance von 50% die Ausgabe 0 oder 1.