Warum wird in kryptografischen Algorithmen nur XOR verwendet und andere Logikgatter wie OR, AND und NOR werden nicht verwendet?
encryption
cryptography
Bhaskar
quelle
quelle
Antworten:
Es ist nicht genau richtig zu sagen, dass die logische Operation XOR die einzige ist, die in der gesamten Kryptographie verwendet wird, es ist jedoch die einzige Zwei-Wege-Verschlüsselung, bei der sie ausschließlich verwendet wird.
Hier wird das erklärt:
Stellen Sie sich vor, Sie haben eine Folge von Binärziffern
10101
und XOR die Zeichenfolge10111
damit, die Sie erhalten00010
Jetzt ist Ihre ursprüngliche Zeichenfolge codiert und die zweite Zeichenfolge wird zu Ihrem Schlüssel. Wenn Sie Ihren Schlüssel mit Ihrer codierten Zeichenfolge XOR-verknüpfen, erhalten Sie Ihre ursprüngliche Zeichenfolge zurück.
Mit XOR können Sie eine Zeichenfolge einfach verschlüsseln und entschlüsseln, mit den anderen Logikoperationen nicht.
Wenn Sie eine längere Zeichenfolge haben, können Sie Ihren Schlüssel wiederholen, bis er lang genug ist. Wenn beispielsweise Ihre Zeichenfolge vorhanden
1010010011
ist, schreiben Sie Ihren Schlüssel einfach zweimal und er wird zu1011110111
XOR mit der neuen ZeichenfolgeHier ist ein Wikipedia-Link zur XOR-Chiffre.
quelle
Ich kann 2 Gründe sehen:
1) (Hauptgrund) XOR gibt keine Informationen über den ursprünglichen Klartext weiter.
2) (Nice-to-have-Grund) XOR ist eine involvierende Funktion , dh wenn Sie XOR zweimal anwenden, erhalten Sie den ursprünglichen Klartext zurück (dh
XOR(k, XOR(k, x)) = x
wox
ist Ihr Klartext undk
ist Ihr Schlüssel). Das innere XOR ist die Verschlüsselung und das äußere XOR ist die Entschlüsselung, dh genau dieselbe XOR-Funktion kann sowohl für die Verschlüsselung als auch für die Entschlüsselung verwendet werden.Um den ersten Punkt zu veranschaulichen, betrachten Sie die Wahrheitstabellen von AND, OR 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 in der ersten Spalte ist unsere Eingabe (dh der Klartext) . Die zweite Spalte ist unser Schlüssel und die letzte Spalte ist das Ergebnis Ihrer Eingabe "gemischt" (verschlüsselt) mit dem Schlüssel unter Verwendung der spezifischen Operation (dh des Chiffretextes) .
Stellen Sie sich nun vor, ein Angreifer hat Zugriff auf ein verschlüsseltes Byte, z. B. 10010111 , und möchte das ursprüngliche Klartextbyte abrufen .
Angenommen, der AND-Operator wurde verwendet, um dieses verschlüsselte Byte aus dem ursprünglichen Klartextbyte zu generieren. Wenn AND verwendet wurde, wissen wir mit Sicherheit, dass jedes Mal, wenn wir das Bit '1' im verschlüsselten Byte sehen, die Eingabe (dh die erste Spalte, der Klartext) gemäß der Wahrheitstabelle von auch '1' sein muss UND. Wenn das verschlüsselte Bit stattdessen eine '0' ist, wissen wir nicht, ob die Eingabe (dh der Klartext) eine '0' oder eine '1' ist. Daher können wir schließen, dass der ursprüngliche Klartext wie folgt lautet: 1 _ _ 1 _ 111. Es wurden also 5 Bits des ursprünglichen Klartextes durchgesickert (dh es konnte ohne den Schlüssel zugegriffen werden).
Wenn wir dieselbe Idee auf OR anwenden, sehen wir, dass jedes Mal, wenn wir eine '0' im verschlüsselten Byte finden, wir wissen, dass die Eingabe (dh der Klartext) auch eine '0' sein muss. Wenn wir eine '1' finden, wissen wir nicht, ob die Eingabe eine '0' oder eine '1' ist. Daher können wir schließen, dass der eingegebene Klartext: _ 00 _ 0 _ _ _ ist. Diesmal konnten wir 3 Bits des ursprünglichen Nur-Text-Bytes verlieren, ohne etwas über den Schlüssel zu wissen.
Schließlich können wir mit XOR kein Stück des ursprünglichen Klartextbytes erhalten. Jedes Mal, wenn wir im verschlüsselten Byte eine '1' sehen, könnte diese '1' aus einer '0' oder einer '1' generiert worden sein. Gleiches gilt für eine '0' (sie kann sowohl von '0' als auch von '1' stammen). Daher wird kein einziges Bit aus dem ursprünglichen Klartextbyte verloren.
quelle
Der Hauptgrund ist, dass, wenn eine Zufallsvariable mit unbekannter Verteilung R1 mit einer Zufallsvariablen R2 mit gleichmäßiger Verteilung XOR-verknüpft ist, das Ergebnis eine Zufallsvariable mit gleichmäßiger Verteilung ist. Sie können also eine voreingenommene Eingabe einfach randomisieren, was mit anderen binären Operatoren nicht möglich ist.
quelle
Die Ausgabe von XOR hängt immer von beiden Eingängen ab. Dies ist bei den anderen von Ihnen genannten Vorgängen nicht der Fall.
quelle
Ich denke, weil XOR reversibel ist. Wenn Sie Hash erstellen möchten, sollten Sie XOR vermeiden.
quelle
XOR ist das einzige Gate, das direkt verwendet wird, da der andere Eingang unabhängig vom Eingang immer einen Einfluss auf den Ausgang hat.
Es ist jedoch nicht das einzige Gate, das in kryptografischen Algorithmen verwendet wird. Das mag für die Kryptographie der alten Schule zutreffen, die Tonnen von Bit-Shuffles und XORs und rotierenden Puffern umfasst, aber für Krypto auf der Basis von Primzahlen benötigen Sie alle Arten von Mathematik, die nicht über XOR implementiert werden.
quelle
XOR wirkt wie ein Kippschalter, mit dem Sie bestimmte Bits ein- und ausschalten können. Wenn Sie eine Zahl (ein Bitmuster) "verschlüsseln" möchten, XOR Sie sie mit einer Zahl. Wenn Sie diese verschlüsselte Nummer nehmen und sie erneut mit derselben Nummer XOR-verknüpfen, erhalten Sie Ihre ursprüngliche Nummer zurück .
Wenn Sie eine Zahl (oder einen Text oder ein beliebiges Bitmuster) mit XOR "verschlüsseln", haben Sie die Grundlage für einen Großteil der Kryptographie.
quelle
XOR verwendet weniger Transistoren ( 4 NAND-Gatter ) als kompliziertere Operationen (z. B. ADD, MUL), was die Implementierung in Hardware erleichtert, wenn die Anzahl der Gatter wichtig ist. Darüber hinaus ist ein XOR eine eigene Umkehrung, die sich gut zum Anwenden von Schlüsselmaterial eignet (der gleiche Code kann zum Ver- und Entschlüsseln verwendet werden). Die sehr einfache AddRoundKey- Operation von AES ist ein Beispiel dafür.
quelle
Bei symmetrischer Krypto sind die einzigen realen Auswahloperationen, die Bits mit der Verschlüsselung mischen und die Länge nicht erhöhen, Operationen, die mit Übertrag, Hinzufügen ohne Übertrag (XOR) und Vergleichen (XNOR) hinzugefügt werden. Jede andere Operation verliert entweder Bits, erweitert sich oder ist auf CPUs nicht verfügbar.
quelle
Die XOR-Eigenschaft (a xor b) xor b = a ist praktisch für Stream-Chiffren: Um verschlüsselte Daten zu verschlüsseln, wird eine pseudozufällige Folge von n Bits unter Verwendung des Kryptoschlüssels und des Kryptoalgorithmus erzeugt.
quelle
Betrachten wir die drei gängigen bitweisen logischen Operatoren
Nehmen wir an, wir können eine Zahl auswählen (nennen wir sie Maske) und sie mit einem unbekannten Wert kombinieren
XOR ist subtiler. Sie können den Wert eines Teils des Ergebnisses nicht genau kennen, unabhängig von der gewählten Maske. Wenn Sie Ihre Maske jedoch zweimal anwenden, erhalten Sie Ihren ursprünglichen Wert zurück.
Mit anderen Worten, der Zweck von UND und ODER besteht darin, einige Informationen zu entfernen, und das ist definitiv nicht das, was Sie in kryptografischen Algorithmen (symmetrische oder asymmetrische Verschlüsselung oder digitale Signatur) wollen. Wenn Sie Informationen verlieren, können Sie diese nicht zurückerhalten (entschlüsseln), oder die Signatur würde einige winzige Änderungen in der Nachricht tolerieren und damit ihren Zweck zunichte machen.
Alles, was gesagt wurde, gilt für kryptografische Algorithmen, nicht für deren Implementierungen. Die meisten Implementierungen von kryptografischen Algorithmen verwenden auch viele UNDs, normalerweise um einzelne Bytes aus 32 oder 64 internen Registern zu extrahieren.
Normalerweise erhalten Sie solchen Code (dies ist ein fast zufälliger Auszug aus aes_core.c).
8 XORs und 7 ANDs, wenn ich richtig zähle
quelle
Ich denke, es ist einfach so, weil eine gegebene zufällige Menge von Binärzahlen eine große Anzahl von 'ODER'-Operationen zu allen' Einsen tendieren würde, ebenso würde eine große Anzahl von 'UND'-Operationen zu allen Nullen tendieren. Wobei eine große Anzahl von 'XORs eine zufällige Auswahl von Einsen und Nullen erzeugt.
Dies bedeutet nicht, dass AND und OR nicht nützlich sind - nur, dass XOR nützlicher ist.
Die Prävalenz von OR / AND und XOR in der Kryptographie hat zwei Gründe:
Eine davon sind blitzschnelle Anweisungen.
Zweitens sind sie mit herkömmlichen mathematischen Formeln schwer zu modellieren
quelle
XOR ist eine mathematische Berechnung in der Kryptographie. Es ist eine logische Operation. Es gibt andere logische Operationen: AND, OR, NOT, Modulo-Funktion usw. XOR ist die wichtigste und am häufigsten verwendete.
Wenn es das gleiche ist, ist es 0.
Wenn es anders ist, ist es 1.
Beispiel:
Nachricht: Hallo
Binäre Version von Hello: 01001000 01100101 01101100 01101100 01101111
Schlüsselstrom: 110001101010001101011010110011010010010111
Chiffretext mit XOR: 10001110 11000110 00110110 10100001 01001010
Anwendungen: Das One-Time-Pad / die Vern-am-Verschlüsselung verwendet die Exklusiv- oder Funktion, bei der der Empfänger denselben Schlüsselstrom hat und den Chiffretext über einen verdeckten Transportkanal empfängt. Der Empfänger Xor dann den Chiffretext mit dem Schlüsselstrom, um den Klartext von Hallo zu enthüllen. In One Time Pad sollte der Key-Stream mindestens so lang sein wie die Nachricht.
Fakt: Das One Time Pad ist die einzige wirklich unzerbrechliche Verschlüsselung.
Exklusiv oder in der Feistel-Struktur verwendet, die in der Blockverschlüsselung DES algo verwendet wird.
Hinweis: Bei einer XOR-Operation besteht eine 50% ige Chance, 0 oder 1 auszugeben.
quelle