Anda di halaman 1dari 16

Tugas Kriptografi

MAKALAH

KRIPTOGRAFI : ELLIPTIC CURVE CRYPTOGRAPHY

Mata Kuliah : Kriptografi

Disusun Oleh :

Hafizah Safira Kaurani 20170801084

Galih Briantoro 20170801024

UNIVERSITAS ESA UNGGUL

JAKARTA

2019
DAFTAR ISI

BAB I PENDAHULUAN

1.1 Latar Belakang .............................................................................................................. 1


1.2 Tujuan Makalah ............................................................................................................ 2
1.3 Rumusan Masalah ......................................................................................................... 2

BAB II PEMBAHASAN

2.1 Pengertian Elliptic Curve Cryptography ....................................................................... 3


2.2 Kelebihan dan Kekurangan Elliptic Curve Cryptography ............................................4
2.3 Perhitungan Elliptic Curve Cryptography .....................................................................4
2.4 Contoh Enkripsi dan Deskripsi ECC .............................................................................5

BAB III METODOLOGI PENELITIAN

3.1 ECC Enkripsi dengan Elemen Waktu........................................................................... 9


3.2 ECC Deskripsi dengan Elemen Waktu .........................................................................11
3.3 Pengujian Parameter ......................................................................................................12

KESIMPULAN ..................................................................................................................13

DAFTAR PUSTAKA ....................................................................................................... 14


1

BAB I
PENDAHULUAN

1.1. Latar Belakang

Algoritma kriptografi digunakan untuk menjaga sistem keamanan data. Ada banyak
cara untuk melakukan serangan terhadap algoritma-algoritma kriptografi ini, misalnya
dengan menggunakan serangan kriptanalis atau bruteforce. Selain mempertimbangkan
faktor kekuatan enkripsi dari suatu algoritma kriptografi, faktor kecepatan juga merupakan
faktor yang penting untuk memilih algoritma kriptografi yang sebaiknya digunakan. Jika
algoritma kriptografi memiliki keamanan yang kuat tetapi proses enkripsinya lambat maka
algoritma kriptografi tersebut tidak akan digunakan bila pengguna membutuhkan faktor
kecepatan dalam melakukan enkripsi.
ECC merupakan metode kriptografi yang penggunaannya semakin pesat setiap
tahunnya dan mulai menggantikan metode RSA. Metode RSA pada awal perkenalannya
merupakan metode yang sangat kuat. Bahkan, sang penemu RSA, Rivest-Shamir-
Adleman mengutarakan bahwa untuk membobol sistem ini adalah dengan memecahkan
permasalah matematika yang sangat sulit.. Mencari sebuah faktor adalah permasalahan
yang dimaksud dan hal ini sudah ada dari sejak jaman dahulu. Jika ada sebuah cara untuk
mencari sebuah faktor, maka penemuan ini akan menjadi sebuah berita yang sangat besar.
Karena hampir semua sistem kriptografi saat ini menggunakan metode RSA, maka akan
terjadi perombakan besar besaran jika masalah tersebut terpecahkan. Dalam sistem bit,
terdapat sebuah algoritma untuk mencari faktor faktor tersebut. Seiring dengan
berkembangnya jaman, sumber daya komputer saat ini cukup untuk melakukan
perhitungan dalam memecahkan algoritma RSA. Satu satunya cara yang ditawarkan untuk
menanggulangiya adalah dengan menambahkan kunci bit agar semakin besar pada
RSA. Hal ini berakibat sistem RSA bukan merupakan sistem yang ideal untuk masa depan
kriptografi. Sehingga belakangan ini, ECC mulai mengambil alih peranan RSA dalam
sistem kriptografi yang ada..
2

1.2. Tujuan Makalah


1. Untuk melengkapi tugas mata kuliah Kriptografi
2. Menjelaskan tentang apa itu Elliptic Curve Cryptography
3. Mengetahui kelebihan dan kekurangan dari Distribusi Probabilitas
4. Menjelaskan contoh dari Elliptic Curve Cryptography

1.3. Rumusan Masalah

1. Apa yang dimaksud dengan Elliptic Curve Cryptography?


2. Apa saja kelebihan dan kekurangan dari Elliptic Curve Cryptography?
3. Bagaimana contoh dari Elliptic Curve Cryptography?
3

BAB II
PEMBAHASAN

2.1 Pengertian Elliptic Curve Cryptography

Elliptic Curve Cryptography (ECC) adalah salah satu pendekatan algoritma


kriptografi kunci publik berdasarkan pada struktur aljabar dari kurva ellips pada daerah
finite. Penggunaan elliptic curve pertama kali dicetuskan oleh Neal Koblitz dan Viktor S
Miller pada tahun 1985. Elliptic Curve juga digunakan pada beberapa algoritma
pemfaktoran integer yang juga diaplikasikan dalam kriptografi seperti Lenstra Elliptic
Curve Factorization.
Beberapa pondasi matematika dari ECC adalah aritmatika modular, groups dan
finite field yang di dalamnya terdapat groups, order group an generator, subgroup, finite
field, dan The Discrete Logarithm Problem (DLP). The Discrete Logarithm Problem (DLP)
didefinisikan sebagai berikut : Berdasarkan panduan yang digunakan disarankan
menggunakan elliptic curve atas field prima. Pada kriptografi kunci publik, masing-masing
user atau device mengambil bagian dalam komunikasi yang memiliki pasangan kunci yaitu
kunci publik dan kunci privat. Hanya pengguna yang cocok yang dapat menggunakan
privat key yang sesuai, tetapi kunci public yang digunakan disebarkan kepada pihak yang
akan mengirimkan data kepada pemilik privat key. Beberapa algoritma kunci publik
menyediakan pendefinisian konstanta yang akan disebarkan ke semua bagian yang ikut
berpartisipasi dalam komunikasi.
4

2.2 Kelebihan dan Kekurangan Elliptic Curve Cryptography


Berikut adalah kelebihan dan kekurangan ECC :
a) Kelebihan ECC
1. Masalah keamanan pada distribusi kunci dapat lebih baik
2. Masalah keamanan pada distribusi kunci dapat lebih baik
b) Kekurangan ECC
1. Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris
2. Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang
dibandingkan dengan algoritma simetris

2.3 Perhitungan Elliptic Curve Cryptography


Eliptic Curve Cryptography merupakan sistem kriptografi kunci publik yang
memanfaatkan persamaan kurva eliptik. Algoritma ini dirancang oleh diajukan oleh Neal
Koblitz dan Victor S. Miller. Penggunaan kurva eliptik dalam ECC adalah sebagai berikut:
a. Dua pihak yang berkomunikasi menyepakati parameter data sebagai berikut :
1) Nilai a, b, dan bilangan prima p dari persamaan kurva eliptik y2 = x3 + ax + b
mod p
2) Grup eliptik yang dihitung dari persamaan kurva eliptik
3) Titik basis (base point) B (XB , YB ) , dipilih dari grup eliptik untuk operasi
kriptografi
b. Setiap pengguna membangkitkan pasangan kunci publik dan kunci privat
1) Kunci privat = integer x, dipilih dari selang [1, p – 1]
2) Kunci publik = titik Q, adalah hasil kali antara x dan titik basis B: Q = x· B

Kurva eliptik yang digunakan dalam kriptografi didefinisikan dengan


menggunakan dua tipe daerah terbatas yakni daerah karakteristik ganjil ( 𝐹𝑝 dimana 𝑝
> 3 adalah bilangan prima yang besar) dan karakteristik dua ( 𝐹2𝑚 ). Karena perbedaan
itu menjadi tidak begitu penting, kedua daerah terbatas tersebut dapat ditunjukkan sebagai
𝐹𝑝 , dimana 𝑞 = 𝑝 atau 𝑞 = 2𝑚 . Elemen dari 𝐹𝑝 adalah integer (0 ≤ 𝑥 < 𝑝)dimana elemen
tersebut dapat dikombinasikan menggunakan modul aritmatik. teknik dasar kurva eliptik
dalam bidang terbatas 𝐹𝑝 dimana 𝑝 adalah bilangan prima lebih besar dari 3. Selanjutnya
kurva eliptik secara umum didefinisikan sebagai field berhingga (finite field).
5

Sebuah kurva eliptik 𝐸 didefinisikan 𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏 dimana 𝑎, 𝑏 ∈ 𝐹𝑝 dan


4𝑎3 + 27𝑏2 ≠ 0 dan dan sebuah titik O, yang disebut titik tak hingga (infinity). Titik tak
hingga adalah identitas atau titik ideal. Himpunan 𝐸(𝐹𝑝) adalah semua titik (𝑥, 𝑦) untuk 𝑥,
𝑦 ∈ 𝐹𝑝 yang memenuhi persamaan diatas.
Untuk menjelaskan uraian di atas, berikut ini diberikan contoh pencarian himpunan
pada ℝ dan 𝐸(𝐹𝑝) . Diberikan persamaan kurva eliptik 𝐸: 𝑦2 = 𝑥3 + 𝑥 + 1.Untuk 𝐸(𝐹𝑝)
dipilih 𝑝 = 23 , sehingga grup 𝐹23(𝑎 = 1, 𝑏 = 1). Maka untuk nilai 4𝑎3 + 27𝑏2 = 4 + 27 ≠
0 membuat 𝐸 ada dalam kurva eliptik.

2.4 Contoh Enkripsi dan Deskripsi ECC


Bilangan Prima (acak random) p = 193
Anggota Himpunan Penyelesaian di atas dengan batas atas bilangan prima 193
(0,1), (0,192), (1,14), (1,179), (3,80), (3,113), (4,29), (4,164),
(5,18), (10,25), (10,168), (11,68), (11,125), (12,2), (12,191), (15,66),
(15,127), (19,33), (19,160), (20,84), (20,109), (22,40), (22,153),
(23,15), (23,178), (25,37), (25,156), (27,5), (27,188), (28,65), (28,128),
(29,78), (29,115), (31,78), (31,115), (32,50), (32,143), (35,79), (35,114),
(39,84), (39,109), (41,86), (41,107), (45,70), (45,123), (49,82), (49,111),
(51,43), (51,150), (52,93), (52,100), (53,30), (53,163), (54,80), (54,113),
(55,79), (55,114), (56,64), (56,129), (58,56), (58,137), (61,70), (61,123),
(62,6), (62,187), (66,46), (66,147), (67,41), (67,152), (69,38), (69,155),
(70,66), (70,127), (71,57), (71,136), (72,32), (72,161), (73,14), (73,179),
(74,81), (74,112), (79,2), (79,191), (81,1), (81,192), (82,67), (82,126),
(83,28), (83,165), (84,47), (84,146), (85,49), (85,144), (87,70), (87,123),
(90,55), (90,138), (91,34), (91,159), (93,42), (93,151), (94,59), (94,134),
(95,92), (95,101), (96,182), (100,19), (100,174), (101,13), (102,2),
(102,191), (103,79), (103,114), (104,92), (104,101), (108,66), (108,127),
(109,63), (109,130), (111,96), (111,97), (112,1), (112,192), (113,23),
(113,170), (114,34), (114,159), (115,94), (115,99), (117,105), (119,14),
(119,179), (120,81), (120,112), (123,49), (123,144), (127,3), (127,190),
(128,23), (128,170), (133,78), (133,115), (134,84), (134,109), (135,95),
(135,98), (136,80), (136,113), (138,55), (138,138), (140,35), (140,158),
6

(142,58), (142,135), (145,23), (145,170), (147,85), (147,108), (155,17),


(158,55), (158,138), (163,50), (163,143), (165,71), (165,122), (166,39),
(166,154), (168,62), (168,131), (169,7), (169,186), (171,77), (171,116),
(175,83), (175,110), (178,49), (178,144), (179,36), (179,157), (180,53),
(180,140), (181,34), (181,159), (187,92), (187,101), (188,8), (188,185),
(189,60), (189,133), (191,50), (191,143), (192,81), (192,112)

Privat key k (untuk penerima) = 4


Private key ini adalah salah satu angka yang ada pada himpunan penyelesaian persamaan
di atas. Titik awal kurva P = (133,78) Dipilih secara random. Public key k.P, dihitung
dengan cara mengalikan private key k ke titik awal kurva P, k*P = 4*(133,78)
[133,78] +[133,78] =[112,192]
[112,192]+[112,192]=[163,143]

Jadi, Public Key k.P = (163,143)


Catatan : Perkalian dan perhitungan titik kurva menggunakan aturan perkalian,
penjumlahan, penggandaan, dan invers, Jadi perkaliannya tidak sama dengan perkalian
matriks.
Dari pre-proses di atas didapatkan beberapa informasi : Persamaan yang dipakai adalah :
y^2 = x^3+x+1
Bilangan prima p : 193
Private key : 4
Titik kurva Awal : (133,78)
Public Key k.P : (163,143)
Pesan yang akan di enkripsi : haripinter
7

a) Proses Enkripsi
Menentukan titik kkP sebagai titik pengenkripsi :
k*kP = 4*(163,143)
[163,143]+[163,143]=[1,179]
[1,179] +[1,179] =[128,170]
Titik kkP : (128,170)
Menentukan titik Awal proses dekripsi. (Sebenarnya ini adalah titik k.P yang sudah
dihitung sebelum) k*P = 4* (133,78)
[133,78] +[133,78] =[112,192]
[112,192]+[112,192]=[163,143]
Titik kP : (163,143)
Titik x dan y kP dikonversi ke karakter, selanjutkan karakter tersebut akan dikirim
sebagai header pada pesan terenkripsi.Karakter x, y, dan pesan akan dipisahkan oleh
karakter #. Sehingga format pesan yang nantinya akan dikirim adalah
X#Y#pesan_terenkripsi. Selanjutnya ambil titik absis kkP untuk di-xor-kan ke
pesan.128 -> 10000000
Konversi pesan ke integer sesuai format ASCII, kemudian jadikan biner. Selanjutnya
di xor dengan absis titik kdP. Setelah di xor, rangkai lagi menjadi pesan baru yang
terenkripsi:
h -> 104 -> 1101000 xor 10000000 => 232 (è)
a -> 97 -> 1100001 xor 10000000 => 225 (á)
r -> 114 -> 1110010 xor 10000000 => 242 (ò)
i -> 105 -> 1101001 xor 10000000 => 233 (é)
p -> 112 -> 1110000 xor 10000000 => 240 (ð)
i -> 105 -> 1101001 xor 10000000 => 233 (é)
n -> 110 -> 1101110 xor 10000000 => 238 (î)
t -> 116 -> 1110100 xor 10000000 => 244 (ô)
e -> 101 -> 1100101 xor 10000000 => 229 (å)
r -> 114 -> 1110010 xor 10000000 => 242 (ò)
Angka desimal pesan diatas kemudian dikembalikan menjadi karakter,
Pesan Baru terenkripsi : èáòéðéîôåò
8

Gabungkan karakter titik kP pada pesan.


Titik kP + Pesan terenkripsi : £#•#èáòéðéîôåò
Pada pesan tersebut titik X menjadi £ dan Y menjadi karakter yang tidak dikenal oleh
format ASCII.
b) Proses Deskripsi

Pesan terenkripsi : £#•#èáòéðéîôåò

Pisahkan header dan pesan asli. Kemudian ambil ke titik kP (163,143),Hitung titik kP
dengan k untuk mendapatkan titik-titik pesan

4*(163,143)

[163,143]+[163,143]=[1,179]

[1,179] +[1,179] =[128,170]

Titik kkP : (128,170)

Ambil titik absis kkP untuk di-xor-kan ke pesan terenkripsi.

128 -> 10000000

Ambil pesan perkarakter, jadikan biner, kemudian xor-kan ke kkP

è -> 232 -> 11101000 xor 10000000 => 104 (h)

á -> 225 -> 11100001 xor 10000000 => 97 (a)

ò -> 242 -> 11110010 xor 10000000 => 114 (r)

é -> 233 -> 11101001 xor 10000000 => 105 (i)

ð -> 240 -> 11110000 xor 10000000 => 112 (p)

é -> 233 -> 11101001 xor 10000000 => 105 (i)

î -> 238 -> 11101110 xor 10000000 => 110 (n)

ô -> 244 -> 11110100 xor 10000000 => 116 (t)

å -> 229 -> 11100101 xor 10000000 => 101 (e)

ò -> 242 -> 11110010 xor 10000000 => 114 (r)

Rangkai kembali menjadi pesan asli : haripinter


9

BAB III

METODOLOGI PENELITIAN

3.1 ECC Enkripsi dengan Elemen Waktu

Seperti yang telah dijelaskan dalam dasar teori, parameter elliptic curve adalah
p,a,b, dan G, dengan G adalah poin basis. Dalam ECC biasa, seluruh parameter ini telah
disepakati sebelumnya oleh kedua belah pihak. Untuk implementasi ini, nilai a, b, dan G
ditentukan oleh parameter batas waktu yang diberikan pengirim pesan. Adapun
implementasi fungsi adalah sebagai berikut :

public ECC(long start, long finish){


a = new
BigInteger(Long.toString(start));
b = new
BigInteger(Long.toString(finish));
p = new
BigInteger("62771017353866807638357894232
07666416083908700390324961279");
n = new
BigInteger("62771017353866807638357894231
76059013767194773182842284081");
k = 20; int m = 11;
G = new Point(new
BigInteger("188da80eb03090f67cbf20eb43a18
800f4ff0afd82ff1012",16),
new
BigInteger("07192b95ffc8da78631011ed6b24c
dd573f977a11e794811",16)); Gt =
getBasePoint(a, b, m); }

Dengan start adalah batas waktu awal dalam milidetik, dan finish adalah batas waktu akhir
dalam milidetik. Dari nilai start dan finish ini, dihitung poin Gt dengan fungsi :

public Point getBasePoint(BigInteger


a,
BigInteger b, int M){
BigInteger
x=BigInteger.ZERO,
y=BigInteger.ZERO;
boolean Found=true;
10

for(int i=1;i<=k-1;i++){
x =
BigInteger.valueOf((M*k+i));

BigInteger ry2 = ((x.pow(3)).add(a.multiply(x))).add(b);


try{
y = IntegerFunctions.ressol(ry2,p);
}
catch(Exception e)
{
Found=false; }
if (Found) break;
}
return new Point(x,y);
}

Setelah itu, pesan akan dienkripsi menggunakan poin basis yang didapat dari pertambahan
antara poin G time dan poin G dari tahap selanjutnya yang menggunakan ECC biasa.

private void EncryptT() {


for(int i=0;i<PlainBytes.length;i++){
Point Pm =
EncodeMessage(PlainBytes[i]);
BigInteger Km = GenerateBig(192);
Point C1 = ScalarMult(G,Km);
Point C2 =
AddPoint(Pm,AddPoint(Gt,ScalarMult(PubKey,Km)));
PointCipher.add(new ECCipher(C1,C2));
}

Selanjutnya, waktu start dan finish dienkripsikan menggunakan poin G biasa sebagai
basisnya. Hasil enkripsi ini kemudian digabungkan di bagian depan dengan pesan
terenkripsi sebelumnya.
11

3.2 ECC Dekripsi dengan Elemen Waktu

Pertama-tama, informasi mengenai jangka waktu pada cipherteks akan didekripsi


menggunakan algoritma ECC biasa dengan menggunakan kunci privat dan titik basis G
yang telah disepakati. Selanjutnya akan diambil waktu pada komputer saat itu
menggunakan fungsi Java System.currentTimeMillis(). Lalu dicek apakah waktu saat itu
berada dalam jangka waktu yang ditentukan. Bila tidak, sistem akan mengeluarkan error.
Bila ya, maka sistem akan menggenerate poin basis Gt menggunakan fungsi
getBasePoint().

private void Decrypt() { long timeNow =


System.currentTimeMillis(); byte[] TempPlain = new byte[4];
for(int i=0;i<8;i++){
Point Pm =
AddPoint((PointCipher.get(i).C2),NegatePo
int(ScalarMult((PointCipher.get(i).C1),Pr ivKey)));
TempPlain[i] =
((Pm.x.subtract(BigInteger.ONE)).divide(B
igInteger.valueOf(k))).byteValue();
if (i==3) {
date1 = byteToLong (TempPlain);
TempPlain = new byte[4];
}
}
date2 = byteToLong (TempPlain);

if (timeNow < Math.max(millis1,


millis2) && timeNow > Math.min(millis1,
millis2)) {
Gt = getBasePoint(date1, date2,
m);
DecryptT();
} else {
System.out.println("Time doesn't
match");
}
}
12

Selanjutnya poin basis Gt akan digunakan bersamaan dengan kunci privat dan poin basis
G untuk mendekripsi pesan.

private void DecryptT() {


byte[] TempPlain = new
byte[PointCipher.size()];
for(int
i=8;i<PointCipher.size();i++){
Point Pm =
AddPoint((PointCipher.get(i).C2),NegatePo
int(AddPoint(Gt,ScalarMult((PointCipher.g
et(i).C1),PrivKey))));
TempPlain[i] =
((Pm.x.subtract(BigInteger.ONE)).divide(B
igInteger.valueOf(k))).byteValue();
}

PlainBytes = TempPlain;
}

3.3 Pengujian Parameter

Plainteks: “Kriptografi IF 2015”


Batas waktu awal: 2015-05-11 10:00:00
Batas waktu akhir: 2015-05-11 11:00:00
Waktu pembukaan: 2015-05-11 12:00:00

Hasil Chippherteks :
f2b0259b88441ad643d05d85c60e01bfbe3e000658b76a3339303
556722023694681825663594121140048204685005730452544
56,2213520819121794381410290294369712279034492015532
990376728197966767842356121229719770804003042563823 0897235554617585.....

Hasil Dekripsi :
Time doesn't match
13

KESIMPULAN

Elliptic Curve Cryptography (ECC) adalah salah satu pendekatan algoritma


kriptografi kunci publik berdasarkan pada struktur aljabar dari kurva ellips pada daerah
finite. Beberapa pondasi matematika dari ECC adalah aritmatika modular, groups dan
finite field yang di dalamnya terdapat groups, order group an generator, subgroup, finite
field, dan The Discrete Logarithm Problem (DLP).

Kelebihan ECC diantaranya yaitu, masalah keamanan pada distribusi kunci dapat
lebih baik dan Masalah keamanan pada distribusi kunci dapat lebih baik. Sedangkan
kekurangan ECC diantaranya yaitu kecepatan yang lebih rendah bila dibandingkan dengan
algoritma simetris dan untuk tingkat keamanan sama, kunci yang digunakan lebih panjang
dibandingkan dengan algoritma simetris.
14

DAFTAR PUSTAKA

V. Miller, Use of elliptic curves in cryptography, CRYPTO 85, 1985.

Defiana Arnaldy, M.Si. Presentasi Kriptografi, Enkripsi dan Dekripsi. Jakarta : Teknik

Informatika UIN Syarif Hidayatullah Jakarta.

M. Rosing, Implementing Elliptic Curves Cryptography, Manning Publications Co.,


Greenwich, 1999.

http://library.binus.ac.id/eColls/eThesisdoc/Bab2HTML/2007200476MTIFBab2/body.html

http://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2014-2015/ECC%20(2015).pdf

Anda mungkin juga menyukai