• Tidak ada hasil yang ditemukan

LANDASAN TEOR

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

2. 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

Bila diketahui input m1 maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan hash(m1)=hash(m2)

3. Collision-resistant

Sulit mencari dua input berbeda m1 dan m2 yang menyebabkan hash(m1) = hash(m2)

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 : 1. Ambil sebuah angka prima q (160-bit) dimana 2159 < q < 2160

2. Ambil t dimana 0 ≤ t ≤ 8

3. Ambil bilangan prima p dimana 2511 + 64t < q < 2512 + 64t , dengan tambahan 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

6. Hitung y = αa mod p

Kunci 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. 3. Hitung y = gx mod p.

4. Kunci publik adalah y, kunci rahasia adalah x. Nilai g dan p tidak dirahasiakan dan dapat diumumkan kepada anggota kelompok.

Enkripsi :

1. Plainteks disusun menjadi blok-blok m1, m2, …, 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 : a = gk mod p b = ykm 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 :

m = b/ax mod p karena : ax gkx (mod p)

maka :

b/ax ykm/ax gxkm/gxk 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 kesulitan untuk memperhitungkan variasi eksponensial yang digunakan dalam 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 :

y2 = x3 + ax + b

dengan

4a3 + 27b2≠ 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 kunci simetris.

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.

2.10 ECDSA (Elliptical Curve Digital Signature Algorithm)

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 = 2m

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. Dua elemem bidang xg dan yg dalam Fq yang mendefinisikan sebuah titik tak

hingga G = (xg,yg) dari orde prima dalam E(Fq)

e. Orde n dari titik G, dengan n>2160 dan n > 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 3. Menghitung k-1 mod n 4. Menghitung e = Hash (m)

5. Menghitung s = k-1 { e+dA * r } mod n Tanda tangan untuk pesan m adalah ( r,s ).

Verifying ( Verifikasi tanda tangan digital ) :

2. Menghitung e = Hash (m) 3. Menghitung w = s-1 mod n

4. Menghitung u1 = ew mod n dan u2 = rw mod n

5. Menghitung u1 * G + u2 * QA = ( X1, Y1)

6. Menghitung v = X1 mod n

7. Menerima tanda tangan jika dan hanya jika v = r

Dokumen terkait