Rucksackproblem in der Kryptographie

Das Knapsack-Problem (Knapsack-Problem) hat die amerikanischen Kryptographen Ralph Merkle und Martin Hellman dazu veranlasst, den ersten Verschlüsselungsalgorithmus für öffentliche Schlüssel zu entwickeln.



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



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.fmit den folgenden zwei Eigenschaften:



  • B=f(A)Wenn man A kennt, ist es einfach, die Funktion selbst zu berechnen


  • A=f1(B)und es ist schwierig, die Umkehrfunktion zu berechnen




Was ist "einfach" und "schwierig"?
.

«» , . .. n , — tna, a — . , .



«» . , , .



.. n , t2n, , .





Das Rucksackproblem ist wie folgt formuliert



Das Set (Rucksackvektor) A=(a1,...,an) Ist ein bestellter Satz von n ((n>2), verschiedene natürliche Zahlen ai... Lass es eine Zahl gebenk- ganz und positiv. Die Aufgabe besteht darin, einen solchen Satz zu findenaidamit geben sie insgesamt genau k...



In der bekanntesten Version des Rucksackproblems muss herausgefunden werden, ob ein bestimmtes Paar hat(A,k)Entscheidung. In der in der Kryptographie verwendeten Variante benötigen Sie für diese Eingabe(A,k)Erstellen Sie eine Lösung in dem Wissen, dass eine solche Lösung existiert. Beide Optionen sind NP-vollständig.



Rucksack-Analogie



Im einfachsten Fall k bezeichnet die Größe (Kapazität) des Rucksacks und jede der Zahlen aiGibt die Größe (das Gewicht) eines Artikels an, der in einen Rucksack gepackt werden kann. Die Aufgabe besteht darin, einen solchen Satz von Gegenständen zu finden, damit der

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 und zu überprüfen, welche ihrer Summen ist k... In unserem Fall bedeutet dies rohe Gewalt25=32Teilmengen (einschließlich der leeren Menge). Das ist durchaus machbar.



Aber was ist, wenn es mehrere hundert Zahlen gibt?ai?

In unserem Beispiel ist n = 5, um die Darstellung nicht zu erschweren. Unter realen Bedingungen hat ein Beispiel beispielsweise 300ai... Der Punkt hier ist, dass keine Algorithmen bekannt sind, die im Vergleich zur vollständigen Suche eine wesentlich geringere Komplexität aufweisen. Suche unter2300Teilmengen können nicht verarbeitet werden. In der Tat ist das Rucksackproblem als NP-vollständig bekannt ... NP-vollständige Probleme werden als schwierig zu berechnen angesehen.



Entspricht die Funktion den angegebenen Anforderungen?



Wir definieren die Funktionf(x)auf die folgende Weise. Irgendeine Nummer0x2n1 kann durch eine binäre Darstellung von gegeben sein nBits, bei denen bei Bedarf führende Nullen hinzugefügt werden. Nun definieren wirf(x) als eine Zahl erhalten von A alles zusammenfassen aidass das entsprechende Bit in binärer Notation xist gleich 1.



Das heißt,

f(1)=f(0...001)=an



f(2)=f(0...010)=an1



f(3)=f(0...011)=an1+an



...





Funktion f() wurde festgelegt n einstellen A... Natürlich, wenn wir rechnen könnenx von f(x), dann wird praktisch in der gleichen Zeit das Rucksackproblem gelöst: x seine binäre Darstellung wird sofort berechnet, was wiederum die Komponenten der Menge ergibt Ain der Summe für enthalten f(x)... Auf der anderen Seite die Berechnungf(x) von xist leicht. Da das Rucksackproblem NP-vollständig ist,f(x)ist ein guter Kandidat für eine Einwegfunktion. Das muss man natürlich verlangenn war groß genug, sag nicht weniger 200...



Verschlüsselung



Klartext
(. plain text) — , , . ( ).



Sie können auf zwei Arten verschlüsseln:



  1. 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 A=(2,3,5)und die Nachricht (100)dann ist die Chiffre die Nummer 213050=2... Dies ist ein multiplikativer Weg.
  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 A=(2,3,5)und die Nachricht (100)dann ist die Chiffre die Nummer 21+30+50=2... Diese Methode wird als additiv bezeichnet .



Beispiel



Um Klartext in binärer Darstellung zu verschlüsseln, wird er in Längenblöcke aufgeteiltn(Zum Beispiel können Sie Gewicht 30 mit Binär 11110 darstellen). Es wird angenommen, dass man das Vorhandensein eines Gegenstandes im Rucksack anzeigt und Null seine Abwesenheit anzeigt.





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=(a1,...,an) , Σi=1j1ai<aj 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. .
  3. (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,modm) x m,

    x — , m>1, [x/m] — ,

    x=(x,modm)+[x/m]m





  • A, m>maxA t<m , (t,m)=1.

    B=(b1,...,bn) , bi=(tai,modm), i=1,...,n, , B A m t , , (m,t).

    (t,m)=1

    t1=u, ,

    tu1(modm)



    1u<m. , A B

    m,u.


  • m>maxA

    m>Σi=1nai, , B A m,t.


  • — , , , .




Der Schöpfer des Kryptosystems wählt ein solches System A,t,m,Bdieser Vektor A ist super wachsend und B kommt von A starke modulare Multiplikation in Bezug auf m,t... VektorB erweitert als Verschlüsselungsschlüssel und binäre Längenblöcke n als Zahlen an den Designer gesendet βerhalten unter Verwendung des Vektors B...



Der Nachrichtenabfangjäger muss das Rucksackproblem lösen, um eintreten zu können(B,β)... Der Schöpfer des Kryptosystems berechnetα=(uβ,modm)

und löst das Problem mit dem Rucksackeintritt (A,α)... Warum dies alles funktioniert,

zeigt das folgende Lemma.



Lemma . Stellen wir uns das vorA=(a1,...,an)super wachsender Vektor und Vektor B abgeleitet von A starke modulare Multiplikation in Bezug auf m,t... Nehmen wir weiter anut1(modm), β - eine beliebige natürliche Zahl und α=(uβ,modm)... Dann sind die folgenden Aussagen wahr.



(i) Das Rucksackproblem(A,α)in linearer Zeit lösbar. Wenn eine Lösung vorhanden ist, ist sie eindeutig.

(ii) Das Rucksackproblem(B,β)hat höchstens eine Lösung.

(iii) Wenn es eine Lösung gibt, die eingegeben werden muss(B,β), dann entspricht es der einzigen Eingabelösung (A,α)...

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)



All Articles