Weiter im Programm
- Formulierung des Rucksackproblems (+ warum ein Rucksack?)
- Einfache und schwierige Herausforderungen
- Beispiele von
- Geschichte
Was ist Verschlüsselung mit öffentlichem Schlüssel?
.
: , .
, - !
- , , «», .
- . , , , .
: , .
, - !
Der erste allgemeine Public-Key-Algorithmus verwendete den Rucksack-Algorithmus.
Basierend auf der Definition von Public-Key-Systemen sind zwei Schlüssel erforderlich, um eine Nachricht erfolgreich zu verschlüsseln (und zu entschlüsseln). Der "legale" Empfänger der Nachricht kennt den geheimen Schlüsselwährend der Absender einen anderen öffentlichen Schlüssel besitzt
Was tun, wenn einem Angreifer ein öffentlicher Schlüssel bekannt wird?
Es gibt eine Antwort: Der öffentliche Schlüssel muss mithilfe einer Transformation ( Einwegfunktion ) aus dem geheimen Schlüssel abgerufen werden.
Wenn man A kennt, ist es einfach, die Funktion selbst zu berechnenB = f ( A )
und es ist schwierig, die Umkehrfunktion zu berechnenA = f − 1 ( B )

Was ist "einfach" und "schwierig"?
.
«» , . ..n , — t ∝ n a , a — . , .
«» . , , .
..n , t ∝ 2 n , , .
«» , . ..
«» . , , .
..
Das Rucksackproblem ist wie folgt formuliert
Das Set (Rucksackvektor)
In der bekanntesten Version des Rucksackproblems muss herausgefunden werden, ob ein bestimmtes Paar hat
Rucksack-Analogie
Im einfachsten Fall
Rucksack vollständig gefüllt ist.
Stellen Sie sich vor, Sie haben einen Satz Gewichte 1, 6, 8, 15 und 24, Sie müssen einen Rucksack mit einem Gewicht von 30 packen.

Grundsätzlich kann eine Lösung immer durch umfassende Suche nach Teilmengen gefunden werden
Aber was ist, wenn es mehrere hundert Zahlen gibt?
In unserem Beispiel ist n = 5, um die Darstellung nicht zu erschweren. Unter realen Bedingungen hat ein Beispiel beispielsweise 300
Entspricht die Funktion den angegebenen Anforderungen?
Wir definieren die Funktion
Das heißt,
Funktion
Verschlüsselung
Klartext
(. plain text) — , , . ( ).
Sie können auf zwei Arten verschlüsseln:
- Die Nachrichtenverschlüsselung wird erhalten, indem die Elemente dieses Rucksackvektors auf die Potenz der entsprechenden Bits der verschlüsselten Nachricht angehoben werden und dann alle Ergebnisse multipliziert werden, d. H. Wenn
und die NachrichtA = ( 2 , 3 , 5 ) dann ist die Chiffre die Nummer( 100 ) ... Dies ist ein multiplikativer Weg.2 1 ∗ 3 0 ∗ 5 0 = 2 - Die Nachrichtenverschlüsselung wird erhalten, indem die Elemente dieses Rucksackvektors mit den entsprechenden Bits der verschlüsselten Nachricht multipliziert werden und dann alle Ergebnisse aufsummiert werden, d. H. Wenn
und die NachrichtA = ( 2 , 3 , 5 ) dann ist die Chiffre die Nummer( 100 ) ... Diese Methode wird als additiv bezeichnet .2 ∗ 1 + 3 ∗ 0 + 5 ∗ 0 = 2
Beispiel
Um Klartext in binärer Darstellung zu verschlüsseln, wird er in Längenblöcke aufgeteilt

Die Rucksackverschlüsselung bietet einen guten Ansatz zum Erstellen öffentlicher und privater Schlüssel, wobei der private Schlüssel einfach zu verwenden und der öffentliche Schlüssel schwer herauszufinden ist.
So können wir ein System schaffen, in dem: das "harte" Problem der
öffentliche Schlüssel ist , weil Es kann leicht verschlüsselt und nicht entschlüsselt werden.
ein privater Schlüssel - das "einfache" Problem wird als dienen Mit ihm können Sie die Nachricht einfach entschlüsseln. Ohne den privaten Schlüssel müssen Sie das "schwierige" Rucksackproblem lösen.
"Einfaches" Problem
Super wachsender Rucksackvektor
A = ( a 1 , . . . , a n ) , Σ i = 1 j − 1 a i < a j j = 2 , . . . , n , . .
Für superwachsende Vektoren Α ist das Rucksackproblem leicht lösbar. Jene. Der Rucksack ist einfach zu montieren.
Nehmen wir ein Beispiel:

Algorithmus
- .
, , . , . - .
- (1)-(2) .
, .
"Schwieriges Problem
Es ist viel schwieriger, das Problem eines nicht übergroßen Rucksacks zu entschlüsseln .
Ein Algorithmus, der einen übergroßen Rucksack mit privatem Schlüssel und einen nicht übergroßen Rucksack mit öffentlichem Schlüssel verwendet, wurde von Merkle und Hellman entwickelt.
Sie haben dies getan, indem sie die übergroße Rucksackaufgabe in eine nicht übergroße Aufgabe umgewandelt haben.
(Merkle und Hellman haben mithilfe modularer Arithmetik einen Weg gefunden, einen "leichten" Rucksack in einen "harten" zu verwandeln.)
Erstellen Sie einen öffentlichen Schlüssel
Mehrere wichtige Konzepte
-
( x , m o d m ) x ,m
— ,x , [x/m] — ,m > 1 x = ( x , m o d m ) + [ x / m ] ∗ m
-
,A m > m a x A ,t < m .( t , m ) = 1
,B = ( b 1 , . . . , b n ) ,b i = ( t a i , m o d m ) , , B A m t , ,i = 1 , . . . , n .( m , t )
( t , m ) = 1
, ,t − 1 = u
t u ≡ 1 ( m o d m )
. ,1 ≤ u < m A B
.m , u
-
m > m a x A
, ,m > Σ i = 1 n a i B A .m , t
- — , , , .
Der Schöpfer des Kryptosystems wählt ein solches System
Der Nachrichtenabfangjäger muss das Rucksackproblem lösen, um eintreten zu können
und löst das Problem mit dem Rucksackeintritt
zeigt das folgende Lemma.
Lemma . Stellen wir uns das vor
(i) Das Rucksackproblem
(ii) Das Rucksackproblem
(iii) Wenn es eine Lösung gibt, die eingegeben werden muss
Beweis (S. 104)
Beispiel
Betrachten Sie eine superwachsende Sequenz; Zum Beispiel {1, 2, 4, 10, 20, 40}. Der Modul muss größer sein als die Summe aller Zahlen in der Sequenz, zum Beispiel 110. Der Multiplikator darf keine gemeinsamen Teiler mit dem Modul haben. Also lasst uns 31 auswählen.

Also haben wir den öffentlichen Schlüssel berechnet: {31, 62, 14, 90, 70, 30} und den privaten Schlüssel - {1, 2, 4, 10, 20.40}.
Versuchen wir nun, eine Binärsequenz zu senden: 100100111100101110

Einige der Vorteile öffentlicher Schlüssel
- Bei Verwendung eines Kryptosystems mit öffentlichem Schlüssel treffen sich beide Parteien nicht, kennen sich möglicherweise nicht einmal und verwenden keine Kommunikation.
- Schlüssellänge. Wenn bei der symmetrischen Kryptographie der Schlüssel länger als die ursprüngliche Nachricht ist, wird kein wirklicher Gewinn erzielt. Bei Kryptosystemen mit öffentlichem Schlüssel spielt die Länge des Verschlüsselungsschlüssels keine Rolle, da er offen und öffentlich ist. Daher ist die Länge des Entschlüsselungsschlüssels nicht so wichtig (der Empfänger speichert ihn nur an einem geheimen Ort).
Geschichte
Rucksack-Kryptosysteme galten lange Zeit aufgrund ihrer NP-Vollständigkeit und hohen Verschlüsselungs- und Entschlüsselungsgeschwindigkeit als die attraktivsten und vielversprechendsten Kryptosysteme. Viele Schemata verwenden das Rucksackproblem (in verschiedenen Variationen), hier nur einige davon: das kompakte Rucksackproblem, das multiplikative Rucksackproblem, das modulare Rucksackproblem, das Matrixcover-Problem, das Gruppenfaktorisierungsproblem ...
Leider sind die meisten von ihnen anfällig für Anschläge. Es stellte sich heraus, dass es nicht trivial ist, ein sicheres Kryptosystem basierend auf dem Rucksackproblem zu entwerfen, obwohl das Problem als NP-vollständig bekannt ist. Die meisten Rucksack-Kryptosysteme wurden gehackt. Trotzdem ist das allgemeine Rucksack- (Lösungs-) Problem im Gegensatz zur ganzzahligen Faktorisierung und dem diskreten Logarithmus ein bewährtes NP-vollständiges Problem.
Einige Leute denken, dass eines Tages ein Polynom-Zeit-Algorithmus erfunden werden könnte, um ganzzahlige Faktorisierungs- und diskrete Logarithmusprobleme zu lösen, während das Rucksackproblem noch NP-vollständig ist.
Hier gibt es mehrere "ABER".
Erstens basiert die NP-Vollständigkeit auf der Worst-Case-Analyse, und zweitens ist die NP-Vollständigkeit ein Merkmal eines allgemeinen Problems, nicht eines speziellen Falls. Dies bedeutet, dass das Rucksackproblem leicht sein kann, wenn wir die durchschnittliche Komplexität berücksichtigen.
Das Material wurde auf der Grundlage dieser Literatur hergestellt:
(1) A. Salomaa. Kryptographie mit öffentlichem Schlüssel. - Springer-Verlag, 1990. - p. 75-82, S. 101-111
(2)Min Kin Lai. Rucksack-Kryptosysteme : Vergangenheit und Zukunft - Universität von Kalifornien, 2001
(3) Baocang Wang, Qianhong Wu, Yupu Hu. Ein auf Rucksäcken basierendes probabilistisches Verschlüsselungsschema. 2007
(4) - (5)