Sekuriti Digital, Teori dan Praktek Algoritme-algoritme Kriptografis dalam Protokol Kriptografis Bab 23
Berbagai protokol kriptografis Enkripsi asimetris dengan multiple keys (K) secret splitting (KA) secret sharing (KA) Time stamping Kanal subliminal Undeniable digital signature Bit commitment (KA) Coin flip (KA) Mental poker (KA) Akumulator satu arah (K) Membuka rahasia all-or-nothing Key escrow (K) Zero knowledge protocol (K) Blind signature (KA) Oblivious transfer Oblivious signature Penandatanganan kontrak simultan Pertukaran rahasia simultan Secure election Secure multipaty computation Broadcast anonim Digital cash (KA) K : sudah dibahas waktu kuliah A : komponen-komponen algoritmis sudah diberikan waktu kuliah
RSA dengan Multiple Key Dalam RSA, ingat kita membangkitkan acak dua bilangan prima p,q. Hitung parameter sekuriti n=pq. Kunci publik d diambil acak, lalu kunci privat e dihitung sebagai e = d-1 (mod (n)). Konsep ini bisa digeneralisasi untuk membuat multi-key: Split d (atau e) menjadi k1 dan k2, sedemikian sehingga k1k2 =d (mod (n)). Caranya: ambil k1 acak, lalu k2=dk1-1 (mod (n)). Ulangi skema diatas untuk mensplit k1. Lakukan split tsb sebanyak n-1 kali. Setelah n kali split kita akan punya sebanyak n bilangan memenuhi : v1v2…vn = 1 (mod (n)) setiap vi adalah sebuah kunci, yang bisa dipakai menurut konsep enkripsi asimetris multi-key (Bab 3.5)
Skema Ong-Schnorr-Shamir Untuk sistem Enkripsi Asimetris Skema asli berbasiskan polinomial kwadratis. Pilih parameter sekuriti n dan kunci privak k secara acak, dan keduanya harus relative prime. Hitung h : h = -k-1 mod n = -(k-1)2 mod n h (dan n) adalah kunci publik, k kunci privat. Enkripsi dengan k: [m]k = (s1,s2) dimana s1 = (m/r + r)/2 mod n s2 = (m/r - r)k/2 mod n … r diambil acak, dengan syarat r dan n relative prime Dekripsi dengan h: [s1,s2]h = s12 + hs22 mod n Perhatikan : s12 + hs22 mod n = (m/r + r)2/4 + -(k-1)2(m/r - r)2k2/4 mod n = (m2/r2 + 2m + r2)/4 - (m2/r2 - 2m + r2)/4 mod n = m
Skema Ong-Schnorr-Shamir Hanya mengenal enkripsi dengan k … tapi tidak enkripsi dengan h (kunci publik), jadi hanya bisa dipakai untuk tanda tangan digital. Tidak aman. Varian yang ama bisa ditelusuri di literatur yang dirkomendasikan di Bab 3.5.
Kanal Subliminal dalam Ong-Schnorr-Shamir Alice ingin mengirimkan pesan m ke Bob … tetapi dimana publik (Warden misalnya) pesan tersebut disamarkan sebagai m'. Untuk membuat kanal subliminal antara A dan B, keduanya harus menshare kunci rahasia k. Kunci publik h boleh diketahui publik. A: Pilih pesan m' acak (dan rel. prime /d n). Kirimkan sebagai [m']k ke B : s1 = (m'/m + m)/2 mod n s2 = (m'/m - m)k/2 mod n Warden: yang kebetulan memonitor komunikasi antara A dan B bisa merecover m' dan menguji keasliannya. B: dekrip [m']k untuk mendapatkan m' uji keaslian pesan subliminal dengan memverifikasi s12 - s22/k2 = m' mod n m bisa direcover dengan cara m = m'/(s1 + s2k-1) mod n
Kanal Subliminal dalam Ong-Schnorr-Shamir Motivasi : Verifikasi pesan subliminal s12 - s22/k2 mod n = (m'/m + m)2/4 + (m'/m - m)2k2/(4k2) mod n = m' mod n Recovery dr. pesan asli m'/(s1 + s2k-1) mod n = m'/((m'/m + m)/2 + (m'/m - m)k/(2k)) mod n = m'/(m'/m) mod n = m mod n Note : Skema Ong-Schnorr-Shamir, as is, tidak aman. "Setiap skema tanda tangan digital bisa dijadikan kanal subliminal." Caranya??
Undeniable Signature A ingin memberikan info sensitif ke wartawan B lewat internet. B minta A memberikan digital signature-nya diatas info yang dia berikan supaya B yakin bahwa info itu asli dari A, dan bukan direkayasa oleh pihak ketiga. A keberatan menandatangani karena B bisa menunjukan tanda tangan tersebut ke atasan A, yang bisa mengakibatkan A dipecat. Solusi : menggunakan undeniable signature (lebih tepat disebut untransferable signature)
Protokol Chaum untuk Undeniable Signature Parameter sekuriti : sebuah bilangan prima p yang cukup besar … dan g(<p) sehingga g primitif. p dan g dipakai publik oleh sekelompok publik. Kunci: ambil x(<p) acak, ini menjadi kunci privat A. Kunci publik adalah gx mod p. Menandatangani pesan m sederhana: A membuat z = mx mod p dan mengirimkannya ke B. Untuk memverifikasi tandatangan A, B butuh protokol berikut ini (hal. Berikut)
Verifikasi Tandatangan dalam Protokol Chaum 1. B membuat a dan b dengan acak (challenges), lalu mengirimkan ke A: c = za(gx)b mod p 2. A menghitung t = x-1 mod (p), lalu mengirimkan ke B: d = ct mod p 3. B memverifikasi apakah d == magb (mod p)
Verifikasi Tandatangan dalam Protokol Chaum Motivasi: d = ct mod p = (za(gx)b)t mod p = ((mx )a(gx)b)t mod p = (maxgbx)t mod p = (magb)xt mod p = {t adalah invers x dalam mod (p)} (magb)k(p)+1 mod p = {Fermat's little theorem} (magb) mod p Hanya A yang bisa menjawab challenge B karena hanya ia yang tahu x (kunci privat A) Skrip protokol tidak bisa dipakai oleh B untuk menunjukkan keaslian m ke pihak ketiga … karena B bisa saja membuat sendiri d difase 2 yang akan lewat testing di fase 3 dari protokol.
Akumulator Satu Arah Akumulator satu arah adalah fungsi hash dari sekelompok data y1,y2,…,yn yang tidak bergantung pada urutan dari yi. Buat parameter n=pq, produk dari dua bilangan prima. Buat x0. A(xi,y) = xi-1y mod n Contoh: A(y1,y2,y3) = A(A(y1,y2),y3) = (A(y1,y2))y3 mod n = (A(A(x0,y1),y2))y3 mod n = ((A(x0,y1)y2 mod n)y3 mod n = ((x0y1 mod n)y2 mod n)y3 mod n = x0y1y2y3 mod n Kita lihat A(y1,y2,y3) sama sekali tidak bergantung dari urutan yi.