• Tidak ada hasil yang ditemukan

Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks"

Copied!
34
0
0

Teks penuh

(1)

BAB 2

TINJAUAN PUSTAKA

3.1. Latar Belakang

3.1.1. Pengertian Kriptografi

Kriptografi berasal dari kata kripto dan grafi. Kripto berarti menyembunyikan, dan grafi yaitu ilmu. Kriptografi (cryptography) adalah suatu ilmu yang mempelajari suatu sistem penyandian untuk menjamin kerahasiaan dan keamanan data. Orang yang melakukan disebut Criptographer. Kriptografi merupakan ilmu yang mempelajari teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data, keabsahan data, dan integritas data serta autentifikasi data (Menezes, 1996)

Sisem kriptografi klasik umumnya menggunakan metode subtitusi atau transposisi dan telah digunakan jauh sebelum komputer ditemukan. Terdapat beberapa komponen utama dalam sistem kriptografi yaitu:

Secara umum, istilah kriptografi yang sering digunakan adalah (Munir, 2006): 1. Pesan

Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya, pesan sering juga disebut dengan plaintext atau teks jelas (cleartext). Plaintext merupakan suatu pesan bermakna yang akan diproses menggunakan algoritma kriptografi.

2. Ciphertext

(2)

3. Enkripsi

Enkripsi merupakan proses penyandian plaintext menjadi ciphertext atau disebut sebagai enciphering. Enkripsi dilakukan dengan tujuan agar plaintext tersebut tidak dapat dibaca oleh pihak yang tidak memiliki otoritas (wewenang).

4. Dekripsi

Dekripsi merupakan proses pengembalian ciphertext menjadi plaintext semula atau di sebut deciphering. Dekripsi dilakukan ketika pesan telah sampai kepada pihak yang dituju.

5. Kunci (key).

Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan dekripsi. Kunci dapat juga berupa string atau deretan bilangan. Keamanan suatu algoritma kriptografi biasanya tergantug kepada kerahasiaan penyebaran key.

6. Kriptosistem (cryptosystem)

Cryptosystem adalah perangkat keras atau implementasi perangkat lunak kriptografi yang diperlukan atau mentranformasi sebuah pesan asli menjadi ciphertext atau juga sebaliknya.

3.1.2. Jenis Kriptografi

Menurut (Munir, 2006) terdapat dua jenis algoritma kriptografi berdasarkan jenis kunci yang digunakan, yaitu:

1. Algoritma Kriptografi Simetri (Konvensional) / Symetric Cryptosystem 2. Algoritma Kriptografi Asimetri (Kunci Publik) / Assymetric Cryptosystem

1. Kriptografi Simetri / Symetric Cryptosystem

(3)

dekripsi yang kuncinya harus dirahasiakan. Dan contoh disini yang diambil adalah DES (Data Encrpytion Standart), Blowfish, IDEA. Dua kategori yang termasuk algoritma simetri adalah algoritma blok cipher dan stream cipher. Proses enkripsi dan dekripsi dapat dilihat pada gambar 2.1 dibawah ini:

Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem

a. Block Cipher

Algoritma block cipher adalah algoritma yang masukan dan keluarannya berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode operasi enkripsi block cipher.

1. Data Encryption Standard (DES) 2. AES (Advanced Encryption Standard) 3. Blowfish

b. Stream Cipher

Stream cipher (cipher aliran) adalah cipher yang berasal dari hasil XOR antara bit plaintext dengan setip bit kuncinya. Stream cipher sangat rawan terhadap attack dan pembalikan kunci. Beberapa model algoritma stream cipher adalah antara lain:

1. One Time Pad (OTP) 2. Rivest Code 4 (RC4)

Kelebihan algoritma simetri adalah:

a. Proses enkripsi dekripsi kriptografi simetri membutuhkan waktu yang relatif singkat.

b. Ukuran kunci yang relatif pendek.

(4)

Kekurangan kriptografi simetri adalah:

a. Kunci simetri harus dikirim melalui saluran komunikasi yang aman dan kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci.

b. Kunci harus sering diubah, setiap kali melaksanakan komunikasi.

2. Kriptografi Asimetri / Symetric Cryptosystem

Konsep dasar kriptografi asimetri sering juga disebut dengan algoritma kunci publik (plaintext key), dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsi berbeda. Pada algoritma simetri kunci dibagi dua bagian, yaitu:

1. Kunci umum (public key): kunci yang boleh dikataui oleh semua orang / kunci dipublikasikan.

2. Kunci rahasia (private key): kunci yang dirahasiakan / hanya diketui oleh pengirim dan penerima pesan saja.

Kunci-kunci tersebut berhubungan satu dengan yang lain. Dengan kunci plaintext orang dapat mengenkripsi pesan tapi tidak bisa mendekripsikannya. Hanya orang yang memiliki kunci rahasia yang dapat di dekripsi pesan tersebut. Algoritma asimetri dapat mengirim pesan dengan lebih aman dari algoritma simetri.

(5)

Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem

3.1.3. Tujuan Kriptografi

Ditinjau dari tujuan kriptografi sendiri adalah sebagai berikut (Menezes, Oorschot dan Vanstone, 1996):

1. Kerahasiaan (confidentialy)

Merupakan layanan yang bertujuan untuk mendaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak memiliki otoritas (wewenang). Dalam kriptografi layanan ini dapat direalisasikan dengan menyandikan pesan ciphertext. Misalnya kata “majid” dapat disandikan dengan “abcde”. Istilah lain yang serupa dengan confidentialy adalah secrecy dan privacy.

2. Integritas data (data integrity)

Merupakan layanan yang menjamin bahwa pesan asli masih uth atau belum dimanipulasi selama proses pengiriman. Dengan kata lain, aspek keamanan ini dapat diungkap sebagai pertanyaan “ apakah pesan yang diterima masih asli atau sudah di lakukan modifikasi”.

3. Otentifikasi (autentification)

Merupakan layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user autentification atau entity autentification). Dua pihak yang saling berkomunikasi harus dapat mengidentifikasi satu sama yang lainnya sehingga si penerima memastikan sumber pesan.

4. Non-repudiation

(6)

3.1.4. Serangan Terhadap Kriptografi

Attack (serangan) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis untuk menemukan kunci atau plaintext ke ciphertext dalam suatu sistem kriptogafi. Kriptanalis akan berusaha untuk menemukan plaintext dari ciphertext tanpa memiliki akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang digunakan dalam menemukan kunci, serangan dapat dibagi menjadi exahaustive atau brute force attack dan analytical attack (Fitria, 2007).

Exhaustive atau brute force attack merupakan serangan untuk mendapatkan plaintext dai ciphertext dengan mencoba satu persatu kombinasi atau kemungkinan kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plaintext dan ciphertext.

a. Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi atas dua macam, yaitu serangan pasif dan serangan aktif:

1. Serangan aktif

Pada serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan pribadinya. Misalnya penyerang mengubah aliran pesan seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang tersimpan, dan sebagainya.

2. Serangan pasif

(7)

2.1.5 Teknik Enkripsi dan Dekripsi

a. Teknik Subtitusi

Teknik subtitusi akan diganti suatu kode dengan kode yang lain, degan menggunakan tabel subtitusi. Dapat ditampilkan dalam tabel dibawah ini. Dapat dilihat pada tabel 2.1 dibawah ini:

Tabel 2.1 Teknik subtitusi

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

M A J I D ! @ # $ % ^ & * ( ) S Y 4 B R U L 0 1 2 3

Tabel subtitusi diatas dibuat secara acak, misalkan huruf A akan diganti dengan huruf M, dan huruf B diganti dengan huruf A begitu seterusnya. Misalkan kata “ENKRIPSI” akan dienkripsi dengan teknik subtitusi dengan tabel diatas menjadi “D(^4$SBS”. Untuk memperoleh kata “ENKRIPSI” kembali maka dilakukan pula melihat tabel subtitusi diatas.

b. Teknik Blocking

Teknik blocking yaitu membagi pesan plaintext kedalam blok-blok pesan yang kemudian akan di enkripsi secara independen. Misalkan kalimat “TEKNIK BLOCKING ENCRYPTION METHODE ” akan dibagi kedalam blok-blok sebagai berikut. Dapat dilihat pada tabel 2.2 dibawah ini:

Tabel 2.2 Teknik Blocking

T K C space Y N H

E space K E P space O

K B I N T M D

N L N C I E E

(8)

Selajutnya teknik dapat dienkripsi perblok, misalkan untuk proses pengacakan sederhana dengan pembacaaan yang terbalik yaitu karena proses penyimpanan pada blok dilakukan per kolom, maka proses enkripsi akan dilakukan dengan cara menaruh kalimat “ EDOHTEM NIOTPYRCNE GNIKCOLB KINKET” pada blok-blok pesan berbaris dan membaca dengan perkolom dan menjadi kalimat “TEKNIK BLOCKING ENCRYPTION METHODE” kembali. Agar rumit dapat menggunakan kalkulasi tertentu untuk mengacak susunan blok seperti pada algoritma FEAL dan ElGamal pada skripsi ini.

b. Teknik permutasi

Teknik permutasi sering juga disebut transposisi. Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu, prinsipnya adalah berlawanan tetap tapi identitasnya yang diacak. Sebelum dilakukakan permutasi, umumnya plaintetxt terlebuh dahulu di bagi menjadi blok-blok dengan panjang yang sama. Untuk contoh diatas, plaintext dibagi menjadi blok terdiri dari 5 karakter, dengan aturan permutasi pada gambar 2.3. berikut:

Gambar 2.3. Teknik Permutasi

(9)

Proses dekripsi dilakukan serupa dengan membagi kedalam 5 blok pula dan membalik permutasinya pada gambar. 2.4. dibawah ini:

K U N C I R A H A S I A

I C N U K I S A H A R A

Gambar 2.4. Teknik Permutasi

c. Teknik Ekspansi

Teknik akan menambahkan beberapa byte kata kedalam plaintext dengan aturan tertentu. Proses penambahan beberapa byte kata ini diharapkan dapat menyembunyikan informasi dapat plaintext. Salah satu contoh penggunaan teknik ini adalah dengan menukar huruf awal dan akhir kata yang diberi awalan “NI” proses enkripsi dengan cara ekspansi terhadap plaintext terjadi sebagai pada gambar 2.5. Berikut ini:

Gambar 2.5. Teknik Ekspansi

Ciphertextnya adalah “EVINGNI EETRCSNI SDROWNI”. Aturan ekspansi dapat dibuat lebih kompleks dan terkadang teknik ekspansi dapat digabungkan dengan teknik lainnya.

(10)

Mengurangi panjang pesan atau jumlah bloknya adalah cara lain untuk menyembunyikan isi pesan. Misalkan untuk plaintext “SECRET WORDS” setiap kata ke dua akan dihilangkan dan di sertakan pada akhir kalimat yang sebelumnya diberi tanda “.”. proses yang terjadi untuk plaintext tersebut adalah pada gambar. 2.6. yaitu:

Aturan penghilangan karakter dan karakter khusus dan berfungsi sebagai pemisah menjadi dasar untuk proses dekripsi ciphertext menjadi plaintext kembali.

Dengan menggunakan kelima menjadi teknik kriptografi diatas, dapat diciptakan teknik kriptografi yang amat banyak walaupun sekilas terlihat sederhanana, kombinasi teknik dasar kriptografi dapat menghasilkan teknik kriptografi turunan yang cukup kompleks, dan beberapa teknik dasar kriptografi masih digunakan dalam kriptografi modern.

2.2Algoritma Hibrida (Hybrid Algorithm)

(11)

menggunakan cipher asimetris dimana kedua belah pihak setuju dengan private key/session key yang akan dipakai. Kemudian session key diunakan dengan teknik simetrik untuk mengengkripsi conversation ataupun tukar-menukar data selanjutnya. Suatu session key hanya dipakai sekali sesi. Untuk sesi selanjutnya session key harus dapat dibuat kembali.

a. Distribusi key

Dalam pendistribusian suatu dapat dialakukan dengan bermacam cara misalnya download, diberikan secara langsung dan sebagainya. Untuk mencegah pemalsuan key oleh pihak ketiga maka diperlukan adanya certificate.

b. Protokol persetujuan key

Atau disebut juga degan protokol pertukaran key adalah suatu sistem dimana dua pihak bernegosiasi untuk menetukan secret value. Contohnya adalah SSL (Secure Socket Layer)

Metode hibrida terdiri atas enkripsi simetris dengan satu kunci (session key) dan ekripsi asimetris dengan sepasang kunci (plaintext/private key).

Lagkah dalam kriptografdi hibrida adalah:

Langkah 1 : Pengirim mengengkripsi teks dengan session key

Langkah 2 : Mengengkripsi dengan session key dengan plaintext key Langkah 3 : menerima men-decrypsession key dengan private key. Langkah 4 : men-decrypt dengan session Key.

2.2.1 Pretty Good privacy (PGP)

(12)

Secara garis besar PGP memiliki tiga fitur utama sebagai berikut:

1. Fitur untuk melakukan enkripsi dan menandatangani dokumen. 2. Fitur untuk dekripsi dan untuk verifikasi tandatangan.

3. Fitur untuk mengelola kunci PGP yang dimiliki oleh pengguna.

Setiap orang yang menggunakan PGP harus menerima kunci plaintext terlebih dahulu, kunci plaintext tersebut didapatkan dengan cara mengirim email kepada rekan yang akan diajak berkomunikasi dengan memanfaatkan program PGP atau dengan terhubung secara langsung ke server yang memegang kunci plaintext.

1. Enkripsi dengan PGP

PGP mengkombinasikan fitur-fitur terbaik yang didapat pada kriptografi konvensional dengan kriptografi kunci plaintext. PGP merupakan system kriptografi hybrid.

Enkripsi pada PGP menggunakan kriptografi kunci dan juga sistem yang menggabungkan kunci plaintext tersebut dengan identitas pengguna. Enkripsi pada PGP mengggunakan kunci asimetri dengan pasangan kunci plaintext dan kunci privat. Untuk melalukan enkripsi kunci rahasia digunakan pada algoritma chiper simetri. Yang pada akhirnya kunci akan digunakan melakukan enkripsi plaintext. Hampir semua kunci kan digunakan untuk kunci publik yang bebas disebarkan di seluruh dunia. Pada gambar 2.7 seperti digambarkan skema dari enkripsi menggunakan PGP:

(13)

2. Dekripsi dengan PGP

Penerima email yang terenkripsi tersebut menggunakan kunci sesi (session key) untuk melakukan dekripsi terhadap email tersebut. Kunci sesi terdapat pada email yang terenkripsi tersebut diperoleh dengan cara mendekripsinya dengan kunci private. Seperti yang dipaparkan pada gambar 2.8 dibawah ini:

Gambar 2.8 Proses dekripsi pada PGP

Strategi yang sama digunakan untuk mendeteksi apakah suatu pesan sudah mengalami perubahan atau belum dan juga menentukan apakah pesan bersasal dari pengirim yang sebenarnya. Pengirim emenggunakan enkripsi PGP untuk memberikan tanda tangan digital (digital signature) pada pesan.

2.3Lehmann Primary Test (Tes Keprimaan Lehmann)

Menurut Schneier (1996), berikut merupakan pengujian apakah p adalah bilangan prima:

1. Pilih sebuah bilangan acak a kurang dari p.

2. Hitung .

3. Jika , maka bukan bilangan prima.

4. Jika , maka kemungkinan bukan

(14)

5. Bila syarat telah terpenuhi maka dilakukan pengujian ulang sebanyak digit bilangan prima yang diambil. Jika pada pengujian terakhir

atau , maka bilangan tersebut pasti bilangan prima.

Demikian sehingga, kemungkinan acak sebagai witness pada bilangan sebagai bilangan tidak prima. Ulangi pengujian t kali. Jika perhitungan menghasilkan 1 atau -1, tetapi tidak selalu menghasilkan -1, maka tingkat kesalahan kemungkinan p sebagai

prima dengan .

Contoh 1: Penulis ingin mengetahui apakah 17 adalah bilangan prima

a 2

p

Sesuai dengan ketentuan diatas dapat diambil kesimpulan bahwa merupakan bilangan prima

Contoh 2: Penulis ingin mengetahui apakah adalah bilangan prima

a 3

p

Untuk hasil diatas tidak sesui dengan ketentuan pada point 2 dan 3 diatas maka dilakukan pengujian sekali lagi dengan mengganti nilai a.

a 2

(15)

Jika pengujian telah dilakukan sebanyak 2 kali dengan mengganti nilai a, namun hasilnya tidak sesuai dengan point 2 dan 3 diatas, maka dipastikan bilangan 27 bukan merupakan bilangan prima.

Contoh 3: Penulis ingin mengetahui apakah adalah bilangan prima

a 2

p

Sesuai dengan ketentuan point 2 dan 3 diatas dapat diambil kesimpulan bahwa 103 merupakan bilangan prima

2.4Algoritma FEAL (F ast Data Encipherment Agorithm)

FEAL merupakan singkatan dari (Fast Data Encipherment Agorithm). FEAL merupakan enkripsi tipe simetris block ciphers. Algoritma ini dibuat dengan tujuan sebagai alternatif dari Data Encryption Standart (DES) dan di desain agar dapat beroperasi dengan lebih cepat pada perangkat lunak. FEAL termasuk kedalam keluarga algoritma yang memainkan peranan penting ke dalam perkembangan dan perbaikan dari berbagai macam teknik kriptanalis. Termasuk kriptanalis linear dan diferensial. Sama halnya seperti DES, FEAL berbasis algoritma Fiestel. FEAL pertama kali di publikasikan pada tahun 1987 oleh akhiro shmizu dan Shozi Miyaguchi dari NTT. Cipher ini rentan terhadap berbagai bentuk kriptanalis, dan telah berperan penting sebagai katalis pada pertemuan kriptanalis diferensial dan linear. (Livia. 2010)

(16)

menggunakan 64-bit kunci rahasia. Sama halnya dengan DES, FEAL menggunakan N putaran cipher Feistel, namun dengan fungsi-f jauh lebih yang sederhana, dan di jumlahkan dengan state awal dan akhir yang melakukan XOR sebagian dari kedua data seperti melakukan subkey langsung dengan sebagian data.

FEAL mempunyai panjang blok 64 bit, dibagi menjadi 32 + 32 blok, dan memiliki iterasi sebanyak 8 ronde seperti pada gambar. 2.9 dibawah ini:

(17)

2.4.1 Sejarah dan penjelasan Algoritma FEAL

Untuk proses enkripsi, pertama kali program akan memerkas terlebih dahulu ada atau tidaknya teks pada kotak plaintext sebagi text input proses enkripsi, jika teks belum dimasukkan maka akan ditampilkan pesan peringatan dan program akan dihentikan. Jika teks sudah dimasukkan maka akan dilakukan pengecekan karakter pada teks masukan tersebut untuk validasi data. Pada fungsi enkrip, kemudian akan di cek jumkah karakter dari plaintextnya. Jika plaintext bukan kelipatan dari blok yang panjangnya 64 bit, maka akan ditambahakan angka “0” sebanyak jumlah karakter yang perlu ditambahkan agar jumlahnya merupakan kelipatan 64 bit dikurangi satu, dan karakter terakhir ditambahkan adalah nilai dari banyaknya karakter ditambahkan.

Berikut akan dijelaskan salah satu algoritma FEAL-N, yaitu FEAL-8,

a. Terdapat fungsi f f(A,Y) yang memetakan pasangan masukan 32 x 16 bit menjadi keluaran 32 bit.

b. Pada fungsi f tersebut terdapat dua byte-oriented data subtitusi S0 dan S1 yang masing-masing digunakan dua kali.

c. Masing-masing data subtitusi tersebut akan memetakan sepasang masukan 8-bit menjadi 8-8-bit keluaran.

d. S0 dan S1 menambahkan 1 bit d e (0,1) menjadi 8-bit argumen x dan y, dengan mengabaikan carry teratas, kemudian hasilnya di geser ke kiri sebanyak 2-bit (ROT2)

S (x, y) = ROT 2(x + y + mod 256)

e. Terdapat pula fungsi key schedule fK( A, B) yang sama seperti fungsi f, fungsi ini memetakan dua 32-bit input menjadi keluaran 32-bit.

f. Pada tabel 2.3 dibawah ini, Ai, Bi, Yi, ti, dan Ui adalah variable berukuran 8-bit

Tabel 2.3 Sistem Kriptografi Algoritma FEAL

U←f A,Y U←fK A, B

(18)

U1 S1(t1, t2) S1(t1, t2⊕B0) U2 S0(t2, U1) S0(t2, U1⊕B1) U0 S0(A0, U1) S0(A0, U1⊕B2) U3 S1(A3, U2) S1(A3, U2⊕B3)

2.4.2 Langkah Enkripsi Algoritma FEAL

Adapun langkah enkripsi pada algoritma FEAL adalah sebagai berikut:

1. Algoritma ini menerima input berupa 64-bit plaintext dan 64-bit kunci

(19)

Algoritma dari proses pembangkit kunci adalah: 1. Pilih dua bilangan prima yang berbeda (p dan q)

2. Hitung

3. Hitung

4. Pilih sebua integer e dengan batas

Dan memenuhi syarat:

Dengan menggunakan algoritma extended euclian dapat diperoleh nilai d, dengan batas dan memenuhi syarat:

ed ≡ 1 (mod Ө)

5. Diperoleh kunci public (e, n) dan kunci private (d, n) 6. Untuk memperoleh nilai signature digunakan persamaan:

S = Hd mod n,

Nilai H diambil dari nilai validasi

7. Dan untuk verifikasi digunakan persamaan V = s e mod n

Contoh Enkripsi 1:

Diketahui public key: (2203, 5959) Private key : (2667, 5959) Nilai signature : 3784

(20)

2.4.3 Proses Validasi (Key Schedule) Algoritma FEAL

Untuk proses validasi digunakan CRC cek. Pada CRC cek, pertama kali dilakukan inisialisasi tabel kemudian iCRC diatur sehingga semua bit-nya bernilai satu. Tabel CRC terdiri dai 256 buah nilai yang tiap nilainya mewakili satu karakter. Nilai ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit. Setiap karakter nilai ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit.

Fungsi key schedule:

1. Fungsi ini menerima masukan 64-bit kunci K = k1 … k64.

(21)

(RS, LS) yang menggantikan masukan plaintext. Namun fungsi key schedule digunakan secara terbalik.

Untuk lebih spesifik, berikut ini adalah urutan key schedule pada saat melakukan dekripsi:

1. Subkey ((K12, K13),(K14,K15)) digunakan untuk XOR initial subkey

2. Sedangkan subkey ((K8,K9),(K10,K11)) digunakan untuk XOR final subkey. 3. Dan putaran kunci digunakan dari i=8 hingga i=1 (tahap 7)

Contoh Dekripsi 1:

Diketahui kunci yang digunakan : elektro Nilai signature yang dimasukkan :

Public key : (2203, 5959) Signature : 3784

Plaintext:

2.5Algoritma ElGamal

Algoritma ElGamal merupakan algoritma kriptografi asimetris. Pertama kali dipublikasikan oleh Taher ElGamal pada tahun 1985. (Sadikin R. 2011)

(22)

Pseudo code algoritma ElGamal (Ghazi M, 2010):

Gambar 2.10 Sistem Kriptografi proses pembentukan kunci, enkripsi dan dekripsi ElGamal

2.5.1 Landasan perhitungan Matematika Algoritma ElGamal

Dalam memahami dan mempelajari sebuah kriptografi, ada baiknya terlebih dahulu memahami konsep-konsep dasar dalam perhitungan matematis yang digunakan dalam suatu algoritma kriptografi tersebut.

2.5.1.1Modulo Eksponesial (menghitung modulo / sisa hasil pembagian)

Modulo eksponensial sering dipakai dalam bidang kriptografi dalam menghitung hasil dari enkripsi maupun dekripsi. Permaslahan pada operasi modulo adalah bagaimana mengitung dengan yang sangat besar. Terdapat beberapa cara untuk menghitung modulo eksponensial, antara lain adalah dengan cara iteratif.

Function mod exp (x, y, n)

1.Pilih P dimana P adalah bilangan prima

2.Pilih a dimana a adalah primitive root P dan a < p

(23)

Contoh : Tentukan hasil dari dengan cara iterasi! Diketahui nilai x = 2, y = 5 dan n = 60

z = 1

i = 1

z = 4 * 1 mod 60 = 4

i = 2

z = 4 * 2 mod 60 = 8

i = 3

z = 4 * 4 mod 60 = 16

i = 4

z = 4 * 8 mod 60 = 32

i = 5

z = 4 * 16 mod 60 = 4

Maka hasil dari adalah 4

Hasil kalkulator

2.5.1.2Algoritma Euclidean

Algoritma Euclidean merupakan algoritma yang digunakan untuk mencari Faktor Persekutuan Terbesar (Great Common Divisor) dari dua bilangan bulat. Algoritma ini berdasarkan pernyataan bahwa ada dua bilangan bulat yang positif yaitu dan

dimana . Tahap perhitungan algoritma ini adalah sebagai berikut:

1. Jika

Jika tidak lanjutkan kelangkah selanjutnya (langkah nomor 2)

2. Bagilah dengan dan misalkan sisanya adalah

3. Ganti nilai dengan nilai dengan nilai , lalu ulang kembali ke langkah awal

(24)

Contoh 1: Tentukan GCD dari 312 dan 720 720 mod 312 = 96

312 mod 96 = 24

96 mod 24 = 0

Jadi GCD dari (312, 720) adalah 96

Contoh 2: Tentukan GCD dari 64 dan 93 93 mod 64 = 29

64 mod 29 = 6 29 mod 6 = 5 6 mod 5 = 1

5 mod 1 = 0

Jadi GCD dari (64, 93) = 1. Apabila GCD dari maka disebut relatif prima

2.5.1.3Inversi Modulo

Jika a dan n relatif prima dan , maka inversi dari a mod n dapat ditemukan. Inversi dari , disebut juga sebagai inversi perkalian, dimana bilangan

demikian sehingga:

Pembuktian dari persamaan diatas dapat dilihat dari defenisi relatif prima diketahu bahwa

Contoh 1: tentukan inversi dari 7 mod 17, dapat dijelaskan dalam tabel 2.4 berikut ini:

(25)

Dari tabel diatas iterasi berhenti ketika dan diperoleh hasil

Contoh 2: Tentukan inversi dari 25 mod 31,

Tabel 2.5 Inversi Modulo dari 25 mod 31

Dari tabel diatas iterasi berhenti ketika dan diperoleh hasil

2.5.1.4Bilangan Prima Aman

Input : Bilangan prima

Output : Pernyataan “bilangan prima aman” atau”bukan bilangan prima aman” Langkah-Langkah:

1. Hitung prima

2. Jika q adalah bilangan prima, maka output “bilangan prima aman” 3. Jika q komposit, maka output “bukan bilangan prima aman”

(26)

Dengan melakukan tes keprimaan diatas , diperoleh bahwa 1289 merupakan bilangan prima. Jadi dapat disimpulkan bahwa 1289 merupakan bilangan prima aman.

2.5.1.5Elemen primitive

Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitive yang merupakan elemen pembangun dari Zp. Untuk mencari dan menentukan elemen

ini digunakan , dimana merupakan bilangan prima. Jika elemen dan , maka merupakan elemen primitive (Jeffrey dkk, 2008).

Dalam Gambar Gambar 2.11 dibawah ini akan dijelaskan elemen primitive dari algoritma ElGamal

Gambar 2.11 Elemen primitive algoritma ElGamal ( Stalling W., 5th, pg. 305, 2011)

Tahap menentukan suatu bilangan merupakan elemen primitive atau tidak dapat dilihat dari beberapa poin dibwah ini:

1. Input bilangan prima aman .

2. Hitung

3. Hitung dan .

4. Jika

5. Jika

6. Jika tidak terpenuhi dua persyaratan diatas maka merupakan elemen

(27)

Contoh 1: Misalkan pada point 2.5.1.4 diatas merupakn bilangan prima

aman. Maka dapat ditentukan bilangan prima = 1289. Untuk

menunjukkan bahwa suatu bilangan bulat a merupakan elemen primitive Z2579*,

harus ditunjukkan bahwa .

Dari tabel 2.5 dibawah ini dapat ditunjukkan untuk perhitungan yaitu sebagai berikut:

Tabel 2.5 Perhitungan bilangan prima aman algoritma ElGamal 2578

4 9 16 25 36 49 64

2578 1 1 1 2578 1 2578

Dalam algoritma ElGamal menggunakan bilangan bulat dalam proses perhitungannya, maka pesan harus di konversi kedalam bilangan bulat. Untuk mengubah pesan menjadi bilangan bulat, digunakan kode ASCII (American Standart for Information Interchange). Kode ASCII merupakan represntasi Numerik dari karakter masing-masing yang digunakan pada komputer, serta mempunyai nilai minimal 0 sampai 255. Oleh karena itu, berdasarkan sistem kriptografi ElGamal diatas harus digunakan bilangan yang lebih besar dari 255. Karakter dalam ASCII berkorespondesnsi 1-1 dengan karakter pesan.

2.5.2 Prinsip Kerja Algoritma ElGamal

2.5.2.1Algoritma Pembangkitan Kunci ElGamal

(28)

Gambar 2.12 Pembangkitan kunci algoritma ElGamal ( Stalling W., 5th, pg. 305, 2011)

1. Pilih sembarang bilang prima p (sebaiknya nilai bilangan prima lebih besar dari 255). Misalkan 271

2. Ambil bilangan

α

sebagai primitive mod p

Misalkan

α

= 107

3. Ambil bilangan acak

α

dengan syarat

α

berada pada rentang

.

Misalkan 96 4. Hitung berapa

Maka hasil perhitungan didapat

a. Kunci public (p, α, x) = (271, 107, 39) b. Kunci private (p,a) = (271, 96)

Contoh: Diketahui bilangan prima aman yaitu p = 2579, elemen primitive a = 2. Dan dipilih a = 765 dan dihitung

Jadi diperoleh kunci public dan kunci private . Kunci public diberikan Alice kepada Bob. Sedangkan kunci private tetap di rahasiakan oleh alice dan tidak di publikasikan.

2.5.3 Enkripsi Algoritma ElGamal

(29)

Gambar 2.13 Proses Enkripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)

Input : Pesan yang akan di enkripsi dan kunci public (p, α, x) Output : Ciphertext (1, 2, .... n)

Langkah enkripsi algoritma ElGamal adalah sebagai berikut:

1. Sebelum melakukan enkripsi harus menerima kunci public (p, α, x)

2. Pesan di potong-potong (blok) kedalam bentuk blok-blok dengan setiap blok adalah karakter suatu pesan.

3. Konversikan masing-masing karakter tersebut kedalam kode ASCII, maka diperoleh plaintext sebanyak n, bilangan, yaitu

4. Diperoleh ciphertext yaitu (C1 = ak mod q; C2 = KM mod q)

Contoh 1: Tentukan output dari “Desember tahun 2015”, dengan diketahui kunci public

(p, α, x) = (2579, 2, 1127), jika diketahui alice mengirim pesan rahasia “Desember tahun 2015” kepada bob. Alice akan mengengripsi kunci public (2579, 2, 1127) yang telah diterima oleh bob sebelumnya. Selanjutnya pesan di potong menjadi beberapa blok dari setiap karakter pesan, dan konversikan dalam bentuk ASCII.

Untuk menyelesaikan permasalahan diatas dapat dijelaskan dengan tabel 2.6 dibawah ini:

Tabel 2.7 Blok Cipher Algoritma ElGamal dalam bentuk ASCII i Karakter Plaintext (Mi) ASCII

1 D 68

2 e 101

(30)

4 e 101 Proses selanjutnya yaitu menentukan bilangan acak rahasia

Kemudian dihitung dan

, . Dapat dijelaskan pada tabel 2.7 dibawah ini:

(31)

8 r 114 202 1177 1832

Berdasarkan tabel diatas diperoleh ciphertext sebagai berikut:

(798, 1955) (1177, 1832) (1710, 724)

Selanjutnya Alice sending chiper message to Bob,

(32)

2.5.4 Dekripsi Algoritma ElGamal

Proses dekripsi dari algoritma ElGamal dapat dijelaskan secara ringkas dalam gambar 2.14 dibawah ini:

Gambar 2.14 Proses Dekripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)

Langkah dekripsi algoritma ElGamal adalah sebagai berikut:

Input : Ciphertext( , ) γ δ i i , i n =1, 2,..., , kunci publik p dan kunci rahasia a.

Output : Pesan asli. (plaintext)

Langkah dekripsi algoritma ElGamal adalah sebagai berikut: 1. Untuk i dari 1 sampai dengan n kerjakan

1.1Hitung

1.2Hitung

2. Diperoleh plaintext

3. Konversikan masing-masing bilangan kedalam karakter

sesuai dengan kode ASCII

Contoh : pada contoh kasus dalam algoritma Enkripsi bahwa Alice telah mengirimkan ciphertext kepada Bob, Ciphertextnya yang diperoleh adalah:

(798, 1955) (1177, 1832) (1710, 724)

(1192, 2318) (1127, 2240) (1019, 2045)

(2264, 2179) (2373, 1681) (1891, 111)

(33)

(2050, 187) (227, 799) (739, 868)

(2569, 115) (1694, 2206)

(1852, 1840) (99, 2156)

Bob mempunyai kunci public p = 2579 dan kunci rahasia, 765. Selanjutnya maka dilakukan perhitungan pada tabel 2.7 sebagai berikut:

(34)

Gambar

Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem
Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem
Tabel 2.2 Teknik Blocking
Gambar 2.3. Teknik Permutasi
+7

Referensi

Dokumen terkait

(1) Pejabat Bea dan Cukai segera memberitahukan secara tertulis kepada pemilik Barang yang Dinyatakan Tidak Dikuasai sebagaimana dimaksud dalam Pasal 2, bahwa barang tersebut

[r]

Aktiviti/Laporan Aktiviti Pelajar dan Borang Tuntutan Kewangan perlu di hantar kepada Pegawai Penyelaras yang

Dari diagram aktivitas belajar siklus I dan siklus II dapat dijelaskan mengenai peningkatan aktivitas belajar peserta didik, perolehan data pada siklus I indikator pertama

Narasumber yang dipilih penulis adalah dua orang perawat yang telah bekerja lebih dari lima tahun di Panti Lansia Santa Anna dan dua orang lansia yang tinggal di Panti Lansia Santa

Tujuan dari paper ini adalah untuk memperlihatkan bagaimana pemimpin NU, Abdurrahman Wahid (selanjutnya ditulis Gus Dur), menggunakan wacana dialog antaragama sebagai: pertama

Peran dan Fungsi Penilai Kerugian (Loss Adjuster) Dalam Penyelesaian Klaim Asuransi Kerugian Berdasarkan Undang-Undang Nomor 40 Tahun 2014 Tentang Perasuransian. Fakultas Hukum

Dari sini, tentu saja makna dan kapasitas syakur hamba (manusia) berbeda dengan sifat yang disandang Allah. Manusia yang bersyukur kepada manusia/makhluk lain adalah ia yang