Disusun Oleh :
AFIT DZULFIANA
A11.2013.07630
MAHARSI WISNU B
A11.2013.07873
MUHAMMAD HISYAM
A11.2013.07915
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
1980-1989
: Protokol
1990-1999
: Penyebaran algoritma
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
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
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)
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
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());
//pubKey.toString()
int zz=pubKey.toString().length();
System.out.println("Size of key"+zz+"and key is "+pubKey.toString());
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
BAB V
KESIMPULAN
Eliptic Curve Cryptography (ECC), yang muncul pada tahun 1985 oleh Neal
Koblitz
RSA
512
1024
2048
3072
7680
15360
ECC
112
160
224
256
382
512
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.