Algoritme Aritmetika Kurva Eliptik Non-Supersingular Prosedur Menentukan Kurva Eliptik 2m dengan

dengan menerapkan persamaan 3.1 maka diperoleh Selanjutnya, dengan membagi kedua ruas dengan dan diterapkan juga persamaan 2.9 diperoleh Untuk mendapatkan nilai digunakan persamaan 2.9, maka diperoleh dengan persamaan 3.1 persamaan di atas menjadi Akhirnya diperoleh , dimana dan dengan . Dari uraian di atas, diperoleh aritmetik pada kurva eliptik Non-Supersingular sebagai berikut a. Titik di luar kurva yang digunakan adalah ∞ , . b. , dan – , apabila dijumlahkan menghasilkan titik ∞. c. , sembarang. Misalkan , , , dan maka, , dimana dan adalah dan dengan . d. Untuk setiap , dan , berlaku , dimana dan dengan . Di bawah operasi di atas, maka kurva eliptik Non-Supersingular merupakan grup dengan unsur identitas ∞ , dan invers dari adalah – , .

3.4 Algoritme Aritmetika Kurva Eliptik Non-Supersingular

3.4.1 Pembangkitan Kurva Ka,b INPUT : Memasukkan nilai m OUTPUT : Nilai kurva , Mulai 1. Pilih acak , . 2. Lakukan sampai i proses dengan syarat ∞ dengan cara a. Mengacak b. Selesai 3. Tampilkan ,

3.4.2 Menentukan Titik

P x,y INPUT : Nilai kurva , OUTPUT : Titik , Mulai 1. Hitung 2. Lakukan sampai i proses apabila ∞ dengan cara a. Hitung b. Selesai. 3. Tampilkan , dengan dan ∞.

3.4.3 Adisi Titik

, , INPUT : P , , Q , dengan , OUTPUT : Titik , Mulai 1. Jika ∞ atau ∞, maka a. b. 2. Jika dan , maka a. b. 3. Jika . Maka a. b. c. 4. Jika tidak , maka : a. b. c. 5. Tampilkan ,

3.4.4 Menentukan Invers Negatif Titik

INPUT : Titik P , dengan , OUPUT : P , Mulai 1. Hitung 2. Tampilkan ,

3.4.5 Menentukan kelipatan

sebanyak k kali INPUT : Titik P , dan merupakan integer positif acak dengan , , OUPUT : Mulai 1. Pilih suatu integer acak dan diubah menjadi basis 2 2. Misalkan 3. Jika hanya terdapat satu titik P, maka a. Nilai yaitu nilai P b. Selesai 4. Untuk langkah kedua, lakukan sampai i kali apabila terdapat beberapa titik yang sama dengan cara a. Nilai yaitu nilai . Jadi apabila terdapat dua titik yang sama dan masing-masing bisa dipasangkan, titik tersebut digandakan sampai i sehingga ditemukan satu titik. b. Jika operasi ke i kali yang nilai biner terdapat satu titik yang tidak ada pasangan untuk digandakan, maka lakukan 1. Titik yang digandakan sebelumnya dijumlahkan dengan satu titik yang tidak mempunyai pasangan sehingga proses a 2. Selesai c. Selesai 5. Tampilkan titik

3.5 ElGamal Kurva Eliptik atas

Untuk penerapan kurva eliptik dalam algoritme ElGamal, maka terdapat beberapa perubahan yang terjadi dalam algoritme tersebut. Perubahannya dari grup multiplikatif yang digeneralisasi menjadi aritmetik kurva eliptik . Berikut langkah-langkah penyandian dengan grup multiplikatif digeneralisasi. Diilustrasikan A mengirim pesan kepada B.

1. Algoritme 1 Pembangkitan Kunci

B membuat sebuah kunci publik dan kunci pribadi. Hal yang dilakukan adalah a. Memilih suatu grup siklik berorder dengan generator . b. Memilih suatu integer acak a dalam . c. Menghitung . d. Kunci publik B adalah , dan kunci pribadi B adalah a. e. Kemudian kunci publik tersebut dikirimkan ke A.

2. Algoritme 2 Enkripsi

A menyandikan atau me-enkripsi sebuah pesan m ke B. Langkah-langkah yang harus dilakukan oleh A adalah a. Memperoleh kunci publik , . b. Merepresentasikan pesan tersebut sebagai suatu integer c. Memilih integer acak k, dimana positif. d. Menghitung dan . e. Mengirim siferteks , ke B.

3. Algoritme 3 Dekripsi

Untuk menemukan kembali m dari c, B harus melakukan hal-hal berikut a. Menggunakan kunci pribadi a untuk menghitung . Dengan catatan . b. Menemukan kembali m dengan menghitung , sehingga diperoleh . Menezes et al. 1996 Sedangkan untuk aritmetika kurva eliptik digunakan aturan definisi grup kurva eliptik dengan menggunakan proses adisi. Perubahan yang terjadi adalah a. menjadi Sebanyak kali b. menjadi . Oleh karena itu, algoritme ElGamal dalam grup multiplikatif diatas diganti menjadi aritmetika kurva eliptik diilustrasikan A mengirim pesan ke B.

1. Algoritme 1 Pembangkitan Kunci

B membuat sebuah kunci publik dan kunci pribadi. Hal yang dilakukan adalah a. Memilih suatu generator , yang merupakan titik pada kurva eliptik. . b. Memilih suatu integer acak a dalam . c. Menghitung . d. Kunci publik B adalah , dan kunci pribadi B adalah a. e. Mengirim kunci publik ke A.

2. Algoritme 2 Enkripsi

A menyandikan atau me-enkripsi sebuah pesan m ke B. Langkah-langkah yang harus dilakukan oleh A adalah a. Memperoleh kunci publik , . b. Merepresentasikan pesan tersebut sebagai suatu titik . c. Memilih integer acak k, d. Menghitung dan . e. Mengirim siferteks , ke B.

3. Algoritme 3 Dekripsi

Untuk menemukan kembali m dari c, B harus melakukan hal-hal berikut a. Menggunakan kunci pribadi a untuk menghitung . b. Menemukan kembali pesan m dengan menghitung , sehingga diperoleh . Contoh ElGamal Kurva Eliptik Lihat Lampiran 4 : Diilustrasikan Andi mengirim pesan kepada Beni. Hal pertama yang dilakukan Beni adalah membuat kunci pribadi dan kunci publik. Dimisalkan menggunakan aritmetik kurva eliptik Non- Supersingular. Hal ini dikarenakan langkah- langkah yang dilakukan sama. 1. Algoritme 1 Pembangkitan Kunci. a. Beni memilih generator yang merupakan suatu titik pada kurva eliptik. , , , , , , , , , , , . b. Beni memilih integer acak yang nantinya merupakan kunci pribadi . c. Kemudian menghitung , , , , , , , . d. Kunci Publik adalah , dengan nilai , , , , , , , , , , , , , , , , , , . 2. Algoritme 2 Enkripsi Setelah menerima kunci publik dari Beni, Andi menyandi pesan tersebut dengan menggunakan kunci tersebut. Kemudian yang dilakukan Andi adalah a. Membangkitkan pesan. Di sini dimisalkan pesan yang dibangkitkan Andi adalah suatu titik , , , , , , , , , . b. Kemudian Andi memilih sembarang integer . c. Setelah itu Andi mencari nilai , , , , , , , , , , . Kemudian, mencari nilai , , , , , , , , , . d. Nilai yang diperoleh tersebut dikirim kepada Beni dalam bentuk siferteks , , , , , , , , , , , , , , , , , , , , , .

3. Algoritme 3 Dekripsi

Setelah Beni menerima siferteks, barulah dia menemukan kembali pesan yang telah disandikan tersebut dengan menggunakan kunci pribadi yang hanya dia sendiri yang mengetahuinya dengan cara a. Mencari – dimana a merupakan kunci pribadi, sehingga diperoleh – , , , , , , , , , , . b. Menemukan kembali m dengan menghitung sehingga diperoleh pesan yang sama seperti pesan yang belum disandikan , , , , , , , , , . Terlihat dengan jelas bahwa dalam melakukan penyandian tersebut, digunakan empat prinsip hukum grup dari kurva eliptik . Titik yang diperoleh di atas merupakan suatu himpunan. Himpunan-himpunan tersebut merupakan pangkat dari definisi . Misalkan contoh pesan yang digunakan pada contoh di atas. Pasangan titik , , , , , , , , , sama dengan pasangan polinomial . . . . . . , . . . . . Sedangkan untuk nilai merupakan nilai untuk a. Ini dikarenakan berapapun nilai a dan dimodulokan dengan dua, hasilnya hanya mempunyai nilai 0 atau 1. IV SIMPULAN DAN SARAN

4.1 Simpulan

Terdapat dua kasus untuk kurva eliptik dalam field biner yaitu Supersingular dan Non-Supersingular. Aritmetik baru yang diperoleh dari kurva eliptik field biner ini merupakan proses adisi yang disebut dengan hukum grup kurva eliptik. Proses adisi tersebut adalah penjumlahan dengan suatu titik dengan unsur identitas, penjumlahan suatu titik dengan invers titik tersebut, penjumlahan dua titik yang berbeda, dan doubling. Aritmetik yang diperoleh dari penjumlahan tersebut adalah

1. Kurva eliptik

Supersingular a. Terdapatnya identitas ∞, sehingga ∞ . b. Adanya invers, , . c. Untuk adisi, , , diperoleh dan dengan . d. Untuk doubling, , , nilai dan nilai dengan .

2. Kurva eliptik

Non-Supersingular a. Terdapatnya identitas ∞, sehingga ∞ . b. Adanya invers, , . c. Untuk adisi, , , nilai dan dengan . d. Untuk doubling, , dimana nilai dan nilai dengan . Dari hukum grup ini dapat dibentuk prosedur dalam Maple 12 dan juga dapat digabung dengan ElGamal. Dalam penggabungan ini, dihasilkan pesan yang sebelum disandikan identik dengan pesan yang telah disandikan. Ini menunjukkan ElGamal yang semula dalam grup multiplikatif digeneralisasi menjadi ElGamal Kurva Eliptik dalam field . 4.2 Saran Dalam karya ilmiah ini, penulis hanya melakukan pencarian titik pada kurva dan melakukan proses adisi struktur grup kurva eliptik. Di samping itu juga, penulis hanya mencoba menggabungkan aritmetik ini dengan ElGamal. Jadi, masih terdapat kekurangan diantaranya membandingkan keamanan suatu pesan pada ElGamal kurva eliptik Supersingular dengan Non- Supersingular. Semoga tulisan ini dapat menjadi inspirasi. DAFTAR PUSTAKA Aliatiningtyas N. 2002. Struktur Aljabar. Bogor: Departemen Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. Fraleigh. 1994. Abstract Algebra. United States of America: Addison-Wesley Publishing Company. Guritman S. 2004. Struktur Aljabar. Bogor: Departemen Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. Hankerson, Menezes, Vanstone. 2004. Guide to Elliptic Curve Cryptography. New York: Springer-Verlag Inc. Menezes, Oorschot Van, Vanstone. 1996. Handbook of Applied Cyrptography. Massachusetts Institute of Technology. Rosdiana S. 2009. Konstruksi Algoritme Aritmetik G dengan Operasi Perkalian Dibangkitkan dari Sifat Grup Siklik [Tesis]. Bogor: Departemen Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor. LAMPIRAN

1. Algoritme Aritmetika

a. Prosedur UbahBinKeDes Deskripsi : Prosedur mengubah Vektor Biner ke Desimal dari Order Rendah ke Order Tinggi UbahBinKeDes := proc N::list local D1, D2 :: list, Des::integer; D1:=mapx - 2x,[seqi,i=0..nopsN-1]: D2:=[seqN[j]D1[j],j=1..nopsN]: Des:=add i, i=D2 ; end proc: b. Prosedur UbahDesKeBin Deskripsi : Prosedur mengubah Desimal ke Vektor Biner dari Order Rendah ke Order Tinggi UbahDesKeBin := procB::integer,m::integer local K,KVek,Kv::list, i::integer: K := B mod 2m; Kv:=convertK,base,2: KVek:=[opKv,seq0i,i=nopsKv+1..m]: end proc: c. Prosedur UbahBinKeSet Deskripsi : Prosedur mengubah Vektor Biner ke dalam himpunan dari Order Rendah ke Order Tinggi UbahBinKeSet:= proc Cr::list local H::set, i,n::integer: n := nopsCr: H:={}: for i from 1 to n do if Cr[i]=1 then H:=H union {i-1}: end if: end do: returnH: end proc: d. Prosedur UbahDesKeSet Deskripsi : Prosedur mengubah bilangan desimal ke dalam bentuk himpunan UbahDesKeSet:=procn::integer local X::list: X:=convertn,base,2: UbahBinKeSetX; end proc: e. Prosedur UbahSetKeDes Deskripsi : Prosedur mengubah bentuk himpunan ke dalam bilangan desimal UbahSetKeDes := proc N::set local D::set, Des::integer; D:=mapx - 2x,N: Des:=add i, i=D ; end proc: f. Prosedur UbahSetKeBin Deskripsi : Prosedur mengubah bentuk himpunan ke dalam Vektor Biner UbahSetKeBin := proc N::set, m::integer local D::set, Des::integer; Des:=UbahSetKeDesN: UbahDesKeBinDes,m; end proc: g. Prosedur AcakSet Deskripsi : Prosedur untuk membangkitkan himpunan acak dalam AcakSet:=procm::posint local AcIn::procedure, p::integer: AcIn := rand2m: p:=AcIn: UbahDesKeSetp; end proc: h. Prosedur AdisiSet Deskripsi : Prosedur menjumlahkan dua himpunan AdisiSet:=procS::set,T::set returnS union T minus S intersect T; end proc: i. Prosedur ReduSet Deskripsi : Prosedur menghilangkan nilai 0 pada vektor biner ReduSet:=procn::integer,m::posint local H,G,K,S::set, i,j,k::integer: S:=DatB[m]: if n0 or n2m-2 then returnfalse: elif 0=n and nm then return{n}; else H:=mapx-x+n-m,S; end if: returnH: end proc: j. Prosedur ModSet Deskripsi : Prosedur untuk menentukan dimana merupakan set ModSet:=procT::set,m::posint local G,K,H,R::set, i::integer: if maxopT2m-2 then error end if; R:={seqi,i=m..2m-2}: K:= T intersect R: G:=T: for i while K{} do H:=ReduSetmaxopK,m: G:=AdisiSetG minus {maxopK},H: K:= G intersect R: end do: returnG; end proc: k. Prosedur KaliSet Deskripsi : Prosedur untuk mengalikan set KaliSet:=procA::set,B::set local H::set, i,j::integer: H:={}: for i in A do H:=AdisiSetH,mapj-j+i,B: end do: returnH: end proc: l. Prosedur MultiSet Deskripsi : Prosedur mengalikan set dengan menggunakan modulo MultiSet:=procA::set,B::set,m::integer local H::set: H:=KaliSetA,B: ModSetH,m; end proc: m. Prosedur BagiSet Deskripsi : Prosedur membagi set BagiSet:=procT::set,S::set local K,Q,R::set, i,r,s,t::integer: R:=T: Q:={}: r:=maxopR: s:=maxopS: for i while r=s do t:=r-s: Q:=Q union {t}: K:=KaliSet{t},S: R:=AdisiSetK,R: r:=maxopR: end do: return[Q,R]; end proc: n. Prosedur InvSet Deskripsi : Prosedur mencari invers dari set InvSet:=procT::set,m::integer local QA,QB,RA,RB,R,S,Tmp::set, L::list, i::integer: S:=DatB[m]: if T={} then returnTidak ada invers end if: RA:=S union {m}: RB:=T: QA:={}: QB:={0}: L:=BagiSetRA,RB: RA:=RB: RB:=op2,L: for i while RB{} do Tmp:=QA: QA:=QB: R:=KaliSetQB,op1,L: QB:=AdisiSetTmp,R: L:=BagiSetRA,RB: RA:=RB: RB:=op2,L: end do: returnQB; end proc: o. Prosedur DivSet Deskripsi : Prosedur membagi A oleh B modulo m DivSet:=procA::set,B::set,m::integer local iB::set: iB:=InvSetB,m; MultiSetA,iB,m; end proc: Rosdiana 2009

2. Konstruksi Aritmetika Kurva Eliptik

a. Prosedur Menentukan Kurva Eliptik 2m dengan

1. Supersingular m:=10; ECAcakABCSs:=procm::posint local A,B,C::set,i::integer; A:=AcakSetm; B:=AcakSetm; C:=AcakSetm; for i while B={}do B:=AcakSetm; end do; for i while C={}do C:=AcakSetm; end do; return [A,B,C]; end proc: Contoh : K:=ECAcakABCSsm; 2. Non-Supersingular ECAcakABNs:=procm::posint local A,B::set,i::integer; A:=AcakSetm; B:=AcakSetm; for i while B={}do B:=AcakSetm; end do; return [A,B]; end proc: Contoh : K:=ECAcakABNsm; b. Prosedur Menentukan Titik-titik Kurva Eliptik 2m 1. Supersingular AcakPtSs:=procK::list,m::posint local X,Y,H,G,T,U,S::set, i,t::integer: X:=AcakSetm; Y:=AcakSetm; H:=MultiSetK[3],Y,m; G:=MultiSetY,Y,m; H:=AdisiSetG,H; G:=MultiSetX,X,m; T:=MultiSetX,G,m; H:=AdisiSetH,T; U:=MultiSetK[1],X,m; H:=AdisiSetH,U; S:=AdisiSetH,K[2]; for i while S{} do X:=AcakSetm; Y:=AcakSetm; H:=MultiSetK[3],Y,m; G:=MultiSetY,Y,m; H:=AdisiSetG,H;