• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI"

Copied!
24
0
0

Teks penuh

(1)

BAB II

LANDASAN TEORI

Kriptografi (cryptography) merupakan ilmu dan seni penyimpanan pesan, data, atau informasi secara aman. Kriptografi (cryptography) berasal dari bahasa Yunani yaitu dari kata Crypto (tersembunyi) dan Graphia (tulisan). Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut cryptology. Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah.

Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

Proses tranformasi dari plaintext menjadi ciphertext disebut proses encipherment atau enkripsi (encryption), sedangkan proses mentransformasikan kembali ciphertext menjadi plaintext disebut proses dekripsi (decryption). Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga sebagai

cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext

disebut encryption atau encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext disebut decryption atau decipherment.

Cryptanalysis adalah aksi untuk memecahkan mekanisme kriptografi dengan cara mendapatkan plaintext atau kunci dari ciphertext yang digunakan untuk mendapatkan informasi berharga kemudian mengubah atau memalsukan pesan dengan tujuan untuk

(2)

penipu menerima yang sesungguhnya, memecahkan ciphertext. (Delfs, Hans & Knebl, Helmut. 2007)

Kriptografi lebih dari enkripsi dan dekripsi saja. Namun juga memberikan komponen-komponen (Kurniawan, 2004)

1. Authentication (keaslian), menjamin entitas yang berkomunikasi merupakan pihak yang berhak.

2. Data Confidentiality (kerahasiaan data), melindungi dari pihak yang tidak berhak

3. Data Integrity (integritas data), menjamin data yang diterima sama persis dengan yang dikirim, tidak mengandung modifikasi, tambahan, penghapusan dan sebagainya.

4. Nonrepudiation (anti penyangkalan), mencegah pihak pengirim menolak untuk mengakui telah mengirim sebuah pesan.

2.1 Kriptografi Simetri

Kriptografi simetri disebut juga sebagai kriptografi konvensional adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Algoritma ini disebut konvensional karena algoritma yang biasa digunakan orang berabad- abad yang lalu adalah algoritma jenis ini. Kriptografi simetri sering disebut sebagai algoritma kunci rahasia, algortima kunci tunggal, atau algoritma satu kunci dan mengharuskan pengirim dan mengharuskan pengirim dan penerima menyetujui suatu kunci sebelum mereka dapat berkomunikasi dengan aman. Masalah utama yang dihadapi kriptografi simetri adalah membuat pengirim dan penerima menyetujui kunci rahasia tanpa ada orang lain yang mengetahuinya. Ini membutuhkan metode dimana dua pihak dapat berkomunikasi tanpa takut akan disadap. Kelebihan kriptografi simetri dari kriptografi asimetri adalah lebih cepat.

Keamanan algoritma simetri tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat melakukan enkripsi dan dekripsi pesan. Contoh penggunaan kunci pada algoritma simetri ditunjukkan pada gambar 2.1

(3)

Gambar 2.1 Proses Enkripsi/Dekripsi

2.2 Algoritma Asimetri (Kriptografi Kunci Publik)

Algoritma asimetrik disebut juga algoritma Kunci Publik yang sering disebut juga kriptografi kunci publik adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma Asimetri ini disebut kunci publik karena kunci untuk enkripsi dapat dibuat publik yang berarti semua orang boleh mengetahuinya. Sembarang orang dapat menggunakan kunci enkripsi tersebut untuk mengenkrip pesan namun hanya orang tertentu yaitu calon penerima pesan dan sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik, yang dapat melakukan dekripsi terhadap pesan tersebut. Dalam sistem ini, kunci enkripsi disebut kunci publik, sementara kunci dekripsi sering disebut kunci privat. Contoh algoritma simetri adalah RSA dan Elgamal.

Di bawah ini diperlihatkan proses enkripsi/dekripsi kriptografi yang dimaksud.

Gambar 2.2 Proses Enkripsi/Dekripsi Publik Key Cryptography

Enkripsi Dekripsi

Plaintext Chipertext Plaintext

Kunci

Enkripsi Dekripsi

Plaintext Chipertext Plaintext

(4)

2.2.1 Keamanan Sistem Kriptografi Kunci-Publik

Keamanan sistem kriptografi kunci publik terletak pada dua hal (Munir,2006): 1. Sulitnya menurunkan kunci rahasia dari kunci publik.

Pada sistem kriptografi kunci publik, kunci rahasia dan kunci publik merupakan dua kunci yang dapat diturunkan melalui formula tertentu satu dengan yang lainnya. Tentunya formula tersebut memiliki tingkat kesukaran yang tinggi dengan menggunakan operasi perpangkatan dan aritmatika bilangan besar sehingga sangat sulit bagi seorang kriptanalis untuk memecahkan kunci rahasia dari kunci-publik. Hal inilah yang membuat sistem kriptografi kunci-publik memiliki keamanan yang terjamin dan banyak digunakan dalam pengiriman pesan rahasia dan penting.

2. Sulitnya menurunkan plainteks dari chiperteks.

Ini merupakan pengaruh dari faktor pertama yang telah disebutkan yaitu kesukaran dalam menemukan kunci rahasia. Bila kunci rahasia suatu kriptografi kunci publik sukar ditemukan, maka sukar pula untuk menurunkan plainteks dari chiperteks yang diterima

Jika seorang kriptanalis menemukan chiperteks suatu sistem kriptografi kunci publik dan mencoba untuk menurunkanya menjadi plainteks kembali untuk mengetahui pesan rahasia yang dikirimkan, maka ia akan menemui kesulitan yang besar karena sebelumnya kunci rahasia sistem kriptografi kunci publik tersebut tidak dapat diturunkan dari kunci publik, maka sulit pula untuk menurunkan chiperteks menjadi plainteks.

2.2.2 Kelemahan Sistem Kriptografi Kunci Publik

Kelemahan sistem kriptografi kunci publik terletak dari waktu dan kuantitas teks yang dikirimkan. Biasanya sistem kriptografi kunci publik menghabiskan waktu cukup lama untuk melakukan enkripsi dan dekripsi. Selain itu chiperteks yang dihasilan juga dari pada plainteksnya.

(5)

Kelemahan-kelemahan sistem kriptografi kunci publik adalah (Munir, 2006): 1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena

enkripsi dan dekripsi melibatkan operasi perpangkatan yang besar.

Pengolahan plainteks, baik itu enkripsi maupun dekripsi, menggunakan algoritma kriptografi (chiper) kunci publik menggunakan operasi aritmatika dan perpangkatan yang menggunakan bilangan besar sehingga waktu untuk memproses operasi perpangkatann dan aritmatika dengan menggunakan bilangan besar tersebut memeakan waktu yang lebih lama dibandingkan dengan bilangan biasa, selain operasi perpangkatan, operasi modulo dan division yang digunakan sistem kriptografi kunci publik yang melibatkan bilangan integer besar juga memakan waktu yang lama. Dan yang paling ekstrim adalah kombinasi operasi tersebut, yaitu operasi modulo dan perpangkatan. Kombinasi kedua operasi ini menghabiskan waktu sekitar 40% dari proses enkripsi dan dekripsi yang dilakukan.

Sistem kriptogarafi simetri tidak menggunakan operasi perpangkatan dengan bilangan besar seperti ini sehingga pengolahan plainteks, baik enkripsi maupun dekripsinya, lebih cepat jika dibandingkan dengan sistem kriptografi kunci publik. Tetapi kalau dari segi keamanan sistem kriptogarafinya, jelas sistem kriptografi kunci publik lebih unggul.

2. Ukuran chiperteks lebih besar dari plainteks (bisa dua sampai empat kali ukuran plainteks)

Ukuran chiperteks yang lebih besar diakibatkan oleh adanya operasi perpangkatan dan modulo dengan menggunakan bilangan besar sehingga chiperteks yang dihasilkan memiliki ukuran yang lebih besar dibandingkan dengan plainteksnya. Ukuran chiperteks yang lebih besar ini dapat diamati dari jumlah karakter ASCII yang diperoleh pada saat enkripsi dilakukan dimana jumlah karakter ASCII tersebut lebih banyak jika dibandingkan jumlah karakter asli sebelum dilakukan proses enkripsi. Chiperteks yang memiliki ukuran yang lebih besar ini tentunya memiliki load pengiriman yang lebih besar dibandingkan dengan teks ukurannya

(6)

lebih kecil karena lebih mudah untuk mengirimkan pesan yang ukurannya lebih kecil daripada mengirimkan pesan yang ukurannya lebih besar. Di samping itu untuk titik yang kritis, biaya untuk mengirimkan pesan yang ukurannya lebih kecil lebih murah jika dibandingkan dengan pengiriman pesan yang ukurannya lebih besar.

Sistem kriptografi kunci simetri memiliki ukuran chiperteks sama dengan plainteksnya karena tidak menggunakan operasi perpangkatan dan modulo. Hal ini memang lebih efisien jika dibandingkan dengan sistem kriptografi kunci publik akan tetapi segi keamanannya belum menjamin sukar dipecahkan oleh kriptanalis.

3. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka chiperteks tidak memberikan informasi mengenai otentikasi pengirim.

Kunci publik dapat diketahui oleh banyak orang karena hanya digunakan untuk enkripsi sedangkan kunci rahasia hanya dapat diketahui oleh seseorang yang berkaitan dengan kerahasiaan pesan. Dengan demikian, setiap orang yang mengetahui kunci publik suatu sistem kriptografi kunci publik tentu dapat melakukan enkripsi suatu pesan sehingga menghasilkan suatu chiperteks tertentu sehinga mengirimkannya ke seseorang yang memiliki kunci rahasia. Akan tetapi seseorang yang memiliki kunci rahasia tersebut tidak mengetahui siapa yang mengirimkan pesan tersebut karena chiperteks yang ia terima tidak mengetahui siapa yang mengirimkan pesan tersebut karena chiperteks yang ia terima tidak mengandung informasi pengirim. Hal ini tentu saja tidak efektif karena bisa saja pesan yang dikirim tidak ada kaitan apa-apa mengenai urusan yang ditangani oleh sesorang yang memiliki kunci rahasia tersebut. Atau mungkin saja ada orang yang dengan sengaja mengirim suatu plainteks yang isinya asal-asalan dan mengenkripsinya dengan kunci publik suatu sistem kriptografi kunci publik yang dimiliki instansi tertentu dan kemudian mengirimkannya ke seseorang yang memiliki kunci rahasia sementara si penerima tidak mengetahui siapa yang mengirimkannya.

(7)

Untuk sistem kriptografi kunci simetri, pihak-pihak yang menggunakannya telah mengetahui sebelumnya siapa yang memiliki kunci karena proses enkripsi dan dekripsinya menggunakan kunci yang sama. Kunci tersebut tidak disebarkan ke masyarakat luas melainkan hanya diketahui oleh orang-orang yang dipercayai sehingga jika seseorang menerima chiperteks dengan sistem kriptografi kunci simetri, maka dia dapat mengetahui siapa yang mengirimkannya karena orang-orang tertentu saja yang menggunakan kunci tersebut.

2.3 Algoritma RSA

Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of

Technology) pada tahun 1976, yaitu Ron Rivest, Adi Shamir, dan Leonard Adleman.

Algoritma RSA termasuk algoritma asimetri, yaitu algoritma yang memiliki 2 kunci, kunci publik dan kunci privat. Keamanan algoritma RSA terletak pada sulitnya memaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan RSA tetap terjamin. (Delfs, Hans & Knebl, Helmut. 2007)

2.3.1 Notasi Matematika.

Untuk memahami algoritma RSA, terlebih dahulu perlu dipahami beberapa notasi matematika dasar, teori dan formula. Hal tersebut dibutuhkan untuk mendukung semua kalkulasi yang dilakukan dalam algoritma RSA.

1. Modulo (dinotasikan dengan ‘x mod m’ atau ‘x % m’ dalam beberapa bahasa komputer)

x % m = x mod m = pembagian x dengan m dan mengambil sisanya...

(8)

25 mod 4 = 1 karena 25 dibagi 4 menghasilkan 6 dengan sisa 1

X mod m = x jika dan hanya jika x < m

2. GCD (A,B)

GCD = Greatest Common Divisor, atau disebut faktor persekutuan terbesar GCD(A,B) = D

Contoh: GCD(78,32) = 2, karena tidak ada bilangan yang lebih besar dari dua yang membagi 78 dan 32.

GCD(A,B) dapat ditemukan dengan menggunakan algoritma euclid. Algoritma ini didasarkan pada teorema berikut :

Untuk setiap bilangan positif a dan setiap bilangan positif b,

GCD (a,b) = GCD(b,a mod b)

Contoh : GCD (55,22) = GCD (22,55 mod 22) = GCD (22,11) = 11

Persamaan tersebut dapat digunakan secara berulang untuk menentukan nilai

greatest common divisor

Contoh : GCD (18,12) = GCD (16,12) = GCD (6,0) = 6 GCD (11,10) = GCD (10,1) = GCD (1,0) =1 EUCLID (a,b) 1. A ← a ; B ← b 2. if B = 0 return A = GCD(a,b) 3. R = A mod B 4. A ← B 5. goto 2 Contoh : mencari GCD (1970,1066)

(9)

1970 = 1 x 1066 + 904 GCD (1066, 904) 1066 = 1 x 904 + 162 GCD (904, 162) 904 = 5 x 162 + 94 GCD (162, 94) 162 = 1 x 94 + 68 GCD (94, 68) 94 = 1 x 68 + 26 GCD (68, 26) 68 = 2 x 26 + 16 GCD (26, 16) 26 = 1 x 16 + 10 GCD(16,10) 16 = 1 x 10 + 6 GCD (10, 6) 10 = 1 x 6 + 4 GCD (6, 4) 6 = 1 x 4 + 2 GCD (4, 2) 4 = 2 x 2 + 0 GCD (2, 0) Maka GCD (1970,1066) = 2

Jika GCD(A,B) = 1 maka A dan B adalah coprime satusama lainnya (dengan kata lain, A dan B adalah relatively prime, atau A relatif prima terhadap B).

3. Menghitung d = e -1

Algoritma euclid dapat dikembangkan sehingga sebagai tambahan dalam mencari gcd (m,b), jika gcd adalah 1, maka dapat dicari nilai multiplicative

inverse dari b. Algoritma ini disebut dengan algoritma extended euclid

mod Φ(n)

EXTENDED EUCLID (m,b)

1. (A1, A2, A3,) ← (1,0,m); (B1, B2, B3) ← (0,1,b)

2. if B3 = 0 return A3 = GCD (m,b); tidak ada inverse

3. if B3 = 1 return B3 = GCD (m,b); B2 = b-1

4. Q = | A3 / B3 |

mod m

5. (T1, T2, T3) ← (A1 – QB1, A2 – QB2, A3 –QB3)

6. (A1, A2, A3) ← (B1, B2, B3)

7. (B1, B2, B3) ← (T1, T2, T3)

(10)

Contoh : mencari 7-1 4. Pangkat mod 160 Q A1 A2 A3 B1 B2 B3 - 1 0 160 0 1 7 22 0 1 7 1 -22 6 1 1 -22 6 -1 23 1

Maka multiplicative inverse dari 7 adalah 23; karena 7 x 23 = 1 mod 160 (atau (7 x 23) mod 160 = 1)

Pow (a,b)

Notasi yang digunakan adalah notasi ‘^’ seperti pada a^b.

Proses enkripsi dan dekripsi dalam RSA melibatkan pemangkatan sebuah integer dengan sebuah integer, kemudian di moduluskan dengan n. Jika integer pemangkat merupakan bilangan yang besar, maka hasil pangkatnya akan menjadi bilangan yang sangat besar. Untuk itu perhitungan pangkat dan modulus ini dapat dikerjakan dengan menggunakan teorema aritmatika modular :

[ (a mod n) x (b mod n) ] mod n = ( a x b) mod n

Melalui cara ini proses pemangkatan bilangan yang akan menghasilkan bilangan sangat besar dapat dikurangi. Algoritma ini disebut dengan algoritma

Fast Modular Exponentiation

FAST MODULAR EXPONENTATION ab mod n

C = 0; d = 1 For I = k downto 0 do c = 2 x c d = (d x d) mod n if bi = 1 then c = c + 1 d = (d x a) mod n return d

(11)

Contoh : menghitung ab mod n, dimana a =7, b=560= 1000110000, n = 561

i 9 8 7 6 5 4 3 2 1 0

bi

1. Pilih dua bilangan prima p dan q secara acak , p ≠ q. Bilangan ini harus cukup besar (minimal 100 digit).

1 0 0 0 1 1 0 0 0 0

c 1 2 4 8 17 35 70 140 280 560 d 7 49 157 526 160 241 298 166 67 1

maka hasil yang diperoleh dari 7^560 mod 561 = 1

2.3.2 Proses Pembuatan Kunci

Dalam membuat suatu sandi, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai berikut:

2. Hitung n = p x q. Bilangan n disebut parameter sekuriti.

3. Hitung Φ(n) = ( p – 1 ) ( q – 1 ).

4. Pilih bilangan bulat (integer) antara satu dan Φ(n) ( 1 < e < Φ(n)) yang tidak mempunyai faktor pembagi dari Φ(n) atau gcd (e, Φ(n)). Langkah ini dapat dihitung dengan algoritma Euclidean

5. Hitung d = e -1

6. (e, n) merupakan kunci publik mod Φ(n) 7. (d, n) merupakan kunci privat

Bilangan prima p dan q harus berupa bilangan yang sangat besar, disarankan p maupun q bilangan desimal 100 bit. Sehingga akan menghasilkan nilai n 200 bit. (Rivest). Hal ini dilakukan dengan tujuan mempersulit upaya menghitung kunci privat (d) dari kunci publik (e dan n) yang telah diketahui. Karena untuk mendapatkan nilai

d, harus dicari nilai p dan q terlebih dahulu. Dan kedua nilai ini harus diperoleh

(12)

2.3.3. Proses Enkripsi Pesan

Proses enkripsi dilakukan oleh pihak pengirim, dalam hal ini adalah A. Seluruh perhitungan pemangkatan bilangan modulo dilakukan menggunakan metode fast

exponentiation. Proses enkripsi RSA dijelaskan sebagai berikut:

1. Ambil kunci publik (e, n).

2. Pilih plainteks M, dengan 0 ≤ M ≤ n −1 . 3. Hitung C = M e

4. Diperoleh cipherteks C, dan kirimkan kepada B. mod n .

2.3.4. Proses Dekripsi Pesan

Berikut ini adalah proses dekripsi RSA. Dilakukan oleh pihak penerima cipherteks, yaitu B.

1. Ambil kunci privat (d, n)

2. Hitung M = C d

2.3.5 Contoh Penghitungan RSA

Sekarang kita mencoba suatu contoh untuk mengenal lebih dalam sistem kerja enkripisi RSA. Misalnya kita mau mengenkripsi kata “SECRET” dengan RSA, lalu kita dekripsi kembali ke dalam plaintext.

Karena p dan q berjumlah minimal 100 digit atau lebih, nilai d dan e bisa berjumlah sama dengan 100 digit dan nilai N akan berjumlah 200 digit. Untuk itu di contoh pemakaian berikut, kita akan memakai angka-angka yang kecil agar mudah dalam penghitungan.

Cara pengerjaannya adalah: mod n .

1. Kita pilih p = 17 dan q = 11

2. Hitung N = pq = 17 x 11 = 187 dan Φ(n) = (17 -1)(11 – 1) =160 3. Nilai e = 7 dipilih karena 1 < e < Φ(n) dan gcd (7,160) = 1

(13)

4. Menggunakan algoritma Euclide diperluas diperoleh bahwa d = 7 -1

5. Kunci publik = (e,n) = (7, 187) dan kunci privat = (d, n ) = (23, 187)

mod 160 = 23

6. Lalu kata yang akan dienkripsi, “HARI”.

String ini diubah ke desimal menggunakan nilai karakter ASCII yang akan menghasilkan nilai ASCII 72 65 82 73

7. Pengirim akan mengenkripsi dengan kunci publik (e, n) = (7, 187). Lalu karakter ciphertext akan masuk ke persamaan

Ci = Mi 7 mod 187 C1 = 72 7 mod 187 = 30 C2 = 65 7 mod 187 = 142 C3 = 82 7 mod 187 = 91 C4 = 73 7

8. Penerima akan mendekripsi chiperteks 030 142 091 061 menggunakan kunci privat (d, n) = (23, 187) dengan persamaan

mod 187 = 61

Jadi, cipherteksnya adalah 030 142 091 061. Selanjutnya cipherteks dikirimkan kepada B. Mi = Ci 23 mod 187 M1 = 030 23 mod 187 = 72 M2 = 142 23 mod 187 = 65 M3 = 091 23 mod 187 = 82 M4 = 061 23 mod 187 = 73

Diperoleh 72 65 82 73, apabila dikembalikan ke dalam plainteks menjadi HARI.

Kunci RSA yang mempunyai ukuran 512 dan 768 bit dianggap masih lemah dan mudah dijebol. Ukuran kunci yang dianjurkan adalah 1024 bit. Ukuran 2048 dan 3072 bit merupakan suatu ukuran yang lebih baik.

(14)

Fungsi Hash

Suatu hash function adalah sebuah fungsi matematika, yang mengambil sebuah panjang variable string input, yang disebut pre-image dan mengkonversikannya ke sebuah string output dengan panjang yang tetap dan biasanya lebih kecil yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam notasi heksadesimal), yang disebut message digest. (Munir, 2004)

Fungsi hash satu arah (one-way hash function) adalah hash function yang bekerja satu arah, yaitu suatu hash function yang dapat menghitung message digest dari pre- image, tetapi sangat sukar untuk menghitung pre-image dari message digest.

Sebuah fungsi hash satu arah, H(M) beroperasi pada suatu pre-image pesan M dengan panjang sembarang dan mengembalikan nilai hash h yang memiliki panjang tetap. Dalam notasi matematika fungsi hash satu arah dapat ditulis sebagai:

h = H(M), dengan h memiliki panjang b

Fungsi hash sangat berguna untuk menjaga integritas sebuah data. Sudah banyak algoritma hash function yang diciptakan, namun hash function yang umum digunakan saat ini adalah MD5 dan SHA (Secure Hash Algorithm).

2.4.1 MD5

MD5 adalah fungsi hash satu-arah yang dibuat oleh Ron Rivest. Algoritma MD5

menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan

message digest yang panjangnya 128 bit.

Gambaran pembuatan message digest dengan algoritma MD5 diperlihatkan pada Gambar 2.3

(15)

Gambar 2.3 Pembuatan MessageDigest dengan Algoritma MD5 (Munir, 2004)

2.4.2 Proses Pembuatan Message Digest pada MD5

Langkah-langkah pembuatan message digest secara garis besar adalah sebagai berikut:

1. Penambahan bit-bit pengganjal (padding bits). 2. Penambahan nilai panjang pesan semula. 3. Inisialisasi penyangga (buffer) MD.

4. Pengolahan pesan dalam blok berukuran 512 bit

Penjelasan untuk langkah-langkah pembuatan message digest dijelaskan sebagai berikut:

1. Penambahan Bit-bit Pengganjal

Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. Ini berarti panjang pesan setelah

(16)

ditambahi bit-bit pengganjal adalah 64 bit kurang dari kelipatan 512. Angka 512 ini muncul karena MD5 memperoses pesan dalam blok-blok yang berukuran 512.

Pesan dengan panjang 448 bit pun tetap ditambah dengan bit-bit pengganjal. Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512. Bit -bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0.

2. Penambahan Nilai Panjang Pesan Semula

Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 264. Dengan kata lain, jika panjang pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264. Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi 512 bit.

3. Inisialisai Penyangga MD

MD5 membutuhkan 4 buah penyangga (buffer) yang masing masing

panjangnya 32 bit. Total panjang penyangga adalah 4 x 32 = 128 bit. Keempat penyangga ini menampung hasil antara dan hasil akhir. Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

4. Pengolahan Pesan dalam Blok Berukuran 512 bit.

Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL – 1). Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini disebut proses HMD5.

(17)

Gambaran proses HMD5 diperlihatkan pada Gambar 2.4

Gambar 2.4 Pengolahan blok 512 bit (Proses HMD5)

Proses HMD5 terdiri dari 4 buah putaran, dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali dan setiap operasi dasar memakai sebuah elemen T. Jadi setiap putaran memakai 16 elemen Tabel T.

Pada Gambar 2.4, Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai message digest 128-bit dari proses HMD5 ke-q. Pada awal proses, MDq berisi nilai inisialisasi penyangga MD.

Fungsi-fungsi fF, fG, fH, dan fI masing-masing berisi 16 kali operasi dasar terhadap masukan, setiap operasi dasar menggunakan elemen Tabel T. Operasi dasar

MD5 dapat ditulis dengan sebuah persamaan sebagai berikut:

(18)

yang dalam hal ini,

a, b, c, d = empat buah peubah penyangga 32-bit (berisi nilai penyangga A, B, C, D) g = salah satu fungsi F, G, H, I

CLSs = circular left shift sebanyak s bit

X[k] = kelompok 32-bit ke-k dari blok 512 bit message ke-q. Nilai k = 0 sampai

15.

T[i] = elemen Tabel T ke-i (32 bit) + = operasi penjumlahan modulo 232

Fungsi- fungsi yang digunakan MD5 adalah:

F(b, c, d) = (b ∧ c) ∨ (~b ∧ d) G(b, c, d) = (b ∧ d) ∨ (c ∧ ~d) H(b, c, d) = b ⊕ c ⊕ d

I(b, c, d) = c ⊕ (b ∧ ~ d)

Dimana operator logika AND, OR, NOT, XOR masing-masing dilambangkan dengan ∧, ∨, ~, ⊕

Nilai T[i] dapat dilihat pada Tabel 2.1. Tabel ini disusun oleh fungsi 232 ´ abs(sin(i)),

i dalam radian.

Tabel 2.1. Nilai T[i] (Munir,2004)

T[1] = D76AA478 T[2] = E8C7B756 T[3] = 242070DB T[4] = C1BDCEEE T[5] = F57C0FAF T[6] = 4787C62A T[7] = A8304613 T[8] = FD469501 T[9] = 698098D8 T[10] = 8B44F7AF T[11] = FFFF5BB1 T[12] = 895CD7BE T[13] = 6B901122 T[14] = FD987193 T[15] = A679438E T[16] = 49B40821 T[17] = F61E2562 T[18] = C040B340 T[19] = 265E5A51 T[20] = E9B6C7AA T[21] = D62F105D T[22] = 02441453 T[23] = D8A1E681 T[24] = E7D3FBCB T[25] = 21E1CDE6 T[26] = C33707D6 T[27] = F4D50D87 T[28] = 455A14ED T[29] = A9E3E905 T[30] = FCEFA3F8 T[31] = 676F02D9 T[32] = 8D2A4C8A T[33] = FFFA3942 T[34] = 8771F681 T[35] = 69D96122 T[36] = FDE5380C T[37] = A4BEEA44 T[38] = 4BDECFA9 T[39] = F6BB4B60 T[40] = BEBFBC70 T[41] = 289B7EC6 T[42] = EAA127FA T[43] = D4EF3085 T[44] = 04881D05 T[45] = D9D4D039 T[46] = E6DB99E5 T[47] = 1FA27CF8 T[48] = C4AC5665 T[49] = F4292244 T[50] = 432AFF97 T[51] = AB9423A7 T[52] = FC93A039 T[53] = 655B59C3 T[54] = 8F0CCC92 T[55] = FFEFF47D T[56] = 85845DD1 T[57] = 6FA87E4F T[58] = FE2CE6E0 T[59] = A3014314 T[60] = 4E0811A1 T[61] = F7537E82 T[62] = BD3AF235 T[63] = 2AD7D2BB T[64] = EB86D391

(19)

Misalkan notasi

[abcd k s i] menyatakan operasi

a ← b + ((a + g(b, c, d) + X[k] + T[i])<<<s)

yang dalam hal ini <<<s melambangkan operasi circular left shift 32-bit, maka operasi dasar pada masing-masing putaran dapat ditabulasikan sebagai berikut:

Tahap 1 : 16 kali operasi dasar dengan g(b, c, d) = F(b, c, d) dapat dilihat pada Tabel 2.2

Tabel 2.2. Rincian operasi pada fungsi F(b, c, d)

No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [abcd k s i] [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

Tahap 2: 16 kali operasi dasar dengan g(b, c, d) = G(b, c, d) dapat dilihat pada Tabel 2.3.

Tabel 2.3. Rincian operasi pada fungsi G(b, c, d)

No. [abcd k s i ] 1 2 3 4 5 6 7 8 9 [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25]

(20)

10 11 12 13 14 15 16 [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

Putaran 3: 16 kali operasi dasar dengan g(b, c, d) = H(b, c, d) dapat dilihat pada Tabel 2.4

Tabel 2.4. Rincian operasi pada fungsi H(b, c, d)

No. [abcd k s i ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

Tahap 4: 16 kali operasi dasar dengan g(b, c, d) = I(b, c, d) dapat dilihat pada Tabel 2.5.

Tabel 2.5. Rincian operasi pada fungsi I(b, c, d)

No. [abcd k s i ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

(21)

Setelah putaran keempat, a, b, c, dan d ditambahkan ke A, B, C, dan D, dan keluaran akhir dari algoritma MD5 adalah hasil penyambungan bit-bit di A, B, C, dan D.

Contoh Masukan-Keluaran MD5 Masukan = “ “ Keluaran = d4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e Masukan = a Keluaran = 0c c1 75 b9 c0 f1 b6 a8 31 c3 99 e2 69 77 26 61 Masukan = b Keluaran = 92 eb 5f fe e6 ae 2f ec 3a d7 1c 77 75 31 57 8f Masukan = c Keluaran = 4a 8a 08 f0 9d 37 b7 95 64 90 38 40 8b 5f 33

Masukan MD5 dalam contoh di atas adalah karakter kosong (“ “), a, b, dan c. Keluaran berupa bilangan hexa dan jumlahnya 128 bit. Masukan yang berbeda satu karakter , keluaran akan mengalami perubahan drastis. Sifat seperti ini sengaja dibuat agar bila diketahui keluaran sangat sulit atau mustahil untuk mengetahui masukannya.

(Kurniawan, 2004)

Tanda Tangan Digital

Tanda digital adalah mekanisme otentikasi yang mengijinkan pemilik pesan membubuhkan sebuah sandi pada pesannya yang bertindak sebagai tanda tangan. Tanda tangan dibentuk dengan mengambil nilai hash dari pesan dan mengenkripsi nilai hash pesan tersebut dengan kunci privat pemilik pesan. (Stallings, 2005)

Jika dalam proses pengiriman pesan saluran komunikasi yang digunakan sudah aman dan kunci hanya diketahui oleh pihak yang berhak, sekarang masalahnya siapa yang menjamin bahwa pesan yang dikirim memang berasal dari orang yang berhak. Atau bagaimana meyakinkan pihak yang akan menerima kiriman data bahwa memang benar-benar berasal dari pengirim aslinya. Untuk mengatasi validitas pengiriman tersebutlah digunakan teknologi Tanda Tangan Digital

(22)

Tanda tangan digital berfungsi untuk melakukan validasi terhadap setiap data yang dikirim. Dalam pengiriman data, walaupun saluran komunikasi yang digunakan sudah sangat aman, tentu saja perlu diperhatikan validitasnya. Validitas tersebut berkaitan dengan pertanyaan apakah data yang sampai ke penerima dalam keadaan utuh dengan aslinya saat dikirim tanpa sedikitpun adanya gangguan-gangguan dari pihak lain. Tanda tangan digital menggunakan algoritma yang disebut dengan istilah

hashing algorithm. Fungsi tersebut akan menghasilkan sebuah kombinasi karakter

yang unik yang disebut dengan Message Digest.

Keunikannya adalah jika di tengah perjalanan data mengalami modifikasi, penghapusan maupun di sadap diam-diam oleh hacker walaupun hanya 1 karakter saja, maka message digest yang berada si penerima akan berbeda dengan yang dikirimkan pada awalnya. Keunikan lainnya adalah message digest tersebut tidak bisa dikembalikan lagi ke dalam bentuk awal seperti sebelum disentuh dengan fungsi algoritma, sehingga disebutlah sebagai one-way hash.

Proses tanda tangan digital dapat ditunjukkan pada gambar di bawah ini.

Gambar 2.5 Diagram Proses Tanda Tangan Digital

Signer Verify Message Message Message Message Digest Signature Fungsi hash Fungsi hash Verify Sign Private Key Publik Key Signature Message Signature Signature Message Digest Message Digest ? =

(23)

Mekanisme kerja untuk menghasilkan tanda tangan digital tersebut adalah sebagai berikut :

1. Proses hashing algorithm akan mengambil nilai hash dari pesan yang akan dikirim dan menghasilkan message digest. Kemudian message digest tersebut dienkripsi mengunakan kunci privat dan menghasilkan tanda tangan digital. 2. Kemudian tanda tangan digital tersebut dikirimkan bersama isi pesan tersebut. 3. Sesampainya di penerima, akan dilakukan proses hashing algorithm terhadap

pesan tersebut seperti yang dilakukan saat pengiriman. Dari proses tersebut menghasilkan message digest sekunder (MD’).

4. Secara paralel digital signature yang diterima tadi langsung didekripsi oleh kunci publik. Hasil dekripsi tersebut akan memunculkan message digest yang serupa seperti message digest sebelum dienkripsi oleh pengirim pesan.

Message digest disebut message digest primer (MD).

5. Proses selanjutnya adalah membandingkan message digest primer dengan

message digest sekunder. Jika saja saat diperjalanan ada hacker yang

mengubah isi pesan, maka message digest sekunder akan berbeda dengan

message digest primer. Segera mekanisme tanda tangan digital tersebut akan

menyampaikan peringatan bahwa telah terjadi pengubahan isi pesan.

Tanda tangan digital mampu memenuhi tiga dari empat aspek keamanan kriptografi, yaitu aspek integritas data, otentikasi, dan antipenyangkalan.

Otentikasi dan integritas data dijelaskan sebagai berikut:

1. Apabila pesan M yang diterima sudah berubah, maka MD’ yang dihasilkan dari fungsi hash berbeda dengan MD semula. Ini berarti pesan tidak asli lagi. 2. Apabila pesan M tidak berasal dari orang yang sebenarnya, maka message

digest MD yang dihasilkan dari persamaan 3 berbeda dengan message digest MD’ yang dihasilkan pada proses verifikasi (hal ini karena kunci publik yang digunakan oleh penerima pesan tidak berkoresponden dengan kunci rahasia pengirim).

3. Bila MD = MD’, ini berarti pesan yang diterima adalah pesan yang asli dan orang yang mengirim dalah orang yang sebenarnya .

(24)

Pengirim pesan tidak dapat menyangkal pesan yang ia kirim. Andaikan pengirim menyangkal telah mengirim pesan, sangkalan dari pengirim dapat dibantah dengan cara: jika ia tidak mengirim pesan, berarti ia tidak mengenkripsi message digest dari pesan dengan kunci privatnya. Faktanya, kunci publik yang berkoresponden dengan kunci privat pengirim menghasilkan MD=MD’ Ini berarti message digest memang benar dienkripsi oleh pengirim sebab hanya pengirim yang mengetahui kunci privatnya sendiri.

Gambar

Gambar 2.1 Proses Enkripsi/Dekripsi
Gambar 2.3 Pembuatan MessageDigest dengan Algoritma MD5 (Munir, 2004)
Gambar 2.4 Pengolahan blok 512 bit (Proses HMD5)
Tabel 2.1.  Nilai T[i] (Munir,2004)
+4

Referensi

Dokumen terkait

Hasil analisis kandungan rata-rata logam Pb, Cu dan Zn pada sedimen di Perairan Pantai Telaga Tujuh dibandingkan dengan standar konsentrasi ERL ( Effects Range Low) dan

Berdasarkan hasil penelitian dan pembahasan yang telah dilakukan, maka dapat disimpulkan bahwa gaya kepemimpinan dan ketidakapastian lingkungan memiliki pengaruh terhadap

Seperti halnya dengan Asas legalitas yang tergambarkan dalam ungkapan “ nullum delictum nulla poena sine praevia lege poenali” yang kemudian menjadi asas dan merupakan

Ada beberapa aspek yang mendukung kesimpulan ini, yang pertama adalah kedua jalur sesar regional tersebut relatif saling sejajar dengan pola lipatan batuan yang

1302 DIAN PRATIWI TAMAN INDAH REGENCY GELURAN, TAMAN, SIDOARJO 1303 SULISTYORINI RAFIKA PUTRI DELTA SARI INDAH KUREKSARI, WARU, SIDOARJO 1304 ETIK SULISTIAWATI JL RAYA

dia, maka kata mereka itu akan dia: “Hai fulan bahwa engkau sekarang mati dan bahwasanya kami telah dahulu daripadamu pada pekerjaan mati ini maka matilah engkau pada agama

Berdasarkan hasil mitigasi faktor eksternal dan internal tersebut dapat disusun beberapa upaya arah kebijakan penanaman modal terkait promosi yang lebih baik, yaitu dengan cara

Jika yang disediakan oleh perpustakaan adalah katalog komputer yang telah terintegrasi dengan layanan sirkulasi, pengguna malah akan mengetahui status buku yang dicarinya, seperti