Kryptosysteme basierend auf dem Rucksack

Kryptosysteme basierend auf dem
Rucksack-Problem:
Analyse - Implementierung - Sicherheit
Corinna Feeken
Carl von Ossietzky Universität Oldenburg
16. Oktober 2015
1 / 34
Gliederung
Einführung
Motivation
Kryptosysteme
Das Rucksack-Problem
Das Merkle-Hellman-Kryptoystem und mögliche Angriffe
Das allgemeine Merkle-Hellman-Kryptoystem
Der Algorithmus von Shamir
Low-Density-Angriff mit dem Short-Vector-Algorithmus
Das Chor-Rivest-Kryptosystem
Das Nasako-Murakami-Kryptosystem
Fazit
2 / 34
Motivation
I
Sicherheit vieler Kryptosysteme basiert auf
I
I
Faktorisierungsproblem oder
Problem des diskreten Logarithmus
I
Algorithmus mit polynomieller Laufzeit für diese Probleme
bekannt (aber: benötigt Quantencomputer)
I
Rucksack-Problem (RP) ist NP-vollständig
3 / 34
Kryptosysteme
Ein Kryptosystem besteht aus
I
einem Klartextraum
I
einem Geheimtextraum
I
einem Schlüsselraum
I
Ver- und Entschlüsselungsfunktionen
Asymmetrische Kryptosysteme besitzen zudem
I
einen öffentlichen und einen privaten Schlüssel
I
eine Einwegfunktion
4 / 34
Das Rucksack-Problem
I
gegeben:
I
I
I
I
eine Menge N mit n Elementen
ein Gewichtsvektor w = (w1 , . . . , wn )
ein Profitvektor p = (p1 , . . . , pn )
eine Kapazität c ∈ R
wi ∈ R Gewicht und pi ∈ R Profit von Element i ∈ N
I
gesucht: ein Vektor x = (x1 , . . . , xn ) mit xi ∈ N, sodass
n
X
i=1
wi · xi ≤ c und
n
X
pi · xi maximal
i=1
5 / 34
Das Rucksack-Problem
unbegrenztes
Rucksack-Problem
Ppi = 1,
wi xi = c
unbegrenztes
Change-making-Problem
0 ≤ xi ≤ c/wi
begrenztes
Rucksack-Problem
Ppi = 1,
wi xi = c
Change-making-Problem
xi ∈ {0, 1}
0-1-Rucksack-Problem
wi = pi
Teilsummenproblem
n
P
i=1
wi xi ≤ c,
n
P
wi xi maximal mit xi ∈ {0, 1}, wi ∈ N
i=1
6 / 34
Das Rucksack-Problem
In der Kryptologie wird das Teilsummenproblem zur
Verschlüsselung genutzt:
I
binärer Klartextvektor: x = (x1 , x2 , . . . , xn )
I
öffentlicher Schlüssel: w = (w1 , w2 , . . . , wn )
n
P
Geheimtext: c =
wi · xi = w ∗ x
I
i=1
(∗ bezeichnet das Skalarprodukt von w und x)
7 / 34
Das Rucksack-Problem
Definition (stark wachsend)
Ein Gewichtsvektor w = (w1 , . . . , wn ) heißt stark wachsend, wenn
∀i ∈ {1, 2, . . . , n} : wi >
i−1
X
wj .
j=1
I
leichtes Rucksack-Problem: RP mit stark wachsendem
Gewichtsvektor (sonst schweres RP)
8 / 34
Das Merkle-Hellman-Kryptosystem (MHK)
I
eines der ersten Verfahren der asymmetrischen Kryptologie
I
1978 von Ralph C. Merkle und Martin E. Hellman
veröffentlicht
I
bereits mehrere erfolgreiche Angriffe auf das MHK
9 / 34
MHK - Schlüsselerzeugung
1. Wähle einen stark wachsenden Gewichtsvektor
a = (a1 , a2 , . . . , an ) mit Komponenten aus N \ {0}.
2. Wähle zwei große Zahlen m, w ∈ N mit
m>
n
X
ai
und ggT (m, w ) = 1.
i=1
3. Erzeuge einen neuen Gewichtsvektor b = (b1 , b2 , . . . , bn ) mit
b = w · a mod m.
I
Komponenten von b sind durch modulare Multiplikation
pseudo-zufällig angeordnet.
I
kpriv = (a, m, w )
I
kpub = b
10 / 34
MHK - Verschlüsselung
I
Verschlüssele eine binäre Nachricht x = (x1 , x2 , . . . , xn ) mit
öffentlichem Schlüssel b und erhalte die Chiffre Sb :
Sb =
n
X
bi x i = b ∗ x
i=1
11 / 34
MHK - Entschlüsselung
1. Berechne zu w die Inverse w −1 mod m.
2. Wandle das schwere RP in ein leichtes RP mit Kapazität Sa
um:
Sa = a ∗ x
≡ w −1 · b ∗ x mod m
≡ w −1 · Sb mod m
3. Löse das leichte RP mittels dem folgenden Algorithmus.
1
2
3
4
5
6
Algorithm 1: leichtes Rucksack-Problem lösen
for i ← n to 1 do
if Sa ≥ ai then
xi ← 1
Sa ← Sa − ai
else
xi ← 0
7
return x
12 / 34
Der Algorithmus von Shamir
I
Algorithmus in Polynomialzeit von Adi Shamir (1984)
I
Finde zu gegebenem öffentlichen Schlüssel b = (b1 , . . . , bn )
ein Trapdoor-Paar (w , m), sodass
a = w · b mod m
mit m >
Pn
i=1 ai
und a stark wachsend.
13 / 34
Der Algorithmus von Shamir
ai = w · bi mod m
m
bi
bi
m
bi
...
bi
2·m
bi
3·m
bi
bi
bi
(bi −2)·m
bi
(bi −1)·m
bi
m
w
Abbildung: ai -Sägezahnkurve
14 / 34
Der Algorithmus von Shamir
I
maximaler Abstand von w zum nächstgelegenen linken
ai -Minimum: baii
I
w liegt sehr nah an einem Minimum jeder ai -Kurve
I
Häufungspunkte suchen, um w zu finden
15 / 34
Der Algorithmus von Shamir
I
Löse die Abhängigkeit von m mittels Division durch m.
I
V =
w
m
ai = V · bi mod 1
1
bi
bi
1
bi
...
bi
2
bi
3
bi
bi
bi −2
bi
bi
bi −1
bi
1
V
16 / 34
Der Algorithmus von Shamir
I
Finde Häufungspunkte für die ersten k ai -Kurven.
I
k = 4 für das MHK mit n = 100
0
−2 ≤ p1 b2 − p2 b1 ≤ 02 −2 ≤ p1 /b1 − p2 /b2 ≤ 2 0
−3 ≤ p1 /b1 − p3 /b3 ≤ 3 ⇒ − ≤ p1 b3 − p3 b1 ≤ 0 3
3
−0 ≤ p1 b4 − p4 b1 ≤ 0 −4 ≤ p1 /b1 − p4 /b4 ≤ 4 4
4
mit pi ∈ N und 1 ≤ pi ≤ bi − 1
I
Löse die Ungleichung mit den Unbekannten pi .
17 / 34
Der Algorithmus von Shamir
I
Sei p eine Lösung für p1 aus dem Ungleichungssystem.
I
Betrachte das Intervall [p/a1 , (p + 1)/a1 ).
I
Ordne die Minima V1 , . . . , Vs der anderen ai -Kurven innerhalb
des Intervalls nach aufsteigender Größe.
18 / 34
Der Algorithmus von Shamir
ai = V · bi mod 1
−
τ1 t
1
...
Vb
1
...
p
b1
Vt
Vt+1
p+1
b1
1
V
τ1t
I
Geradengleichung: Vbi − τit , Vt ≤ V < Vt+1
I
τit : Anzahl an Minima der ai -Kurve in (0, Vt ]
19 / 34
Der Algorithmus von Shamir
I
Finde ein Teilintervall, in dem
n
X
(Vbi − τit ) < 1
i=1
und
∀i ∈ {2, . . . , n} : (Vbi − τit ) >
i−1
X
(Vbj − τjt )
j=1
für Vt ≤ V < Vt+1 erfüllt werden.
20 / 34
Der Algorithmus von Shamir
Wenn Teilintervall leer:
I
Fahre mit [Vt+1 , Vt+2 ), . . . [Vs−1 , Vs ) fort.
I
Betrachte weitere Häufungspunkte.
Wenn solch ein Teilintervall gefunden wurde:
w
m
I
Nenner und Zähler jedes Quotienten V =
ist ein Trapdoor-Paar.
im Teilintervall
I
Berechne privaten Schlüssel a = w · b mod m und löse
leichtes RP mit a und Kapazität Sa = w −1 · Sb mod m.
21 / 34
Low-Density-Angriff mit dem Short-Vector-Algorithmus
I
1985 von J. C. Lagarias und A. M. Odlyzko erfunden
I
gesuchter Klartext wird direkt gefunden (wenn Algorithmus
erfolgreich), ohne den privaten Schlüssel zu ermitteln
I
SV-Algorithmus findet für fast jedes RP mit geringer Dichte
(< 0, 645) in Polynomialzeit eine Lösung
Definition (Dichte)
Die Dichte eines Rucksack-Problems mit öffentlichem Schlüssel
b = (b1 , b2 , . . . , bn ) wird definiert als
d(b) =
n
log2 (max bi )
, i = 1, 2, . . . , n.
22 / 34
Der Short-Vector-Algorithmus
Definition (Gitter und Basismatrix)
Ein Gitter L ist eine Teilmenge des n-dimensionalen Vektorraums
Rn , welches von linear unabhängigen Vektoren v1 , v2 , ..., vn über
Rn aufgespannt wird:
( n
)
n
X
X
L :=
Zvi =
ri vi | ri ∈ Z, 1 ≤ i ≤ n
i=1
i=1
Die Basismatrix eines Gitters wird definiert als
  

v1
v1,1 v1,2 ... v1,n
v2  v2,1 v2,2 ... v2,n 
  

V :=  .  =  .
.
.
.
.  .

vn
vn,1 vn,2 ... vn,n
23 / 34
Der Short-Vector-Algorithmus
I
Algorithmus basiert auf der Suche nach kürzesten Vektoren in
ganzzahligen Gittern zur Basis {v1 , . . . , vn } ⊆ Zn+1 .
I
Gesucht wird der Vektor x 0 := (x1 , . . . , xn , 0).
I
Bei geringer Dichte ist x 0 fast immer der kürzeste
nicht-triviale Vektor in L.
I
Basis wird so gewählt, dass x 0 in L enthalten ist.

1
0
..
.
T

0
0
..
.
T












x1 
 + · · · + xn 





 0 
 1 
−b1
−bn

 T
0

0


 
 .. 

+. = 
 


0

S−
S
x1
x2
..
.
T
 T
x1


x2 

 

.
 =  ..  = x 0

 
xn

xn 
n

P
bi · x i
0
i=1
I
Basismatrix V wird mit dem LLL-Algorithmus reduziert.
24 / 34
I
Der Erfolg des SV-Algorithmus hängt vom LLL-Algorithmus
ab, der nicht garantiert den kürzesten Vektor zu finden.
I
Der SV-Algorithmus wurde 1992 von Coster et al. verbessert,
sodass er auf Rucksack-Probleme der Dichte < 0,9408
anwendbar ist.
25 / 34
Das Chor-Rivest-Kryptosystem
I
1988 von Benny Chor und Ronald L. Rivest veröffentlicht
I
nutzt algebraische Konstruktionen über endlichen Körpern
I
öffentlicher Schlüssel besteht aus (b1 , . . . , bp ), p und h mit p
prim oder Primzahlpotenz und p ≥ h ∈ N
I
diskreter Logarithmus in GF (p h ) muss leicht berechenbar sein
26 / 34
Das Chor-Rivest-Kryptosystem
I
verschiedene vorgeschlagene Parameter, z.B. p = 197 und
h = 24
I
aufgrund hoher Dichte (1, 0769 für obige Parameter) kein
Low-density-Angriff möglich
I
erfolgreicher Angriff 2001 von Serge Vaudenay
I
Angriff nicht möglich, wenn p und h prim sind (aber
Berechnung des diskreten Logarithmus dann zu schwer)
27 / 34
Das Nasako-Murakami-Kryptosystem
I
2006 von Yasuyuki Murakami und Takeshi Nasako
veröffentlicht
I
Low-density-Angriff durch hohe Dichte und hohe Dimension
(n > 500) nicht möglich
I
nutzt chinesischen Restsatz zur Erzeugung vom öffentlichen
Schlüssel b = (b1 , . . . , bn ):
( (P)
ai mod P
bi ≡
(Q)
ai mod Q
(P)
mit ggT (P, Q) = 1, N = PQ und ai
Länge n
I
(Q)
, ai
private Vektoren der
angreifbar, sobald N faktorisiert werden kann
28 / 34
Fazit
I
bisherige Methoden noch zu unsicher
I
weiterhin interessant (NP-Vollständigkeit)
I
viele weitere Rucksack-Kryptosysteme seit MHK
29 / 34
Quellen I
Coster, M. J. ; Joux ; LaMacchia ; Odlyzko ; Schnorr ; Stern (1992)
Improved low-density subset sum algorithms.
computational complexity Volume 2, Issue 2 , S. 111-128
Encinas, L. Hernández ; Masqué, J. Munos ; Dios, A. Queiruga (2008)
Safer parameters for the Chor-Rivest cryptosystem
Computers and Mathematics with Applications 56 , S. 2883-2886
Lagarias, J. C. ; Odlyzko, A. M. (1985)
Solving low-density subset sum problems.
Journal of the association for Computing Machinery 32, No.1, S. 229–246
Lenstra, A. K. ; Lenstra, H. W. ; Lovász, L.(1982)
Factoring polynomials with rational coefficients.
Mathematische Annalen 261, S. 515–534
Martello, Silvano ; Toth, Paolo (1990)
Knapsack problems - Algorithms and computer implementations.
John Wiley & Sons Inc. New York, NY, USA
30 / 34
Quellen II
Merkle, Ralph C. ; Hellman, Martin E. (1978)
Hiding information and signatures in trapdoor knapsacks.
IEEE Transactions on Information Theory IT-24, No.5, S. 498–516
Nasako, Takeshi ; Murakami, Yasuyuki (2007)
Knapsack Public-Key Cryptosystem Using Chinese Remainder Theorem
IACR Cryptology ePrint Archive
Shamir, Adi (1984)
A polynomial-time algorithm for breaking the basic Merkle-Hellman
cryptosystem.
IEEE Transactions on Information Theory IT-30, No.5, S. 699–704
Vaudenay, Serge (2001)
Cryptanalysis of the Chor-Rivest cryptosystem
J. Cryptology 14 , S. 87–100
Wilkeit ; Elke (2013)
Kryptologie
Vorlesungsskript WS 2013/14 Carl von Ossietzky Universität Oldenburg
31 / 34
Der Short-Vector-Algorithmus
I
Algorithmus basiert auf der Suche nach kürzesten Vektoren in
ganzzahligen Gittern zur Basis {v1 , . . . , vn } ∈ Zn+1 .
I
Sei b = (b1 , . . . , bn ) der öffentliche Schlüssel, S der
Geheimtext und x = (x1 , . . . , xn ) der gesuchte Klartext.
I
Konstruiere die Basismatrix

 
v1
1 0
 v2  0 1

 

 
V :=  ...  = 

 
 v n  0 0
vn+1
0 0
des Gitters L
...
...
..
.
...
...

0 −b1
0 −b2 


 ∈ Z(n+1)×(n+1) .

1 −bn 
0 S
32 / 34
Der Short-Vector-Algorithmus
I
Gesucht wird der Vektor x 0 := (x1 , . . . , xn , 0).
I
Bei geringer Dichte ist x 0 fast immer der kürzeste
nicht-triviale Vektor in L.
I
x 0 ist in L enthalten, denn:

1
0
..
.
T

0
0
..
.
T












x1 
 + · · · + xn 





 0 
 1 
−b1
−bn

 T
0

0

 

 .. 

+. = 
 


0

S−
S
x1
x2
..
.
T
 T
x1


x2 

 

.
 =  ..  = x 0

 
xn

xn 
n

P
bi · xi
0
i=1
33 / 34
I
I
Um x 0 zu finden, wird die Basismatrix V mit dem
LLL-Algorithmus zu V ∗ reduziert.
n
P
∗ für 1 ≤ j ≤ n + 1.
bi vj,i
Prüfe, ob S =
i=1
Dann ist vj∗ der gesuchte Vektor x 0 .
I
Wurde kein passender Vektor gefunden, wird der Vorgang für
n
P
S=
bi − S wiederholt.
i=1
34 / 34