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;