BAB IV KURVA ELIPTIK DAN ID BASED CRYPTOSYSTEM 4.1. Kurva Eliptik Misalkan p adalah bilangan prima yang lebih besar dari 3. Sebuah kurva eliptik atas lapangan hingga dengan ukuran p dinotasikan dengan GF(p) dan diberikan oleh sebuah persamaan dalam bentuk y 2 = x 3 + ax + b, dimana a, b GF(p). (Persamaan atas lapangan hingga dengan ukuran 2 n dinotasikan sebagai GF(2 n ) akan sedikit berbeda, dan akan dibahas nanti.) Himpunan titik-titik pada kurva adalah kumpulan pasangan terurut (x, y) yang merupakan koordinat pada lapangan sehingga x dan y memenuhi persamaan yang mendefinisikan kurva tersebut, ditambah dengan titik tambahan O yang disebut sebagai titik tak hingga. Titik-titik ini membentuk sebuah grup abelian E dengan operasi khusus atas GF(p). E = {(x, y) O (x, y) memenuhi persamaan y 2 = x 3 + ax + b, x, y GF(p)}. 4.2.1. Operasi Grup Pada Kurva Eliptik Misalkan P, Q E, l adalah garis yang mengandung P dan Q (garis singgung jika P = Q) dan R, titik ke tiga perpotongan l dengan E. Misalkan l adalah garis yang menghubungkan R dengan O. Maka P + Q adalah titik sehingga garis l memotong E di R, O, P + Q. Catatan : untuk selanjutnya operasi penjumlahan pada grup ini akan dilambangkan dengan lambang + Asumsikan bahwa P = (x P, y P ) dan Q = (x Q, y Q ) berada dalam kurva, λ adalah gradien garis yang melalui P dan Q, maka koordinat dari P + Q = (x P+Q, y P+Q ) adalah x P+Q = λ 2 x P x Q dan y P+Q = λ x P x P+Q y P, di mana λ = y Q y P x Q x P, jika P Q 3x 2 P + a, jika P = Q 2y P 21
Titik tak hingga memainkan peranan sebagai elemen identitas, yaitu, P + O = O + P = P untuk sebarang titik P E. Setiap titik memiliki elemen invers tunggal P sehingga P + ( P) = O. Untuk P = (x P, y P ) pada kurva eliptik E atas GF(p), invers penjumlahan tersebut didefinisikan dengan P = (x P, y P ). Kategori lain dari kurva eliptik didefinisikan atas lapangan hingga dengan ukuran 2 n dinotasikan dengan GF(2 n ). Persamaan yang mendefinisikan eliptic curve atas GF(2 n ) adalah dalam bentuk y 2 + xy = x 3 + ax 2 + b, dimana a, b GF(2 n ). Operasi penjumlahan terhadap titik P dan Q adalah sebagai berikut : x P+Q = λ 2 + λ + x P + x Q + a dan y P+Q = λ x P + x P+Q + x P+Q + y P, di mana λ = y Q + y P x Q + x P jika P Q x P + y P x P jika P = Q Invers dari titik P = (x P, y P ) E atas lapangan biner GF(2 n ) didefinisikan oleh P = (x P, x P + y P ). Untuk kurva eliptik, operasi pada grup ditulis sebagai penjumlahan bukan perkalian. Jadi pemangkatan pada grup multiplikatif secara umum dapat disebutkan sebagai perkalian dengan skalar dalam grup kurva eliptik. Yang mana kita nyatakan sebagai rp yaitu P + P + + P sebanyak r kali, untuk sebuah integer r. 4.2.2. Zero dan Pole Dari Fungsi Rasional Misalkan f x, y adalah sebuah fungsi rasional pada kurva eliprik E x, y = 0, dimana 0 GF(p), atau secara umum pada lapangan tempat kurva eliptik berada. Untuk titik P f E, P disebut zero jika f P = 0 dan pole jika f x, y =, kita dapat tuliskan = 0 1. Dalam lapangan hingga, sebuah zero f P = 0 dapat difaktorisasi menjadi f P = 0 i g(p) sedemikian sehingga i adalah sebuah bilangan bulat positif dan g adalah fungsi rasional yang memenuhi g(p) 0 dan g(p). Jelas, bahwa dalam faktorisasi ini, jika g P = 0 maka kita dapat menaikkan nilai i sampai g(p) 0; jika 22
g P = maka kita dapat mengurangi i sampai g(p). Hal ini memungkinkan karena pada lapangan hingga tidak memiliki pembagi nol. Jika kita menuliskan sebagai 0 1, kita dapat memfaktorisasi f P = menjadi 0 i g(p) untuk sebuah bilangan bulat i dan sebuah fungsi rasional g yang memenuhi g P 0 dan g(p). Misalkan ord P menunjukkan bilangan bulat i atau i, saat f(p) difaktorisasi dengan metode di atas. Nilai dari ord P menunjukkan seberapa kuat sebuah zero atau pole tersebut. Kita dapat menyatakan seperti ini : ord P > 0 jika P adalah sebuah zero ord P < 0 jika P adalah sebuah pole ord p = 0 jika P bukan zero atau pole (di mana E dan f tidak berpotongan). 4.2.3. Orde Zero pada Fungsi Linear Misalkan L: y ux + v = 0 adalah sebuah garis (u 0). Sebuah zero P = (x 0, y 0 ) dari L = 0 adalah solusi terbatas yang diselesaikan dari bentuk L E: (ux + v) 2 = y 2 = x 3 + ax + b Kita bisa melihat bahwa x 0 adalah akar dari persamaan (ux + y) 2 x 3 + ax + b = 0. Jelas, bahwa 0 dapat difaktorisasi menjadi (x x 0 ) d g dengan g(x 0 ) 0 dan d = 2 1, 2 jika P titik singgung dan 1 untuk P yang lain. Karena itu ord P L = 1 jika L memotong E di P 2 jika L menyinggung E di P. 23
4.2.4. Orde Pole pada Fungsi Linear Sebuah garis L = ux + vy + w = 0 memotong E tidak hanya di titik ketika L pada E menghasilkan zero, tetapi juga di titik infinity O di mana L pada E menghasilkan pole. Kita dapat menuliskan E menjadi Karena itu 1 y 2 = 1 x 3 (1 + a/x 2 + b/x 3 ) x = x y 2 1 (1 + a/x 2 + b/x 3 ) Kita tahu bahwa x y = 0 pada titik O; dan 1 mendapatkan ord O x = 2. Lebih jauh karena (1+ ) = 1 pada titik O; karena itukita y = x y 1 x = x y 3 1 (1 + a/x 2 + b/x 3 ) Kita mendapatkan ord O y = 3. Dengan mudah dapat dicek bahwa ord O ux = 2 dan ord O vy = 3 dan berlaku untuk sebarang u 0 dan v 0. Selain itu ord O ux + vy + w = 3 asalkan v 0. ord O ux + vy + w = 3 jika v o 2 jika v = 0, u 0 0 untuk keadaan lain 24
4.2.4. Divisor Divisor adalah sebuah bentuk formal : D = n P P E [P] di mana n P adalah sebuah bilangan bulat yang merupakan orde dari titik P dan [P] adalah simbol formal. Tanda kurung siku pada P hanyalah cara agar tidak terjadi kebingungan membedakan [P] dengan titik P. Sebagai contoh, i P + j[q] adalah sebuah divisor (bentuk formal) sedangkan ip + jq adalah sebuah titik di E. Dengan pertidaksamaan n P > 0 menyatakan bahwa titik P adalah sebuah zero dan n P < 0 menyatakan bahwa titik P adalah sebuah pole. Sebagai contoh, untuk P, Q, R E, D 1 = 2 P + 3 Q 3[R] menyatakan bahwa divisor D 1 memiliki zero di P dan Q dengan orde 2 dan 3, selanjutnya sebuah pole di R dengan orde 3. Dan D 2 = 2 P + 2P 3[O] menyatakan bahwa P dan 2P adalah zero dengan orde 2 dan 1, dan O adalah pole dengan orde 3 untuk divisor D 2. Kita dapat melihat bahwa tanda kurung siku berguna untuk memisahkan orde dengan titik yang dimaksud. Grup divisor pada E, dinyatakan sebagai Div(E), membentuk sebuah grup abelian dengan operasi penjumlahan berikut. Untuk D 1, D 2 Div(E), jika D 1 = P E n P [P], D 2 = P E m P [P], lalu D 1 + D 2 = P E n P [P] + P E m P [P] = P E (n P + m P )[P]. Untuk sebuah divisor D = P E n P [P] kita definisikan supp D = P E n P 0 sebagai pendukung dari divisor D, dan deg D = P E n P menyatakan derajat dari divisor D. Sebagai contoh, jika D 1 = 2 P + 3 Q 3[R], D 2 = 2 P + 2P 3[O], maka supp D 1 = P, Q, R, supp D 1 = P, 2P, O dan deg D 1 = 2 + 3 3 = 2, deg D 1 = 2 + 1 3 = 0. Mulai sekarang kita membahas hanya himpunan divisor yang berderajat nol, dilambangkan sebagai Div 0 (E). Misalkan f adalah fungsi rasional dari K K ke K, di mana K adalah lapangan hingga. Sebagai contoh, f x, y = 3y 2x 5. Evaluasi fungsi 5y +3y 2 rasional f pada titik P = (x P, y P ) di definisikan oleh f P = f(x P, y P ) dan evaluasi f 25
pada sebuah divisor D = n P [P] P E di definisikan sebagai f D = f(p) n P P supp (D). Divisor dari Fungsi Rasional Sebuah divisor menyediakan representasi untuk mengindikasikan apakah sebuah titik adalah zero atau pole beserta ordenya masing-masing terhadap sebuah fungsi rasional atas kurva eliptik. Misalkan f adalah sebuah fungsi rasional di E. Divisor dari f adalah div f = P E n P,f P, dengan n P,f adalah orde dari zero atau pole dari titik P di f. Derajat divisor dari sebuah fungsi rasional adalah nol; oleh karena itu div(f) Div 0 (E) untuk sebarang fungsi rasional f. Contoh: Misalkan P = (x P, y P ) E, f x, y = x x P, maka div f = div x x P = P + P 2[O]. P dan P adalah zero dari f karena hanya 2 titik tersebut yang berada di garis vertikal x x P = 0 dan di kurva eliptik E. Titik tak hingga O adalah pole dengan orde 2 karena div(f) Div 0 (E). Untuk 2 fungsi rasional, fungsi f 1 dan f 2, berlaku sifat : 1. div f 1 + div f 2 = div f 1 f 2 dan 2. div f 1 div f 2 = div(f 1 /f 2 ). Contoh : Misalkan E adalah kurva eliptik dengan persamaan y 2 = x 3 + 7x atas GF(13). Kita punya P = 4,1, Q = (5,2) E dan P + Q = (5,11). Ambil f x, y = y x+3. Karena P, Q, P + Q = 5,2 = Q terdapat di garis y x + 3 = 0, maka div y x + 3 = P + Q + P + Q 3 O = P + 2 Q 3[O]. Dan juga div x 5 = Q + Q + 2 O = Q + P + Q 2[O] karena Q, Q = 5,11 = P + Q berada di garis x 5 26
x 5 = 0. Karena itu, kita mendapatkan div f = div y x + 3 div x 5 = P + Q P + Q [O]. Sebuah divisor D Div 0 E dikatakan principal jika D = div(f) untuk sebuah fungsi rasional f. Divisor principal D = 0. P E n P (P) mempunyai ciri-ciri P E n P P = Contoh : misalkan D 3 = P + P 2[O], maka D 3 memenuhi deg D 3 = 0 dan P + P 2O = P P = O. Oleh karena itu D 3 adalah principal. Faktanya D 3 = div(x x P ) untuk fungsi x x P. Dua buah divisor D 1, D 2 Div 0 (E) dikatakan ekivalen (dinotasikan D 1 ~D 2 ) jika D 1 D 2 adalah principal. Untuk sebarang divisor D = terdapat sebuah titik unik P = R E n R (R) Div 0 (E), R E n R R E sedemikian sehingga D~ P [O]. Dengan kata lain D dapat selalu dituliskan dalam bentuk kanonik D = P O + div(f), di mana f adalah sebuah fungsi rasional. Sekarang kita akan memperkenalkan sebuah rumus untuk menambahkan dua buah divisor dalam bentuk kanonik. Rumus ini menyediakan sebuah metode untuk menemukan fungsi rasional dengan div f = D untuk sebuah divisor D, dan sangat berguna untuk menghitung Pasangan Weil. Misalkan D 1, D 2 Div 0 (E) dengan D 1 = P 1 O + div(f 1 ) dan D 2 = P 2 O + div(f 2 ). Kita asumsikan bahwa P 1 + P 2 = P 3. Misalkan P1,P 2 x, y = ay + bx + c adalah persamaan garis lurus yang melalui P 1 dan P 2, dan P3 (x, y) = x + d sebuah persamaan garis vertikal yang melalui P 3. (Dengan catatan bahwa jika P 1 = P 2, P1,P 2 x, y adalah garis singgung di P 1. Dan jika P 3 = O, maka P3 x, y = 1.) Lalu kita dapatkan div P1,P 2 = P 1 + P 2 + P 3 3[O] di mana P 1, P 2, dan P 3 adalah zero karena ketiga titik itu berada pada garis P1,P 2, dan div( P3 = P 3 + P 3 2[O]) di mana P 3, P 3 adalah zero karena keduanya berada pada garis P3. Dari persamaan-persamaan di atas, jumlah dari divisor D 1 + D 2 dapat dituliskan : 27
D 1 + D 2 = P 1 + P 2 2 O + div f 1 f 2 = P 3 O + div f 1 f 2 + div P1,P 2 div( P3 ) = P 3 O + div(f 1 f 2 P1,P 2 / P3 ) Persamaan akhir ini akan digunakan untuk menghitung pasangan weil. 4.2.5. Pasangan bilinear Misalkan G 1 adalah sebuah grup siklis yang dibangun oleh O, dengan orde prima q, dan G 2 adalah grup multiplikatif siklis dengan orde sama q. e: G 1 G 1 G 2 adalah pasangan bilinear jika memenuhi sifat-sifat berikut : 1. Bilinear e P, Q + R = e P, Q e P, R dan e P + R, Q = e P, Q e R, Q untuk setiap P, Q, R G 1. 2. Computability Terdapat algoritma yang efisien untuk menghitung e(p, Q) untuk semua P, Q G 1. 3. Non-degenerate Terdapat P G 1 dan Q G 1 sedemikian sehingga e(p, Q) 1. 4.3. Pasangan Weil Diberikan sebuah kurva eliptik E atas lapangan hingga K, misalkan m adalah sebuah bilangan bulat prima adalah car(k), karakteristik dari K. Sebagai contoh, car GF p = p dan car GF 2 m = 2. Pasangan weil adalah fungsi e = E[m] E[m] U m di mana E m = {P mp = O, P E}, U m adalah grup yang anggotanya akar dari x m = 1 di K. Pasangan weil e(p, Q) didefinisikan sebagai berikut. Diberikan P, Q E[m], terdapat divisor D P, D Q Div 0 E sedemikian sehingga D P ~ P [O] dan D P ~ Q [O]. Kemudian kita memilih titik T, U E[m] secara acak dan menetapkan D P = 28
P + T [T] dan D Q = Q + U [U]. Dengan mudah kita bisa mengetahui bahwa D P ~ P [O] dan D Q = Q [U]. Karena mp = mq = O, maka divisor md P dan md Q adalah principal dan terdapat fungsi rasional f P, f Q sedemikian sehingga div f P = md P dan div f Q = md Q. Misalkan supp D P supp D Q =, maka pasangan weil dari titik P dan Q didefinisikan : e P, Q = f P (D Q ) f Q (D P ). Pasangan weil memiliki sifat bilinear : untuk P, Q, R E[m], berlaku e P + Q, R = e P, Q e(q, R) dan e P, Q + R = e P, Q e(p, R). Algoritma pertama untuk menghitung e(p, Q) adalah sebagai berikut. Algoritma Miller INPUT OUTPUT Langkah 1. : P, Q E[m] : E(P, Q) Pilih sebarang titik T, U E sedemikian sehingga P + T, T, Q + U, U berbeda. Lalu buat D P = P + T [T] dan D Q = Q + U [U]. Langkah 2. Gunakan algoritma untuk menghitung f P Q + U, f P U, f Q P + T, f Q (T), di mana f P dan f Q memenuhi div f P = md P dan div f Q = md Q. Langkah 3. Hitung e P, Q = f P (D Q ) = f P Q+U f Q (T) f Q (D P ) f Q P+T f P (U) Bagian yang sangat penting dalam Algoritma Miller adalah algoritma menghitung fungsi evaluasi f P dan f Q di Langkah 2. Algoritma untuk menghitung f P (S) menghasilkan f P sedemikian sehingga div f P = md P, dan menghitung f P (x S, y S ) untuk S = (x S, y S ). Kita lihat kembali D P = P + T [T]. Untuk setiap integer k, terdapat sebuah fungsi rasional f k yang memenuhi div f k = k P + T k T kp + [O]. 29
Jika k = m, maka div f m = m P + T m T mp + O = m P + T m[t], dan f P = f m. Untuk sebarang titik R, S, misalkan R,S dan R adalah fungsi linear, di mana R,S x, y = 0 adalah garis lurus yang melewati R, S, dan R x, y = 0 adalah garis vertikal yang melalui R. Selanjutnya kita memiliki dan karenanya div f k1 +k 2 = k 1 + k 2 P + T k 1 + k 2 T k 1 + k 2 P + O = k 1 P + T k 1 T k 1 P + O +k 2 P + T k 2 T k 2 P + O + k 1 P + k 2 P + k 1 + k 2 P 3[O] { (k 1 + k 2 P + k 1 + k 2 P 2[O]} = div f k1 + div f k2 + div k1 P,k 2 P div( (k1 +k 2 )P) f k1 +k 2 = f k 1 f k2 k1 Pk 2 P. (k1 +k 2 )P Persamaan di atas adalah persamaan rekursif dengan kondisi awal f 0 = 1 dan f 1 = P+T P,T karena div f 1 = P + T T P + [O] = P + T + P + T 2 O { P + T + P + T 3[O]} = div P+T div P,T. Berdasarkan persamaan rekursif di atas, cara konvensional dengan metode double and add adalah metode yang diusulkan untuk mengevaluasi fungsi rasional f P pada titik S yang diberikan, di mana f P memenuhi div f P = m P + T m T. Algoritma yang dimaksud dengan algoritma double and add adalah sebagai berikut : 30
Algoritma Double and Add (Langkah 2, Algoritma Miller) INPUT : titik P, T, S dan ordenya m = n 1 i=0 b i 2 i dengan b i 0,1, b n 1 = 1 OUTPUT f 1 P+T(S) P,T (S) ; f f 1 ; Z P; : f m S = f P (S) for j n 2, n 3,,0 do endfor f f Z,Z(S) 2 ; Z 2Z; 2Z (S) if b i = 1 then endif return f f f 1 f Z,P (S) ; Z Z + P; Z+P (S) 4.4. ID Based Cryptosystem Skema ID based encryption (IBE) dengan menggunakan pemetaan bilinear yaitu pasangan weil atas kurva eliptik pertama kali dicetuskan oleh Boneh dan Franklin. Pemetaan bilinear mentransformasi sepasang anggota di grup G 1 dan memetakannya ke sebuah anggota di G 2 dalam sebuah cara yang memenuhi beberapa kriteria. Kriteria yang paling penting adalah kebilinearan itu sendiri, di mana ia haruslah bilinear untuk setiap pasangan anggota dari domain yang dimasukkan. Untuk membuat sebuah ID based cryptosystem diperlukan sebuah Private Key Generator yang berfungsi untuk menentukan s yaitu master key yang dijaga kerahasiaannya, lalu mengumumkan informasi-informasi yang diperlukan termasuk persamaan kurva eliptik yang akan dipakai, titik basis P, kunci publik sp, dan beberapa fungsi hash yang dipakai. Setiap pemakai memiliki kunci publik dinotasikan K U = Q ID yaitu sebuah titik pada kurva eliptik yang berkorespondensi dengan ID nya dan diketahui oleh semua pengguna. Kunci pribadi dinotasikan K R = sq ID, dimana s diperoleh dari PKG. 31
Misalkan Anita ingin mengirimkan pesan M kepada Budi maka enkripsi dan dekripsinya adalah sebagai berikut : Anita ingin mengirim pesan M. Ia memilih integer r random lalu mengirim : (U, V) = (rp, M (e(q ID, sp) r )) Ketika Budi menerima (U, V) kemudian dia menghitung : M = V (e(sq ID, U)). Dengan merupakan fungsi hash yang diumumkan PKG dan e adalah pasangan weil. Hal ini dapat terjadi karena sifat kebilinearan dari pasangan weil, yaitu e sq ID, U = e sq ID, rp = e(q ID, P) sr = e(q ID, sp) r. 32