• Tidak ada hasil yang ditemukan

Analisis Dan Implementasi Kriptografi Elgamal Dan Algoritma LUHN Untuk Keamanan Data Pada Smart Card

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis Dan Implementasi Kriptografi Elgamal Dan Algoritma LUHN Untuk Keamanan Data Pada Smart Card"

Copied!
133
0
0

Teks penuh

(1)

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia

MOCHAMAD JULIANTO SUKARNO

10106247

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

BANDUNG

(2)

i

ANALISIS DAN IMPLEMENTASI

KRIPTOGRAFI ELGAMAL DAN ALGORITMA LUHN

UNTUK KEAMANAN DATA PADA SMART CARD

Oleh

MOCHAMAD JULIANTO SUKARNO 10106247

Kejahatan di dunia teknologi informasi semakin merajalela!. Hal – hal yang tabu dibicarakan oleh masyarakat awam kini menjadi makanan sehari-hari bagi orang – orang yang bahkan baru mengenal dunia teknologi sekalipun. Perpaduan kecanggihan dan kemudahan penggunaan teknologi diduga menjadi penyebab utama kejahatan dunia teknologi menjadi berkembang. ATM Skimming!,

merupakan istilah yang mungkin tidak asing lagi ditelinga jutaan warga indonesia. Istilah tersebut merupakan istilah untuk kejahatan pencurian data pada smart card

yang pelakunya bahkan tidak perlu memahami sistem bank, mesin ATM, keamanan yang diterapkan pada kartu ATM dan sebagainya.

Kriptografi ElGamal dan algoritma Luhn merupakan perpaduan teknik keamanan yang bukan hanya sekedar melakukan penyandian, tetapi juga melakukan pengecekan terhadap kartu melalui algoritma Luhn. Sehingga sistem dapat mengetahui apakah kartu tersebut legal atau ilegal bahkan tanpa menggunakan database sekalipun. Kehandalan kriptografi ElGamal sebagai kriptografi kunci – publik sangat cocok digunakan pada sistem yang memliki keterbatasan ruang penyimpanan, karena walapun memiliki bit yang lebih kecil dari kriptografi RSA, namun memliki kehandalan yang sama.

Kedua teknik keamanan data ini dapat menjadi solusi yang tepat untuk kejahatan pada sistem berbasis smart card.

(3)

ii

ANALYSIS AND IMPLEMENTATION OF

ELGAMAL CRYPTOGRAPHY AND LUHN ALGORITHMS FOR DATA SECURITY ON SMART CARDS

by

MOCHAMAD JULIANTO SUKARNO 10106247

Evil in the world of information technology increasingly rampant!. Thing - a taboo subject discussed by the general public has now become everyday food for people who are new to the world even though technology. Blend of sophistication and ease of use of the technology thought to be a major cause of crime to be developing the technology world. ATM Skimming!, Is a term that may not be familiar to millions of citizens were in Indonesia. The term is a term for the crime of theft of data on the smart card which the perpetrator does not even need to understand the system of banks, ATM machines, security is implemented on an ATM card and so forth.

Luhn algorithm ElGamal cryptography and security is a fusion technique that not only do the encoding, but also perform checks on the card through the Luhn algorithm. So the system can determine if the card is legal or illegal even without the use of the database though. ElGamal cryptography reliability as public key cryptography is very suitable for use on systems that possess limited storage space, because Although a bit smaller than RSA cryptography, yet possess the same reliability.

Both these data security techniques can be the perfect solution to crime in smart card-based systems.

(4)

v

LEMBAR JUDUL

LEMBAR PENGESAHAN

ABSTRAK i

ABSTRACK ii

KATA PENGANTAR iii

DAFTAR ISI v

DAFTAR TABEL xi

DAFTAR GAMBAR xii

DAFTAR SIMBOL xiv

DAFTAR LAMPIRAN xvii

BAB I PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Identifikasi Masalah 2

1.3 Maksud dan Tujuan 3

1.4 Batasan Masalah 3

1.5 Metodologi Penelitian 4

1.6 Sistematika Penulisan 5

BAB II TINJAUAN PUSTAKA 7

2.1 Algoritma 7

2.2 Kriptografi 7

2.3 Algoritma kriptografi 8

(5)

vi

2.4.3 Kompleksitas serangan 13

2.4.3.1 Kompleksitas data 13

2.4.3.2 Kompleksitas waktu 13

2.4.3.3 Kompleksitas ruang memory 13

2.4.4 Jenis – jenis serangan 13

2.4.4.1 Berdasarkan keterlibatan penyerang dalam

komunikasi 13

2.4.4.2 Berdasarkan banyaknya inforamsi yang

diketahui oleh kriptanalis 15

2.4.4.3 Berdasarkan teknik yang digunakan dalam

menemukan kunci 18

2.5 Kriptografi kunci – publik 19

2.6 Konsep kriptografi kunci – publik 20

2.6.1 Kelebihan kriptografi kunci-publik (asimetri) 23

2.6.2 Kekurangan kriptografi kunci-publik (asimetri) 24

2.7 Kriptografi ElGamal 24

2.8 Proses pembentukan kunci 25

2.9 Enkripsi 27

2.9.1 Algoritma enkripsi 28

2.10 Dekripsi 28

2.10.1 Algoritma dekripsi 29

(6)

vii

Exponentiation 32

2.12.2 Algoritma Fast Exponentiation 33

2.13 Bilangan acak semu PRNG (pseudorandom number generator) 34

2.13.1 Perancangan CSPRNG berbasis teori bilangan 35

2.13.2 Algoritma CSPRNG berbasis RSA 35

2.14 Pembagi persekutuan terbesar 36

2.14.1 Algoritma Euclide 37

2.15 Luhn 37

2.15.1 Analisis algoritma Luhn 38

2.15.2 Langkah pembuatan digit Luhn 38

2.15.3 Langkah pengecekan digit Luhn 39

BAB III ANALISIS DAN PERANCANGAN 40

3.1 Analisis sistem 40

3.1.1 Analisis kebutuhan non-fungsional 40

3.1.1.1 Analisis kebutuhan perangkat keras 41

3.1.1.2 Analisis kebutuhan perangkat lunak 42

3.1.2 Analisis kebutuhan fungsional 42

3.1.2.1 Use Case Diagram 42

3.2.2.1.1 Autentikasi admin 43

3.2.2.1.2 Koneksi kartu 44

3.2.2.1.3 Diskoneksi kartu 45

(7)

viii

3.2.2.1.7 Cek sekurity kartu 49

3.2.2.1.8 Securing card 50

3.1.2.2 Sequence Diagram 51

3.1.2.2.1 Autentikasi admin 51

3.1.2.2.2 Koneksi kartu 52

3.1.2.2.3 Diskoneksi kartu 54

3.1.2.2.4 Masukan data baru 54

3.1.2.2.5 Baca data 56

3.1.2.2.6 Gandakan kartu 57

3.1.2.2.7 Cek security kartu 59

3.1.2.2.8 Securing card 60

3.1.2.3 Class Diagram 61

3.1.2.4 Spesifikasi kelas 62

3.1.2.4.1 Kelas ReaderKartu 62

3.1.2.4.2 Kelas OperasiFile 63

3.1.2.4.3 Kelas Kartu 65

3.1.2.4.4 Kelas FastExponentiaion 67

3.1.2.4.5 Kelas ElGamal 68

3.1.2.4.6 Kelas Enkripsi 70

3.1.2.4.7 Kelas Dekripsi 71

3.1.2.4.8 Kelas CSPRNG RSA 72

(8)

ix

3.2.1 Autentikasi 78

3.2.2 Menu Utama 79

3.2.3 Masukan Data Baru 80

3.2.4 Cek Security Kartu 82

3.2.5 Gandakan Kartu 84

3.2.6 Tentang 85

BAB VI IMPLEMENTASI DAN PENGUJIAN 86

4.1 Implementasi sistem 86

4.1.1 Lingkungan implementasi 86

4.1.1.1 Perangkat keras yang digunakan 86

4.1.1.2 Perangkat lunak yang digunakan 87

4.1.2 Batasan implemantasi 87

4.1.3 Implemenatsi program 88

4.1.3.1 Implementasi kriptografi ElGamal 88

4.1.3.2 Implementasi sistem 89

4.1.3.2.1 Antarmuka autentikasi 89

4.1.3.2.2 Antarmuka menu utama 90

4.1.3.2.3 Masukan data baru 92

4.1.3.2.4 Securing Card 97

4.1.3.2.5 Gandakan kartu 99

4.1.3.2.6 Cek security kartu 101

(9)

x

4.2.2 Rencana pengujian 105

4.2.3 Pengujian 106

4.2.3.1 Pengujian Autentikasi 106

4.2.3.2 Pengujian Masukan Data Baru 107

4.2.3.3 Pengujian Cek Security Kartu 108

4.2.3.4 Pengujian Gandakan Kartu 108

4.2.4 Pengujian menguunakan Software Scripting Tool 109

4.2.5 Kesimpulan Hasil Pengujian 113

BAB V KESIMPULAN DAN SARAN 114

5.1 Kesimpulan 114

5.2 Saran 114

(10)

xii

Gambar 2.1 Skema kriptografi Simetri 10

Gambar 2.2 Skema kriptografi asimetri 10

Gambar 2.3 Man-in-the-middle attack 15

Gambar 2.4 Chosen-plaintext attack 17

Gambar 2.5 Enkripsi/dekripsi dengan kriptografi kunci-publik 21

Gambar 2.6 Flowchart proses enkripsi dan dekripsi 31

Gambar 2.7 Siklus generator bilangan acak semu 34

Gambar 3.1 Use Case Diagram 43

Gambar 3.2 Sequence diagram Autentikasi Admin 52

Gambar 3.3 Diagram sequence Koneksi Kartu 53

Gambar 3.4 Sequence Diagram Diskoneksi kartu 54

Gambar 3.5 Sequence diagram Masukan Data Baru 55

Gambar 3.6 Sequence Diagram Baca Data 57

Gambar 3.7 Sequence diagram Gandakan Kartu 58

Gambar 3.8 Sequence diagram Cek Security Kartu 59

Gambar 3.9 Sequence Diagram Securing Card 60

Gambar 3.10 Class Diagram 61

Gambar 3.11 Perancangan Arsitektur Menu 76

(11)

xiii

Gambar 3.15 Antarmuka Cek Security Kartu 82

Gambar 3.16 Antarmuka Gandakan Kartu 84

Gambar 3.17 Atarmuka Tentang 85

Gambar 4.1 Antarmuka dan proses autentikasi 90

Gambar 4.2 Antarmuka Form Utama 91

Gambar 4.3 Tombol Menu Utama Diklik 92

Gambar 4.4 Antarmuka dan aksi Masukan Data Baru 94

Gambar 4.5 Proses dan aksi Baca Data 96

Gambar 4.6 Antarmuka dan aksi securing card 98

Gambar 4.7 Antarmuka dan Aksi Gandakan Kartu 101

Gambar 4.8 Antarmuka dan Aksi cek security kartu (Card Secure) 103

Gambar 4.9 Tampilan cek security kartu (Card Not Secure) 103

Gambar 4.10 Tampilan Form Tentang 104

Gambar 4.11 Pengujian data NIM (tanpa enkripsi) 110

Gambar 4.12 Data hasil konversi(tanpa enkripsi) 111

Gambar 4.13 Pengujian data NIM (hasil enkripsi) 111

(12)

xi

Tabel 2.1 Perhitungan 2380 mod 1234 33

Tabel 3.1 Spesifikasi Perangkat Keras 41

Tabel 3.2 Spesifikasi Perangkat Lunak 42

Tabel 3.3 Spesifikasi Kelas 62

Tabel 3.4 Keterangan Autentikasi 78

Tabel 3.5 Keterangan Menu Utama 79

Tabel 3.6 Keterangan Masukan Data Baru 81

Tabel 3.7 Keterangan Cek Security Kartu 83

Tabel 3.8 Keterangan Gandakan Kartu 84

Tabel 3.9 Keterangan Tentang 85

Tabel 4.1 Spesifikasi perangkat keras yang digunakan 86

Tabel 4.2 Spesifikasi perangkat lunak yang digunakan 87

Tabel 4.3 Implementasi Kelas – kelas 88

Tabel 4.4 Rencana pengujian aplikasi sistem keamanan pada smart card 105

Tabel 4.5 Pengujian terhadap butiruji Autentikasi 106

Tabel 4.6 Pengujian terhadap butiruji Masukan Data Baru 107

Tabel 4.7 Pengujian terhadap butiruji Cek Security 108

Tabel 4.8 Pengujian terhadap butiruji Gandakan Kartu 109

(13)

xiv Diagram Use-Case

Actor:

Actor adalah peran dari seseorang atau sistem lain yang bertukar informasi dengan sistem lainnya.

Use Case:

Use Case adalah urutan dari sebuah transaksi dalam sistem yang berfungsi untuk mendapat measurable value(nilai yang terukur) dari actor sistem.

Association:

Association adalah hubungan antara actor dengan use case untuk memperlihatkan instance yang berinteraksi atau dengan kata lain memperlihatkan komunikasi antara actor dengan use case.

Uses / Include Relationship

Uses / Include Relationship memperlihatkan hubungan antar use case, dimana use case yang satu menggunakan / digunakan oleh use case yang lainnya.

Extend Relationship:

Extend Relationship memperlihatkan hubungan antara use case, dimana use case yang satu merupakan inheritance dari use case

(14)

xv Aktor

Actor adalah peran dari seseorang atau sistem lain yang bertukar informasi dengan sistem lainnya.

Object Lifeline:

Object Lifeline menunjukkan keberadaan dari sebuah objek terhadap waktu. Yaitu objek dibuat atau dihilangkan selama suatu periode waktu diagram ditampilkan, kemudian lifeline

berhenti atau mulai pada titik yang tepat.

Activation:

Activation menampilkan periode waktu selama sebuah objek atau aktor melakukan aksi. Dalam object lifeline dalam bentuk kotak persegi panjang, bagian atas dari kotak merupakan inisialisasi waktu dimulainya suatu kegiatan dan yang dibawah merupakan akhir dari waktu.

Message:

(15)

xvi Class:

Class digunakan untuk mendeklarasikan suatu modul class yang terdiri dari nama class, variable, dan atribut method.

Generalization:

Generalization, digunakan untuk mendeklarasikan penggabungan dari inheritance yang ada.

Association:

(16)

xvii

Lampiran A Tampilan Antarmuka ………..………... A-1

(17)

116

[ 1 ] Rinaldi Munir, Kriptografi, Informatika, 2007.

[ 2 ] Zhiqun Chen, Java Card Technology for Smart Card, Sun Microsystem,

2000.

[ 3 ] Mike Henry, Smart Card Security and Application, artech house.Inc, 1997 [ 4 ] http://www.csharp-home.com/articles/183/, Senin 5 April 2010 13.50

[ 5 ] http://en.wikipedia.org/wiki/Binary_GCD_algorithm, Senin 5 April 2010

13.50

[ 6 ] http://www.mathnet.or.kr/mathnet/kms_tex/982864.pdf, Senin 5 April

2010 13.50

[ 7 ] http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_nu

mber_generator, Senin 5 April 2010 13.50

[ 8 ]

http://moais.imag.fr/membres/jean-ouis.roch/perso_html/COURS/KIOSK-SCCI-SecurityModels/slides/lecture-random.pdf, Senin 5 April 2010 13.50

[ 9 ] http://en.wikipedia.org/wiki/CryptGenRandom, Senin 5 April 2010 13.50

[ 10 ] http://id.wikipedia.org/wiki/Least_significant_bit, Senin 5 April 2010

13.50

[ 11 ] http://en.wikipedia.org/wiki/Luhn_algorithm, Selasa 6 April 2010 19.42

[ 12 ] http://www.math.uic.edu/~leon/cs-mcs401-s08/handouts/fastexp.pdf, Rabu

(18)

1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Semakin suatu informasi mudah didapat dan digunakan maka

teknologinya pun akan semakin canggih. Akibat semakin canggih sistem yang

digunakan maka tidak lepas dari berbagai macam resiko. Kehandalan sistem

dalam berbagi pakai dan kemudahan dalam penyajian informasi tidak dapat

dihindari. Termasuk penyajian informasi yang bersifat pribadi, rahasia, internal

dan sebagainya.

Salah satu sistem yang paling rentan terhadap pencurian informasi adalah

teknologi smart card yaitu media pertukaran data pada sistem berbasis kartu. Teknologi smart card bukanlah hal yang baru, penggunaan smart card sudah umum kita jumpai seperti pada kartu kredit, bidang pendidikan seperti kartu

siswa/mahasiswa, perhubungan, industri jasa hingga digunakan sebagai kartu

identitas multifungsi seorang karyawan pada suatu perusahaan. Oleh karena itu,

dibutuhkan keamanan data yang handal ketika terjadinya pertukaran data dalam

sistem.

Pembobolan rekening bank menghiasi berita baru-baru ini. Selain dengan

cara penipuan undian lewat sms, transaksi kartu kredit, ATM Skimming juga perlu diwaspadai. Istilah ini digunakan untuk kejahatan dengan modus pencurian

(19)

Lalu bagaimana solusi agar sistem mampu menangani pembatasan akses

terhadap informasi yang bersifat pribadi. Dari itu, maka dibuatlah suatu teknik

penyandian yang disebut kriptografi untuk mengamankan data yang bersifat

private.

Dalam pengiriman berkas dapat dimanipulasi isinya oleh pihak ketiga

sehingga pesan dengan makna yang berbeda akan diterima penerima dan tujuan

pengiriman tidak tercapai. Oleh karena itu, dibutuhkan sebuah mekanisme untuk

menjamin bahwa pesan yang diterima penerima, berisi informasi yang

dikirimkan oleh pengirim.

Namun masalah lain muncul ketika data hasil penyandian (kriptografi)

digandakan ( chosen-chipertext attack ). Seorang pembajak (hacker) tidak perlu mengembalikan data ke dalam plainteks, dia cukup menggandakan data hasil

penyandian dari smart card. Lalu bagaimana jaminan keamanan dari kriptografi. Berdasarkan hal tersebut, maka dilakukan analisis kriptografi atau teknik

penyandian yang dapat membantu mengamankan data juga menjamin informasi

yang diterima sesuai dengan informasi yang dikirimkan termasuk pengecekan

legalitas ketika suatu data pada smart card berhasil digandakan.

1.2 Identifikasi Masalah

Dari uraian latar belakang diatas, maka hal yang dapat diidentifikasi

(20)

1.3 Maksud dan Tujuan

3.1 Maksud

Maksud dari penelitian ini adalah membuat sistem penyandian data

dengan teknik kriptografi ElGamal dan algoritma Luhn yang digunakan

untuk pencegahan penggandaan informasi pada smart card.

3.2 Tujuan

Adapun tujuan yang ingin dicapai setelah analisis dan implementasi

penelitian ini adalah :

1. Mengamankan data yang tersimpan pada smart card.

2. Memberikan solusi penanganan chosen-chipertext attack pada

smart card.

1.4 Batasan Masalah

Tentunya ruang lingkup yang dibahas akan sangat luas dan banyak sekali

masalah yang akan muncul. Namun penulis membatasi permasalahanya sebagai

berikut :

1. Algoritma penyandian yang digunakan adalah algoritma ElGamal.

2. Algoritma validasi menggunakan Luhn.

3. Smart card yang digunakan sebagai media implementasi (read/write)

adalah tipe sistem operasi (ACOS).

4. Data yang akan disandikan/dienkripsi adalah data yang terlibat dalam

validasi, diantaranya NIM, No Rekening, PIN, CSPRNG RSA dan

LUHN.

5. Implementasi dari hasil analisis diterapkan pada suatu program agar

(21)

6. Program yang dibuat tidak menggunakan database dan merupakan fase

dimana data pada kartu pertama kali dibuat.

1.5 Metodologi Penelitian

Metodologi penelitian yang digunakan menggunakan metode analisis

deskriptif yaitu suatu metode yang bertujuan untuk mendapatkan gambaran yang

jelas tentang hal-hal yang diperlukan, melalui tahapan sebagai berikut :

1.5.1 Pengumpulan Data

Pada tahap ini prosedur yang dilakukan adalah mencari sebanyak

mungkin data dari berbagai sumber seperti internet, buku, jurnal, artikel

blog, catatan kuliah perusahaan yang akan dijadikan sebagai informasi

sebagai landasan teori. Diantaranya informasi yang berhubungan dengan

permasalahan yang akan dibahas yang dapat membantu dalam

menganalisis logaritma diskrit dan algoritma cek digit suatu angka

berdasarkan digit-digit yang membentuknya.

1.5.2 Pengembangan Perangkat Lunak

Model yang digunakan dalam pembuatan perangkat lunak adalah

model Waterfall, yang terdiri dari beberapa proses, yaitu : 1. Definisi kebutuhan

Menetapkan elemen-elemen yang dibutuhkan dalam pembuatan

perangkat lunak.

2. Analisis dan perancangan

Analisis terhadap perangkat lunak yang akan dibangun dan

menentukan arsitektur tampilan akan digunakan pada program

(22)

3. Kode

Tahap penerjemahan data atau pemecahan masalah yang telah

dirancang kedalam bahasa pemrograman tertentu.

4. Pengujian

Dilakukan pada perangkat lunak yang dibangun. Apakah telah

sesuai dengan hasil yang diharapkan.

1.6 Sistematika Penulisan

Agar mencapai hasil yang baik dan terarah serta tidak menyimpang dari

permasalahan yang ada maka dibuatlah sistematika penelitian yang diuraikan

sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi latar belakang, perumusan masalah, maksud dan tujuan, batasan

masalah, metodologi penelitian, sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini berisi teori-teori pendukung dalam menganalisis logaritma diskrit

yang digunakan oleh elgamal dalam melakukan penyandian, algoritma cek digit

yang digunakan untuk mengecek validitas suatu angka berdasarkan digit-digit

yang membentuknya serta wawasan-wawasan mengenai kriptografi dan contoh

(23)

BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab ini menjelaskan analisis terhadap seluruh spesifikasi aplikasi yang akan

dibangun baik dilihat dari kekurangan dan kelebihannya. Juga perancangan

program yang dibangun.

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini membahas bagaimana pengimplementasian dan pengujian terhadap

program. Untuk melihat apakah sistem yang dibangun sudah sesuai dengan hasil

yang diharapkan atau belum.

BAB V KESIMPULAN DAN SARAN

Pada bab ini membahas tentang kesimpulan dari hasil pembahasan serta

(24)

7

TINJAUAN PUSTAKA

2.1 Algoritma

Defenisi Algoritma, “Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis”. Sedangkan menurut

Kamus Besar Bahasa Indonesia, terbitan Balai Pustaka, 1988. “Algoritma adalah

urutan logis pengambilan putusan untuk pemecahan masalah”.

2.2 Kriptografi (Cryptography)

Kriptografi berasal dari Bahasa Yunani : “cryptos” artinya “secret” (rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi

berarti “secret writing” (tulisan rahasia). Definisi yang dipakai di dalam

buku-buku yang lama (sebelum 1980-an) menyatakan bahwa kriptografi adalah ilmu

dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikanya ke dalam

bentuk yang tidak dapat dimengerti lagi maknanya. Saat ini kriptografi lebih dari

sekedar privacy, tetapi juga untuk tujuan confidelity, data integrity, autentication

dan non-repudation.

1. Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim,

pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan

dengan cara membuat suatu algoritma matematis yang mampu mengubah

(25)

2. Data integrity (keutuhan data) yaitu layanan yang mampu

mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau

penambahan) data yang tidak sah (oleh pihak lain).

3. Authentication (keotentikan) yaitu layanan yang berhubungan

dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam

pengiriman data maupun otentikasi keaslian data/informasi.

4. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya

(menyangkal bahwa pesan tersebut berasal darinya).

Dalam penelitian ini definisi yang digunakan sebagai pengertian

kriptografi :

Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan

(cryptography is the art and science of keeping message secure (SCH96))

Kata “seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada

masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang

unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda-beda

pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan

mempunai nilai estetika tersendiri sehingga kriptografi berkembang menjadi

sebuah seni merahasiakan pesan(kata “graphy” di dalam “cryptography” itu

sendiri sudah menyiratkan sebuah seni).

2.3 Algoritma kriptografi

Algoritma kriptografi atau sering disebut dengan cipher adalah suatu fungsi matematis yang digunakan untuk melakukan enkripsi dan dekripsi

(26)

Ada dua macam algoritma kriptografi, yaitu algoritma simetris (symmetric algorithms) dan algoritma asimetris (asymmetric algorithms).

Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya

pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip

yang mendasari kriptografi yakni:

Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada

kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang

digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui

isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern

lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma

tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke

kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya.

Berikut adalah terminologi yang digunakan dalam bidang kriptografi :

1. Plaintext adalah pesan yang hendak dikirimkan (berisi data asli).

2. Ciphertext adalah pesan ter-enkrip (tersandi) yang merupakan hasil

enkripsi.

3. Enkripsi adalah proses pengubahan plaintext menjadi ciphertext.

4. Dekripsi adalah kebalikan dari enkripsi yakni mengubah ciphertext

menjadi plaintext, sehingga berupa data awal/asli.

5. Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam

proses enkripsi dan dekripsi.

Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi.

Enkripsi adalah proses dimana informasi/data yang hendak dikirim diubah

(27)

menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu

mengubah kembali bentuk tersamar tersebut menjadi informasi awal.

Algoritma kriptografi berdasarkan jenis kunci yang digunakan dapat

dibedakan menjadi dua jenis yaitu :

Gambar 2.1 Skema kriptografi Simetri

a. Algoritma simetri

Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi adalah

kunci yang sama(K).

Gambar 2.2 Skema kriptografi asimetri

b. Algoritma asimetris

Plaintext, P Plaintext, P

Chipertext, C Enkripsi

Ek (P) = C

Dekripsi

Dk (C) = P

Plaintext, P Plaintext, P

Chipertext, C Enkripsi

Ek (P) = C

Dekripsi

(28)

Dimana kunci yang digunakan untuk proses enkripsi (K1) atau sering

disebut dengan public key dan dekripsi (K2) atau sering disebut dengan private key menggunakan kunci yang berbeda.

Sedangkan berdasarkan besar data yang diolah dalam satu kali proses,

maka algoritma kriptografi dapat dibedakan menjadi dua jenis yaitu :

a. Algoritma block cipher

Informasi/data yang hendak dikirim dalam bentuk blok-blok besar (misal

64-bit) dimana blok-blok ini dioperasikan dengan fungsi enkripsi yang sama dan

akan menghasilkan informasi rahasia dalam blok-blok yang berukuran sama.

b. Algoritma stream cipher

Informasi/data yang hendak dikirim dioperasikan dalam bentuk blok-blok

yang lebih kecil (byte atau bit), biasanya satu karakter persatuan waktu proses, menggunakan tranformasi enkripsi yang berubah setiap waktu.

2.4 Serangan terhadap kriptografi

2.4.1 Kriptanalisis

Kriptanalisis bertujuan untuk memecahkan chiperteks menjadi plainteks

semula tanpa memiliki akses ke kunci yang digunakan. Kriptanalisis berusaha

menemukan kelemahan dari sistem kriptografi yang pada akhirnya mengarah

untuk menemukan kunci dan mengungkap plainteks.

Dalam membuat serangan terhadap kriptografi, kita selalu

mengasumsikan kriptanalisis mengetahui algoritma kriptografi yang digunakan,

sehingga satu-satunya keamanan sistem kriptografi terletak sepenuhnya pada

kunci. Hal ini didasarkan pada prinsip kerckhoff(1883) yang berbunyi :

(29)

2.4.2 Keamanan algoritma kriptografi

Lars Knudsen mengelompokan hasil kriptanalisis ke dalam beberapa

kategori berdasarkan jumlah dan kualitas informasi yang berhasil ditemukan.

1. Pemecahan total (total berak). Kriptanalis menemukan kunci K

sedemikian sehingga dekripsi Dk (C) = P.

2. Deduksi (penarikan kesimpulan) global (global deduction) kriptanalis

menemukan algoritma alternatif, A, yang ekivalen dengan Dk(C)

tetapi tidak mengetahui kunci K.

3. Deduksi lokal (instace/local deduction). Kriptanalis menemukan

plainteks yang disadap.

4. Deduksi informasi (information deduction). Kriptanalis menemukan

bebarapa inforamsi perihal kunci atau plainteks. Misalnya kriptanalis

mengetahui beberapa bit kunci, kriptanalis mengetahui bahasa yang

digunakan untuk menulis plainteks, kriptanalis mengetahui format

plainteks dan sebagainya.

Sebuah algoritma kriptografi dikatakan aman mutlak tanpa syarat

(uncoditionally secure) bila cipherteks yang dihasilkan oleh algoritma tersebut tidak mengandung cukup informasi untuk menentukan plainteksnya.

Sebaliknya, kriptografi dikatakan aman secara komputasi

(computationally secure) bila memenuhi dua kriteria sebagai berikut :

1. Biaya untuk memecahkan cipherteks melampaui nilai inforamsi yang

terkandung di dalam cipherteks tersebut.

2. Waktu yang diperlukan untuk memecahkan cipherteks melampaui

(30)

2.4.3 Kompleksitas serangan

Kompleksitas serangan dapat diukur dengan beberapa cara, antara lain

kompleksitas data, kompleksitas waktu dan kompleksitas memori.

2.4.3.1 Kompleksitas data (data complexity)

Jumlah data (plainteks dan cipherteks) yang dibutuhkan sebagai

masukan untuk serangan. Semakin banyak data yang dibutuhkan untuk

melakukan serangan, semakin kompleks serangan tersebut yang berarti

semakin bagus sistem kriptografi tersebut.

2.4.3.2 Kompleksitas waktu (time complexity)

Waktu yang dibutuhkan untuk melakukan serangan. Semakin lama

waktu yang dibutuhkan untuk melakukan serangan, berarti semakin bagus

sistem kriptografi tersebut.

2.4.3.3 Kompleksitas ruang memori (space/storage complexity)

Jumlah memori yang dibutuhkan untuk melakukan serangan.

Semakin banyak memori yang dibutuhkan untuk melakukan serangan,

berarti semakin bagus sistem kriptografi tersebut.

2.4.4 Jenis-jenis serangan

Serangan (atau “serangan kriptanalsisi”) terhadap sistem kriptografi

dapat dikelompokan dengan beberapa cara.

2.4.4.1 Berdasarkan keterlibatan penyerang dalam komunikasi,

serangan dapat dibagi atas dua macam, yaitu serangan pasif dan

(31)

1. Serangan pasif (passive attack)

Pada jenis ini, penyerang tidak terlibat dalam komunikasiantara

pengirim dan penerima, namun penyerang menyadap semua pertukaran

pesan anteara kedua entitas tersebut. Tujuanya adalah untuk mendapatkan

sebanyak mungkin inforamsi yang digunakan untuk kriptanalisis.

Beberapa metode penyadapan data antara lain :

1.1 wiretrapping : penyadap mencegat data yang ditansmisikan pada saluran kabel komunikasi dengan menggunakan sambungan perangkat

keras,

1.2 electromagnetic eavesdripping : penyadap mencegat data yang ditransmisikan melalui saluran wireless, misalnya radio dan microwave,

1.3 acoustic eavesdropping : menangkap gelombang suarayang dihasilkan oleh suara manusia.

2. Serangan akrif(active attack)

Pada jenis serangan ini, penyerang mengintervensi komunikasi dan

ikut mempengaruhi sistem untuk keuntungan dirinya. Misalnya penyerang

mengubah aliran pesan seperti menghapus sebagian cipherteks, mengubah

(32)

Gambar 2.3 Man-in-the-middle attack

Serangan yang termasuk serangan aktif adalah man-in-the-middle attack. Pada serangan ini, penyerang mengintersepsi komunikasi antara

dua pihak yang berkomunikasi kemudian “menyerupai” salah satu pihak

dengan cara bersikap seolah-olah ia adalah salah satu pihak yang

berkomunikasi (pihak lainya tidak menyadari kalau ia berkomunikasi

dengan pihak yang salah). Tujuan dari serangan ini adalah untuk

mendapatkan inforamasi berharga seperti kunci atau nilai rahasia lainya.

Caranya, penyerang memutus komunikasi antara dua pihak lalu

menempatkan dirinya di antara keduanya.

2.4.4.2 Berdasarkan banyaknya inforamsi yang diketahui oleh

kriptanalis, maka serangan dapat dikelompokan menjadi 5 jenis :

(33)

1. Chipertext-only attack

Kriptanalisis menemukan plainteks sebanyak mungkin dari cipherteks

atau menemukan kunci yang digunakan untuk mendekripsi. Secara formal

hal ini diformulasikan sebagai berikut :

Diberikan : C1 = Ek(P1, C2 = Ek(P2),...,Ci = Ek(Pi)

Deduksi : P1, P2,....,Pi atau k untuk mendapatkan Pi+1 dari Ci+1

Untuk mendeduksi plainteks dari cipherteks, kriptanalis mungkin

menggunakan beberapa cara, seperti mencoba semua kemungkinan kunci

secara exhaustive search, menggunakan teknik analisis frekuensi membuat terkaan berdasarkan informasi yang diketahui.

2. Known-Plaintext attack

Jenis serangan dimana kriptanalisis memiliki pasangan plainteks dan

cipherteks yang berkoresponden. Secara formal hal ini diformulasikan

sebagai berikut :

Diberikan : P1, C1, = Ek(P1);P2,C2 = Ek(P2);..., Pi, Ci = Ek(Pi)

Deduksi : k untuk mendapatkan Pi+1 dari Ci+1 = Ek(Pi+1).

Beberapa pesan yang formatnya terstruktur membuka peluang kepada

kriptanalis untuk menerka plainteks dari cipherteks yang bersesuaian.

3. Chosen-plaintext attack

Kriptanalis dapat memilih plainteks yang dimilikinya untuk

dienkripsikan, yaitu plainteks-plainteks yang lebih mengarahkan

penemuan kunci. Secara formal hal ini diformulasikan sebagai berikut:

Deberikan : P1, C1 = Ek(P1),P2, C2 = Ek(P2),...,Pi,Ci = Ek(Pi) dimana

(34)

Deduksi : k untuk mendapatkan Pi+1 dari Ci+1 = Ek(Pi+1)

Gambar 2.4 Chosen-plaintext attack

Gambar 2.4 menggambarkan serangan jenis ini dengan memilih

plainteks yang dienkripsi pada mesin ATM. Untuk diketahui, setiap kali

nasabah memakukan PIN, mesin ATM mengenkripsi PIN tersebut lalu

mengirim cipherteks tersebut ke komputer server di bank untuk diotentiksi. Seorang kriptanalis mengubah PIN yang dimilikinya,

kemudian memakukan PIN tersebut ke mesin ATM. Rekan kriptanalis

yang lain menyadap pengiriman cipherteks “di tengah jalan”. Serangan ini

diulang beberapa kali dengan beberapa nilai PIN sehingga kriptanalis

memeperoleh sejumlah plainteks dan cipherteks yang berkoresponden.

Kriptanalis mempelajari cipherteks tersebut untuk mendeduksi kunci

penyandian. Kriptanalis ke-1 mengubah PIN lalu memasukan PIN tsb ke ATM

ATM mengenkripsi PIN dengan kunci k lalu mengirim cipherteks ke komputer di bank

Cipherteks (k, PIN)

(35)

4. Chosen-chiptertext attack

Kriptanalis memilih cipherteks untuk dienkripsikan dan memiliki

akses ke plainteks hasil dekripsi (misalnya terhadap mesin elektronik yang

melakukan dekripsi secara otomatis). Jenis serangan ini biasanya dipakai

pada sistem kriptografi. Secara formal hal ini diformulasikan sebagai

berikut :

Diberikan : C1, P1 = Dk(C1), C2,P2 = Dk(C2),...,Ci,Pi = Dk(Ci)

Deduksi : k (yang mungkin diperlukan untuk mendekripsi pesan

pada waktu yang akan datang).

5. Chosen-text attack

Merupakan kombinasi chosen-plaintext attack dan chosen-chipertext attack.

2.4.4.3 Berdasarkan teknik yang digunakan dalam menemukan kunci,

serangan dapat dibagi menjadi exhaustive attack dan analilytical attack

1. exhaustive attack atau brute force attack

ini adalah serangan untuk mengungkap painteks atau kunci dengan

mencoba semua kemungkinan kunci. Diasumsikan kriptanalis mengetahui

algoritma kriptografi digunakan oleh pengirim pesan.

Jika hanya cipherteks yang tersedia (chipertext only), cipherteks tersebut didekripsi dengan setiap kemungkinan kunci, kemudian plainteks

hasil dekripsi diperiksa apakah mengandung arti.

(36)

dienkripsi dengan setiap kemungkinan kuncilalu hasilnya dibandingkan

dengan cipherteks yang berkoresponden.

2. Analitycal attack

Jenis serangan ini, kriptanalis tidak mencoba-coba semua

kemungkinan kunci tetapi menganalisis kelemahan algoritma kriptografi

untuk mengurangi kemungkinan kunci yang tidak mungkin ada.

Diasumsikan kriptanalis mengetahui algoritma kriptografi yang digunakan

oleh pengirim pesan. Analisis dapat menggunakan pendekatan matematik

dan statistik dalam rangka menemukan kunci. Secara statistik misalnya

dengan menggunakan analisis frekuensi, sedangkan secara matematik

dengan memecahkan persamaan-persamaan matematika yang mengandung

peubah-peubah yang merepresentasikan plainteks atau kunci.

Untuk menghadapi serangan ini, kriptografer harus membuat

algoritma kriptografi yang kompleks sedemikian sehingga plainteks

merupakan fungsi matematika dari cipherteks dan kunci yang cukup

kompleks, dan tiap kunci merupakan fungsi matematika dari cipherteks

dan plainteks yang cukup kompleks.

2.5.Kriptografi kunci-publik

Diffie dan Hellman memecahkan masalah kriptografi asimetri yang

memungkinkan pengguna berkomunikasi secara aman tanpa perlu berbagi kunci

rahasia. Nama lainya adalah kriptografi kunci-publik (public-key cryptography), sebab kunci untuk enkripsi diumumkan kepada publik sehingga dapat diketahui

(37)

2.6.Konsep kriptografi kunci-publik

Kriptografi kunci-publik sederhana dan elegan, tetapi mempunyai

konsekuensi penggunaan yang hebat. Seperti telah dijelaskan pada bagian awal,

pada kriptografi kunci-publik, setiap pengguna memiliki sepasang kunci, satu

kunci untuk enkripsi dan satu kunci untuk dekripsi (Gambar2.5). Kunci untuk

enkripsi diumumkan kepada publik – oleh karena itu tidak rahasia – sehingga

dinamakan kunci publik (public key), disimbolkan dengan e. Kunci untuk dekripsi bersifat rahasia – sehingga dinamakan kunci privat (private key), disimbolkan dengan d. Karena kunci enkripsi ≠ kunci dekripsi maka kriptografi kunci-publik disebut juga kriptografi asimetri.

Misalkan E adalah fungsi enkripsi dan D adalah fungsi dekripsi. Misalkan (e,d) adalah pasangan kunci untuk enkripsi dan dekripsi sedemikian sehingga :

Ed(m) = c dan Dd(c) = m

Untuk suatu plainteks m dan cipherteks c. Kedua persamaan ini menyiratkan bahwa dengan mengetahui e dan c, maka secara komputasi hampir tidak mungkin menemukan m. Asumsi lainya, dengan mengetahui e, secara hampir tidak mungkin menurunkan d. Ee digambarkan seabgai fungsi

pintu-kolong(trapdoor) satu-arah dengan d adalah inforamsi trapdoor yang diperlukan untuk menghitung fungsi inversnya, D, yang dalam hal ini membuat proses dekripsi dapat dilakukan.

Misalkan Joule berkomunikasi dengan Sarah. Sarah memilih pasangan

kunci (e,d). Sarah mengirimkan kunci enkripsi e (kunci publik) kepada Joule melalui sembarang saluran tetapi tetap menjaga kerahasiaan kunci dekripsinya, d

(38)

mengenkripsikan pesan m dengan menggunakan kunci Publik Sarah, untuk mendapatkan c = Ee(m), lalu mengirimkan c melalui saluran komunikasi (yang

tidak perlu aman). Sarah mendekripsi cipherteks c dengan menggunakan kunci privatnya untuk memperoleh m = Dd(c).

Gambar 2.5 Enkripsi/dekripsi dengan kriptografi kunci-publik

Gambar ini memperlihatkan perbedaan mendasar sistem asimetri dengan

(39)

melalui saluran yang tak perlu aman (secure channel). Saluran yang tidak perlu aman ini mungkin sama dengan saluran yang digunakan untuk mengirim

cipherteks. Sasongko melakukan intersepsi komunikasi mungkin berhasil

mendapatkan kunci enkripsi e dan cipherteks c, tetapi karena ia tidak mengetahui kunci dekripsi d, maka ia tidak dapat melakukan dekripsi. Hanya Sarah yang mengetahui kunci privatnya sendiri, d, sehingga ia mendekripsi pesan dari Joule dengan kunci privat tersebut.

Sistem kriptografi kunci-publik yang aman memiliki dua karakteristik

sebagai berikut:

1. Komputasi untuk enkripsi/dekripsi pesan mudah dilakukan.

2. Secara komputasi hampir tidak mungkin (infeasible) menurunkan

kunci privat, d, bila diketahui kunci publik, e, pasanganya.

Kedua karakteristik di atas dapat dianalogikan dengan dua masalah

matematika berikut :

1. Perkalian vs pemfaktoran. Mengalikan dua buah bilangan prima,

a x b = n, mudah,tetapi memfaktorkan n menjadi faktor-faktor primanya lebih sulit.

Contoh : 31 x 47 = 1457 (perkalian, mudah)

1457 = ? x ? (pemfaktoran, sulit)

2. Perpangkatan vs logaritmik diskrit. Melakukan perpangkatan modulo,

b = a2 mod n, mudah, tetapi menemukan x dari axb (mod n) lebih sulit.

Contoh : 1262 mod 1125 = 126 (perpangkatan modulo, mudah)

(40)

Dua masalah matematika di atas sering dijadikan dasar pembangkitan

sepasang kunci pada kriptografi kunci-publik, yaitu

1. Pemfaktoran

Diberikan bilangan bulat n. Faktorkan n menjadi faktor primanya Contoh : 10 = 2 x 5, 60 = 2 x 2 x 3 x 5, 2 213 = 2 x 2 x 2 x 2 x ....(dst).

Semakin besar n, semakin sulit memfaktorkan (butuh waktu lama). 2. Logaritma diskrit

Temukan x sedemikian sehingga ax b (mod n) sulit dihitung. Contoh : jika diketahui a = 3, b = 15 , n = 17,

maka dengan rumus axb (mod n) menghasilkan 3x ≡ 15 (mod 17)  3x

mod 17 = 15, cari x | 3x mod 17 = 15. Ditemukan bahwa x = 6.

Semakin besar a, b dan n semakin sulit memfaktorkan.

Persoalan logaritma diskrit adalah kebalikan dari persoalan

perpangkatan modular :

axmod n

2.6.1 Kelebihan kriptografi kunci-publik (asimetri)

1. Hanya kunci private yang perlu dijaga kerahasiaanya oleh setiap entitas

yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus

terjamin). Tidak ada kebutuhan mengirim kunci kunci privat

sebagaimana pada sistem simetri.

2. Pasangan kunci publik/ kunci privat tidak perlu diubah, bahkan dalam

periode waktu yang panjang.

(41)

4. Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda

tangan digital pada pesan.

2.6.2 Kekurangan kriptografi kunci-publik (asimetri)

1. Ekripsi dan dekripsi data umumnya lebih lambat daripada sistem

simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar

dan melibatkan operasi perpangkatan yang besar.

2. Ukuran cipherteks lebih besar daripada plainteks (2 – 4 kali lebih besar)

3. Ukuran kunci relatif lebih besar dari pada kunci simetri

4. Karena kunci publik diketahui secara luas dan dapat digunakan setuap

orang, maka cipherteks tidak memberikan inforamsi mengenai

otentikasi pengirim.

2.7.Kriptografi 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.

Algoritma ElGamal banyak dibahas pada buku-buku kriptografi, tetapi

masih sedikit yang membahas secara mendetail tentang konsep-konsep

matematisnya. Stinson (1995) telah menjelaskan secara umum tentang algoritma

ElGamal beserta sistem pendukungnya. Buchmann (2000) secara khusus

(42)

ElGamal, seperti teori bilangan bulat, persamaan kongruen, dan struktur aljabar

abstrak yang meliputi grup, homomorfisma dan gelanggang. Pembahasan aljabar

abstrak yang lebih terperinci diberikan oleh Fraleigh (2000), namun tidak ada

pembahasan yang mengaitkan secara langsung dengan algoritma ElGamal.

Sedangkan implementasi algoritma ElGamal diberikan oleh Menezes, Oorschot

dan Vanstone (1996), termasuk penjelasan beberapa algoritma yang dapat

digunakan untuk membuat program komputer.

Besaran-besaran yang digunakan di dalam algoritma ElGamal :

1. Bilangan prima, p (tidak rahasia) 2. Bilangan acak, α (α < p) (tidak rahasia)

3. Bilangan acak, a (a < p) (rahasia, kunci privat) 4. m (plainteks) (rahasia)

5. a dan b (cipherteks) (tidak rahasia)

2.8.Proses pembentukan kunci

Proses pertama adalah pembentukan kunci yang terdiri dari kunci rahasia

dan kunci publik. Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk membentuk grup Zp*, elemen primitif α dan sebarang a ϵ {1,...,

p - 2}. Kunci publik algoritma ElGamal berupa pasangan 3 bilangan, yaitu ( p, α,

β), dengan

= αa

� �

(43)

Karena pada algoritma ElGamal menggunakan bilangan bulat dalam

proses perhitungannya, maka pesan harus dikonversi ke dalam suatu bilangan

bulat. Untuk mengubah pesan menjadi bilangan bulat, digunakan kode ASCII

(American Standard for Information Interchange). Kode ASCII merupakan representasi numerik dari karakter-karakter yang digunakan pada komputer, serta

mempunyai nilai minimal 0 dan maksimal 255. Oleh karena itu, berdasarkan

sistem kriptografi ElGamal di atas maka harus digunakan bilangan prima yang

lebih besar dari 255. Kode ASCII berkorespondensi 1-1 dengan karakter pesan.

Berikut ini diberikan suatu algoritma yang dapat digunakan untuk

melakukan pembentukan kunci.

Algoritma Membangkitkan Pasangan Kunci :

1. Pilih sembarang bilangan prima p(>255).

2. Pilih dua buah bilangan acak, α dan a, dengan syarat α < p dan

1 ≤ a p– 2.

3. Hitung = α a mod p.

4. Publikasikan nilai p, α dan β , serta rahasiakan a.

Hasil dari algortma ini :

Kunci Publik : triple ( ,α,p) Kunci privat : pasangan (a,p)

Pihak yang membuat kunci publik dan kunci rahasia adalah penerima,

sedangkan pihak pengirim hanya mengetahui kunci publik yang diberikan oleh

(44)

kentungan menggunakan algoritma kriptografi kunci publik adalah tidak ada

permasalahan pada distribusi kunci apabila jumlah pengirim sangat banyak serta

tidak ada kepastian keamanan jalur yang digunakan.

2.9.Enkripsi

Pada proses ini pesan dienkripsi menggunakan kunci publik ( ,α,p) dan sebarang bilangan acak rahasia k є {1, ..., p-2}. Misalkan m adalah pesan yang akan dikirim. Selanjutnya, m diubah ke dalam blok-blok karakter dan setiap karakter dikonversikan ke dalam kode ASCII, sehingga diperoleh plainteks m1,

m2, ..., mndengan miє {1, 2,..., p-1}, i = 1, 2,..., n . Untuk nilai ASCII pemisah “;”

digunakan untuk menandai akhir dari suatu teks.

Proses enkripsi pada algoritma ElGamal dilakukan dengan menghitung

= �� �

dan

= �.�� �

dengan rahasia k є {1, ..., p-2} acak. Diperoleh cipherteks ( , ).

Bilangan acak k ditentukan oleh pihak pengirim dan harus dirahasiakan, jadi hanya pengirim saja yang mengetahuinya, tetapi nilai k hanya digunakan saat melakukan enkripsi saja dan tidak perlu disimpan. Berikut adalah algoritma

(45)

2.9.1 Algoritma enkripsi :

1. Plainteks disusun menjadi blok-blok m1, m2, …, sedemikian sehingga

setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1 (dengan mengubah nilai m menjadi kode ASCII).

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 mod p = k m mod p

Pasangan dan adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteksnya.

Salah satu kelebihan algoritma ElGamal adalah bahwa suatu plainteks

yang sama akan dienkripsi menjadi cipherteks yang berbeda-beda. Hal ini

dikarenakan pemilihan bilangan k yang acak. Akan tetapi, walaupun cipherteks yang diperoleh berbeda-beda, tetapi pada proses dekripsi akan diperoleh

plainteks yang sama.

2.10. Dekripsi

Setelah menerima cipherteks ( , ), proses selanjutnya adalah mendekripsi

cipherteks menggunakan kunci publik p dan kunci rahasia a. Dapat ditunjukkan bahwa plainteks m dapat diperoleh dari cipherteks menggunakan kunci rahasia a.

Diberikan (p, α, ) sebagai kunci publik dan a sebagai kunci rahasia pada

(46)

dan digunakan kunci rahasia, a, dan plainteks m diperoleh kembali dengan

persamaan :

� = .( α )– 1 � �

dengan m adalah plainteks.

m = / a mod p

Catatlah bahwa karena

a≡ αk a

(mod p) maka

/ α≡ k m / α ≡ αa k

m / αakm (mod p)

Dengana demikian terbukti bahwa m = .( a)-1 mod p, yang berarti bahwa plainteks dapat ditemukan kembali dari pasangan cipherteks dan .

Karena Zp* merupakan grup siklik yang mempunyai order p -1 dan a є

{1,..., p - 2}, maka ( �)−1 = −�= −1−�� � .

2.10.1 Algoritma dekripsi

Diketahui cipherteks ( , ), i =1, 2,..., n, kunci publik p dan kunci rahasia a.

Langkah :

1. Untuk i dari 1 sampai n kerjakan : 1.2 Hitung i −1−�mod p

(47)

2. Diperoleh plainteks m1m2 , ,..., mn.

Konversikan masing-masing bilangan m1 , m2,..., mn ke dalam karakter

sesuai dengan kode ASCII-nya, kemudian hasilnya digabungkan

(48)

2.11. Flowchart pembentukan kunci, enkripsi dan dekripsi

Masukan nilai plainteks mi

(m = [0, p – 1])

(49)

2.12. Metode Fast Exponentiation

Diberikan sebarang grup G, gϵG dan bilangan bulat positif z. Untuk menghitung gzdilakukan langkah berikut ini.

Dibentuk ekspansi biner dari bilangan bulat z, yaitu

Karena z ditulis dalam expansi biner, maka aiϵ{0,1}. Sehingga

Dengan hasil ini diperoleh cara yang cepat untuk menghitung gz yang disebut dengan metode Fast Exponentiation, yaitu

1. Hitung nilai , 0 ≤ i k

2. Nilai gz merupakan hasil perkalian nilai-nilai , dengan ai diperoleh

bahwa

2.12.1 Contoh perhitungan pangkat dengan Fast Exponentiation

Berikut contoh perhitungan pangkat bilangan bulat modulo yang besar

(50)

Dihitung 2 380 mod 1234

Tabel 2.1 Perhitungan 2380 mod 1234

i 0 1 2 3 4 5 6 7 8

ki 1 0 1 1 1 1 1 0 1

A 2 4 16 256 134 680 884 334 496

b 2 2 16 394 968 518 98 98 482

Tabel 2.1 Dapat dilihat bahwa 2380 mod 1234 = 482

2.12.2 Algoritma Fast Exponentiation

Diketahui a < m, m = bilangan bulat positif dan k bilangan bulat, 0 ≤ km

dengan representasi biner dari

Langkah :

1. Setb ← 1. Jika k = 0, maka output(b).

2. SetA ← a.

3. Jika k0 = 1, maka set b a.

4. Untuk i dari 1 sampai t kerjakan : 4.1 Set A A2 mod n.

4.2 Jika ki = 1, maka set b A.b mod n.

(51)

2.13. Bilangan acak semu PRNG (pseudorandom number generator)

Untuk membangkitkan pasangan kunci pada kriptografi dan validasi pada

Luhn dibutuhkan sekelompok bilangan acak. Dalam implementasinya bilangan

acak dapat dibuat dengan fungsi acak dalam bahasa pemrograman tertentu,

namun bagaimana jika kemunculan bilangan acak dapat diprediksi.

Generator bilangan acak semu (PRNG) dapat digambarkan seperti di bawah ini :

Gambar 2.7 Siklus generator bilangan acak semu

Jika panjang siklus sudah memenuhi suatu periode tertentu, maka siklus

bilangan acak akan kembali ke awal. Dengan demikian kemunculan bilangan acak

berikutnya dapat diprediksi. Jika k adalah bilangan acak, dan (k + 1) adalah bilangan acak selanjutnya, maka setelah k ke-n dalam periode tertentu akan kembali ke (k + 1). Sehingga bilangan acak selanjutnya dapat ditemukan dengan perhitungan statistik.

Pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak

dapat diprediksi oleh pihak lawan, cocok untuk kriptografi, pembangkit tersebut

dinamakan cryptographycally secure pseudorandom generator (CSPRNG). Persyaratan CSPRNG pertama adalah :

1. Secara statistik mempunyai sifat-sifat yang bagus (lolos uji statistik) (X0)

Panjang siklus

(52)

2. Tahan terhadap serangan (attack) yang serius. Serangan ini bertujuan

untuk memprediksi bilangan acak yang dihasilkan.

Persyaratan kedua adalah :

1. Setiap CSPRNG seharusnya memenuhi uji-bit berikutnya(next-bit test)

sebagai berikut : diberikan k buah bit barisan acak, maka tidak ada algoritma dalam waktu polinomial yang dapat memprediksi bit ke -

(k+1) dengan peluang keberhasilan lebih besar dari ½.

2. Setiap CSPRNGdapat menahan “perluasan status”, yaitu jika sebagian

atau semua statusnya dapat diungkap (atau diterka dengan benar),

maka tidak mungkin merekonstruksi aliran bilangan acak.

2.13.1 Perancangan CSPRNG berbasis teori bilangan

CSPRNG berbasis teori bilangan dapat dirancang berdasarkan persoalan matematika, seperti pemfaktoran bilangan menjadi faktor prima, logaritma

diskrit, dsb.

2.13.2 Algoritma CSPRNG berbasis RSA

CSPRNG yang akan digunakan adalah modifikasi dari RSA. Algoritma pembangkit bilangan acak berbasis RSA adalah sebagai berikut :

1. Pilih dua buah bilangan prima rahasia, p dan q, kalikan keduanya

menjadi n = pq dan ϕ = (p-1)(q-1). Pilih bilangan bulat acak e,

1 ≤ eϕdimana gcd (e,ϕ) = 1.

(53)

3. Untuk 1 ≤ i l lakukan :

3.1 xi← xi-1e (mod n)

3.2 zileast significant bit dari xi

4. Barisan bilangan acak z1,z2,z3,...

Keamanan pembangkit bilangan acak modifikasi RSA ini terletak pada sulitnya memfaktorkan n.

2.14. Pembagi persekutuan terbesar

Berikut ini dijelaskan pengertian dan sifat-sifat suatu bilangan yang

disebut dengan pembagi persekutuan terbesar. Pembagi persekutuan dari bilangan

bulat a1,a2,...ak adalah suatu bilangan bulat yang membagi a1,a2,...ak. Diberikan

a1,a2,...ak ϵ bilangan bulat. Suatu bilangan bulat non-negatif d disebut pembagi

persekutuan terbesar (greatest common divisor) dari a1,a2,...ak jika :

1. Bilangan bulat d merupakan pembagi persekutan dari a1,a2,...ak , yaitu

d membagi a1,a2,...ak ,

2. Untuk sembarang bilangan bulat c, jika c membagi a1,a2,...ak , maka c

membagi d.

3. Bilangan bulat d tersebut dinotasikan dengan d = gcd(a1,a2,...ak )

Dengan kata lain, pembagi persekutuan terbesar adalah nilai maksimum

dari semua pembagi persekutuan, yaitu

(54)

2.14.1 Algoritmna Euclide

Berikut ini diberikan sebuah algoritma yang dapat digunakan untuk

menghitung nilai pembagi persekutuan terbesar dari dua bilangan bulat dengan

sangat mangkus. Algoritma ini didasarkan pada teorema di bawah ini.

Diberikan a,b ϵbilangan bulat positif

1. while b ≠ 0 do :

1.1 Set r ← a mod b, a ← b, b ← r

2.15. Luhn

Algoritma Luhn atau formula Luhn yang biasa dikenal sebagai “modulus

10” atau algoritma “mod 10”, adalah formula sederhana untuk memvalidasi

nomor identifikasi, seperti nomor kartu kredit, nomor IMEI, NPIN dan

sebagainya. Algoritma Luhn dikembangkan oleh peneliti dari IBM Hans Peter

Luhn dipatenkan dalam undang-undang Amerika Serikat No.2,950,048, disahkan

pada tanggal 6 januari 1954, dan dipublikasikan pada 2γ agustus ’60.

Algoritma ini menjadi domain publik dan digunakan secara luas saat ini.

Hal ini ditetapkan dalam ISO/7812-1 IEC. Algoritma ini tidak dimaksudkan untuk

menjadi fungsi hash yang aman dalam kriptografi, tetapi algoritma ini dirancang

untuk melindungi terhadap kesalahan yang tidak disengaja, bukan dari serangan

yang serius. Kebanyakan kartu kredit dan nomor identifikasi pemerintah

menggunakan algoritma ini sebagai metode sederhana untuk membedakan nomor

(55)

2.15.1 Analisis algoritma Luhn

Algoritma Luhn merupakan suatu algoritma yang digunakan untuk

mengecek validitas suatu angka berdasarkan digit-digit yang membentuknya.

Algoritma Luhn dapat mendeteksi kesalahan setiap digit angka yang

dibangun, termasuk semua transposisi dari angka yang saling berdampingan

seperti 09 – 90.

Pada pembangunan digit angka yang akan diterapkan pada smart card

mengadopsi beberapa kontribusi yang ditetapkan card issuer yang akan berpengaruh terhadap total perhitungan dari digit yang ada, dalam hal ini

tergantung dari posisi digit tersebut pada smart card. Jika terdapat kesalahan pada salah satu digit, maka hasilnya pun akan tidak sesuai dengan ketentuan cek

digit Luhn.

2.15.2 Langkah pembuatan digit Luhn :

Untuk menentukan nilai Luhn, ada beberapa langkah yang perlu

dilakukan, antara lain:

1. Buat bilangan acak sebanyak t (t diambil dari jumlah digit NIM +

MCUID + CSPRNG_RSA).

2. Mengalikan semua bilangan yang berada pada digit ganjil dengan

bilangan 2. Bila nilainya lebih dari 9, maka dikurangi dengan 9.

3. Menjumlahkan semua hasil perkalian pada digit ganjil di atas.

4. Menjumlahkan semua bilangan yang berada pada digit genap.

5. Jumlahkan nilai pada langkah 3 dan 4.

(56)

2.15.3 Langkah pengecekan digit Luhn

Metode cek ini membutuhkan 3 langkah untuk membuktikan apakah suatu

kartu memenuhi cek digit Luhn, caranya sebagai berikut :

1. Untuk setiap digit pada posisi ganjil (perhitungan digit mulai dari kiri

dengan yang paling kiri adalah adalah digit ke-1, kalikan nilainya

dengan 2, jika hasilnya lebih dari 9, maka dikurangi dengan 9.

Jumlahkan semua angka dengan yang telah didapat itu.

2. Untuk setiap digit pada posisi genap jumlahkan semua nilainya dan

tambahkan hasilnya dengan hasil pada langkah 1.

3. Jika hasil pada langkah 2 hasilnya habis dibagi 10, smart card tersebut maka sah.

Metode algoritma ini dapat dimanfaatkan sebagai cara agar penggandaan

(57)

40

ANALISIS DAN PERANCANGAN

3.1Analisis sistem

Sistem yang akan dibangun dirancang sebagai sistem keamanan pada

smart card, karenanya sistem ini diharapkan dapat memenuhi kebutuhan antara lain :

1. Sistem mampu melakukan autentikasi menggunakan smart card untuk membatasi penggunaan dari pihak yang tidak berkepentingan.

2. Mampu melakukan pengisian data baru pada smart card dengan data yang telah dienkripsi terlebih dahulu.

3. Mampu membaca (melakukan dekripsi) data pada smart card.

4. Menggandakan data pada smart card.

5. Dapat melakukan cek keamanan sehingga mengetahui keabsahan sebuah

smart card (apakah asli atau palsu).

6. Memberikan keamanan terhadap smart card.

3.1.1 Analisis kebutuhan non-fungsional

Analisis kebutuhan dilakukan untuk mengetahui spesifikasi kebutuhan

untuk sistem. Spesifikasi kebutuhan terdiri atas analisis perangkat keras , dan

(58)

3.1.1.1 Analisis kebutuhan perangkat keras

Perangkat keras yang digunakan dalam mengimplementasikan sistem

keamanan pada smart card yang akan dibangun menggunakan spesifikasi sebagai berikut :

Tabel 3.1 Spesifikasi Perangkat Keras

Nama perangkat Spesifikasi

Komputer Toshiba Satellite® L305-S5946

Processor Intel® Core 2TM Duo Processor T6400

Memory DDR2 3 GB

Hardisk 250 GB

Monitor 15.4” TruBrite®Display 1280x800

Smart card reader

ACR38 reader/writer microprocessor dengan

protocol T=0/T=1 support ISO-7816 Class A

Smart card

ACOS2,ACOS3 (memiliki sistem operasi

(59)

3.1.1.2 Analisis kebutuhan perangkat lunak

Pada analisis kebutuhan perangkat lunak ini menjelaskan tentang

perangkat lunak yang digunakan dalam membuat aplikasi yang penulis bangun

adalah sebagai berikut :

Tabel 3.2 Spesifikasi Perangkat Lunak

Nama perangkat lunak Spesifikasi

Sistem operasi Windows Vista® Home Premium SP1

Compiler Visual Studio 2008

Tool pendukung

.NET FrameWork 3.5, Card Tool, PCSC

learning tool, Scripting Tool, Quick View,

Smart card reader monitor

3.1.2 Analisis kebutuhan fungsional

Analisis kebutuhan fungsional merupakan tindak lanjut dari analisis sistem.

Tujuanya adalah untuk memberikan gambaran mengenai sistem yang akan dibuat.

3.1.2.1 Use Case Diagram

Use Case adalah teknik untuk merekam persyaratan fungsional sebuah sistem. Use Case mendeskripsikan interaksi tipikal antara para pengguna sistem dengan sistem itu sendiri, dengan memberi sebuah narasi tentang

(60)

Admin

Gambar 3.1 Use Case Diagram

3.1.2.1.1 Autentikasi Admin

Skenario :

Identifikasi

Nama Autentikasi Admin

Tujuan Memastikan hak akses aplikasi

Deskripsi Sistem menerima identifikasi data menggunakan smart card.

Disini admin tidak dapat menginputkan password sebelum reader

(61)

Aktor Admin

Skenario Utama

Kondisi awal Aplikasi baru dijalankan

No Aksi Aktor No Reaksi Sistem

1 Masukan smart card 2 Menampilkan textfield password

kemudian lakukan koneksi ke

smart card laluambil ATR.

2 Masukan password 4 Mengecek kebenaran password

Skenario Alternatif – Autentikasi Gagal

No Reaksi Sistem No Aksi Aktor

1 Menampilkan pesan gagal 2 Ulangi autentikasi, masukan smart

card

Kondisi akhir Hak akses admin sudah dipastikan

3.1.2.1.2 Koneksi Kartu

Skenario :

Identifikasi

Nama Koneksi Kartu

Tujuan Melakukan koneksi dari reader ke smart card

Deskripsi Koneksi ke kartu dilakukan untuk membangun sebuah komunikasi

antara aplikasi dengan kartu agar dapat melakukan operasi-operasi

(62)

Aktor Admin

Skenario Utama

Kondisi awal Admin sudah terautentikasi

No Aksi Aktor No Reaksi Sistem

1 Masukan smart card 2 Reader mendeteksi adanya kartu

3 Klik button koneksi 4 Membangun koneksi dengan smart

card

Skenario Alternatif – Koneksi kartu Gagal

No Reaksi Sistem No Aksi Aktor

1 Menampilkan pesan gagal 2 Periksa smart card atau ulangi

koneksi.

Kondisi akhir Sistem dapat berinteraksi dengan smart card dan file-file dalam

smart card tersebut telah terdefinisi.

3.1.2.1.3 Diskoneksi Kartu

Skenario :

Identifikasi

Nama Diskoneksi Kartu

Tujuan Melakukan pemutusan dari reader ke smart card

Deskripsi Pemutusana koneksi dilakukan untuk memutuskan komunikasi

antara reader dengan smart card sehingga sistem sudah tidak lagi dapat berinteraksi atau melakukan operasi-operasi baca, tulis dan

Gambar

Gambar 3.7 Sequence diagram Gandakan Kartu
Gambar 3.8 Sequence diagram Cek Security Kartu
Gambar 3.10 Class Diagram
Gambar 3.11 Perancangan Arsitektur Menu
+7

Referensi

Dokumen terkait

Identifikasi masalah dalam penulisan tugas akhir ini adalah bagaimana membangun aplikasi sebuah keamanan data dengan menggunakan algoritma kriptografi Blowfish dan

Pengujian ini meliputi tingkat keakurasian proses enkripsi dekripsi algoritma ElGamal terhadap data video, pengujian time delay yang dibutuhkan dalam proses

Dalam menjaga keamanan data, smart card telah menggunakan beberapa metode yang ada pada kriptografi, salah satu metode tersebut adalah Rivest Code 4 atau biasa dikenal dengan

Adapun tujuan dari penelitian ini adalah untuk menganalisa dan menghasilkan sistem kriptografi hibrida yang mengkombinasikan kriptografi kunci simetri, yaitu algoritma AES dan

Gambar 4.10 Membaca Data Kartu Dari gambar 4.10 menunjukkan bahwa data yang dimasukkan ke dalam smart card sudah berupa data yang telah dienkripsi ciphertext sehingga ketika ada

IMPLEMENTASI KRIPTOGRAFI HYBRID ALGORITMA ELGAMAL DAN DOUBLE PLAYFAIR CIPHER DALAM PENGAMANAN FILE JPEG..

Hasil luaran yang didapatkan dari penelitian ini adalah penerapan algoritma Blowfish dan algoritma Elgamal dapat meningkatkan keamanan data dari serangan brute force

IMPLEMENTASI KRIPTOGRAFI KURVA ELIPTIK DENGAN ALGORITMA ELGAMAL DAN METODE PEMBANGKITAN BILANGAN PRIMA RABIN-.. MILLER UNTUK PENGAMANAN