2.1 Pengenalan Kriptografi - Otentikasi Pesan Menggunakan Elliptical Curve Digital Signature Algorithm
BAB 2 LANDASAN TEORI Pada tinjauan pustaka ini akan dibahas tentang konsep dasar dan teori-teori yang
2.1 Pengenalan Kriptografi
Kriptografi adalah sebuah teknik pengamanan data untuk menjamin kerahasian data, selain itu pengertian kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan keamanan informasi seperti kerahasian data, keabsahan data, integritas data, autentikasi data (Hankerson, et al. 2004).
Menurut (Rinaldi, 2006) kriptrografi mempunyai tujuan sebagai berikut : A.
Kerahasiaan Data (confidentiality) Ancaman atau serangan terhadap kerahasiaan data ini biasanya dilakukan dengan menerobos hak akses, penyadapan data dan penipuan. Di dalam kriptografi layanan ini di realisasikan dengan menyandikan pesan menjadi cipherteks. Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data asli (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang akan dikirimkan oleh pengirim (sender) kepada penerima (receiver).
Setelah sampai pada si penerima ciphertext tersebut diubah lagi ke bentuk asli (plaintext).
B.
Nirpeyangkalan (non-repudiation) layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengiriman pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan. Aspek ini sangat berguna dalam melakukan sebuah transaksi. Sebagai contoh, seseorang yang akan melakukan transaksi jual beli online dan dalam tahap pertama si pembeli mengirimkan sebuah email dalam orderan maka si pembeli tidak dapat menyangkal bahwa dia telah mengirim email.
C.
Integritas Data (data integrity) Layanan yang menjamin bahwa data masih dalam keadaan asli atau belum pernah menggunakan tanda tangan digital (digital signature). Data yang dikirim dengan tanda tangan digital menyiratkan bahwa data itu asli. Aspek ini menjamin bahwa data tidak dapat diubah tanpa izin dari yang berhak.
D.
Autentikasi Data (authentication) Layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication). Data yang didapat oleh suatu pihak oleh pihak lain harus di lakukan identifikasi agar memastikan keaslian data tersebut. Identifikasi terhadap data tersebut dapat berupa tanggal pembuatan data, isi informasi, waktu kirim dan hal-hal lainnya yang berhubungan dengan data tersebut.
2.2 Enkripsi dan Dekripsi
Enkripsi (Encryption), adalah proses yang dilakukan untuk mengubah pesan yang tidak disandikan (plaintext) ke dalam bentuk yang tidak dapat dibaca (ciphertext), dekripsi (Decryption) adalah proses yang dilakukan untuk mengubah pesan yang tidak dapat dibaca kedalam bentuk yang dapat dibaca dan dimengerti. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi.(Rinaldi, 2006)
Dalam suatu sistem dimana terdapat algoritma kriptografi, ditambah seluruh kemungkinan plaintext, ciphertext dan kunci-kuncinya disebut kriptosistem (cryptosystem atau cryptographic system). Cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya.
Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan menjadi kriptografi kunci simetri (Symmetric-key Cryptography) dan kriptografi kunci asimetri (Asymmetric-key Cryptography). Proses enkripsi dan dekripsi dapat dilihat pada gambar 2.1. (Rinaldi, 2006)
Gambar 2.1 Proses Enkripsi dan DekripsiCryptographic system atau cryptosystem adalah suatu fasilitas untuk
mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, parameter yang menetukan transformasi pencipheran tertentu di sebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kuci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan. Secara umum proses operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut :
EK (M) = C (Proses Enkripsi) DK (C) = M (Proses Dekripsi)
Pada pesan M kita mengekripsikan menajadi pesan C dengan menggunakan kunci K, sedangkan pada proses dekripsi kita menggunakan kunci K dan melakukan pada pesan C yang sudah di enkripsi dan menghasilkan pesan awal yaitu M.
2.3 Algoritma Kriptografi
2.3.1 Algoritma Simetrik (symmetric algorithms)
Algoritma simetrik adalah algoritma kriptografi berdasarkan kuncinya dibedakan menjadi dua yaitu algoritma aliran (Stream Cipher) dan algoritma blok (Block
Cipher ). Pada algoritma Stream Cipher, proses penyandiannya berorientasi pada
satu bit atau satu byte data. Sedangkan pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data. Contoh algoritma simetris yang terkenal adalah DES (Data Encryption Standard) (Silviana, 2013). Proses algoritma simetrik dapat dilihat pada gambar 2.2.
Gambar 2.2 Proses Algoritma SimetrikAlgoritma ini menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Dalam system kriptografi kunci simetrik, kunci yang digunakan untuk proses enkripsi dan dekripsi pada prinsipnya identik, tetapi satu buah kunci dapat diturunkan dari kunci yang lainnya. Kunci
- – kunci ini harus dirahasiakan. Oleh sebab itu sistem ini sering disebut sebagai secret key cipher system.
2.3.2 Algoritma Asimetrik (Asymmetric Algortihms)
Algortima kriptografi asimetrik adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Algoritma ini sering juga disebut algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat di ketahui oleh setiap orang, tapi kunci dekripsi hanya di ketahui oleh orang yang berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key). Contoh algoritma terkenal menggunakan kunci asimetrik adalah ECC dan RSA. Proses algoritma asimetrik dapat dilihat pada gambar 2.3. Syarat-syarat yang harus di penuhi oleh algoritma public-key yaitu : 1.
Mudah secara komputasi bagi suatu pihak B untuk mengkrontuksi sepasang kunci asimetrik (kunci publik KU, kunci pribadi KR).
2. Mudah secara komputasi bagi pengirim A, dengan memiliki kunci publik B dan data yang ingin dienkripsi, M, untuk menghasilkan ciphertext (C).
3. Mudah secara komputasi bagi penerima B untuk mendekripsi ciphertext yang dihasilkan menggunakan kunci pribadinya untuk mengembalikan data asli.
4. Tidak bisa secara komputasi bagi pihak ketiga untuk memperoleh kunci pribadi KRb hanya dengan mengetahui kunci publik KUb.
5. Tidak bisa secara komputasi bagi pihak ketiga untuk mengembalikan data asli M hanya dengan mengetahui kunci publik KUb dan ciphertext C.
6. Fungsi enkripsi dan dekripsi bisa diterapkan dengan urutan yang dibalik.
Kegunaan persyaratan yang keenam adalah untuk penerapan tanda tangan digital (digital signature) yang digunakan memecahkan isu otentikasi dalam Proses enkripsi publik key sederhana melibatkan empat tahap berikut : 1. Setiap user didalam jaringan membuat sepasang kunci untuk digunakan sebagai kunci enkripsi dan dekripsi dari pesan yang akan diterima.
2. User kemudian mempublikasikan kunci enkripsinya dengan menempatkan kunci publiknya ke tempat umum. Pasangan kunci yang lain tetap dijaga kerahasiaannya.
3. Jika user A ingin mengirimkan data ke user B, ia akan mengenkripsikan data dengan menggunakan kunci publik user B.
4. Pada saat user B mendekripsikan data dari user A, ia akan menggunakan kunci pribadinya sendiri. Tidak ada pihak lain yang bisa mendekripsikan data itu karena hanya B sendiri yang mengetahui kunci pribadi B.
Gambar 2.3 Proses Algoritma Asimetrik2.3.3 Perbandingan Algoritma Simetrik dengan Asimetrik
Algoritma simetrik dan asimetrik sama-sama mempunyai kelebihan dan kekurangan msaing-masing.
Kelebihan kriptografi kunci simetrik : 1.
Algoritma kriptografi simetrik di rancang sehingga proses enkripsi dan dekripsi membutuhkan waktu yang singkat.
2. Ukuran kunci simetrik relatif pendek. Algoritma simetrik dapat digunakan membangkitkan bilangan acak.
3. Algoritma kunci simetrik dapat disusun untuk menghasilkan cipher yang lebih kuat.
4. Otentikasi pengiriman data langsung diketahui dari ciphertext yang diterima, Kekurangan kriptografi kunci simetrik : 1.
Kunci simetrik harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
2. Kunci harus sering diubah, mungkin setiap komunikasi.
Kelebihan kriptografi kunci asimetrik : 1.
Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi. Tidak ada kebutuhan untuk mengirim kunci privat sebagaimana kriptografi kunci simetrik.
2. Pasangan kunci public tidak perlu diubah, bahkan dalam periode waktu yang panjang.
3. Dapat digunakan dalam pengiriman kunci simetrik.
4. Beberapa algoritma kunci publik dapat digunakan untuk member tanda tangan digital pada data.
Kekurangan kriptografi kunci asimetrik : 1.
Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem kriptografi simetrik, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar.
2. Ukuran ciphertext lebih besar dari plaintext.
3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetrik.
4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang maka ciphertext tidak memberikan informasi mengenai otentikasi pengirim.
2.4 Serangan Pada Kriptografi
Setiap penyerangan dalam kriptografi seorang kriptanalis berusaha untuk menemukan kunci atau menemukan plaintext dari ciphertext dengan asumsi kriptanalis mengetahui algoritma kriptografi yang digunakan. Menurut prinsip (Silviana, 2013).
Jenis-jenis serangan dalam kriptografi berdasarkan keterlibatan penyerang dalam komunikasi :
1. Serangan pasif (passive attack) Penyerang tidak terlibat komunikasi langsung dengan pengirim dan penerima dan hanya melakukan penyadapan untuk memperoleh data atau informasi sebanyak-banyaknya.
2. Serangan aktif (active attack) Penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan dirinya dan penyerang mengubah aliran pesan seperti :
1. Menghapus sebagian ciphertext 2.
Mengubah ciphertext 3. Menyisipkan ciphertext palsu 4. Me-replay pesan lama
Jenis-jenis serangan dalam kriptografi berdasarkan teknik yang digunakan untuk menemukan kunci :
1. Exhaustive attack
Penyerang menggunakan cara untuk menemukan kunci dengan mencoba semua kemungkinan kunci, pasti berhasil menemukan kunci jika ada waktu yang cukup.
2. Analytical attack
Penyerang menggunakan cara dengan menganalisis kelemahan algoritma kriptografi untuk mengurangi kemungkinan kunci yang tidak mungkin ada dengan cara memecahkan persamaan-persamaan matematika. Metode ini biasanya lebih cepat menemukan kunci dibandingkan dengan exhaustive attack. Sebuah algoritma kriptografi dikatakan aman bila memenuhi tiga kriteria berikut :
1. Persamaan matematis yang menggambarkan operasi algoritma kriptografi analitik.
2. Biaya untuk memecahkan ciphertext melampui nilai informasi yang terkandung di dalam ciphertext tersebut.
3. Waktu yang diperlukan untuk memcahkan ciphertext melampaui lamanya waktu informasi tersebut harus dijaga kerahasiaannya.
2.5 Tanda Tangan Digital
Tanda tangan digital atau Digital Signature merupakan suatu tanda tangan (penanda) yang dibubuhkan pada data digital. Tanda tangan digital bukan merupakan hasil scan atau input tanda tangan melalui interface tertentu. Tanda tangan digital adalah suatu nilai kriptografis yang bergantung pada isi data itu sendiri serta kunci yang digunakan untuk membangkitkan nilai kriptografisnya.
Sehingga nilai setiap tanda tangan digital dapat selalu berbeda tergantung data yang ditanda tangani. Dengan tandatangan digital maka integritas data dapat dijamin, disamping itu juga digunakan untuk membuktikan asal pesan (keabsahan pengirim), dan nir penyangkalan (Silviana, 2013).
2.5.1 Sifat umum dari tanda tangan digital
Beberapa sifat umum dari tanda tangan digital adalah sebagai berikut : 1.
Otentik (authenticity), tak bisa/sulit ditulis/ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah menandatanganinya.
2. Sah (integrity) untuk dokumen (pesan) itu saja atau salinannya yang sama persis. Tanda tangan itu tidak bisa dipindahkan ke dokumen lainnya, meskipun dokumen lain itu hanya berbeda sedikit. Ini juga berarti bahwa jika dokumen itu diubah, tanda tangan digital dari pesan tersebut tidak lagi sah.
3. Nirpenyangkalan (Non Repudiation), non repudiation ini timbul dari (asymmetric encryption). Enkripsi asimetris ini melibatkan keberadaan dari kunci prifat dan kunci public. Suatu pesan yang telah dienkripsi dengan menggunakan kunci prifat maka ia hanya dapat dibuka/dekripsi dengan menggunakan kunci public dari pengirim. Jadi apabila terdapat suatu pesan yang telah dienkripsi oleh pengirim dengan menggunakan kunci prifatnya maka ia tidak dapat menyangkal keberadaan pesan tersebut karena terbukti bahwa pesan tersebut dapat didekripsi dengan kunci publik pengirim. Keutuhan dari pesan tersebut dapat dilihat dari keberadaan hash function dari pesan tersebut, dengan catatan bahwa data yang telah di-sign akan dimasukkan kedalam digital envelope.
4. Dapat diperiksa dengan mudah, termasuk oleh pihak-pihak yang belum pernah bertatap muka langsung dengan penandatangan.
2.5.2 Penandatanganan Pesan
Menandatangani pesan dapat dilakukan dengan salah satu dari dua cara, yaitu : 1.
Enkripsi pesan Mengenkripsi pesan dengan sendirinya juga menyediakan ukuran otentikasi.
Pesan yang terenkripsi juga sudah menyatakan bahwa pesan tersebut telah ditandatangani.
2. Tanda tangan digital dengan fungsi hash
Tanda tangan digital dengan menggunakan fungsi hash. Pengirim pesan mula- mula menghitung message digest dari pesan. Message digest diperoleh dengan mentransformasikan pesan dengan menggunakan fungsi hash 1 arah. Selanjutnya message digest dienkripsi dengan algoritma kriptografi kunci- publik dan menggunakan kunci privat pengirim. Hasil enkripsi inilah yang disebut dengan tanda tangan digital. Selanjutnya tandatangan digital dilekatkan dengan ke pesan dengan cara menyambung (append) lalu dikirim melalui saluran komunikasi. Kemudian di tempat penerima, tandatangan digital dibuktikan keotentikannya dengan melakukan verifikasi pesan, yaitu dengan 1. Tandatangan digital didekripsi dengan menggunakan kunci public pengirim pesan yang menghasilkan message digest (MD) semula.
2. Penerima pesan mengubah pesan menjadi message digest (MD’) menggunakan fungsi hash satu arah yang sama dengan fungsi hash yang digunakan pengirim.
3. Jika MD’ = MD, maka pesan dan tandatangan yang diterima memang benar berasal dari pengirim pesan.
2.5.3 Skenario Tanda Tangan Digital
Tanda tangan digital didalam kriptografi mempunyai skenario atau proses penandatanganan. Misalnya Alice ingin mengirim document bertandatangan secara digital pada Bob. Alice terlebih dahulu membangkitkan sepasang kunci asimetrik miliknya, yaitu kunci privat ( ) dan kunci public ( ). Kemudian Alice menandatangani dokumen M dengan memanggil algoritma sign sebagai berikut: Untuk menghasilkan tandatangan, alice kemudian mengirim (M, ) kepada Bob. Bob pada akhirnya memanggil algoritma verify sebagai berikut: Untuk memverifikasi tandatangan, bob menerima pasangan (M, ) bila nilai terima adalah true (benar).
2.6 Fungsi Hash
Fungsi hash H adalah transformasi yang mengambil input dengan ukuran m dan mengembalikan sebuah string berukuran tetap yang disebut sebagai nilai hash h
(di mana, h = H(m)). Fungsi hash sederhana ini memiliki berbagai jenis kegunaan komputasi, tetapi ketika digunakan untuk masalah kriptografi, fungsi hash selalu ditambahkan dengan sejumlah properti tambahan (Liao & Shen 2006). Yang dibutuhkan untuk fungsi kriptografi hash, yaitu: 1.
Input dengan panjang sembarang Hasilnya mempunyai keluaran dengan panjang yang fixed 3. H(x) umumnya mudah dikalkulasi untuk sembarang nilai x 4. H(x) adalah satu arah 5. H(x) tidak pernah bermasalah dengan yang lain
Fungsi hash H merupakan fungsi satu-arah sebab sulit untuk dibalikkan yang berarti untuk nilai fungsi hash h, kita sulit menemukan nilai input x yang memenuhi persamaan H(x) = h. Nilai dari fungsi hash menyatakan sebuah pesan atau dokumen yang lebih panjang yang berasal dari proses komputasi. Hal ini menarik sebab dengan fungsi hash, kita dapat membuat sebuah digital fingerprint untuk sebuah dokumen. Contoh yang paling terkenal dari fungsi hash adalah MD2, MD5 dan SHA.
Mungkin penggunaan yang umum dari fungsi kriptografi hash adalah pembuatan digital signatures. Karena fungsi hash umumnya lebih cepat daripada algoritma digital signature lainnya, fungsi hash lebih sering digunakan untuk mendapatkan nilai fungsi hash dengan mengkalkulasikan signature yang menghasilkan sebuah nilai hash yang lebih kecil daripada dokumen itu sendiri. Selain itu, publik dapat memberikan sebuah saran atau pendapat tanpa membeberkan isi dari pendapat yang terdapat di dalamnya. Cara ini digunakan dalam memberikan tanggal pada sebuah dokumen dimana dengan menggunakan fungsi hash, setiap orang dapat memberikan tanggal pada dokumen tanpa memperlihatkan isi dari dokumennya pada saat proses pemberian tanggal.
Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data. Umumnya digunakan untuk keperluan autentikasi dan integritas data. Fungsi hash adalah fungsi yang secara efisien mengubah string input dengan panjang berhingga menjadi string output dengan panjang tetap yang disebut nilai hash. Sifat-sifat fungsi hash kriptografi : 1.
Preimage resistant
Bila diketahui nilai hash h maka sulit (secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
2. Second Preimage resistant
yang menyebabkan hash(m )=hash(m )
1
2 3.
Collision-resistant
Sulit mencari dua input berbeda m
1 dan m 2 yang menyebabkan hash(m 1 ) = hash(m )
2 Beberapa contoh algoritma fungsi hash kriptografi yaitu MD4, MD5, SHA-0, SHA-1, SHA-256, SHA-512.
2.7 DSA
DSA dikembangkan dari algoritma ElGamal. DSA tidak dapat digunakan untuk enkripsi tetapi di spesifikasikan khusus untuk tanda tangan digital. Pada DSA, algoritma signature dan verifikasi berbeda. DSA menggunakan dua buah kunci, yaitu kunci publik dan kunci privat. Pembentukan tanda tangan menggunakan kunci rahasia privat, sedangkan verifikasi tanda tangan menggunakan kunci publik pengirim.
DSA menggunakan fungi hash SHA (Secure Hash Algorithm) untuk mengubah pesan menjadi message digest yang berukuran 160 bit. Tingkat keamanan DSA bergantung kepada dua masalah logaritma yang jauh akan tetapi saling berkaitan. Pertama adalah masalah logaritma di Zp dimana metode index kalkulus yang kuat diterapkan. Yang kedua adalah masalah logaritma pada cyclic
subgroup
pada urutan q, dimana metode berjalan pada waktu yang “square-root” (Wizanajani, 2013). Mekanisme tanda tangan menggunakan sebuah fungsi hash h: (0,1)* » Zq untuk sebuah integer q. Pembuatan kunci untuk algoritma DSA sebagai berikut :
159 160 1.
< q < 2 Ambil sebuah angka prima q (160-bit) dimana 2
2. Ambil t dimana 0 ≤ t ≤ 8
511 + 64t 512 + 64t 3.
< q < 2 , dengan tambahan Ambil bilangan prima p dimana 2 bahwa q dapat dibagi oleh (p-1)
4. Pilih sebuah generator α dari uniqe cyclic group berdasar urutan q di Zp* 5.
Ambil bilangan integer acak dimana 1 ≤ a ≤ q-1
a
Hitung y = α K unci publik mengandung p, q, α, y, dan kunci privat adalah a.
2.8 Elgamal
Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk tanda tangan digital atau digital signature. Namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. ElGaMal digunakan dalam perangkat lunak yang dikembangkan oleh GNU, program PGP, dan pada program keamanan jaringan lainnya. Keamanan algoritma ini terletak pada sulitnya menghitung algoritma diskrit. Masalah algoritma diskrit adalah, jika p adalah bilangan prima dan g dan y adalah sembarang bilangan bulat. Carilah x sedemikian sehingga gx ≡ y (mod p). (Rinaldi, 2006). Besaran - besaran yang digunakann dalam algoritma ElGamal adalah :
1. Bilangan Prima p (Publik)
2. Bilangan acak, g (g<p) (Publik)
3. Bilangan acak,x (x<p-3) (Privat) 4. y = gx mod p (Publik) 5. m (Plainteks) (Privat) 6. a dan b (Chiperteks) (Publik)
Prosedur Membuat Pasangan Kunci : 1.
Pilih sembarang bilangan prima p.
2. Pilih dua buah bilangan acak, g dan x, dengan syarat g < p dan x < p.
x 3. mod p.
Hitung y = g
4. Kunci publik adalah y, kunci rahasia adalah x. Nilai g dan p tidak dirahasiakan dan dapat diumumkan kepada anggota kelompok.
Enkripsi :
Plainteks disusun menjadi blok-blok m , …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai p
- – 1.
2. Pilih bilangan acak k, yang dalam hal ini 0 k p – 1, sedemikian sehingga k relatif prima dengan p
- – 1.
3. Setiap blok m dienkripsi dengan rumus :
k a = g mod p k
b = y m mod p
Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteksnya.
Dekripsi :
Untuk mendekripsi a dan b digunakan kunci rahasia, x, dan plainteks m diperoleh kembali dengan persamaan :
x
m = b/a mod pkarena :
x kx
a g (mod p)
maka :
x k x xk xk
b /a y m /a g m /g m (mod p)
yang berarti bahwa plainteks dapat ditemukan kembali dari pasangan cipherteks a dan b.
2.9 ECC (Elliptical Curve Cryptography)
Pendekatan yang dilakukan untuk menghasilkan algoritma Elliptic Curve
Cryptography adalah dengan meggunakan struktur matematika yang sangat unik
yang memungkinkan pemrosesan titik dengan memiliki dua buah titik dalam sebuah kurva eliptik dan menghasilkan sebuah titik lain yang ada pada kurva tersebut. Struktur yang unik ini memberikan keuntungan dalam kriptografi dikarenakan kesulitan untuk menemukan 2 buah titik yang menentukan sebuah titik tertentu tersebut tidak dapat ditemukan dengan mudah. Tingkat kesulitan untuk menemukan 2 buah titik termasuk dalam golongan yang rumit sama seperti algoritma RSA yang telah banyak diimplementasikan. Untuk memecahkan Elliptic Curve Cryptography sendiri dibutuhkan perhitungan matematis yang sangat tinggi. Elliptic Curve Cryptography terdiri dari beberapa operasi basic dan juga aturan yang mendefinisikan penggunaan dari operasi operasi basic seeperti penambahan, pengurangan, perkalian dan perpangkatan yang didefinisikan sesuai dengan kurvakurva yang ada. Berikut adalah operasi matematika yang digunakan pada Elliptical Curve Cryptography didefinisikan dengan persamaan :
2
3
y = x + ax + b
dengan
3
2 4a + 27b ≠ 0
Setiap perubahan nilai dari a dan b akan menghasilkan elliptic curve yang berbeda (Hankerson, et al. 2004).
2.9.1 Jenis-jenis Elliptic Curve Cryptography
Elliptical Curve Cryptography mempunyai beberapa jenis-jenis algoritma yaitu : 1.
ECDSA (Elliptical Curve Digital Siganature Algortihm) Algoritma penandatanganan pesan menggunakan ECC yang disebutkan sebagai ECDSA adalah salah satu variasi dari Digital Signature Algorithm yang beroperasi dengan kelompok kurva elliptic sebagai basis perhitungan dari proses penandatanganan. Agar dapat menyamakan suatu tandatangan digital dari sebuah pesan yang dikirim oleh dua orang, maka kedua orang tersebut harus memiliki kurva elliptic yang sama.
2. Elliptical Curve Diffie Hellman
ECDH-Elliptic Curve Diffie Hellman adalah sebuah protokol perjanjian kunci yang memungkinkan dua pihak pengirim dan penerima, yang pada awalnya
- – masing-masing memiliki kurva eliptik sepasang kunci publik-swasta masing masing, dan mengirimkan sebuah kunci rahasia bersama melalui saluran yang tidak aman. Berbagi rahasia ini mungkin langsung digunakan sebagai tombol, atau lebih baik lagi, untuk mendapatkan kunci lain yang kemudian dapat digunakan untuk mengenkripsi komunikasi berikutnya menggunakan cipher
2.9.2 Hal
–hal yang perlu diperhatikan pada Elliptic Curve Cryptography
Pada Elliptical Curve Cryptography ini ada hal-hal yang harus diperhatikan untuk menyandikan pesan, yaitu :
1. Domain Parameter Kurva Ellips yang digunakan dalam ECC Pembuatan parameter domain tidak dilakukan oleh masing-masing pengirim atau penerima karena ini melibatkan menghitung jumlah titik pada kurva yang memakan waktu dan sulit untuk diterapkan. Akibatnya dipilih beberapa standar parameter domain kurva eliptik untuk beberapa ukuran.
2. Panjang kunci Skema ECC terkuat yang sudah berhasil diretas sampai saat ini memiliki sebuah kunci 112-bit untuk kasus dengan penggunaan umum dan sebuah kunci 109-bit untuk kasus dengan operasi biner. Untuk kasus pengenkripsian secara biasa rusak pada bulan Juli 2009 dengan menggunakan sekelompok lebih dari 200 PlayStation 3 game konsole dan bisa selesai dalam 3,5 bulan menggunakan cluster saat menjalankan terus menerus .Untuk kasus dengan pengoperasian biner, itu rusak pada bulan April 2004 dengan menggunakan 2.600 komputer selama 17 bulan operasi komputer.
3. Lisensi dan ijin Meskipun banyak keuntungan dari kurva eliptik dan meskipun adopsi kurva eliptik oleh banyak pengguna, banyak pengembang dan akademisi melihat lingkungan sekitarnya kekayaan intelektual kurva eliptik sebagai hambatan utama untuk pelaksanaan dan digunakan. Berbagai aspek dari kriptografi kurva eliptik telah dipatenkan oleh berbagai orang dan perusahaan di seluruh dunia. Terutama perusahaan Kanada, Inc Certicom memegang lebih dari 130 paten yang berkaitan dengan kurva eliptik dan kriptografi kunci publik pada umumnya.
ECDSA (Elliptical Curve Digital Signature Algorithm) adalah kurva elliptik analog dari Digital Siganature Algorithm (DSA). ECDSA merupakan salah satu jenis dari metode tanda tangan digital yang beroperasi dengan kelompok kurva elliptik sebagai basis perhitungan.
Skematik ECDSA adalah part penghitung digital untuk menulis penandaan. Skematik penandaan digital dapat diklasifikasikan berdasarkan pada permasalahan matematika yang menyediakan dasar untuk keamanan : 1.
Integer Faktorisasi (IF) Dasar keamanan pada intrektabiliti dari permasalahan faktorisasi integer.
2. Diskrit Logaritma (DL) Dasar keamanan dititik beratkan pada permasalahan logaritma dalam sebuah daerah terbatas.
3. Skema kurva elliptic Dasar keamanan dititik beratkan pada permasalahan curva elliptic logaritma diskrit (Hankerson, et al. 2004).
2.10.1 Parameter-parameter domain ECDSA
Parameter-parameter domain ECDSA terdiri dari sebuah pilihan yang sesuai dengan kurva elliptik E yang didefinisikan melebihi bidang tak hingga Fq dari karateristik p, dan sebuah titik dasar G € E(Fq). Untuk menyimpulkan, parameter-parameter domain terdiri dari : a.
Sebuah bidang ukuran q, dimana salah satu q = p, sebuah prime ganjil, atau q =
m
2 b.
Sebuah inidkasi FR (field representation) dari representasi yang digunakan untuk elemen dari Fq c.
Sebuah string bit seedE dari ukuran minimal 160 bit
d. g dan y g dalam Fq yang mendefinisikan sebuah titik tak Dua elemem bidang x hingga G = (x g ,y g ) dari orde prima dalam E(Fq)
160
e. dan n > Orde n dari titik G, dengan n>2 f.
Kofaktor h = ≠E(Fq)/n
2.10.2 Proses ECDSA
Dalam protokol ECDSA, pihak yang akan melakukan tanda tangan digital mempunyai parameter domain kurva eliptik berupa D = { p, FR, a, b, G, n } dan pasangan kunci-kunci rahasia dA dan kunci publik QA. Kemudian pihak yang akan melakukan verifikasi terhadap tanda tangan , memiliki salinana dokumen D yang otentik dan kunci publik QA. Proses-proses yang terjadi adalah sebagai berikut :
Key generation : 1.
Memilih sebuah bilangan bulat random dA yang nilainya diantara ( 1,n-1) 2. Menghitung QA = dA * G = ( X1, Y1) 3. Kunci rahasia = dA, dan kunci publik = QA
Signing ( Pemberian Tanda Tangan ) : 1.
Memilih sebuah bilangan bulat random k, yang nilainya diantara ( 1, n-1 ) 2. Menghitung QA = k * G = ( X1, Y1 ) dan r = X1 mod n, jika r = 0, maka kembali ke langkah 1
- 1
3. mod n Menghitung k 4.
Menghitung e = Hash (m)
- 1
5. { e+dA * r } mod n Menghitung s = k Tanda tangan untuk pesan m adalah ( r,s ).
Verifying ( Verifikasi tanda tangan digital ) : 1.
Memverifikasi bahwa r dan s adalah bilangan bulat yang di antara ( 1, n-1 )
2. Menghitung e = Hash (m)
- 1
3. mod n Menghitung w = s
4. = ew mod n dan u = rw mod n
1
2 Menghitung u 5. 1 * G + u 2 * QA = ( X1, Y1)
Menghitung u 6. Menghitung v = X1 mod n Menerima tanda tangan jika dan hanya jika v = r
2.11 Penelitian Terdahulu
Pualam Sendi A P dan temannya menghasilkan kesimpulan bahwa Algoritma ECDSA yang diimplementasikan pada email client dalam proyek akhir ini dapat memberikan informasi tentang keaslian pesan yang diterima dengan syarat penerima sudah memiliki kunci publik milik pengirim. Kemudian, penggunaan fungsi trim pada saat pengambilan data dari luar program sangat penting karena sering terjadi perubahan saat proses pengambilan data dilakukan. Serta penggunaan tanda tangan digital akan mempengaruhi ukuran email (Sendi, et al.
2010).
Wizanajani menyimpulkan bahwa algoritma ECC memiliki banyak keunggulan dibandingkan dengan algritma RSA dan DSA. Kecepatan algoritma berbasis ECC dalam proses pemberian dan verifikasi tanda tangan digital jauh lebih cepat dibandingkan dengan algoritma DSA dan RSA. Ukuran dari Algoritma berbasis ECC juga lebih kecil dari RSA dan DSA akan tetapi tidak dalam nilai yang besar. Yang paling utama adalah penyelesaian masalah algoritma berbasis ECC dilakukan secara eksponensial penuh dan lebih sulit dipecahkan daripada masalah DSA dan RSA, hal ini membuktikan bahwa ECC lebih kuat daripada DSA dan RSA. Pada implementasinya ECC cocok digunakan untuk aplikasi pada mobile phone, PDA, karena aplikasi tersebut membutuhkan ukuran kunci dan kecepatan pemberian tanda tangan serta verifikasi yang cepat (Wizanajani, 2013).
Pada tahun 2009, Adam melakukan penelitian yang menghasilkan kesimpulan yaitu aplikasi tersebut dapat memperketat sistem keamanan serta meminimalisir adanya penyadapan data, hal ini dikarenakan tanda tangan digital dapat memenuhi syarat keamanan data antara pengirim dan penerima pesan melalui tanda tangan yang diembed (dibawa) beserta data yang dikirim (Adam, 2009).
Triwinarko pada tahun 2010 melakukan penelitian pada ECDSA dan keamanan yang relatif sama dengan RSA dengan panjang kunci 1024 bit. Jadi algoritma kriptografi kurva eliptik mempunyai keuntungan berupa ukuran panjang kunci yang lebih kecil jika dibandingkan dengan algoritma kunci publik lainnya (RSA) tetapi sudah memiliki tingkat keamanan yang relatif sama, sehingga algoritma kriptografi kurva eliptik cocok untuk diimplementasikan pada peralatan perangkat keras yang memiliki daya dan memori yang terbatas. Dari kriteria ukuran panjang tanda tangan digital, algoritma kriptografi kurva eliptik memiliki performansi yang lebih baik karena menghasilkan tanda tangan digital yang mempunyai ukuran lebih kecil. Sedangkan dari kriteria kecepatan proses signing dan verifying, performansi kriptografi kurva eliptik akan lebih baik jika proses
signing lebih sering dilakukan. Sebaliknya performansi kriptografi RSA akan lebih baik jika proses verifying lebih sering dilakukan (Triwinarko, 2010).
Pada tahun 2010 Aqeel Khalique dengan para temannya menghasilkan kesimpulan bahwa varian dari Elliptical Curve Cryptography (ECC) yaitu Elliptical Curve Digital Signature Algorithm (ECDSA) telah banyak mendapat perhatian di industri dan akademisi. Alasan utama untuk daya tarik ECDSA tersebut terletak pada tidak adanya algoritma eksponensial yang dapat memecahkan kurva logaritma diskrit pada elips dengan benar. Kunci yang dihasilkan sangat aman dan mempunyai ukuran kecil sehingga menggunakan bandwitch yang lebih rendah dan melakukan komputasi secara cepat. ECDSA sangat cocok di implementasikan pada pager, telpon selular, kartu kredit (Khalique, et al. 2010).