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
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.
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.
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
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
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
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
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
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
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
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
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
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
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:
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:
xvii
Lampiran A Tampilan Antarmuka ………..………... A-1
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
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
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
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
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
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
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
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
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
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
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
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 :
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
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
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
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 :
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
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)
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.
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
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
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
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 ax ≡ b (mod n) lebih sulit.
Contoh : 1262 mod 1125 = 126 (perpangkatan modulo, mudah)
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 ax≡b (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.
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
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
� �
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
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
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
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 / αak ≡ m (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
2. Diperoleh plainteks m1m2 , ,..., mn.
Konversikan masing-masing bilangan m1 , m2,..., mn ke dalam karakter
sesuai dengan kode ASCII-nya, kemudian hasilnya digabungkan
2.11. Flowchart pembentukan kunci, enkripsi dan dekripsi
Masukan nilai plainteks mi
(m = [0, p – 1])
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
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 ≤ k≤ m
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.
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
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.
3. Untuk 1 ≤ i ≤ l lakukan :
3.1 xi← xi-1e (mod n)
3.2 zi← least 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
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
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.
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
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
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
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
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
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
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