Anda di halaman 1dari 18

ALGORITMA ELIPTIC CURVE CRYPTOGRAPHY

Disusun Oleh :
AFIT DZULFIANA
A11.2013.07630
MAHARSI WISNU B
A11.2013.07873
MUHAMMAD HISYAM
A11.2013.07915

UNIVERSITAS DIAN NUSWANTORO (UDINUS) SEMARANG


2016
BAB I

SEJARAH
Menurut Dr. Alfred Menezes, Profesor Matematika di Universitas Waterloo
dan menuliskannya dalam Guide to Elliptic Curve Cryptography bersama Dr. Darrel
Harkerson dan Dr. Scott Vanstone, sejarah kriptografi kunci publik ini memililki
empat fase sejarah :

1975-1979

: Tahun-tahun awal muncul

1980-1989

: Protokol

1990-1999

: Penyebaran algoritma

2000-sekarang : Perkembangan baru


Fase pertama dalam sejarah ini adalah definisi dari konsep krisotgrafi kunci
public itu sendiri. Sebelum tahun 1970an, penggunaan mode kriptografi kunci
simetris lebih banyak digunakan, dengan ketentuan pihak-pihak yang terlibat dalam
komunikasi harus sertuju pada kunci rahasia yang sama, dan kemudian menggunakan
kunci tersebut untuk mengenkripsi atau mengotentikasi pertukaran mereka. Pada awal
1970an, mulai terbentuk sebuah ide baru. Salah satu pencetus ide tersebut adalah
Ralph Merkle. Pada musim gugur tahun 1974 ia dan salah seorang teman
mahasiswanya mencari topic untuk proyek keempatnya. Dan pada akhirnya
menetapkan topik proyeknya pada masalah kriptografi.
Seperti yang ia katakana, Saya datang ke kriptografi sebagai orang luar yang
memiliki kelebihan dan kekurangan. Keuntungannya adalah saya terikat dengan
skema sebelumnya. Kelemahannya adalah bahwa saya meiliki waktu yang sulit (red :
lama) untuk menjelaskan ke orang-orang apa yang sebenarnya saya maksudkan.
Pada awalnya, Merkle hanya mendapatkan sedikit dukungan untuk ide-ide dan
karayanya dalam kriptografi. Untungnya bukan hanya dia seorang yang memiliki
pandangan sama dalam hal ini. Suatu hari, seseorang berkata, Kau tahu, ada orang-

orang di Berkeley yang terdengar seperti Anda. Orang-orang tersebut ternyata Whit
Diffie dan Martin Hellman, yang nantinya akan segera berkolaborasi dengan Merkle.
Dalam jurnal yang ditulis Diffie dan Hellman pada tahun 1976, New Directions in
Cryptography menjadi awal konsep terciptanya kriptografi kunci publik.
Dua tipe dasar dalam skeman kunci publik muncul tahun 1970an, DiffieHellman key agreement pada 1975, dan skema key transport dan digital signing
diusulkan oleh Rivest, Shamir dan Adleman (RSA) pada tahun 1977. Namun pada
tahun 1980an, menyadari bahwa meskipun kuat terhadap masalah, fungsi kriptografi
dasarnya sendiri tidak memberikan keamanan yang memadai. Desain protokol yang
aman diperlukan, bersama dengan metode yang tepat dan sesuai dengan tujuan
keamananya.
Langkah awalnya mungkin dengan membayangkan musuh yagn paling kuat,
kemudian penetapan musuh sebagai tujuan atau serangkaian tujuan untuk
melemahkannya selemah mungkin. Protokol dianggap aman jika musuh yang kuat
tidak bisa mencapai tujuan pelemahannya. Model ini berkembang dan pada akhirnya
menjadi gagasan provable security, yang mengasumsikan komputasi tertentu dapat
digunakan untuk membuktikan bahwa protokol yang diusulkan memenuhi
persyaratan dalam definisi keamanan. Tidak sampai tahun 1990an protokol ini
sebenarnya sudah cukup efisien, namun perkembangan lain lain terjadi sebelum itu.
Paling mencolok adalah skema kunci public ElGamal yang muncul pada tahun 1984
untuk menyaingi RSA. Teknik ini didasarkan pada masalah logaritma diskrit. Begitu
juga Eliptic Curve Cryptography (ECC), yang muncul pada tahun 1985 oleh Neal
Koblitz and Victor S. Miller.

BAB II
KONSEP ECC
Kriptografi kurva eliptik merupakan algoritma kriptografi yang termasuk
dalam sistem kriptografi asimetris. Sistem ini mendasarkan keamanannya pada
permasalahan matematis pada kurva eliptik. Sistem ini menggunakan masalah
logaritma diskrit kurva eliptik dan grup kurva eliptik. Strukturnya digunakan sebagai
grup operasi matematis untuk melakukan enkripsi dan dekripsi. Kelebihan algoritma
ini adalah proses distribusi kunci pada media yang tidak aman, tanpa perlu
kerahasiaan. Karena kunci yangn dididtribusikan merupaakan kunci publik. Sehingga
jika kunci distribusi ini hilang atau diketahui orang lain, maka pesan sandi yang
dikirim akan tetap aman. Sedangkan kunci privatnya ridak didistribusikan dan tetap
disimpan.
Dibandingkan dengan algoritma asimetris lain, ECC memiliki beberapa
keuntungan dalam hal ukuran panjang kunci yang lebih pendek tetapi memiliki
tingkat keamanan yang sama. Sebagai perbandingan, 160 bit ECC memiliki tingkat
keamanan 3.8.1010 MIPS (Million Instruction Per Second) yang sama dengan 1024 bit
RSA yang memiliki tingkat keamanan 3.1012 MIPS. Keuntungan lain adalah
kecepatan yang lebih tinggi, konsumsi daya yang lebih rendah, dan adanya
pengehematan bandwith. Keuntungan ini sangat berguna pada aplikasi-aplikasi yang
memiliki keterbatasan pada kapasitas pemrosesan, keterbatasan bandwith, serta
ketersediaan sumber tenaga dan ruang.
Kriptografi kurva eliptik (ECC) menggunakan dua kunci, yaitu kunci publik
dan kunci privat. Kunci publik adalah sebuah titik pada kurva eliptik dan kunci
privatnya adalah sebuah angka acak. Kunci publik diperoleh dengan melakukan
operasi perkalian terhadap kunci privat dengan titik generator G paada kurva eliptik.
Titik generator G digunakan untuk memilih pertukaran kunci Diffie-Hellman.
Pendekatan untuk menghasilkan algoritma kriptografi kurva eliptik adalah dengan
menggunakan struktur matematika yang sangat unik. Struktur ini memungkinkan

pemrosesan titik yang memiliki dua buah titik dalam kurva eliptik dengan
menghasilkan titik lain yang ada pada kurva tersebut.
Kriptografi kurva eliptik (ECC) juga digunakan pada beberapa algoritma
pemfaktoran integer dalam kriptografi. Algoritma kunci public didasarkan pada
variasi perhitungan matematis yang terbilang susah untuk dipecahkan. Kunci rahasia
disimpan sedangkan kunci public disebarkan. Kunci public digunakan untuk
mengenkripsi pesan dimana hanya pembuat algoritma yang dapat memecahkannya.
Kunci privat menggunakan dua bilangan prima yang besar seperti pada RSA. Dua
bilangan prima yang besar dipilih secara acak untuk digunakan sebagai kunci privat
dan dipublikasikan sebagai kunci publik. Kurva eliptik dapat ditulis dengan
perhitungan matematis sebagai berikut :
y 2 = x 3 + ax + b

ECC memiliki memiliki panjang kunci 160 bit yang dipercaya mempunyai
tingkat keamanan yang setara dengan RSA 1024 bit. ECC menggunakan parameter
yang lebih kecil dibaningkan algoritma kriptografi konvensial. Kriptografi kurva
eliptik menghasilkan bilangan prima Zp atau menghasilkan batasan GF(2n), yang
merupakan sesuatu yang menarik, karena digunakan untuk membangun algoritma
kriptografi. ECC menyediakan kunci public yang lebih cepat dengan ukuran lebih
kecil.
Kurva eliptik yang digunakan dalam ECC didefinisikan menggunakan daua
tipe daerah terbatas, yaitu daerah karakteristik ganjil (Fp, dimana p>3 = bilangan
prima besar) dan daerah karakteristik dua (F2m). Kedua daerah tersebut dapat
ditunjukkan sebagai Fq, dimana q = p atau q = 2m. Elemen dari Fp adalah integer (0
x < p) dimana elemen tersebut dapat dikombinasikan menggunakan modul
aritmatik. Derajat dari bidang terbatas adalah banyaknya elemen yang ada dalam
bidang. Jika q adalah pangkat prima, maka hanya ada satu bidang terbatas dengan
derajat q. Bidang tersebut dilambangkan dengan Fq atau GF(q). Operasi pada bidang
terbatas Fp adalah :
1. Penjumlahan, jika a, b Fp, dimana a = b = r, dimana r adalah sisa pembagian
a + b dengan bilangan prima p, 0 1. Penjumlahan seperti ini disebut
penjumlahan modulo (mod p).
2. Perkalian, jika a, b Fp, maka a * b = s, dimana s adalah sisa pembagian a * b
dengan bilangan prima p, 0 1. Perkalian seperti ini disebut perkalian
modulo p (mod p).

BAB III

ALGORITMA DAN LANGKAH KERJA


Algoritma ECC (Eliptic Curve Cryptography) memiliki persamaan y 2
x3+ax+b (mod p) dimana a dan b (parameter kurva) jika diberikan persamaan 4a3
+ 27b2 0. Dalam pertukaran kunci dibutuhkan Generator(G) dimana panjang G
berhenti ketika mencapai point at infinity. G akan ditentukan oleh pihak itu
sendiri kemudian melakuikan perhitungan untuk 2G, 3G,,kG(point at infinity).
Untuk mencari koordinat 2G diberikan persamaan :
2

s=

3 xG + a
mod p
2 yG
2

x 2G =s 2 x G mod p
y 2 G=s ( x Gx 2 G ) y G mod p
Dengan persamaan tersebut, dapat diketahui nilai dari 2G(x2G, y2G). dengan
memahami R = P + Q , jadi 3G = G + 2G. kemudian pehitungan 3G dst
menggunakan persamaan :
s=

yP yQ
mod p
x P x Q

x R =s 2( x P + x Q ) mod p
y R =s ( x Px R ) y P
Algoritma ECDH (Eliptic Curve Diffie-Hellman) digunakan untuk melakukan
pertukaran kunci untuk melakukan otentifikasi atau otorisasi, yaitu melakukan
pengecekan pengguna atau user yang memiliki hak. Untuk menghindari user yang
tidak memiliki hak untuk mengakses, pertukaran kunci ini digunakan.
Misalkan terdapat 3 user (Alice, Bob, Eve). Alice dan Bob ingin melakukan
pertukaran kunci, namun Eve berada di antara jalur komunikasi Alice dan Bob.

Untuk menghindari Eve mengetahui pertukaran kunci tersebut, Alice dan Bob
melakukan perhitungan pemanggilan kunci algoritma ECDH.
Dimana Alice dan Bob menyetujui generator(G) bernilai (5,1). Dengan
persamaan ECC yaitu y2 x3+ax+b
Dengan nilai a = 2 ; b = 2. Kita tes apakah 4a3 + 27b2 0
4.23 + 27.22 0
4.8 + 27.4 0
140 0 ; benar
Kemudian mencari nilai p
y2 x3+ax+b (mod p) (x=5, y=1)
12 53+2.5+2 (mod p)
1 125+10+2 (mod p)
1 137 (mod 17)
p = 17

G=(5,1)
2G, 3G dst = ?
Mencari (x2G, y2G)
2

s=

3 xG + a
mod 17
2 yG

3.52 +2
s=
mod 17
2.1

s=

75+2
mod 17
2

s=

77
mod 17
2

s=77. 21 mod 17

modular inverse

s=9.9mod 17

s=13

x 2G =s22 x G mod p

y 2 G=s ( x Gx 2 G ) y G mod p

x 2G =1322.5 mod 17 y 2 G =13 (56 ) 1 mod17


x 2G =16910 mod 17 y 2 G =131 mod 17
x 2G 6 mod 17
G(5,1) ; 2G(6,3)

Mencari (x3G, y3G)

y 2 G 3 mod 17

s=

yP yQ
mod p
x P x Q

s=

y G y 2G
mod 17
x G x2 G

s=

13
mod 17
56

s 2 mod 17

x 3G =s2( xG + x 2 G ) mod p
2

x 3G =2 ( 5+ 6 ) mod 17
x 3G =4 (11 ) mod 17
x 3G 10 mod17

y 3 G=s ( x G x3 G ) y G mod 17
y 3 G=2 ( 510 )1 mod 17
y 3 G=2 (5 )1 mod 17
y 3 G 6 mod 17

G(5,1)

8G(13,7)

15G(3,16)

2G(6,3)

9G(7,6)

16G(10,11)

3G(10,3)

10G(7,11)

17G(6,14)

4G(3,1)

11G(13,10)

18G(5,16)

5G(9,16)

12G(0,11)

19G(Point at Infinity)

6G(16,13)

13G(16,4)

7G(0,6)

14G(9,1)

Dengan begini telah ditentukan


G(5,1)

n=19

Kemudian pertukaran kunci dapat dilakukan oleh Alice dan Bob, dimana Eve
tidak bisa mengetahui kunci tersebut.
Alice memilih sebuah angka bernilai b | 1 b n-1
Kemudian Alice menghitung B | B = bG
Bob memilih sebuah angka bernilai a | 1 a n-1
Kemudian Bob menghitung A | A = aG
Hasil perhitungan tersebut ditukarkan oleh kedua belah pihak, dimana Alice
mendapatkan A(xa,ya) dan Bob mendapatkan B(xb,yb).
Masing-masing pihak mengecek A dan B generator ke-k.
Lalu Alice melakukan perhitungan P | P = baG.
Dan Bob melakukan perhitungan P | P = abG.
Alice memilih b = 3 dan Bob memilih a = 9

Kemudian masing-masing menghitung B dan A.


Alice mendapatkan 3G dan Bob mendapatkan 9G, dimana 3G(10,6) dan 9G(7,6).
Lalu Alice bertukar dengan Bob, kemudian menghitung P.
Alice mendapatkan 3.9G = 27G = 8G(13,7)
Bob mendapatkan 9.3G = 27G = 8G(13,7)
Kunci yang didapatkan adalah (13,7), dengan begitu Eve yang hanya mengetahui
nilai G dan n tidak dapat melakukan perhitungan untuk mencari kunci tersebut.

BAB IV
IMPLEMENTASI
Source Code :
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.Provider;
import java.security.PublicKey;

import java.security.Security;
import java.security.spec.ECGenParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
public class TestECC {
public static void main(String args[]) {
try {
Provider p[] = Security.getProviders();
Provider p1 = Security.getProvider("SunEC");
System.out.println(p1.getName());
KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "SunEC");
//kpg.initialize(128);
System.out.println(kpg.getAlgorithm());
//Cipher cipher = Cipher.getInstance("EC", "SunEC");
Cipher cipher = Cipher.getInstance("DES");
System.out.println("provider=" + cipher.getProvider());

ECGenParameterSpec ecsp = new ECGenParameterSpec("sect163r2");


//sect163r2
kpg.initialize(256); //ecsp
KeyPair kyp = kpg.genKeyPair();

//PublicKey pubKey = kyp


PublicKey pubKey = kyp.getPublic();

//pubKey.toString()
int zz=pubKey.toString().length();
System.out.println("Size of key"+zz+"and key is "+pubKey.toString());

PrivateKey privKey = kyp.getPrivate();


int pp=pubKey.toString().length();
System.out.println("Size of key"+pp+"and key is "+privKey.toString());
//System.out.println(cipher.getProvider());
System.out.println("/n/n");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
//cipher.init(Cipher.ENCRYPT_MODE, pubKey);

String cleartextFile = "cleartext.txt";


String ciphertextFile = "ciphertextECIES.txt";

byte[] block = new byte[64];


FileInputStream fis = new FileInputStream(cleartextFile);
FileOutputStream fos = new FileOutputStream(ciphertextFile);
CipherOutputStream cos = new CipherOutputStream(fos, cipher);

int i;
while ((i = fis.read(block)) != -1) {
cos.write(block, 0, i);
}
cos.close();

// Decrypt
String cleartextAgainFile = "cleartextAgainECIES.txt";
cipher.init(Cipher.DECRYPT_MODE, privKey, ecsp);
fis = new FileInputStream(ciphertextFile);
CipherInputStream cis = new CipherInputStream(fis, cipher);
fos = new FileOutputStream(cleartextAgainFile);
while ((i = cis.read(block)) != -1) {
fos.write(block, 0, i);
}
fos.close();
}
catch (Exception e) { System.out.print(e); }
}
}

Output :
SunEC
EC
provider=SunJCE version 1.7
Size of key294and key is Sun EC public key, 256 bits
public x coord:
22706834763184843588157755337528833435717889696599052388608765496159
3172855
public y coord:
851965883385953699434062023741140306201110028257408772804720900892614
82614618

parameters: secp256r1 [NIST P-256, X9.62 prime256v1]


(1.2.840.10045.3.1.7)
Size of key294and key is Sun EC private key, 256 bits
private value:
39704198758063216465601739646338735228899396677661675984018299773821
397784770
parameters: secp256r1 [NIST P-256, X9.62 prime256v1]
(1.2.840.10045.3.1.7)
/n/n

BAB V
KESIMPULAN
Eliptic Curve Cryptography (ECC), yang muncul pada tahun 1985 oleh Neal
Koblitz

and Victor S. Miller. Sistem ini mendasarkan keamanannya pada

permasalahan matematis pada kurva eliptik. Sistem ini menggunakan masalah


logaritma diskrit kurva eliptik dan grup kurva eliptik. Strukturnya digunakan sebagai
grup operasi matematis untuk melakukan enkripsi dan dekripsi. Kelebihan algoritma
ini adalah proses distribusi kunci pada media yang tidak aman, tanpa perlu
kerahasiaan. Karena kunci yangn dididtribusikan merupaakan kunci publik. Sehingga
jika kunci distribusi ini hilang atau diketahui orang lain, maka pesan sandi yang
dikirim akan tetap aman. Sedangkan kunci privatnya ridak didistribusikan dan tetap
disimpan.

Dibandingkan dengan algoritma asimetris lain, ECC memiliki beberapa


keuntungan dalam hal ukuran panjang kunci yang lebih pendek tetapi memiliki
tingkat keamanan yang sama, dapat dilihat di table berikut
Algoritma Simetris
56
80
112
128
192
256

RSA
512
1024
2048
3072
7680
15360

ECC
112
160
224
256
382
512

Sebagai perbandingan, 160 bit ECC memiliki tingkat keamanan 3.8.10 10


MIPS (Million Instruction Per Second) yang sama dengan 1024 bit RSA yang
memiliki tingkat keamanan 3.1012 MIPS. Keuntungan lain adalah kecepatan yang
lebih tinggi, konsumsi daya yang lebih rendah, dan adanya pengehematan bandwith.
Keuntungan ini sangat berguna pada aplikasi-aplikasi yang memiliki keterbatasan
pada kapasitas pemrosesan, keterbatasan bandwith, serta ketersediaan sumber tenaga
dan ruang. Algoritma ECC (Eliptic Curve Cryptography) memiliki persamaan y 2
x3+ax+b (mod p) dimana a dan b (parameter kurva) jika diberikan persamaan 4a 3 +
27b2 0. Dalam pertukaran kunci dibutuhkan Generator(G) dimana panjang G
berhenti ketika mencapai point at infinity. G akan ditentukan oleh pihak itu sendiri
kemudian melakuikan perhitungan untuk 2G, 3G,,kG(point at infinity).

DAFTAR PUSTAKA
[1] Putra, Eko. 2013. Implementasi Kriptografi Kurva Eliptik Dengan Algoritma
Elgamal Dan Metode Pembangkitan Bilangan Prima Rabin-Miller Untuk
Pengamanan File Teks
[2] Br Sembiring, Metrilitna. Elliptic Curve Cryptography (Ecc) Pada Proses
Pertukaran Kunci Publik Diffie-Hellman
[3] Juhana, Nana, 2005, Implementasi Elliptic Curves Cryptosystem (ECC) Pada
Proses Pertukaran Kunci Diffie-Hellman dan Skema Enkripsi ElGamal, Institut
Teknologi Bandung, Bandung.

Anda mungkin juga menyukai