Secure Multiparty Computation Daniel Reutter 9.6.2004 Einführung Was ist Secure Computation? Wozu braucht man Secure Computation? Secure Two-Party Computation Zwei Spieler A,B besitzen zwei Bits a,b Problem: Die zwei Bits sollen verglichen werden Ziel: Berechnung von a•b wobei gelten soll: Correctness Fairness Privacy Oblivious Transfer Lösung: Oblivious Transfer Sender In: b0,b1∈{0,1} Reciever In: s ∈{0,1} Out: bs Rabin-OT Sender In: b∈{0,1} Reciever n,ENCODE(b,n) x ∈Z*n:random y≡x2 mod n y z:random s.t. z2 ≡y mod n z IF z≠±x, factor n, get b Out: b ELSE Out: ? RSA-OT Existenz von Hardcore-Bits Reciever erstellt 2 Nachrichten: cs und c1-s, wobei cs=RSA(m), cs=i; m=Zufallstext mit rs unsignifikantestes Bit; i=Zufallszahl Sender berechnet b´0=b0+r0 und b´1=b0+r1 Reciever kann bs berechnen, da rs bekannt r1-s bleibt unbekannt OT von Strings OT von mehreren Bytes nicht sicher Verwendung von Zickzack-Funktionen: h:{0,1}m→{0,1}n Beliebige Untermengen des Eingabewertes lassen keine Rückschlüsse auf die Gültigkeit des Ausgabewertes zu OT von Strings Oblivious String Transfer Sender In: y0=h(x0),y1=h(x1) OT(y0i,y1i,s) Empfänger In: s Out: ys xs=h(ys) Generalisierung Generelle Berechnungen möglich Voraussetzung: One-Way Funktionen Verwendung Boolescher Gatter Nicht effizient Security Issues Alle Teilnehmer müssen „semi-honest“ sein Lösung: Commitments Alternativ: Mutually Random Coins Secure Multiparty Computation Problem bis jetzt: nur zwei Teilnehmer Gesucht: Funktion f(xa,xb,xc,...)=y, wobei xfoo nur foo bekannt ist. Benötigt für: Auktionen Abstimmungen Bankgeschäfte Secure Multiparty Computation Mögliche Lösung: Secret Sharing Basierend auf Lagrange-Interpolation Alternativ-Beispiel Yao‘s Millionärsproblem Alice kennt Integer i, Bob kennt Integer j Ist i>j? Alternativ-Beispiel 1. 2. 3. 4. 5. 6. Alice wählt eine eine große Zufallszahl x und verschlüsselt sie mit Bobs Public Key. c=Eb(x). Alice berechnet c-i und sendet das Ergebnis an Bob. Bob berechnet n >max(i,j) Zahlen: yu=DB(c-i+u); 1≤u≤n. Bob wählt eine Primzahl p<x und berechnet die n Zahlen zu=(yu mod p); 1≤u≤n und verifiziert, ob 2≤|zu-zv| und 0<zu<p-1 für alle u≠v gilt. Sonst muss er eine andere Primzahl wählen. Bob sendet Alice die Sequenz in der exakten Reihenfolge: z0,z1,...,zj,zj+1+1,zj+2+1,...,zn+1,p Alice überprüft, ob die i-te Zahl kongruent zu x mod p ist. Wenn ja, ist i ≤j. Sonst ist i>j. Alice teilt ihr Ergebnis Bob mit. Ende des Vortrags Noch Fragen?