Anda di halaman 1dari 273

KRIPTOGRAFI & IMPLEMENTASINYA

MENGGUNAKAN MATLAB
KRIPTOGRAFI & IMPLEMENTASINYA

MENGGUNAKAN MATLAB

Emy Setyaningsih, S.Si., M.Kom.

Penerbit ANDI Yogyakarta


Kupersembahkan buku ini untuk

Ibunda Rubiyah,
terima kasih atas semua pengorbanan Ibu dalam merawatku sejak kecil
dengan semua kasih sayang dan doa restu
yang selalu menyertai setiap langkahku
Mas Apung,
atas kasih sayang, kesabaran, pengertian, dan motivasinya
Anak-anakku: Malecita, Nohan, dan Salsabila
yang selalu memberi inspirasi tanpa kalian sadari
PRAKATA

Penulis memanjatkan syukur alhamdulillah kepada Allah Yang Maha Pengasih dan Penyayang
atas bantuan dan rahmat-Nya sehingga buku teks ini dapat selesai ditulis. Penulis termo vasi
untuk menulis buku ini karena penulis ingin membagikan ilmu dan pengetahuan kepada
sesama, seper hadis Nabi yang mengatakan, “Sebaik-baik manusia adalah yang paling
bermanfaat bagi orang lain”.
Teknologi informasi dan komunikasi seper pemanfaatan internet (sebagai jalan raya informasi
atau the informa on highway) dan jaringan GSM dalam kehidupan sehari-hari semakin maju.
Penggunaan keduanya dirasakan benar-benar membawa perubahan pada banyak aspek dalam
kehidupan manusia. Teknologi baru ini memang menawarkan banyak keuntungan, namun pada
saat yang sama juga memberikan ancaman. Pada kondisi inilah dirasakan semakin pen ngnya
peran kriptografi.
Seiring dengan peningkatan kepen ngannya, banyak metode kriptografi ditemukan ataupun
diperluas penggunaannya. Berdasarkan kondisi tersebut, penulis berusaha menyusun buku ini
agar memuat beragam teknik kriptografi beserta contoh dan implementasinya dengan aplikasi
MATLAB.
Buku ini menjadi is mewa berkat adanya beberapa konsep pengembangan metode kriptografi
dari penulis sebagai upaya untuk mendapatkan algoritma yang dak mudah dipecahkan.
Metode kriptografi yang dikembangkan pada buku ini juga disertai dengan analisis dan
implementasinya dengan aplikasi MATLAB. Selain itu, contoh-contoh yang dibahas pada
beberapa metode kriptografi dak hanya terbatas pada pesan dalam bentuk teks, namun juga
dalam bentuk citra (image) yang disertai dengan fungsi-fungsi yang dibangun dengan aplikasi
MATLAB.
Penulis berharap buku ini dapat menjadi referensi bagi mahasiswa tahun ke-3 pada bidang
ilmu yang serumpun dengan Ilmu Komputer, pengambil mata kuliah Kriptografi atau mata
kuliah yang berhubungan dengan keamanan data dan informasi, serta pembaca yang ingin
lebih mendalami algoritma kriptografi. Kepada dosen, mahasiswa, dan pembaca yang
sedang meneli penyandian data, penulis berharap buku ini dapat memberikan inspirasi
untuk melakukan peneli an lanjutan yang dapat memperkaya metode penyandian yang bisa
dimanfaatkan oleh masyarakat luas.
Buku Kriptografi & Implementasinya Menggunakan MATLAB dibagi menjadi ga bagian untuk
mempermudah pembaca memahaminya. Bagian 1 terdiri atas Bab I dan Bab II yang membahas
vi KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

konsep dasar kriptografi. Bab I yang merupakan bagian pendahuluan berisi pengantar
kriptografi yang membahas penger an, sejarah, dan mekanisme kriptografi. Bab II membahas
cryptosystem, keamanan dan penggunaannya.
Bagian 2 terdiri atas Bab III dan Bab IV yang membahas topik di luar kriptografi yang mendukung
pengembangan metode kriptografi. Bab III membahas dasar-dasar pemrograman MATLAB
untuk membangun aplikasi kriptografi, dan dasar-dasar pengolahan citra untuk mendukung
implementasi penyandian data dalam bentuk citra. Bab ini juga dapat dipahami secara
terpisah apabila pembaca ingin lebih mengenal ruang lingkup pemrograman MATLAB dan
dasar-dasar pengolahan citra. Sementara Bab IV membahas teori bilangan serta parameter
untuk mengukur kualitas hasil enkripsi dari suatu metode penyandian data sehingga dapat
ditentukan metode penyandian yang dianggap baik (aman dari serangan kriptanalis).
Bagian 3 terdiri atas Bab V, Bab VI, dan Bab VII yang membahas metode-metode penyandian
data serta implementasinya dalam kehidupan sehari-hari. Bab V membahas metode kriptografi
klasik yang terdiri atas metode-metode penyandian dalam kelompok cipher subs tusi dan
cipher transposisi. Selain itu juga dibahas contoh pengembangan penyandian data dengan
metode super enkripsi. Bab VI membahas metode kriptografi modern yang terdiri atas metode-
metode penyandian dalam kelompok kriptografi kunci simetrik dan kriptografi kunci asimetrik.
Bab VII membahas aplikasi kriptografi dalam kehidupan sehari-hari, di antaranya penggunaan
tanda tangan digital dan ser fikat digital. Selain itu juga diberikan contoh pengembangan
metode kriptografi yang diimplementasikan pada mobile phone untuk pengiriman data dalam
bentuk mul media messaging service (MMS).
Terselesaikannya penulisan buku ini dak terlepas dari bantuan beberapa pihak. Oleh karena
itu, penulis menyampaikan terima kasih kepada Dit. Litabmas Ditjen Pendidikan Tinggi yang
telah memberikan hibah dan pendampingan penyusunan buku teks ini. Dengan kepercayaan
tersebut penulis berkeyakinan bahwa hal itu dapat mendukung upaya untuk meningkatkan
kualitas diri dan karya di waktu yang akan datang. Penulis juga menyampaikan terima kasih
kepada Prof. Drs. Subanar, Ph.D. yang telah meluangkan waktu untuk mendampingi penulis
menyempurnakan buku teks ini, serta Edhy Sutanta, S.T., M.Kom. untuk semua mo vasi,
bantuan, dan sarannya. Secara khusus penulis menyampaikan terima kasih dan penghargaan
kepada ibunda Rubiyah, suami dan putra-putri penulis atas doa, mo vasi, dan kasih sayangnya
yang membuat penulis terpacu untuk segera menyelesaikan buku teks ini. Ucapan terima kasih
juga penulis sampaikan kepada Pimpinan IST AKPRIND yang telah memberikan kesempatan
bagi penulis untuk selalu berkarya dan terus belajar menjadi pribadi yang lebih baik.
Penulis menyadari bahwa masih ada banyak kekurangan dalam penulisan buku teks ini, baik
dalam penyajian materi maupun tata bahasa. Kri k dan saran penulis harapkan dari pembaca
agar buku ini menjadi lebih baik dan lebih berguna bagi pembaca.

Yogyakarta
Penulis
DAFTAR ISI vii

DAFTAR ISI

HALAMAN PERSEMBAHAN .............................................................................................. iii


PRAKATA .........................................................................................................................v
DAFTAR ISI .......................................................................................................................vii
DAFTAR SINGKATAN ........................................................................................................ xi
DAFTAR GAMBAR ........................................................................................................... xiii
DAFTAR TABEL ................................................................................................................ xix
BAB I PENGANTAR KRIPTOGRAFI .................................................................................. 1
1.1 Penger an Kriptografi............................................................................................... 1
1.2 Sejarah Kriptografi .................................................................................................... 3
1.3 Mekanisme Kriptografi ............................................................................................. 7
1.4 Evaluasi .................................................................................................................... 10
BAB II SISTEM KRIPTOGRAFI ...........................................................................................11
2.1 Sistem Kriptografi (Kriptosistem) ............................................................................. 11
2.1.1 Kriptografi Kunci Simetrik ........................................................................... 12
2.1.2 Kriptografi Kunci Asimetrik ......................................................................... 16
2.2 Keamanan Kriptosistem ........................................................................................... 18
2.2.1 Kriptanalisis ................................................................................................. 18
2.2.2 Jenis Serangan ............................................................................................. 19
2.3 Penggunaan Kriptosistem ........................................................................................ 26
2.3.1 Penger an Protokol Kriptografi ................................................................... 28
2.3.2 Fungsi Protokol ............................................................................................ 29
2.3.3 Penyerangan terhadap Protokol .................................................................. 29
2.4 Evaluasi .................................................................................................................... 30
viii KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

BAB III DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA ..............................31


3.1 Dasar Pemrograman MATLAB.................................................................................. 31
3.1.1 Lingkungan Kerja MATLAB ........................................................................... 31
3.1.2 Variabel dan Operator ................................................................................. 33
3.1.3 Array dan Matriks ........................................................................................ 34
3.1.4 Pemrograman M-File ................................................................................... 37
3.1.5 Pemrograman MATLAB dengan Fungsi M-File ............................................. 41
3.1.6 Pemrograman MATLAB dengan Fasilitas GUIDE .......................................... 42
3.2 Dasar Pengolahan Citra ........................................................................................... 50
3.2.1 Membaca dan Menampilkan File Citra ....................................................... 51
3.2.2 Mentransformasi dan Mengubah Format Citra Warna ............................... 52
3.3 Evaluasi .................................................................................................................... 53
BAB IV TEORI BILANGAN DAN ANALISIS ENKRIPSI ...........................................................55
4.1 Teori Bilangan .......................................................................................................... 55
4.1.1 Arime ka Modular....................................................................................... 55
4.1.2 Pembagi Bersama Terbesar (PBB) ................................................................ 56
4.1.3 Algoritma Euclidean .................................................................................... 57
4.1.4 Rela f Prima ............................................................................................... 58
4.1.5 Kekongruenan ............................................................................................. 58
4.1.6 Invers Modulo ............................................................................................. 59
4.1.7 Persoalan Chinese Remainder ..................................................................... 60
4.1.8 General Equa ons ....................................................................................... 62
4.1.9 Metode Fast Exponen a on ....................................................................... 62
4.1.10 Euler To ent Func on ................................................................................. 63
4.2 Parameter Kualitas Hasil Enkripsi ............................................................................ 64
4.2.1 Korelasi ........................................................................................................ 64
4.2.2 Entropi ......................................................................................................... 65
4.2.3 Analisis Histogram ....................................................................................... 66
4.2.4 Kualitas Enkripsi ........................................................................................... 67
4.3 Evaluasi .................................................................................................................... 68
DAFTAR ISI ix
BAB V KRIPTOGRAFI KLASIK............................................................................................71
5.1 Cipher Subs tusi ...................................................................................................... 72
5.1.1 Cipher Abjad-Tunggal ...............................................................................72
5.1.1.1 Caesar Cipher ............................................................................... 72
5.1.1.2 Cipher Subs tusi Berdasarkan Cara Pembangkitan Kunci ............ 77
5.1.2 Cipher Homofonik ........................................................................................ 82
5.1.3 Cipher Polialfabe k ...................................................................................... 83
5.1.3.1 Vigenere Cipher ............................................................................ 85
5.1.3.2 Beaufort Cipher ............................................................................ 92
5.1.4 Cipher Poligram ........................................................................................... 94
5.1.4.1 Playfair Cipher ............................................................................. 94
5.1.4.2 Hill Cipher ................................................................................... 100
5.2 Cipher Transposisi ................................................................................................... 106
5.2.1 Metode Zig-Zag ........................................................................................... 107
5.2.2 Columnar Transposi on Cipher................................................................... 109
5.3 Super Enkripsi ......................................................................................................... 112
5.3.1 Super Enkripsi dengan Metode Hill Cipher dan Playfair Cipher .................. 112
5.3.2 Super Enkripsi dengan Metode Vigenere Cipher dan Playfair Cipher ......... 114
5.4 Evaluasi ................................................................................................................... 118
BAB VI KRIPTOGRAFI MODERN .......................................................................................119
6.1 Rangkaian Bit dan Operasinya ................................................................................ 120
6.2 Algoritma Enkripsi dengan XOR Sederhana ............................................................ 121
6.3 Kriptografi Kunci Simetrik ....................................................................................... 123
6.3.1 Kriptografi Cipher Aliran ............................................................................. 123
6.3.1.1 Algoritma RC4 (ARCFOUR) .......................................................... 126
6.3.1.2 Algoritma A5 ............................................................................... 132
6.3.2 Kriptografi Cipher Blok (Block Cipher) ......................................................... 144
6.3.2.1 Data Encryp on Standard (DES) .................................................. 153
6.3.2.2 Advanced Encryp on Standard (AES)
x KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

6.4 Kriptografi Kunci Asimetrik .................................................................................... 180


6.5 Evaluasi .................................................................................................................... 187
BAB VII APLIKASI KRIPTOGRAFI ......................................................................................189
7.1 Tanda Tangan Digital ............................................................................................... 189
7.1.1 Sifat Tanda Tangan Digital ........................................................................... 191
7.1.2 Cara Kerja Tanda Tangan Digital .................................................................. 191
7.1.3 Fungsi Hash................................................................................................. 194
7.1.4 Algoritma MD5 ........................................................................................... 196
7.1.5 Proses Pemberian Tanda Tangan Digital (Signing) ...................................... 201
7.2 Ser fikat Digital ..................................................................................................... 203
7.3 Keamanan Data Mul media Messaging Service (MMS) pada Mobile Phone ........ 206
7.3.1 Pengamanan Kunci yang Digunakan untuk Proses Enkripsi dan Dekripsi ... 208
7.3.2 Proses Enkripsi dan Dekripsi pada Mobile Phone ....................................... 209
7.4 Evaluasi ................................................................................................................... 214
GLOSARIUM ..................................................................................................................215
DAFTAR PUSTAKA ..........................................................................................................217
INDEKS ..........................................................................................................................221
TENTANG PENULIS ..........................................................................................................225
LAMPIRAN......................................................................................................................227
DAFTAR SINGKATAN

AES : Advanced Encryp on Standard


ATM : automa c teller machine
CBC : cipher block chaining
CFB : cipher feedback
DEA : Data Encryp on Algorithm
DES : Data Encryp on Standard
ECB : electronic code book
ECC : ellip c curve cryptography
EEA : Extended Euclidean Algorithm
EFF : Electronic Fron er Founda on
ETSI : European Telecommunica ons Standards Ins tute
GCD : greatest common divisor
GUI : graphic user interface
GSM : Groupe Special Mobile
HEX : hexadecimal
IDEA : Interna onal Data Encryp on Algorithm
IP : ini al permuta on
IV : ini aliza on vector
MATLAB : matrix laboratory
MOD : modulo
NIST : Na onal Ins tutes of Standards and Technology
OFB : output feedback
PBB : pembagi bersama terbesar
PIN : personal iden fica on number
RC4 : Arcfour
RGB : red green blue
SAGE : Security Algorithms Group of Experts
S/HTTP : Secure Hypertext Transfer Protocol
SSL : Secure Socket Layer
TCP/IP : Transfer Control Protocol/Internet Protocol
UICONTROL : user interface control
xii KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
DAFTAR GAMBAR

Gambar 1.1 Area bidang kriptologi .................................................................................... 2


Gambar 1.2 Contoh hieroglyphcs untuk menyandikan huruf dan angka ........................... 4
Gambar 1.3 Media kriptografi yang digunakan oleh bangsa Yunani kuno ......................... 4
Gambar 1.4 Caesar wheel .................................................................................................. 5
Gambar 1.5 Ratu Maria dari Skotlandia ............................................................................. 5
Gambar 1.6 Halaman pertama A Manuscript on Deciphering Cryptographic Message ..... 6
Gambar 1.7 Mesin Enigma ................................................................................................. 7
Gambar 1.8 Mesin pembaca ciphertext Lorenz milik Jerman, digunakan saat PD II .......... 7
Gambar 1.9 Mekanisme kriptografi.................................................................................... 8
Gambar 1.10 Kriptografi berbasis kunci ............................................................................... 9
Gambar 2.1 Sistem kriptografi kunci rahasia ..................................................................... 13
Gambar 2.2 Mekanisme kriptografi kunci simetrik ........................................................... 14
Gambar 2.3 Teknik cipher blok ......................................................................................... 15
Gambar 2.4 Bagan siklus ciphertext IDEA yang telah dipatenkan ..................................... 16
Gambar 2.5 Sistem kriptografi kunci publik ...................................................................... 16
Gambar 2.6 Mekanisme kriptografi kunci asimetrik ......................................................... 17
Gambar 2.7 Serangan pasif ............................................................................................... 20
Gambar 2.8 Man-in-the-middle a ack .............................................................................. 20
Gambar 2.9 Man-in-the-middle a ack di bidang e-commerce ......................................... 21
Gambar 2.10 Chosen-plaintext a ack ................................................................................. 23
Gambar 2.11 Sniffing ........................................................................................................... 24
Gambar 2.12 Replay a ack ................................................................................................. 25
Gambar 2.13 Kriptografi pada TCP/IP .................................................................................. 27
Gambar 2.14 Protokol HTTPS .............................................................................................. 27
xiv KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 2.15 Implementasi kriptografi pada protokol HTTP berupa SSL ............................ 27
Gambar 2.16 Implementasi kriptografi pada remote login dengan SSH ............................. 28
Gambar 3.1 Tampilan awal MATLAB.................................................................................. 32
Gambar 3.2 Tampilan workspace ...................................................................................... 32
Gambar 3.3 Tampilan command history ........................................................................... 33
Gambar 3.4 Tampilan editor window ............................................................................... 38
Gambar 3.5 Menu utama GUIDE ....................................................................................... 43
Gambar 3.6 Komponen uicontrol ...................................................................................... 44
Gambar 3.7 Contoh desain pushbu on............................................................................. 45
Gambar 3.8 Contoh desain sta c text ............................................................................... 45
Gambar 3.9 Memprogram komponen pushbu on dan sta c text .................................... 46
Gambar 3.10 Contoh desain toggle bu on ......................................................................... 46
Gambar 3.11 Contoh desain radiobu on dan edit text ....................................................... 47
Gambar 3.12 Contoh desain checkbox ................................................................................ 47
Gambar 3.13 Hasil running komponen checkbox ................................................................ 47
Gambar 3.14 Contoh desain slider ...................................................................................... 48
Gambar 3.15 Contoh desain listbox .................................................................................... 49
Gambar 3.16 Contoh tampilan listbox ................................................................................. 49
Gambar 3.17 Contoh desain axes (a) dan tampilannya (b) ................................................ 50
Gambar 4.1 Hasil perhitungan korelasi pada command window ...................................... 65
Gambar 4.2 Hasil perhitungan entropi pada command window ...................................... 66
Gambar 4.3 Pemanggilan fungsi histogram.m pada command window ........................... 67
Gambar 4.4 Hasil tampilan fungsi histogram.m ................................................................ 67
Gambar 4.5 Pemanggilan fungsi Kualitas_enkripsi.m pada command window ................ 68
Gambar 5.1 Fungsi untuk mengenkripsi data teks dengan metode Caesar cipher ........... 73
Gambar 5.2 Hasil enkripsi data teks dengan metode Caesar cipher ................................. 73
Gambar 5.3 Frekuensi kemunculan untuk se ap karakter pada teks bahasa Indonesia .. 74
Gambar 5.4 Frekuensi enkripsi karakter dengan I Æ I+3 (Seberry dan Pieprzyk, 1989) ... 74
Gambar 5.5 ROT13 ............................................................................................................ 76
Gambar 5.6 Hasil enkripsi data teks dengan metode cipher subs tusi............................. 78
DAFTAR GAMBAR xv

Gambar 5.7 Hasil dekripsi data teks dengan metode cipher subs tusi............................. 79
Gambar 5.8 Hasil enkripsi data teks dengan metode cipher polialfabe k ........................ 84
Gambar 5.9 Hasil dekripsi data teks dengan metode cipher polialfabe k ....................... 85
Gambar 5.10 Enkripsi dengan bujur sangkar Vigenere cipher............................................. 87
Gambar 5.11 Hasil enkripsi data teks dengan metode Vigenere cipher .............................. 88
Gambar 5.12 Hasil dekripsi data teks dengan metode Vigenere cipher .............................. 90
Gambar 5.13 Citra tersandikan dengan metode Vigenere cipher ....................................... 92
Gambar 5.14 Hasil enkripsi data teks dengan metode Playfair cipher ................................ 96
Gambar 5.15 Potongan matriks kunci ................................................................................. 97
Gambar 5.16 Citra tersandikan dengan metode Playfair cipher ......................................... 98
Gambar 5.17 Hasil dekripsi data teks dengan metode Playfair cipher ................................ 99
Gambar 5.18 Hasil enkripsi data teks dengan metode Hill cipher ...................................... 102
Gambar 5.19 Citra tersandikan dengan metode Hill cipher ............................................... 104
Gambar 5.20 Hasil dekripsi data teks dengan metode Hill cipher ...................................... 105
Gambar 5.21 Hasil enkripsi data teks dengan metode zig-zag ........................................... 108
Gambar 5.22 Hasil dekripsi data teks dengan metode zig-zag ........................................... 109
Gambar 5.23 Hasil enkripsi data teks dengan metode transposisi..................................... 110
Gambar 5.24 Hasil dekripsi data teks dengan metode transposisi..................................... 111
Gambar 5.25 Algoritma enkripsi dengan metode Hill cipher dan Playfair cipher .............. 112
Gambar 5.26 Skema proses enkripsi citra dengan metode super enkripsi ........................ 113
Gambar 5.27 Algoritma dekripsi dengan metode Hill cipher dan Playfair cipher .............. 114
Gambar 5.28 Skema proses enkripsi dengan metode super enkripsi ................................ 114
Gambar 5.29 Tampilan proses hasil enkripsi citra dengan metode super enkripsi ............ 115
Gambar 5.30 Histogram citra hasil enkripsi berdasarkan perbedaan kontras ................... 116
Gambar 5.31 Skema proses dekripsi .................................................................................. 117
Gambar 6.1 Diagram blok kriptografi modern ................................................................. 119
Gambar 6.2 Hasil enkripsi data karakter dengan metode XOR sederhana ....................... 122
Gambar 6.3 Blok diagram pembagian sistem kriptografi berdasarkan kunci ................... 123
Gambar 6.4 Konsep cipher aliran ..................................................................................... 124
xvi KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 6.5 Cipher aliran dengan pembangkit bit keystream yang bergantung
pada kunci U ................................................................................................. 125
Gambar 6.6 Rangkaian proses RC4 ................................................................................... 126
Gambar 6.7 Struktur algoritma A5/2................................................................................ 133
Gambar 6.8 Pengaturan pada algoritma A5/2.................................................................. 134
Gambar 6.9 Fungsi fi pada algoritma KASUMI .................................................................. 137
Gambar 6.10 Fungsi FL pada algoritma KASUMI dengan ∪ simbol operasi OR,
∩ simbol operasi AND, dan <<< rotasi satu bit ke kiri ................................. 138
Gambar 6.11 Fungsi FO pada algoritma KASUMI ............................................................... 139
Gambar 6.12 Fungsi FI pada algoritma KASUMI................................................................. 140
Gambar 6.13 Blok cipher .................................................................................................... 144
Gambar 6.14 Skema mode operasi ECB ............................................................................. 146
Gambar 6.15 Skema mode operasi CBC ............................................................................. 148
Gambar 6.16 Proses enkripsi dengan mode CFB ................................................................ 152
Gambar 6.17 Proses dekripsi dengan mode CFB ................................................................ 152
Gambar 6.18 Proses enkripsi dengan mode OFB ............................................................... 153
Gambar 6.19 Proses dekripsi dengan mode OFB ............................................................... 153
Gambar 6.20 Contoh peragaan client distributed.net untuk Windows 95 ........................ 154
Gambar 6.21 Skema global algoritma DES ......................................................................... 155
Gambar 6.22 Proses pembangkitan kunci internal DES ..................................................... 156
Gambar 6.23 Algoritma enkripsi DES ................................................................................. 159
Gambar 6.24 Fungsi cipher F .............................................................................................. 162
Gambar 6.25 Diagram proses enkripsi algoritma AES Rijndael .......................................... 169
Gambar 6.26 Transformasi SubBytes .................................................................................. 171
Gambar 6.27 Proses Shi Rows ........................................................................................... 171
Gambar 6.28 Transformasi MixColumns............................................................................. 172
Gambar 6.29 Transformasi AddRoundKey .......................................................................... 172
Gambar 6.30 Diagram proses dekripsi algoritma AES Rijndael .......................................... 173
Gambar 6.31 Transformasi InvShi Rows ........................................................................174
DAFTAR GAMBAR xvii
Gambar 6.32 Ekspansi kunci yang akan digunakan pada proses enkripsi
dan dekripsi AES ........................................................................................... 178
Gambar 6.33 Contoh algoritma RSA ................................................................................... 183
Gambar 7.1 Membuat sidik jari pesan ............................................................................. 194
Gambar 7.2 Fungsi hash satu arah ................................................................................... 195
Gambar 7.3 Pembuatan message digest dengan algoritma MD5 .................................... 196
Gambar 7.4 Pengolahan blok 512 bit (proses HSHA) .......................................................... 197
Gambar 7.5 Operasi dasar MD5 ....................................................................................... 198
Gambar 7.6 Penggunaan fungsi hash: pengirim .............................................................. 202
Gambar 7.7 Penggunaan fungsi hash: penerima ............................................................. 202
Gambar 7.8 Contoh ser fikat digital ................................................................................ 204
Gambar 7.9 Contoh hierarki otoritas ser fikat digital ...................................................... 204
Gambar 7.10 Protokol SSL .................................................................................................. 206
Gambar 7.11 Diagram proses pengiriman MMS ................................................................ 207
Gambar 7.12 Skema proses enkripsi pada aplikasi mobile phone ...................................... 210
Gambar 7.13 Skema proses dekripsi pada aplikasi mobile phone ...................................... 211
Gambar 7.14 Ikon pada Samsung Galaxy Tab 2 .................................................................. 212
Gambar 7.15 Proses enkripsi .............................................................................................. 212
Gambar 7.16 Peng-input-an (a) kunci dan (b) batas waktu proses kunci yang valid .......... 213
Gambar 7.17 Hasil dan waktu proses enkripsi ................................................................... 213
xviii KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
DAFTAR TABEL xix

DAFTAR GAMBAR

TABEL 2.1 Waktu yang diperlukan untuk exhaus ve key search ....................................... 21
TABEL 3.1 Operator aritme ka .......................................................................................... 33
TABEL 3.2 Operator relasional ........................................................................................... 34
TABEL 3.3 Operator logika ................................................................................................. 34
TABEL 3.4 Ekspresi Boolean ............................................................................................... 40
TABEL 3.5 Bentuk format citra digital ................................................................................ 51
TABEL 5.1 Konversi karakter ke urutan bilangan integer dari 0–25 ................................... 74
TABEL 5.2 Contoh cipher homofonik ................................................................................. 82
TABEL 5.3 Bujur sangkar Vigenere cipher .......................................................................... 86
TABEL 5.4 Pengembangan bujur sangkar Vigenere cipher................................................. 89
TABEL 5.5 Contoh proses enkripsi dengan metode Vigenere cipher ................................. 90
TABEL 5.6 Hasil uji sta s k dengan metode Playfair cipher .............................................. 99
TABEL 5.7 Hasil uji sta s k dengan metode super enkripsi ............................................. 116
TABEL 6.1 XOR .................................................................................................................. 121
TABEL 6.2 Tabel desimal S7............................................................................................... 141
TABEL 6.3 Tabel desimal S9............................................................................................... 142
TABEL 6.4 Nilai konstanta Cj .............................................................................................. 143
TABEL 6.5 Tabel round subkey .......................................................................................... 144
TABEL 6.6 Proses enkripsi untuk se ap blok .................................................................... 147
TABEL 6.7 Permuted choice 1 (PC-1) ................................................................................. 157
TABEL 6.8 Step rotasi yang dilakukan pada se ap iterasi ................................................. 157
TABEL 6.9 Permuted choice 2 (PC-2) ................................................................................. 158
TABEL 6.10 Permutasi awal (IP) .......................................................................................... 160
TABEL 6.11 IP-1, kebalikan dari IP ........................................................................................ 160
xx KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

TABEL 6.12 E-bit seleksi ...................................................................................................... 162


TABEL 6.13 Fungsi seleksi ................................................................................................... 163
TABEL 6.14 Tabel P.............................................................................................................. 163
TABEL 6.15 Permutasi awal................................................................................................. 164
TABEL 6.16 Expansion (E).................................................................................................... 164
TABEL 6.17 Subs tu on box-1 (S[1])................................................................................... 165
TABEL 6.18 Subs tu on box-2 (S[2])................................................................................... 165
TABEL 6.19 Subs tu on box-3 (S[3])................................................................................... 165
TABEL 6.20 Subs tu on box-4 (S[4])................................................................................... 165
TABEL 6.21 Subs tu on box-5 (S[5])................................................................................... 165
TABEL 6.22 Subs tu on box-6 (S[6])................................................................................... 166
TABEL 6.23 Subs tu on box-7 (S[7])................................................................................... 166
TABEL 6.24 Subs tu on box-8 (S[8])................................................................................... 166
TABEL 6.25 Permuta on P .................................................................................................. 166
TABEL 6.26 Final permuta on (IP**-1) ............................................................................... 167
TABEL 6.27 Perbandingan jumlah round dan kunci ............................................................ 168
TABEL 6.28 Rijndael S-box................................................................................................... 170
TABEL 6.29 Inverse S-box ..................................................................................................... 174
TABEL 7.1 Fungsi-fungsi dasar MD5 ................................................................................. 198
TABEL 7.2 Nilai T[i] ............................................................................................................ 199
TABEL 7.3 Perincian operasi pada fungsi F(b, c, d) ........................................................... 199
TABEL 7.4 Perincian operasi pada fungsi G(b, c, d) ........................................................... 200
TABEL 7.5 Perincian operasi pada fungsi H(b, c, d) ........................................................... 200
TABEL 7.6 Perincian operasi pada fungsi I(b, c, d) ............................................................ 201
TABEL 7.7 Contoh kunci Playfair (Iswahyudi et al, 2012).................................................. 209
TABEL 7.8 Analisis waktu pada hasil pengujian (Setyaningsih et al, 2013) ....................... 213
BAB I
PENGANTAR KRIPTOGRAFI

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. membedakan antara sistem kriptografi dengan sistem pengamanan data yang lain;
2. memahami tujuan sistem kriptografi;
3. mengenal perkembangan kriptografi di dunia;
4. memahami dan menjelaskan is lah-is lah yang digunakan dalam kriptografi.

Kemajuan di bidang telekomunikasi dan komputer telah memungkinkan seseorang melakukan


transaksi bisnis tanpa uang tunai serta mengirimkan informasi kepada orang lain secara
online dengan fasilitas internet. Kegiatan-kegiatan itu tentu saja akan menimbulkan risiko
bila informasi yang sensi f dan berharga, misalnya PIN kartu kredit, diakses oleh orang-orang
yang dak berhak (unauthorized persons). Apabila informasi berharga itu jatuh ke tangan
orang jahat, pemilik kartu harus bersiap-siap terhadap melonjaknya tagihan kartu kreditnya.
Sebelum tahun 1970-an, teknologi kriptografi digunakan hanya untuk tujuan militer dan
diplomasi. Namun kemudian, bidang bisnis dan perorangan pun mulai menyadari pen ngnya
untuk melindungi informasi berharga.

1.1 PengerƟan Kriptografi


Pengamanan terhadap data (informasi) dapat dilakukan dengan beberapa cara, yaitu
steganografi, watermarking, dan kriptografi. Steganografi adalah ilmu menulis atau me-
nyembunyikan pesan tersembunyi dengan suatu cara sehingga selain si pengirim dan si
penerima, dak ada seorang pun yang mengetahui atau menyadari keberadaan suatu pesan
rahasia. Steganografi berbeda dengan watermarking dan kriptografi, yang menyamarkan ar
pesan, namun dak menyembunyikan keberadaan pesan. Steganografi dan kriptografi sering
kali digunakan secara bersamaan untuk menjamin keamanan pesan rahasia.
2 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Kriptografi (cryptography) berasal dari bahasa Yunani, yaitu dari kata crypto dan graphia yang
berar ‘penulisan rahasia’. Kriptografi adalah ilmu ataupun seni yang mempelajari bagaimana
membuat suatu pesan yang dikirim oleh pengirim dapat disampaikan kepada penerima dengan
aman (Schneier, 1996). Kriptografi merupakan bagian dari suatu cabang ilmu matema ka
yang disebut kriptologi (cryptology) [Gambar 1.1]. Kriptografi bertujuan menjaga kerahasiaan
informasi yang terkandung dalam data sehingga informasi tersebut dak dapat diketahui oleh
pihak yang dak sah. Perancang algoritma kriptografi disebut kriptografer.

Gambar 1.1 Area bidang kriptologi (Rosenthal, 2005)

Kriptanalisis (cryptanalysis) adalah suatu ilmu dan seni membuka (breaking) ciphertext
menjadi plaintext tanpa mengetahui kunci yang digunakan. Pelaku kriptanalisis disebut
kriptanalis (cryptanalyst). Kriptanalis merupakan “lawan” kriptografer. Persamaan kriptanalis
dan kriptografer adalah bahwa keduanya sama-sama menerjemahkan ciphertext menjadi
plaintext. Sementara perbedaannya adalah
1. kriptanalis bekerja atas nama penyadap yang dak berhak;
2. kriptografer bekerja atas legi masi pengirim atau penerima pesan.
Kriptografi sesungguhnya merupakan studi terhadap teknik matema s yang terkait dengan
aspek keamanan suatu sistem informasi seper kerahasiaan, integritas data, auten kasi, dan
ke adaan penyangkalan. Keempat aspek tersebut merupakan tujuan fundamental dari suatu
sistem kriptografi (Schneier, 1996).
1. Kerahasiaan (confiden ality)
Kerahasiaan adalah layanan yang digunakan untuk menjaga informasi dari se ap pihak
yang dak berwenang untuk mengaksesnya. Informasi ini tentunya hanya dapat diakses
oleh pihak-pihak yang berhak. Contoh serangannya adalah sniffing. Proteksi dilakukan
dengan metode enkripsi.
2. Integritas data (data integrity)
Integritas data adalah layanan yang bertujuan untuk mencegah terjadinya pengubahan
informasi oleh pihak-pihak yang dak berwenang. Integritas data harus dipas kan agar
PENGANTAR KRIPTOGRAFI 3
sistem informasi mampu mendeteksi terjadinya manipulasi data. Manipulasi data yang
dimaksud di sini melipu penyisipan, penghapusan, ataupun penggan an data. Contoh
serangannya adalah spoofing, virus, trojan horse, atau man in the middle a ack.
Proteksi dilakukan dengan signature, cer ficate, dan hash.
3. AutenƟkasi (authen ca on)
Auten kasi adalah layanan yang terkait dengan iden fikasi terhadap pihak-pihak yang
ingin mengakses sistem informasi (authen ca on) ataupun keaslian data dari sistem
informasi itu sendiri (data origin authen ca on). Contoh serangannya adalah password
palsu, terminal palsu, atau situs web palsu. Proteksi dilakukan dengan cer ficates.
4. KeƟadaan penyangkalan (nonrepudia on)
Ke adaan penyangkalan adalah layanan yang berfungsi untuk mencegah terjadinya
penyangkalan terhadap suatu aksi yang dilakukan oleh pelaku sistem informasi.

1.2 Sejarah Kriptografi


Lima kelompok orang yang menggunakan dan berkontribusi pada kriptografi adalah
1. militer (termasuk intelijen dan mata-mata);
2. korps diploma k;
3. penulis buku harian (diarist);
4. pencinta (lovers)
Di India, kriptografi digunakan oleh pencinta untuk berkomunikasi tanpa diketahui orang.
Buk ini ditemukan di dalam buku Kama Sutra yang merekomendasikan bahwa wanita
seharusnya mempelajari seni memahami tulisan dengan cipher.
5. keagamaan
Kriptografi digunakan untuk alasan keagamaan demi menjaga tulisan religius dari gangguan
otoritas poli k atau budaya yang dominan saat itu, contohnya 666 atau the Number of the
Beast di dalam Kitab Perjanjian Baru.
Kriptografi memiliki sejarah yang panjang dan mengagumkan. Sejarah lengkap kriptografi
dapat ditemukan di dalam buku David Kahn, The Codebreakers. Penulisan rahasia ini dapat
dilacak kembali ke 3.000 tahun sebelum Masehi saat digunakan oleh bangsa Mesir. Mereka
menggunakan hieroglyphcs yang dak standar (Gambar 1.2) untuk menyembunyikan tulisan
supaya dak dapat diketahui oleh mereka yang dak diharapkan.
4 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

(a) (b)
Gambar 1.2 (a) Contoh hieroglyphcs untuk menyandikan huruf (sumber: h p://loepies.wordpress.
com/2010/10/29/tulisan-hieroglyph-hieroglyphic/) dan (b) contoh hieroglyphcs untuk menyandikan angka
(sumber: h p://ancientegyptweblog.blogspot.com/2004_05_01_archive.html)

Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berar ‘ukiran rahasia’.
Hieroglyphcs berevolusi menjadi hiera c, yaitu aksara bergaya (stylized script) yang lebih
mudah digunakan.

Gambar 1.3 Media kriptografi yang digunakan oleh bangsa Yunani kuno
(sumber: www.ilhuna.wordpress.com)

Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Sparta dalam bentuk sepotong papi-
rus atau scytale, perkamen yang dibungkus dengan batang kayu silinder (Gambar 1.3). Pada
media tersebut pesan ditulis secara horizontal (baris per baris). Bila pita dilepaskan, huruf-
huruf di dalamnya tersusun membentuk pesan rahasia. Untuk membaca pesan, penerima
melilitkan kembali silinder yang diameternya sama dengan diameter silinder pengirim.
Sekitar 50 SM, Julius Caesar, Kaisar Roma, menggunakan cipher subs tusi untuk mengirim
pesan ke Marcus Tullius Cicero. Pada cipher ini huruf-huruf alfabet disubs tusi dengan huruf-
huruf yang lain pada alfabet yang sama. Karena hanya satu alfabet yang digunakan, cipher
ini merupakan subs tusi monoalfabe k. Cipher semacam ini mencakup penggeseran alfabet
dengan 3 huruf dan mensubs tusikan huruf tersebut. Subs tusi ini kadang dikenal dengan C3
(untuk Caesar menggeser 3 tempat). Secara umum cipher sistem Caesar dapat ditulis dengan
persamaan berikut:
PENGANTAR KRIPTOGRAFI 5
Zi = Cn(Pi) (1.1)

Keterangan:
Zi karakter-karakter ciphertext
Cn transformasi subs tusi alfabe k
n jumlah huruf yang digeser
Pi karakter-karakter plaintext

Disk cipher mempunyai peranan pen ng dalam kriptografi sekitar 500 tahun yang lalu.
Sekitar tahun 1460 di Italia, Leon Ba sta Alber mengembangkan disk cipher untuk enkripsi.
Sistemnya terdiri atas dua disk konsentris. Se ap disk memiliki alfabet di sekelilingnya, dan
dengan memutar salah satu disk dalam hubungannya dengan disk yang lain, huruf pada alfabet
yang satu dapat ditransformasikan ke huruf pada alfabet yang lain.

Gambar 1.4 Caesar wheel


(sumber: www.prizecodebreaker.com)

Di Inggris pada abad ke-17, sejarah telah mencatat adanya korban terkait dengan kriptografi.
Ratu Maria dari Skotlandia dipancung setelah pesan rahasianya dari balik penjara (pesan
terenkripsi berisi rencana untuk membunuh Ratu Elizabeth I) berhasil dipecahkan oleh Thomas
Phelippes, seorang pemecah kode.

Gambar 1.5 Ratu Maria dari Skotlandia


(sumber: www.bri shmonarchy.tumblr.com)

Sejarah kriptografi paralel dengan sejarah kriptanalisis. Bangsa Arab menciptakan kriptanalisis
karena kemahiran mereka dalam bidang matema ka, sta s k, dan linguis k. Karena se ap
6 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

muslim perlu menambah pengetahuannya, mereka mempelajari peradaban terdahulu dan


menerjemahkan tulisan-tulisan dari era tersebut ke bahasa Arab. Pada tahun 815, Khalifah
al-Mámun mendirikan House of Wisdom di Bagdad yang menjadi k pusat dari usaha-usaha
penerjemahan.
Kriptanalisis dikemukakan pertama kali oleh seorang filsuf Arab pada abad ke-9 bernama Abu
Yusuf Yaqub Ibnu Ishaq Ibnu As-Sabbah Ibnu ‘Omran Ibnu Ismail Al-Kindi, atau yang lebih
dikenal sebagai Al-Kindi. Al-Kindi menulis buku tentang seni memecahkan kode yang berjudul
Risalah fi Is khraj al-Mu’amma (A Manuscript on Deciphering Cryptographic Messages)
[Gambar 1.6]. Al-Kindi menemukan frekuensi perulangan huruf di dalam Al-Quran. Teknik
yang digunakan Al-Kindi kelak dinamakan analisis frekuensi, yaitu teknik untuk memecahkan
ciphertext berdasarkan frekuensi kemunculan karakter di dalam pesan.

Gambar 1.6 Halaman pertama A Manuscript on Deciphering Cryptographic Message


(sumber: www.code-breaking.so ware.informer.com)

Pada tahun 1790, Thomas Jefferson mengembangkan alat enkripsi dengan menggunakan
tumpukan 26 disk yang dapat diputar secara terpisah. Pesan dirakit dengan memutar se ap
disk ke huruf yang tepat di bawah batang berjajar. Kemudian, batang berjajar diputar dengan
sudut tertentu (A), dan huruf-huruf di bawah batang adalah pesan yang terenkripsi. Penerima
akan menjajarkan karakter-karakter cipher di bawah batang berjajar, memutar batang kembali
dengan sudut A dan membaca pesan plaintext. Sistem disk digunakan secara luas selama
Perang Sipil Amerika Serikat. Seorang perwira-sinyal federal mendapatkan hak paten pada
sistem disk yang mirip dengan yang ditemukan oleh Leon Ba sta Alber di Italia, dan dia
menggunakannya untuk mengodekan dan mendekodekan sinyal-sinyal bendera.
Sistem Unix menggunakan cipher subs tusi yang disebut ROT 13 yang menggeser alfabet
sebanyak 13 tempat. Penggeseran 13-tempat lainnya membawa alfabet kembali ke posisi
semula untuk mendekodekan pesan.
Mesin kriptografi mekanik yang disebut Hagelin Machine dibuat pada tahun 1920 oleh Boris
Hagelin di Stockholm, Swedia. Di Amerika, mesin Hagelin dikenal sebagai M-209.
PENGANTAR KRIPTOGRAFI 7

Gambar 1.7 Mesin Enigma, digunakan olek militer Jerman pada akhir 1920 dan pada akhir PD II, memakai
ciphertext elektro mekanik yang kompleks untuk menjaga kerahasiaan komunikasi yang sensi f

Pada tahun 1920-an, Herbert O. Yardley bertugas di organisasi rahasia Amerika MI-8 yang
dikenal sebagai Black Chamber. MI-8 menjebol kode-kode sejumlah negara. Selama Konferensi
Angkatan Laut Washington tahun 1921–1922, Amerika Serikat membatasi negosiasi dengan
Jepang karena MI-8 telah memberikan rencana negosiasi Jepang yang telah disadap kepada
Sekretaris Negara Amerika. Penutupan MI-8 pada tahun 1929 oleh Departemen Luar Negeri
membuat Yardley merasa kecewa. Sebagai balasannya, Yardley menerbitkan buku The
American Black Chamber, yang menggambarkan kepada dunia tentang rahasia MI-8. Karena
kontribusinya dalam bidang kriptografi, Yardley dikenal sebagai “Bapak Kriptografi Amerika”.

Gambar 1.8 Mesin pembaca ciphertext Lorenz milik Jerman, digunakan saat PD II
(sumber: www.tripl3-m.blogspot.com)

1.3 Mekanisme Kriptografi


Sistem kriptografi (cryptosystem) bekerja dengan cara menyandikan suatu pesan menjadi kode
rahasia yang dimenger oleh pelaku sistem informasi. Mekanisme kerja semacam ini pada
dasarnya telah dikenal sejak zaman dahulu. Bangsa Mesir kuno sekitar 4.000 tahun yang lalu
bahkan telah memprak kkannya dengan cara yang sangat primi f.
8 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Dalam era teknologi informasi sekarang ini mekanisme yang sama masih digunakan, tetapi
tentu implementasi sistemnya berbeda. Sebelum membahas lebih jauh tentang mekanisme
kriptografi modern, berikut diberikan beberapa is lah yang umum digunakan dalam
pembahasan kriptografi.
1. Plaintext
Plaintext (message) adalah pesan asli yang ingin dikirimkan dan dijaga keamanannya.
2. Ciphertext
Ciphertext adalah pesan yang telah dikodekan (disandikan) sehingga siap dikirimkan.
3. Cipher
Cipher adalah algoritma matema s untuk menyandikan plaintext menjadi ciphertext.
4. Enkripsi
Enkripsi (encryp on) adalah proses untuk menyandikan plaintext menjadi ciphertext.
5. Dekripsi
Dekripsi (decryp on) adalah proses untuk memperoleh kembali plaintext dari ciphertext.
6. Sistem kriptografi atau cryptographic system (cryptosystem)
Sistem kriptografi adalah suatu fasilitas atau sebuah algoritma kriptografi yang ditambah
dengan semua kemungkinan plaintext, ciphertext, dan kunci untuk mengonversikan
plaintext ke ciphertext, dan sebaliknya, serta dirancang untuk mengamankan suatu sistem
informasi.

Gambar 1.9 Mekanisme kriptografi

Proses kriptografi pada dasarnya sangat sederhana. Plaintext (m) akan dilewatkan pada proses
enkripsi (E) sehingga menghasilkan ciphertext (c). Kemudian, untuk memperoleh kembali
plaintext, ciphertext (c) melalui proses dekripsi (D) akan menghasilkan kembali plaintext (m).
Secara matema s prosesnya dapat dinyatakan sebagai berikut:
1. Proses enkripsi
C = E (M) (1.2)
Keterangan:
M pesan asli
E proses enkripsi
C pesan dalam bahasa sandi (untuk ringkasnya, disebut sandi)
PENGANTAR KRIPTOGRAFI 9
2. Proses dekripsi
M = D (C) (1.3)
Keterangan:
M pesan asli
D proses dekripsi
C pesan dalam bahasa sandi

Kriptografi sederhana seper ini menggunakan algoritma penyandian yang disebut cipher.
Keamanannya bergantung pada kerahasiaan algoritma penyandian tersebut. Oleh karena
itu, algoritmanya harus dirahasiakan. Kriptografi yang digunakan pada kelompok yang besar
dengan anggota yang senan asa berubah akan menimbulkan masalah. Permasalahan mbul
jika ada anggota yang meninggalkan kelompok. Jika itu yang terjadi, algoritma harus digan
karena anggota tersebut bisa saja membocorkan algoritma.
Selain memanfaatkan algoritma, kriptografi modern juga menggunakan kunci (key) untuk
memecahkan masalah keluarnya anggota kelompok. Proses enkripsi dan dekripsi dilakukan
dengan kunci. Se ap anggota memiliki kuncinya masing-masing yang digunakan untuk proses
enkripsi dan dekripsi yang akan dilakukannya. Dengan demikian, ada sedikit perubahan yang
harus dilakukan pada mekanisme yang digambarkan pada Gambar 1.9 menjadi Gambar 1.10.

Gambar 1.10 Kriptografi berbasis kunci

Mekanisme kriptografi pada Gambar 1.10 dinamakan kriptografi berbasis kunci. Kriptosistem
akan terdiri atas algoritma dan kunci beserta segala plaintext dan ciphertext-nya. Persamaan
matema snya menjadi seper berikut:
1. Proses enkripsi
C = Ee (M) (1.4)
Keterangan:
M pesan asli
E proses enkripsi
C pesan dalam bahasa sandi
e kunci enkripsi
10 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

2. Proses dekripsi
M = Dd (C) (1.5)
Keterangan:
D proses dekripsi
d kunci dekripsi
Keamanan suatu pesan tergantung pada kunci yang digunakan, bukan pada algoritmanya
sehingga algoritma yang dipakai bisa dipublikasikan dan dianalisis, serta produk-produk yang
menggunakan algoritma tersebut dapat diproduksi secara massal.

1.4 Evaluasi
1. Jelaskan perbedaan antara steganografi, watermaking, dan kriptografi terkait dengan
pengamanan data dan informasi.
2. Berikan penjelasan mengenai definisi kriptografi dari dua sumber yang berbeda.
3. Sebutkan dan jelaskan secara lengkap aspek-aspek yang merupakan tujuan fundamental
dari suatu sistem kriptografi.
4. Ceritakan secara singkat sejarah perkembangan kriptografi.
5. Jelaskan perbedaan dan persamaan antara kriptografer dan kriptanalis.
BAB II
SISTEM KRIPTOGRAFI

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. memahami karakteris k dan mekanisme kerja sistem kriptografi;
2. mengenal dan memahami sistem kriptografi berdasarkan jenis kunci yang
digunakan;
3. menjelaskan permasalahan yang berhubungan dengan keamanan sistem
kriptografi;
4. membedakan jenis serangan terhadap sistem kriptografi;
5. menjelaskan aplikasi kriptografi dalam keamanan komputer dan jaringan.

Kehidupan kita saat ini dilingkupi oleh kriptografi, mulai dari transaksi di mesin ATM, transaksi
di bank, transaksi dengan kartu kredit, percakapan melalui ponsel, pengaksesan internet hingga
pengak fan peluru kendali. Begitu pen ngnya kriptografi untuk keamanan informasi sehingga
jika membicarakan masalah keamanan terkait dengan penggunaan komputer, orang dak bisa
memisahkannya dengan kriptografi. Pokok bahasan ini akan membahas jenis dan karakteris k
sistem kriptografi, jenis serangan yang ditujukan terhadap sistem kriptografi, serta keamanan
sistem kriptografi.

2.1 Sistem Kriptografi (Kriptosistem)


Sistem kriptografi (kriptosistem) yang baik harus memiliki karakteris k sebagai berikut.
1. Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma
yang digunakan.
2. Kriptosistem yang baik memiliki ruang kunci (keyspace) yang besar.
3. Kriptosistem yang baik akan menghasilkan ciphertext yang terlihat acak dalam seluruh tes
sta s k yang dilakukan terhadapnya.
4. Kriptosistem yang baik mampu menahan seluruh serangan yang telah dikenal sebelumnya.
Perlu diperha kan bahwa meskipun berhasil memenuhi seluruh karakteris k di atas, suatu
kriptosistem belum bisa dikatakan baik. Banyak kriptosistem lemah yang terlihat baik pada
12 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

awalnya. Untuk menunjukkan apakah suatu kriptosistem kuat atau lemah, kadang kala kita
membutuhkan pembuk an matema ka.
Hingga saat ini masih banyak orang yang menggunakan kriptosistem yang rela f mudah dibuka.
Alasan digunakannya kriptosistem tersebut adalah karena mereka dak mengetahui sistem
lain yang lebih baik serta kadang kala terdapat mo vasi yang kurang untuk menginvestasikan
seluruh usaha yang diperlukan untuk membuka suatu sistem.
Kriptosistem terdiri atas sebuah algoritma, seluruh kemungkinan plaintext, ciphertext, dan
kunci-kunci. Secara umum, berdasarkan jenis kunci yang digunakan dalam proses enkripsi
dan dekripsi, kriptosistem dapat dibedakan menjadi dua jenis, yaitu kriptografi kunci simetrik
(symmetric cryptosystem) dan kriptografi kunci asimetrik (asymmetric cryptosystem).
Perbedaan utama di antara keduanya terletak pada sama dan daknya kunci yang digunakan
dalam proses enkripsi dengan kunci yang dipakai pada proses dekripsi. Kekuatan penyandian
jenis ini bergantung pada kunci yang digunakan. Beberapa algoritma enkripsi memiliki
kelemahan pada kunci yang digunakan. Oleh karena itu, kunci yang lemah dak boleh
digunakan. Kekuatan enkripsi juga ditentukan dari panjang kunci (biasanya dalam ukuran
bit). Kunci yang lebih panjang umumnya lebih aman dibandingkan dengan kunci yang pendek
sehingga enkripsi dengan kunci 128-bit lebih sukar dipecahkan daripada enkripsi dengan
kunci 56-bit. Semakin panjang sebuah kunci, semakin besar keyspace yang harus dijalani
untuk mencari kunci dengan cara brute force a ack atau mencoba-coba karena keyspace yang
harus dilihat merupakan pangkat dari bilangan 2. Jadi, kunci 128-bit memiliki keyspace 2128,
sedangkan kunci 56-bit memiliki keyspace 256. Ar nya, waktu untuk menemukan kunci yang
tepat untuk proses penyandian semakin lama (Sasongko, 2005).
Berdasarkan besar data yang diolah dalam satu kali proses, algoritma kriptografi dapat
dibedakan menjadi dua jenis, yaitu algoritma cipher blok (block cipher) dan cipher aliran
(stream cipher). Cipher blok bekerja dengan memproses data secara blok, di mana beberapa
karakter/data digabungkan menjadi satu blok. Proses pada se ap blok menghasilkan keluaran
satu blok juga. Kriptografi untuk jenis cipher aliran bekerja memproses masukan karakter atau
data secara terus-menerus dan menghasilkan data pada saat yang bersamaan.

2.1.1 Kriptografi Kunci Simetrik


Kriptografi kunci simetrik (symmetric cryptosystem) menggunakan kunci yang pada prinsipnya
iden k untuk proses enkripsi dan dekripsi, tetapi satu buah kunci dapat pula diturunkan dari
kunci lainnya. Kriptografi kunci simetrik sangat menekankan pada kerahasiaan kunci yang
digunakan untuk proses enkripsi dan dekripsi. Kriptografi kunci simetrik kadang disebut
kriptografi kunci rahasia (secret-key cryptography) yang merupakan bentuk kriptografi yang
lebih tradisional, di mana sebuah kunci tunggal dapat digunakan untuk mengenkripsi dan
mendekripsi pesan. Kriptografi kunci rahasia dak hanya berkaitan dengan enkripsi, tetapi
juga dengan auten kasi. Salah satu tekniknya disebut message authen ca on codes.
SISTEM KRIPTOGRAFI 13
Kriptografi kunci simetrik mengarah pada metode enkripsi di mana baik pengirim maupun
penerima memiliki kunci yang sama (kebanyakan kunci yang ada sedikit berbeda, namun
masih berhubungan dalam hal kemudahan perhitungan). Secara matema s kriptografi kunci
simetrik dapat dinyatakan dengan persamaan berikut:
Ek(m) = c

Dk(c) = m (2.1)
Keterangan:
E proses enkripsi
D proses dekripsi
k kunci yang digunakan baik untuk proses enkripsi maupun dekripsi
m plaintext
c ciphertext
Gambar 2.1 mengilustrasikan mekanisme kerja kriptografi kunci simetrik antara dua pelaku
sistem informasi, yaitu Salsa dan Nohan.
1. Salsa dan Nohan menyetujui algoritma simetrik yang akan digunakan.
2. Salsa dan Nohan menyetujui kunci yang akan dipakai.
3. Salsa membuat pesan plaintext yang akan dikirimkan kepada Nohan, lalu melakukan
proses enkripsi dengan kunci dan algoritma yang telah disepaka sehingga menghasilkan
ciphertext.
4. Salsa mengirimkan ciphertext tersebut ke Nohan.
5. Nohan menerima ciphertext, lalu melakukan dekripsi dengan kunci dan algoritma yang
sama sehingga memperoleh plaintext.

Gambar 2.1 Sistem kriptografi kunci rahasia


14 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 2.2 memperlihatkan bahwa harus ada jalur aman (secure channel) dahulu yang
memungkinkan Nohan dan Salsa melakukan transaksi kunci. Hal ini menjadi masalah karena jika
jalur itu memang ada, tentu sistem kriptografi dak diperlukan lagi dalam proses komunikasi.
Masalah ini dikenal sebagai masalah penyebaran kunci (key distribu on problem).

Gambar 2.2 Mekanisme kriptografi kunci simetrik

Masalah utama yang dihadapi sistem kriptografi kunci simetrik adalah membuat pengirim
dan penerima menyetujui kunci rahasia tanpa ada orang lain yang mengetahuinya. Hal ini
membutuhkan metode di mana dua pihak dapat berkomunikasi tanpa takut akan disadap.
Kelemahan lainnya adalah bahwa untuk se ap pasang pelaku sistem informasi diperlukan
sebuah kunci yang berbeda. Jika terdapat n pelaku sistem informasi, agar se ap pasang pelaku
dapat melakukan komunikasi diperlukan kunci sejumlah
n( n − 1)
n C2 = (2.2)
2
Keterangan:
C fungsi kombinasi
n menyatakan banyaknya pengguna
Penyediaan kunci akan menjadi masalah apabila jumlah n sangat besar, yang dikenal sebagai
masalah manajemen kunci (key management problem). Meskipun memiliki kelemahan,
kriptografi kunci simetrik juga memiliki keuntungan seper kecepatan operasi yang jauh lebih
nggi dibandingkan dengan kriptografi kunci asimetrik.
Selanjutnya, teknik paling umum dalam kriptografi kunci rahasia adalah
1. cipher blok (block cipher),
2. cipher aliran (stream cipher), dan
3. message authen ca on codes.
SISTEM KRIPTOGRAFI 15
Cipher blok membagi sebuah pesan dalam beberapa blok sebesar n bit, kemudian mengenkripsi
se ap blok tersebut dengan sebuah kunci rahasia menggunakan algoritma khusus sehingga akan
menghasilkan informasi rahasia dalam blok-blok yang berukuran sama seper diilustrasikan
pada Gambar 2.3.

Gambar 2.3 Teknik cipher blok

Data Encryp on Standard (DES) dan Advanced Encryp on Standard (AES) adalah desain sandi
blok yang sudah dirancang sesuai dengan standar kriptografi pemerintah Amerika Serikat,
meskipun terdapat bantahan dari standar resminya. DES masih cukup terkenal dan dipakai
secara luas, mulai dari enkripsi ATM sampai privasi e-mail dan akses keamanan. Banyak sandi
blok lain yang telah didesain dan diluncurkan ke publik dengan memper mbangkan kualitas
dalam berbagai variasi, tetapi banyak pula yang sudah terbongkar. Contoh algoritma cipher
blok yang terkenal lainnya adalah sebagai berikut:
1. Blowfish, 64 block size, 128–448 key size (Bruce Schenier);
2. RC2, 64 block size, 40–1024 key size (Ron Rivest, RSA);
3. RC5, 64–256 block size, 64–256 key size (Ron Rivest, RSA);
4. CAST, 64 block size, 128 key size (Kanada);
5. IDEA (IPES), 64 block size, 128 key size (Lay/Massey, ETH Zürich);
6. 3DES (Triple DES), 64 block size, 168 key size;
7. Skipjack, 64 block size, 80 key size (NSA).
16 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 2.4 Bagan siklus ciphertext IDEA yang telah dipatenkan


(sumber: www.wordpress.com/2010/page/7/)

Algoritma cipher aliran adalah algoritma untuk mengirimkan informasi/data yang dioperasikan
dalam bentuk blok-blok yang lebih kecil (byte atau bit), biasanya satu karakter per satuan
waktu proses menggunakan transformasi enkripsi yang berubah se ap waktu.

2.1.2 Kriptografi Kunci Asimetrik


Kriptografi kunci asimetrik (assymmetric cryptosystem) menggunakan dua buah kunci. Sa-
tu kunci dapat dipublikasikan (kunci publik [public key]), sedangkan kunci yang lain harus
dirahasiakan (kunci privat [private key]), seper diilustrasikan pada Gambar 2.5. Kriptosistem
kunci asimetrik dikenal pula dengan nama kriptosistem kunci publik (public key cryptosystem).

Gambar 2.5 Sistem kriptografi kunci publik


SISTEM KRIPTOGRAFI 17
Salah satu implementasi kriptografi kunci asimetrik adalah PGP di mana untuk enkripsi e-mail
digunakan kunci publik, sedangkan untuk mendekripsi e-mail digunakan kunci privat. Dengan
menggunakan sistem kriptografi kunci asimetrik, mekanisme pengiriman pesan oleh Salsa
kepada Nohan menjadi seper Gambar 2.6.

Gambar 2.6 Mekanisme kriptografi kunci asimetrik

Langkah-langkahnya adalah sebagai berikut.


1. Salsa mengambil kunci publik milik Nohan yang didistribusikan kepada umum.
2. Salsa mengenkripsi plaintext dengan kunci publik Nohan tersebut sehingga menghasilkan
ciphertext.
3. Salsa mengirimkan ciphertext kepada Nohan.
4. Nohan yang menerima ciphertext tersebut melakukan proses dekripsi dengan menggunakan
kunci pribadi miliknya sehingga mendapatkan plaintext semula.
Pengiriman pesan dengan langkah di atas dapat digunakan untuk memecahkan masalah yang
dihadapi pada kriptografi kunci simetrik. Sebuah jalur aman untuk distribusi kunci dak lagi
diperlukan. Manajemen kuncinya juga lebih mudah karena se ap pelaku sistem informasi
memiliki sepasang kunci sehingga untuk n pelaku dibutuhkan total 2n kunci saja. Kelemahan
kriptografi kunci asimetrik adalah kecepatan operasi yang jauh lebih lambat daripada kriptografi
kunci simetrik.
Salah satu kriptografi kunci asimetrik yang banyak dipakai sekarang ini adalah RSA. RSA
menjadi standar de facto kriptografi kunci asimetrik dunia dan banyak dipakai pada transaksi
data dalam protokol internet.
18 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

2.2 Keamanan Kriptosistem


Sebuah kriptosistem dirancang untuk menjaga plaintext dari kemungkinan dibaca oleh pihak-
pihak yang dak berwenang, yang secara umum dinamakan sebagai penyerang (a acker).
Penyerang diasumsikan memiliki akses yang langsung dan tak terbatas terhadap jalur tak aman
yang digunakan untuk transaksi ciphertext.
Keamanan suatu kriptosistem merupakan masalah yang paling fundamental. Dengan
menggunakan sistem standar terbuka, keamanan suatu kriptosistem akan lebih mudah dan
lebih cepat dianalisis. Mengingat kenyataan ini, sekarang dak digunakan lagi algoritma rahasia
yang dak diketahui ngkat keamanannya.
Sebuah algoritma kriptografi dikatakan aman (computa onally secure) apabila memenuhi ga
kriteria berikut.
1. Persamaan matema s yang menggambarkan operasi algoritma kriptografi sangat kompleks
sehingga algoritma dak mungkin dipecahkan secara anali k.
2. Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam
ciphertext tersebut.
3. Waktu yang diperlukan untuk memecahkan ciphertext melampaui lamanya waktu informasi
tersebut harus dijaga kerahasiaannya.

2.2.1 Kriptanalisis
Tipe serangan paling umum terhadap suatu kriptosistem adalah serangan kriptanalisis
(cryptanalysis a ack). Kriptanalisis adalah ilmu yang mempelajari upaya-upaya untuk
memperoleh plaintext dari ciphertext tanpa informasi tentang kunci yang digunakan. Tujuan
serangan kriptanalisis adalah untuk mengetahui beberapa plaintext yang sesuai dengan
ciphertext yang ada dan berusaha menentukan kunci yang memetakan satu dengan yang
lainnya. Plaintext dapat diketahui karena ia merupakan standar atau karena pendugaan. Jika
suatu plaintext diduga berada di dalam suatu pesan, posisinya mungkin dak diketahui. Namun,
suatu pesan lazimnya cukup pendek sehingga memungkinkan penyerang (kriptanalis) menduga
plaintext yang diketahui dalam se ap posisi yang mungkin dan melakukan penyerangan pada
se ap kasus secara paralel.
Algoritma enkripsi yang kuat dak hanya mampu bertahan terhadap serangan plaintext yang
dikenal, tetapi juga terhadap adap ve chosen plaintext. Serangan menggunakan adap ve
chosen plaintext memungkinkan seorang kriptanalis memilih plaintext yang digunakan,
melakukannya berulang kali, kemudian memilih plaintext untuk tahap N+1 setelah menganalisis
hasil tahap N.
SISTEM KRIPTOGRAFI 19

2.2.2 Jenis Serangan


Serangan adalah se ap usaha atau percobaan yang dilakukan oleh kriptanalis untuk menemukan
kunci atau menemukan plaintext dari ciphertext-nya. Pada pembahasan mengenai serangan
terhadap kriptografi selalu diasumsikan bahwa kriptanalis mengetahui algoritma kriptografi
yang digunakan sehingga satu-satunya keamanan sistem kriptografi terletak sepenuhnya
pada kunci. Hal ini didasarkan pada prinsip Kerckhoff (1883) yang berbunyi, “Semua algoritma
kriptografi harus publik, hanya kunci yang rahasia.” Merahasiakan algoritma kriptografi bukan
solusi yang prak s karena pada akhirnya publik akan mengetahuinya. Cukup kunci saja yang
dirahasiakan. Jika kunci berhasil dicuri, kunci baru bisa dibangkitkan tanpa harus menggan
algoritmanya. Saat ini algoritma kriptografi telah dipublikasikan di dalam berbagai jurnal dan
buku-buku sehingga siapa pun dapat mempelajarinya. Menurut Schneier (1996), algoritma
terbaik adalah algoritma yang telah dipublikasikan dan telah diserang oleh para kriptografer
dan kriptanalis terbaik dunia dan hingga kini belum berhasil dipecahkan.
Sebuah algoritma kriptografi dikatakan aman mutlak tanpa syarat (uncondi onally secure)
apabila ciphertext yang dihasilkan algoritma tersebut dak mengandung cukup informasi
untuk menentukan plaintext-nya. Ar nya, ciphertext sebanyak apa pun yang dimiliki kriptanalis
dak memberikan informasi yang cukup untuk mendeduksi plaintext yang berkorespondensi
dengan ciphertext tersebut. Contoh algoritmanya adalah one- me pad.
Selanjutnya, sebuah algoritma kriptografi dikatakan aman secara komputasi (computa onally
secure) apabila memenuhi dua kriteria berikut.
1. Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam
ciphertext tersebut.
2. Waktu yang diperlukan untuk memecahkan ciphertext melampaui lamanya waktu informasi
tersebut harus dijaga kerahasiaannya. Contohnya, apabila dipunyai panjang kunci 128 bit
(7 karakter), untuk menemukan kunci, se daknya setengah dari semua kemungkinan kunci
yang ada harus dicoba, dan hal itu akan menghabiskan waktu 5,4 x 1024 tahun untuk satu
juta percobaan per de k. Hal ini dak mungkin karena umur alam ini saja baru pada orde
1011 tahun.
Jenis-jenis serangan bisa dibedakan berdasarkan keterlibatan penyerang dalam komunikasi,
teknik yang digunakan untuk menemukan kunci, banyaknya informasi yang diketahui
kriptanalis, serta cara dan posisi seseorang untuk mendapatkan pesan-pesan dalam saluran
komunikasi.
1. Berdasarkan keterlibatan penyerang dalam komunikasi
a. Serangan pasif (passive a ack)
Gambar 2.7 mengilustrasikan serangan pasif. Untuk serangan jenis ini penyerang
dak terlibat dalam komunikasi antara pengirim dan penerima, ia hanya melakukan
penyadapan untuk memperoleh data atau informasi sebanyak-banyaknya yang
digunakan untuk kriptanalisis.
20 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 2.7 Serangan pasif

Beberapa metode penyadapan data antara lain adalah wiretapping, electromagne c


eavesdropping, dan acous c eavesdropping.
1) Wiretapping
Penyadap mencegat data yang ditransmisikan pada saluran kabel komunikasi
dengan menggunakan sambungan perangkat keras.
2) Electromagne c eavesdropping
Penyadap mencegat data yang ditransmisikan melalui saluran nirkabel (wireless),
misalnya radio dan microwave.
3) Acous c eavesdropping
Menangkap gelombang suara yang dihasilkan oleh suara manusia.
b. Serangan akƟf (ac ve a ack)
Untuk serangan jenis ini penyerang mengintervensi komunikasi dan ikut memengaruhi
sistem untuk keuntungan dirinya, serta mengubah aliran pesan seper menghapus
sebagian ciphertext, mengubah ciphertext, menyisipkan potongan ciphertext palsu,
mengulang pesan lama, serta mengubah informasi yang tersimpan. Contoh serangan
ak f adalah man-in-the-middle a ack. Penyerang menghadang komunikasi antara
dua pihak, kemudian bersikap seolah-olah ia merupakan salah satu pihak yang
berkomunikasi, seper diilustrasikan pada Gambar 2.8. Tujuan serangan ini adalah
untuk mendapatkan informasi berharga seper kunci atau nilai rahasia lainnya.

Gambar 2.8 Man-in-the-middle a ack


(sumber: www.cryp.to/publica ons/web-secure-pla orm)
SISTEM KRIPTOGRAFI 21

Gambar 2.9 Man-in-the-middle a ack di bidang e-commerce


(sumber: www.securitydocs.com)

Gambar 2.9 memperlihatkan transaksi antara seorang nasabah dengan situs web
sebuah bank yang rentan dengan man-in-the-middle a ack. Jika dak ada auten kasi
en tas yang berkomunikasi, nasabah dak dapat memas kan bahwa ia berkomunikasi
dengan bank atau dengan “orang di tengah”.
2. Berdasarkan teknik yang digunakan untuk menemukan kunci
a. Exhaus ve a ack/brute force a ack
1) Mengungkap plaintext/kunci dengan mencoba semua kemungkinan kunci.
Apabila hanya tersedia ciphertext, ciphertext tersebut didekripsi menggunakan
se ap kemungkinan kunci, kemudian plaintext hasil dekripsi diperiksa apakah
mengandung ar atau dak. Jika hasil dekripsi mengandung ar , kunci yang sedang
dites berpeluang paling besar sebagai kunci untuk mengenkripsi pesan. Jika plaintext
yang dihasilkan dak berar , dilakukan tes lagi dengan kunci yang lain.
2) Untuk menghadapi serangan semacam ini, kriptografer harus menggunakan kunci
yang lebih panjang dan dak mudah ditebak. Semakin panjang kunci, semakin lama
waktu exhaus ve search-nya.
TABEL 2.1 memperlihatkan waktu yang dibutuhkan untuk menebak kunci dengan
panjang yang berbeda.
TABEL 2.1 Waktu yang diperlukan untuk exhaus ve key search (Stallings, 1993)
Ukuran Jumlah kemungkinan Lama waktu untuk 106 Lama waktu untuk
kunci kunci percobaan per deƟk 1012 percobaan per
deƟk
16 bit 216 = 65536 32,7 milide k 0,0327 mikrode k
32 bit 232 = 4,3 x 109 35,8 menit 2,15 milide k
56 bit 256 = 7,2 x 1016 1.142 tahun 10,01 jam
128 bit 2128 = 4,3 x 1038 5,4 x 1024 tahun 5,4 x 1018 tahun
22 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

b. Analy cal a ack


Pada jenis serangan ini kriptanalis dak mencoba-coba semua kemungkinan kunci,
tetapi menganalisis kelemahan algoritma kriptografi untuk mengurangi kemungkinan
kunci yang dak mungkin ada. Kriptanalis memecahkan persamaan-persamaan
matema ka (yang diperoleh dari definisi suatu algoritma kriptografi) yang mengandung
peubah-peubah yang merepresentasikan plaintext atau kunci. Teknik analisis yang
digunakan antara lain adalah
1) linear cryptanalysis,
2) differen al cryptanalysis, dan
3) integral cryptanalysis.
Untuk menghadapi serangan jenis ini, kriptografer harus membuat algoritma kriptografi
yang kompleks. Plaintext dirancang dengan fungsi matema ka dari ciphertext dan
kunci yang cukup kompleks di mana se ap kunci merupakan fungsi matema ka dari
ciphertext dan plaintext yang cukup kompleks. Secara umum metode analy cal a ack
lebih cepat menemukan kunci dibandingkan dengan exhaus ve a ack.
3. Berdasarkan banyaknya informasi yang diketahui kriptanalis
a. Ciphertext-only a ack
Dalam serangan jenis ini kriptanalis memiliki ciphertext dari sejumlah pesan yang
seluruhnya telah dienkripsi dengan algoritma yang sama yang digunakan untuk
menemukan kunci untuk dekripsi. Kriptanalis menggunakan teknik exhaus ve key
search untuk mengubah plaintext menjadi ciphertext atau teknik analisis frekuensi
untuk menerka informasi yang diketahui.
Diberikan: C1 = Ek(P1), C2 = Ek(P2), …, Ci = Ek(Pi) (2.3)
Deduksi: P1, P2, …, Pi atau k untuk mendapatkan
Pi+1 dari Ci+1 = Ek(Pi+1)
b. Known-plaintext a ack
Pada pe serangan ini kriptanalis memiliki akses dak hanya ke ciphertext sejumlah
pesan, namun juga mempunyai plaintext pesan-pesan tersebut. Serangan ini kadang
disebut pula cleartext a ack.
Secara formal formulasi known-plaintext a ack adalah
Diberikan: P1, C1 = Ek(P1), P2, C2 = Ek(P2), … , Pi, Ci = Ek(Pi) (2.4)
Deduksi: k untuk mendapatkan Pi+1 dari Ci+1 = Ek(Pi+1)
Plaintext mungkin diperoleh dengan mempelajari karakteris k pesan. Beberapa pesan
yang formatnya terstruktur membuka peluang bagi kriptanalis untuk menerka plaintext
dari ciphertext yang bersesuaian. Contoh:
1) From dan To di dalam e-mail;
2) ”Dengan hormat” atau wassalam pada surat resmi;
3) #include atau program di dalam source code.
SISTEM KRIPTOGRAFI 23
c. Chosen-plaintext a ack
Pada serangan jenis ini kriptanalis dak hanya memiliki akses atas ciphertext dan
plaintext untuk beberapa pesan, tetapi juga dapat memilih penggalan dari plaintext
yang dienkripsi.
Diberikan: P1 , C1 = Ek ( P1 ), P2 , C2 = Ek ( P2 ),..., P1 , C1 = Ek ( Pi ) (2.5)
Kriptanalis dapat memilih di antara P1, P2, ..., Pi
Deduksi: k untuk mendapatkan Pi+1 dari Ci+1 = Ek(Pi+1)

Gambar 2.10 Chosen-plaintext a ack

Gambar 2.10 menunjukkan serangan jenis ini dengan memilih plaintext yang
dienkripsikan pada mesin ATM. Se ap mesin ATM akan mengenkripsi PIN se ap kali
nasabah memasukkannya, kemudian mengirimkan ciphertext tersebut ke komputer
server di bank untuk diauten kasi. Seorang kriptanalis mengubah PIN yang dimilikinya,
kemudian memasukan PIN tersebut ke mesin ATM. Rekan kriptanalis yang lain menyadap
pengiriman ciphertext “di tengah jalan”. Serangan ini diulang beberapa kali dengan
beberapa nilai PIN sehingga kriptanalis memperoleh sejumlah plaintext dan ciphertext
yang bersesuaian. Kriptanalis mempelajari ciphertext tersebut untuk mendeduksi kunci
penyandian.
d. Adap ve-chosen-plaintext a ack
Serangan pe ini merupakan suatu kasus khusus chosen-plaintext a ack. Kriptanalis
dak hanya dapat memilih plaintext yang dienkripsi, tetapi juga memiliki kemampuan
untuk memodifikasi pilihan berdasarkan hasil enkripsi sebelumnya. Dalam chosen-
plaintext a ack, kriptanalis hanya dapat memiliki plaintext dalam suatu blok besar
untuk dienkripsi, sedangkan pada adap ve-chosen-plaintext a ack, kriptanalis dapat
memilih blok plaintext yang lebih kecil dan kemudian memilih yang lain berdasarkan
hasil yang pertama. Proses ini dapat dilakukan secara terus-menerus hingga kriptanalis
memperoleh seluruh informasi yang diinginkan.
24 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

e. Chosen-ciphertext a ack
Dalam chosen-ciphertext a ack kriptanalis memilih sejumlah ciphertext untuk
didekripsikan dan memiliki akses ke plaintext hasil dekripsi. Berdasarkan hasil dekripsi,
kriptanalis akan memilih ciphertext berikutnya.
Diberikan: C1, P1 = Dk(C1), C2, P2 = Dk(P2), …, Ci, Pi = Dk(Ci) (2.6)
Deduksi: k (yang mungkin diperlukan untuk mendekripsi pesan
pada waktu yang akan datang)
f. Chosen-key a ack
Jenis serangan ini merupakan kombinasi dari chosen-plaintext a ack dan chosen-
ciphertext a ack. Kriptanalis memiliki pengetahuan mengenai hubungan antara kunci-
kunci yang berbeda dan memilih kunci yang tepat untuk mendekripsi pesan.
4. Berdasarkan cara dan posisi seseorang untuk mendapatkan pesan-pesan dalam saluran
komunikasi
a. Sniffing
Secara harfiah sniffing berar ‘mengendus’, tentunya dalam hal ini yang diendus adalah
pesan (baik yang belum maupun yang sudah dienkripsi) dalam suatu saluran komuni-
kasi. Hal ini umum terjadi pada saluran publik yang dak aman yang mengakibatkan
sang pengendus dapat merekam pembicaraan yang terjadi.
Gambar 2.11 memperlihatkan contoh sniffing. Misalkan Salsa adalah pemakai kompu-
ter yang terhubung dengan suatu jaringan di kantor. Jika Salsa mengirimkan e-mail
ke Nohan yang berada di luar kota, e-mail tersebut akan dikirimkan dari komputer
Salsa, kemudian melewa jaringan komputer kantor Salsa (mungkin melewa server
atau gateway internet), selanjutnya keluar dari kantor melalui jaringan internet, dan
sampai di inbox e-mail Nohan. Pada saat e-mail tersebut melalui jaringan komputer
kantor Salsa, ak vitas sniffing bisa dilakukan. Sniffing bisa dilakukan oleh administrator
jaringan yang mengendalikan server, atau oleh pemakai komputer lain yang terhubung
pada jaringan komputer kantor Salsa, bahkan teman sebelah Salsa. E-mail Salsa bisa
ditangkap dengan ak vitas sniffing sehingga isinya bisa dibaca oleh pelaku sniffing.

Gambar 2.11 Sniffing


SISTEM KRIPTOGRAFI 25
Akibat dari kegiatan sniffing adalah sebagai berikut.
1. Hilangnya privasi, seper contoh di atas. Jika e-mail bisa ditangkap oleh sniffer
(pelaku sniffing) dan dibaca, isi e-mail dak lagi bersifat pribadi.
2. Tercurinya informasi yang pen ng dan rahasia. Password dan username adalah
informasi rahasia yang bisa ditangkap oleh sniffer dengan mudah saat si korban
melakukan login di halaman situs web melalui internet. Jika username dan password
tercuri, dengan mudah si sniffer menggan nya dengan yang baru, kemudian mencuri
semua informasi dalam halaman situs web yang dilindungi dengan password
tersebut. Akibatnya, si korban dak bisa login karena password telah diubah.
Untuk mencegah jenis serangan ini, lakukan enkripsi (SSL, SSH, atau PGP), dan dak
melakukan ak vitas yang sifatnya rahasia, misalnya e-mail, e-banking, atau cha ng
rahasia pada suatu jaringan komputer yang belum dikenal seper warnet atau kantor
yang memiliki komputer yang sangat banyak dan dihubungkan dalam suatu jaringan.
b. Replay a ack
Replay a ack adalah serangan jaringan di mana penyerang menyadap percakapan
antara pengirim dan penerima, serta mengambil informasi auten k dengan berbagi
kunci. Penyerang kemudian menghubungi penerima dengan kunci itu sebagai buk
iden tas dan keaslian untuk menipu penerima.

Gambar 2.12 Replay a ack

Gambar 2.12 mengilustrasikan replay a ack. Misalkan dalam komunikasi antara Salsa
dan Nohan, Salsa membagi kuncinya ke Nohan untuk membuk kan iden tasnya,
sementara itu penyerang Yudit menguping percakapan antara mereka dan menjaga
informasi yang dibutuhkan untuk membuk kan iden tasnya ke Salsa. Kemudian, Yudit
mengontak Salsa dengan membuk kan keasliannya supaya Salsa percaya bahwa yang
melakukan komunikasi adalah Nohan.
26 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

c. Spoofing
Spoofing adalah teknik untuk memperoleh akses yang dak sah ke suatu komputer
atau informasi di mana penyerang berhubungan dengan pengguna dengan berpura-
pura menjadi host yang dapat dipercaya. Spoofing biasanya dilakukan oleh seorang
hacker/cracker. Sebagai contoh, seorang penyerang (misalnya, Yudit) bisa menyamar
menjadi Nohan. Semua orang dibuat percaya bahwa Yudit adalah Nohan. Penyerang
berusaha meyakinkan pihak-pihak lain bahwa tak ada yang salah dengan komunikasi
yang dilakukan, padahal komunikasi itu dilakukan dengan sang penipu/penyerang.
Contoh lain, jika nasabah memasukkan PIN ke dalam mesin ATM palsu yang benar-
benar seper asli, tentu sang penipu bisa mendapatkan PIN dan kopi pita magne k
kartu ATM milik sang nasabah. Pihak bank dak tahu bahwa telah terjadi kejahatan.
Ada beberapa jenis spoofing, di antaranya adalah
1) IP,
2) MAC address,
3) DNS, dan
4) rou ng.

Untuk mencegah spoofing, kita bisa menggunakan beberapa cara berikut:


1) mengimplementasikan firewall dengan benar;
2) memakai patch yang mencegah prediksi sequence number;
3) mengeset router agar dak bisa dilewa , kecuali melalui rute yang telah ditentukan.
d. Man-in-the-middle (Schneier, 1996)
Jika spoofing kadang hanya menipu satu pihak, dalam skenario ini saat Nohan hendak
berkomunikasi dengan Salsa, Yudit di mata Nohan seolah-olah adalah Salsa. Yudit juga
dapat menipu Salsa sehingga ia seolah-olah adalah Nohan. Yudit dapat berkuasa penuh
atas jalur komunikasi dan bisa membuat berita fitnah.

2.3 Penggunaan Kriptosistem


Kriptosistem sekarang ini telah dimanfaatkan dalam pengamanan suatu sistem informasi.
Penggunaan kriptografi dalam sebuah protokol terutama ditujukan untuk mencegah ataupun
mendeteksi adanya eavesdropping dan chea ng.
Pada jaringan Transfer Control Protocol/Internet Protocol (TCP/IP), misalnya, kriptografi telah
dimanfaatkan pada protokol Secure Hypertext Transfer Protocol (S/HTTP). Protokol S/HTTP
saat ini digunakan untuk transaksi HTTP dengan memanfaatkan kriptografi sebagai mekanisme
untuk menyandikan pesan yang dikirim. Gambar 2.13 menunjukkan mekanisme enkapsulasi
data pada jaringan TCP/IP tanpa dan dengan kriptografi.
SISTEM KRIPTOGRAFI 27

Gambar 2.13 Kriptografi pada TCP/IP

Gambar 2.13 memperlihatkan adanya penambahan satu layer baru bernama Secure Socket
Layer (SSL) yang berfungsi untuk melaksanakan mekanisme kriptografi terhadap informasi
sebelum dilakukan enkapsulasi dan pengiriman data. Penambahan layer SSL ini menyebabkan
terbentuknya protokol baru bernama HTTPS, yang menggan kan protokol HTTP untuk transaksi
HTTP yang aman. Protokol ini digunakan untuk mengamankan transaksi-transaksi data pada
banyak web e-commerce. Gambar 2.14 menunjukkan protokol HTTPS.

Gambar 2.14 Protokol HTTPS

Gambar 2.15 Implementasi kriptografi pada protokol HTTP berupa SSL


(h p://www.mdp.ac.id/materi/2010-2011-2/SP353/051041/)
28 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 2.16 Implementasi kriptografi pada remote login dengan SSH


(h p://www.mdp.ac.id/materi/2010-2011-2/SP353/051041/)

2.3.1 PengerƟan Protokol Kriptografi


Protokol adalah serangkaian langkah yang melibatkan dua pihak atau lebih dan dirancang
untuk menyelesaikan suatu tugas. Dari definisi tersebut dapat diambil beberapa ar sebagai
berikut.
1. Protokol memiliki urutan dari awal hingga akhir.
2. Se ap langkah harus dilaksanakan secara bergiliran.
3. Suatu langkah dak dapat dikerjakan bila langkah sebelumnya belum selesai.
4. Diperlukan dua pihak atau lebih untuk melaksanakan protokol.
5. Protokol harus mencapai suatu hasil.
Selain itu, suatu protokol pun memiliki karakteris k yang lain, yaitu
1. se ap orang yang terlibat dalam protokol harus terlebih dahulu mengetahui protokol dan
seluruh langkah yang akan dilaksanakan;
2. se ap orang yang terlibat dalam protokol harus setuju untuk mengiku nya;
3. protokol dak boleh menimbulkan kerancuan;
4. protokol harus lengkap.
Protokol kriptografi adalah suatu protokol yang menggunakan kriptografi. Protokol ini
melibatkan sejumlah algoritma kriptografi. Secara umum tujuan protokol ini lebih dari sekadar
kerahasiaan. Pihak-pihak yang berpar sipasi mungkin saja ingin membagi sebagian rahasianya
untuk menghitung sebuah nilai, menghasilkan urutan acak, ataupun menandatangani kontrak
secara bersamaan. Penggunaan kriptografi dalam sebuah protokol terutama ditujukan untuk
mencegah ataupun mendeteksi adanya eavesdropping dan chea ng.
SISTEM KRIPTOGRAFI 29

2.3.2 Fungsi Protokol


Dalam kehidupan kita sehari-hari terdapat banyak protokol dak resmi, misalnya saja dalam
permainan kartu atau dalam pemungutan suara pada pemilihan umum. Akan tetapi, dak ada
seorang pun yang memikirkannya. Protokol-protokol tersebut terus berkembang, dan semua
orang mengetahui bagaimana menggunakannya.
Saat ini semakin banyak interaksi antarmanusia yang dilakukan melalui jaringan komputer.
Jaringan komputer tentu saja memerlukan suatu protokol formal agar dapat melakukan hal
yang biasa dilakukan manusia tanpa berpikir. Bila kita berpindah dari satu daerah ke daerah
lain dan mengetahui bahwa kartu pemilihan suaranya berbeda dengan yang biasa kita
gunakan, kita dapat beradaptasi dengan mudah. Akan tetapi, kemampuan ini belum dimiliki
oleh komputer sehingga diperlukan suatu protokol.
Protokol digunakan untuk mengabstraksikan proses penyelesaian suatu tugas dari mekanisme
yang digunakan. Protokol komunikasi adalah sama, meskipun diimplementasikan pada PC atau
FAX. Bila kita yakin bahwa kita memiliki protokol yang baik, kita dapat mengimplementasikannya
dalam segala benda mulai dari telepon hingga pemanggang ro cerdas.

2.3.3 Penyerangan terhadap Protokol


Penyerangan terhadap protokol dapat ditujukan pada beberapa hal berikut:
1. algoritma kriptografi yang digunakan dalam protokol;
2. teknik kriptografi yang digunakan untuk mengimplementasikan algoritma dan protokol;
3. protokol itu sendiri;
Seseorang dapat mencoba berbagai cara untuk menyerang suatu protokol. Mereka yang dak
terlibat dalam protokol dapat menyadap sebagian atau seluruh protokol. Tindakan ini disebut
penyerangan pasif karena si penyerang dak memengaruhi atau mengubah protokol, ia hanya
mengama protokol dan berusaha memperoleh informasi. Seorang penyerang juga dapat
berusaha untuk mengubah protokol demi keuntungannya sendiri. Ia dapat mengirimkan pesan
dalam protokol, menghapusnya, atau bahkan mengubah informasi yang ada di dalam suatu
komputer. Tindakan- ndakan ini disebut sebagai penyerangan ak f karena ia membutuhkan
suatu campur tangan yang ak f.
Seorang penyerang dak hanya berasal dari lingkungan di luar protokol, namun mungkin juga
berasal dari dalam protokol itu sendiri. Ia dapat merupakan salah satu pihak yang terlibat
dalam protokol. Tipe penyerang semacam ini disebut cheater. Passive cheater akan mengiku
protokol, tetapi berusaha memperoleh informasi lebih banyak daripada yang diperbolehkan
protokol bagi dirinya. Sementara ac ve cheater mengubah protokol dalam usahanya untuk
berbuat curang. Usaha untuk menjaga keamanan protokol akan semakin sulit apabila pihak-
30 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

pihak yang terlibat umumnya merupakan ac ve cheater. Oleh karena itu, suatu protokol yang
baik harus mampu ataupun harus aman terhadap kemungkinan passive chea ng.

2.4 Evaluasi
1. Menurut Anda, bagaimanakah kriteria kriptosistem yang baik?
2. Jelaskan secara lengkap kelebihan dan kekurangan kriptosistem kunci asimetrik diban-
dingkan dengan kriptografi kunci simetrik.
3. Sebutkan bentuk-bentuk serangan yang dapat dilakukan oleh kriptanalis, dan menurut
pendapat Anda, bagaimana cara mengatasi serangan tersebut?
4. Berikan penjelasan secara lengkap mengenai apa yang Anda ketahui tentang penggunaan
kriptosistem untuk pengamanan jaringan.
5. Berikan analisis mengenai penggunaan kriptosistem yang diimplementasikan pada saluran
komunikasi yang digunakan saat ini.
BAB III
DASAR PEMROGRAMAN MATLAB
DAN PENGOLAHAN CITRA

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. mengenali lingkungan kerja MATLAB;
2. membuat program aplikasi dengan pemrograman MATLAB untuk
mengimplementasikan konsep penyandian dengan algoritma kriptografi;
3. memahami konsep dasar pengolahan citra (image) sebagai dasar penyandian citra.

3.1 Dasar Pemrograman MATLAB


MATLAB (matrix laboratory) adalah bahasa ngkat nggi yang interak f dan memungkinkan
pengguna melakukan komputasi secara intensif. MATLAB telah berkembang menjadi se-
buah lingkungan pemrograman canggih yang berisi fungsi-fungsi built-in untuk melakukan
pengelolaan sinyal, aljabar linear, dan kalkulasi matema s lainnya. MATLAB juga berisi toolbox
yang mencakup fungsi-fungsi tambahan untuk aplikasi khusus. Penggunaan MATLAB melipu
bidang-bidang berikut:
1. matema ka dan komputasi;
2. pembentukan algoritma akuisisi data;
3. pemodelan, simulasi, dan pembuatan proto pe;
4. analisis data, eksplorasi, dan visualisasi grafik;
5. keilmuan dan bidang rekayasa.

3.1.1 Lingkungan Kerja MATLAB


Setelah berhasil menginstal MATLAB pada komputer, akan muncul ikon MATLAB pada tampilan
desktop. Kemudian, apabila dilakukan dua kali klik pada ikon tersebut, akan muncul tampilan
seper pada Gambar 3.1.
32 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 3.1 Tampilan awal MATLAB

Pada tampilan awal MATLAB terlihat beberapa jendela yang merupakan bagian pen ng
MATLAB, di antaranya adalah jendela perintah, jendela ruang kerja, dan jendela history.
1. Jendela perintah (command window)
Command window adalah jendela yang digunakan untuk menuliskan atau mengeksekusi
semua perintah MATLAB, seper menuliskan perintah perhitungan sederhana, memanggil
fungsi, mencari informasi (help) tentang sebuah fungsi dengan aturan penulisannya, demo
program, dan sebagainya. Se ap penulisan perintah selalu diawali dengan prompt ‘>>’.
2. Jendela ruang kerja (workspace)
Jendela ruang kerja berisi informasi penggunaan variabel di dalam memori MATLAB seper
terlihat pada Gambar 3.2.

Gambar 3.2 Tampilan workspace

3. Jendela history (command history)


Jendela history berisi informasi tentang perintah yang pernah dituliskan sebelumnya.
Untuk menampilkan kembali perintah, tekan tombol panah ke atas atau klik perintah pada
jendela history, kemudian lakukan copy paste ke command window.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 33

Gambar 3.3 Tampilan command history

3.1.2 Variabel dan Operator


Seper bahasa pemrograman lainnya, MATLAB pun memiliki variabel. Tetapi dalam penu-
lisannya, variabel di dalam MATLAB dak perlu dideklarasikan karena MATLAB mampu
mengenali pe data dari variabel dan isi variabel tersebut. Aturan penulisan variabel pada
MATLAB bersifat case sensi ve, diawali dengan huruf dan selanjutnya boleh menggunakan
gabungan huruf-angka atau tanda garis bawah. MATLAB mampu mengenali sampai 31 karak-
ter pertama nama variabel dan mengabaikan yang selanjutnya.
Semua pe data di MATLAB memiliki bentuk yang sama, yaitu array. Array minimal berukuran
0 x 0 dan dapat bertambah menjadi array n x m dimensi dengan sembarang ukuran. MATLAB
mempunyai beberapa pe data dasar (atau class), yaitu logical, char, numeric, cell, structure,
java classes, dan func on handles.
Operator pada MATLAB diklasifikasikan menjadi ga bagian, yaitu operator aritme ka, ope-
rator relasional, dan operator logika.
1. Operator aritmeƟka
Operator aritme ka digunakan untuk mengerjakan komputasi numerik. Operator aritme-
ka yang dipakai pada aplikasi MATLAB dapat dilihat pada TABEL 3.1.
TABEL 3.1 Operator aritme ka
OPERATOR KETERANGAN
+ Penjumlahan
- Pengurangan
* Perkalian (aturan matriks)
.* Perkalian masing-masing elemen yang bersesuaian (aturan array)
/ Pembagian kanan (matriks)
./ Pembagian kanan (array)
\ Pembagian kiri (matriks)
.\ Pembagian kiri (array)
34 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

OPERATOR KETERANGAN
^ Perpangkatan (matriks)
.^ Perpangkatan (array)
: Langkah
2. Operator relasional
Operator relasional digunakan untuk membandingkan dua operan secara kuan ta f seper
terlihat pada TABEL 3.2.
TABEL 3.2 Operator relasional
OPERATOR KETERANGAN
== Sama dengan
~= Tidak sama dengan
< Kurang dari
> Lebih dari
<= Kurang dari sama dengan
>= Lebih dari sama dengan
3. Operator logika
Operator logika yang digunakan pada aplikasi MATLAB dapat dilihat pada TABEL 3.3.
TABEL 3.3 Operator logika
OPERATOR KETERANGAN
& Akan menghasilkan nilai 1 jika kedua elemen yang bersesuaian
memiliki nilai true dan 0 untuk yang lainnya.
| Akan bernilai 1 jika salah satu elemennya true.
~ Komplen dari elemen yang di-input-kan
xor Akan bernilai 1 jika salah satu dari kedua elemen memiliki nilai
berbeda, dan bernilai nol jika sama.

3.1.3 Array dan Matriks


Terdapat ga jenis format data di MATLAB, yaitu skalar, vektor, dan matriks.
1. Skalar adalah suatu bilangan tunggal.
2. Vektor adalah sekelompok bilangan yang tersusun secara satu-dimensi. Dalam MATLAB,
vektor biasanya disajikan sebagai vektor baris atau vektor kolom.
3. Matriks adalah sekelompok bilangan yang tersusun dalam segi empat dua-dimensi. Format
matriks pada MATLAB didefinisikan dengan jumlah baris dan kolom. Matriks di dalam
MATLAB dapat berbentuk matriks berdimensi 3, 4, atau lebih.
Array adalah kumpulan data-data skalar yang dinyatakan dalam bentuk baris, kolom, dan
gabungan dari keduanya. Kumpulan data dengan deret yang dak teratur mengharuskan
pemakai untuk menuliskan data satu per satu. Sebaliknya, kumpulan data dengan deret yang
teratur dapat diekspresikan dalam bentuk array sehingga memungkinkan pemakai untuk dak
menuliskannya satu per satu.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 35
Matriks adalah array yang dibangun dari kumpulan persamaan linear. Operasi matriks dak
seper pada array biasa, melainkan seper sistem operasi aljabar matriks. Matriks didefinisikan
dengan kurung siku ([ ]) dan biasanya dituliskan baris per baris. Tanda koma (,) digunakan untuk
memisahkan kolom, dan k-koma (;) untuk memisahkan baris. Contoh berikut mendefinisikan
matriks 3 × 3.

Array dan matriks ditampilkan dalam bentuk yang sama, tetapi representasi internalnya
berbeda. Berikut adalah perintah untuk membentuk array.
1. x=m:n membuat baris dengan elemen awal m, kenaikan 1, dan elemen akhir n atau
sebelum n. Contoh:
Perintah x=1:10 akan membuat barisan dengan elemen yang dimulai dari 1, bertambah
1, dan berakhir di 10.

2. x=m:k:n membuat baris dengan elemen awal m, kenaikan k, dan elemen akhir n atau
sebelum n. Contoh:
Perintah x=1:2:20 akan membuat barisan dengan elemen yang dimulai dari 1,
bertambah 2, dan berakhir di 19.

3. x=linspace(m,n,k) membuat baris dengan elemen awal m dan elemen akhir n


dengan jumlah elemen sebanyak k. Contoh:
Perintah x=linspace(1,30,10) akan menampilkan baris dengan elemen awal
bernilai 1 dan elemen akhir bernilai 30 dengan jumlah elemen sebanyak 10.
36 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

4. x=logspace(m,n,k) membuat baris dengan elemen awal m dan elemen akhir n


dengan jumlah elemen sebanyak k dalam skala logaritma. Contoh:
Perintah x=logspace(1,30,10) akan menampilkan baris dengan elemen awal
bemilai 10 dan elemen akhir bernilai 10 dengan jumlah elemen sebanyak 10.

5. x=ones(m) membuat array segi empat ukuran m x m yang semua elemennya bernilai
1. Contoh:
Perintah x=ones(5)akan menampilkan array segi empat ukuran 5 x 5 yang semua
elemennya bernilai 1.

6. x=ones(m,n) membuat array segi empat ukuran m x n yang semua elemennya bernilai
1. Contoh:
Perintah x=ones(2,5) akan menampilkan array segi empat ukuran 2 x 5 yang semua
elemennya bernilai 1.
7. x=zeros(m) membuat array segi empat ukuran m x m yang semua elemennya bernilai
0. Contoh:
Perintah x=zeros(5) akan menampilkan array segi empat ukuran 5 x 5 yang semua
elemennya bernilai 0.

8. x=zeros(m,n) membuat array segi empat ukuran m x n yang semua elemennya


bernilai 0. Contoh:
Perintah x=zeros(2,5) akan menampilkan array segi empat ukuran 2 x 5 yang semua
elemennya bernilai 0.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 37
9. x=rand(m,n) membuat array segi empat ukuran m x n yang elemen-elemennya berupa
bilangan acak yang terdistribusi secara seragam dengan interval 0,0 sampai 1,0. Contoh:
Perintah x=rand(2,5) akan menampilkan array segi empat ukuran 2 x 5 yang elemen-
elemennya berupa bilangan acak yang terdistribusi secara seragam dengan interval 0,0
sampai 1,0.
10. x=randn(m,n) membuat array segi empat ukuran m x n yang elemen-elemennya
berupa bilangan acak yang terdistribusi normal dengan mean = 0 dan variasi = 1. Contoh:
Perintah x=randn(2,5) akan menampilkan array segi empat ukuran 2 x 5 yang elemen-
elemennya berupa bilangan acak yang terdistribusi normal dengan mean = 0 dan variasi
= 1.

Array dapat dinyatakan dalam bentuk matriks dengan memasukkan semua perintah pada ruas
kanan ke dalam kurung komputasi. Misalnya, array x=m:n dapat dinyatakan dalam bentuk
matriks dengan perintah x=[m:n]. Manipulasi terhadap array dan matriks dapat mereduksi
kerumitan metode komputasi. Dalam perhitungan numerik, misalnya, diketahui array data
dengan variabel induk A yang terdiri atas gabungan antara baris dan kolom. Array tersebut
dapat dimodifikasi dengan perintah pengalamatan.
1. A (i, j) mengalama sub-array A dengan indeks baris i dan kolom j.
2. A (i,:) mengalama sub-array A pada semua kolom j.
3. A(:, j) mengalama sub-array A dengan semua baris pada kolom j.
4. A(:) mengalama sub-array A dengan semua baris pada semua kolom.
Pengalamatan yang dilakukan terhadap elemen array dapat digunakan untuk pengalamatan
elemen matriks dengan ketentuan array tersebut sebelumnya telah dinyatakan dalam bentuk
matriks.

3.1.4 Pemrograman M-File


Jika masalah yang dihadapi sederhana, penge kan beberapa perintah langsung di command
window memang cukup cepat dan efek f. Namun, apabila jumlah perintahnya sangat
banyak, atau kita ingin mengubah nilai beberapa variabel dan kemudian mengulang kembali
perhitungannya, penge kan secara langsung akan menjemukan. MATLAB menyediakan sarana
yang dinamakan file script atau M-file untuk menge kkan deretan perintah dalam suatu file
teks, kemudian memerintahkan MATLAB untuk membuka file tersebut dan menjalankannya
seolah-olah dike kkan langsung di command windows.
38 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Se ap perintah yang dapat dimasukkan pada window prompt dapat disimpan pada sebuah
file teks dan dieksekusi sebagai script. File teks tersebut dapat dibuat dengan menggunakan
sembarang editor ASCII seper program Notepad atau pada editor teks MATLAB. Ekstensi file
harus berupa .m, dan script tersebut dieksekusi pada MATLAB dengan hanya menge kkan
nama file (dengan atau tanpa ekstensi). Program-program tersebut umumnya dikenal dengan
is lah M-file. Tampilan editor M-file dapat dilihat pada Gambar 3.4. Setelah memilih File pada
editor MATLAB, pilihlah New.

Gambar 3.4 Tampilan editor window

Script M-file dapat menyimpan semua perintah, dan dijalankan dengan menekan tombol
atau menge kkan nama M-file yang dibuat pada command window. Hal-hal yang perlu
diperha kan pada penulisan script M-file di antaranya adalah komentar dan tanda baca, fungsi
output, fungsi input, control flow, dan switch case.
1. Komentar dan tanda baca
Komentar memungkinkan kita mendokumentasikan perintah-perintah yang terdapat
dalam script M-file sehingga kita mengingat apa saja yang dikerjakan perintah-perintah
tersebut jika kita pada suatu saat membuka kembali script itu. Pada MATLAB semua teks
sesudah tanda % dianggap sebagai statemen komentar. Sementara tanda k koma (;)
berguna untuk mencegah tampilnya hasil pada command window.
2. Fungsi output
a. Disp
Fungsi disp memungkinkan kita menampilkan string tanpa memperlihatkan nama
variabelnya. Contoh:
1) A=’Belajar MATLAB’;
disp(A);
Belajar MATLAB
2) disp(‘Ini contoh citra warna’)
Ini contoh citra warna
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 39
Dapat dilihat bahwa A = statemen telah dihilangkan. Fungsi ini berguna untuk
menampilkan teks bantuan dalam suatu file script.
Syarat digunakannya disp adalah bahwa isi di dalamnya harus merupakan string. Jadi,
jika kita ingin menampilkan sebuah angka, terlebih dahulu lakukan pengubahan ke
dalam bentuk string dengan menggunakan fungsi num2str( ). Contoh:
nim=10499006;
disp([‘Nim saya adalah ‘,num2str(nim)])
Nim saya adalah 10499006
Argumen perintah disp ini tunggal sehingga harus dituliskan secara berulang jika kita
ingin memunculkan beberapa tampilan.
b. fprin
Perintah fprin berfungsi untuk menampilkan output di layar atau menyimpan output
pada suatu external file (sama halnya dengan perintah fprin di C/C++). Fungsi ini
mempunyai argumen
fprintf(‘nama file’,’format string’,list)
di mana list adalah nama variabel yang dipisahkan dengan koma. Untuk format string:
%P.Qe untuk eksponensial
%P.Qf untuk fixed point
/n untuk membuat baris baru
Informasi lebih mendetail untuk fprin dapat dilihat di help.
3. Fungsi input
Fungsi input digunakan untuk membaca data dari keyboard. Bentuk umumnya:
Nama_variabel = input(‘teks’)
Saat aplikasi dijalankan, di layar command window akan muncul kata teks untuk input dari
pengguna. Jangan langsung di-enter agar teks dak berisi matriks kosong. Berikan input,
lalu akhiri dengan menekan tombol Enter.
4. Control flow
MATLAB bisa berlaku seper bahasa pemrograman C ataupun Pascal yang mempunyai
struktur kontrol program. Pemrograman dengan MATLAB biasanya memerlukan lebih
dari satu baris dan memungkinkan pendokumentasian dalam M-file, kontrol program ini
digunakan untuk memperbaiki tampilan atau membuat tampilan sesuai dengan keinginan.
MATLAB menyediakan empat struktur kontrol program, yaitu for, while, konstruksi switch-
case, dan konstruksi if-else-end.
a. For
For memungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap.
Bentuk umum for:
40 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Default nilai increment (penambahan nilai se ap perulangan) jika dak ditentukan oleh
pengguna adalah 1.
b. While
While mengerjakan sekelompok perintah yang diulang secara dak terbatas. Bentuk
umum while:

Perintah di antara statemen while dan end dieksekusi berulang kali selama semua
elemen dalam ekspresi itu benar. TABEL 3.4 memperlihatkan beberapa ekspresi Boolean
di dalam MATLAB.
TABEL 3.4 Ekspresi Boolean
EKSPRESI BOOLEAN KETERANGAN
a= =b Benar jika a sama dengan b
a>b Benar jika a lebih besar dari b
a<b Benar jika a lebih kecil dari b
a>=b Benar jika a lebih besar sama dengan b
a<=b Benar jika a lebih kecil sama dengan b
a ~= b Benar jika a dak sama dengan b
a&b Benar jika kedua ekspresi Boolean a dan b benar
a|b Benar jika paling sedikit satu di antara dua ekspresi Boolean a
dan b benar
a xor b Benar jika hanya satu di antara ekspresi Boolean a dan b
benar
~a Benar jika ekspresi Boolean a salah
c. If, Else, Elseif
Sering kali sederetan perintah harus dikerjakan berdasarkan pada hasil tes rasional.
Ekspresi logika dalam bahasa pemrograman sering kali dikerjakan dengan variasi
kosntruksi if, else, elseif. Bentuk dasar penggunaan statemen jenis ini adalah sebagai
berikut:
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 41

Ekspresi akan bernilai 1 jika benar, dan bernilai 0 jika salah.


5. Switch case
Jika sederetan perintah harus dikerjakan berdasarkan pada penggunaan berulang-ulang
suatu tes dengan argumen yang sama, konstruksi switch case akan lebih tepat digunakan.
Bentuk konstruksinya:

Pada konstruksi switch case di atas, ekspresi dibandingkan dengan test_ekspresi_1 pada
statemen case pertama. Jika keduanya sama, deret perintah akan dikerjakan, dan deret
statemen berikutnya, sebelum statemen end, akan diabaikan. Jika pembandingan pertama
dak memberikan nilai benar, akan dijalankan deret perintah pada statemen case yang
kedua. Jika semua pembanding dengan case gagal, dikerjakan deret perintah 3 yang
mengiku statemen otherwise.

3.1.5 Pemrograman MATLAB dengan Fungsi M-File


Selain dipakai sebagai penamaan file, M-file juga bisa digunakan untuk menamakan fungsi
sehingga fungsi yang dibuat di jendela editor bisa disimpan dengan ekstensi .m, yang sama
dengan file yang dipanggil di jendela editor. Penggunaan fungsi MATLAB seper inv, abs, cos,
sin, dan sqrt digunakan untuk menghasilkan nilai berdasarkan variabel yang diberikan.
Fungsi M-file mirip dengan script file di mana keduanya merupakan file teks dengan ekstensi
.m. Fungsi M-file sebagaimana script M-file dak dimasukkan dalam command window, tetapi
menjadi file tersendiri yang dibuat dengan editor teks. Fungsi M-file juga mempunyai sejumlah
aturan pen ng, di antaranya adalah sebagai berikut.
42 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

1. Nama fungsi dan nama file harus iden k. Contoh, fungsi enkripsi_caesar disimpan dalam
file bernama enkripsi_caesar.m.
2. Pertama kali mengeksekusi suatu fungsi M-file, MATLAB membuka file fungsi tersebut dan
mengompilasi perintah di dalamnya menjadi suatu representasi internal dalam memori
yang mempercepat eksekusi untuk semua pemanggilan berikutnya. Jika fungsi juga
melibatkan pemanggil ke fungsi M-file lainnya, fungsi M-file yang dipanggil itu juga akan
dikompilasi ke dalam memori.
3. Se ap fungsi mempunyai area kerjanya sendiri yang berbeda dengan area kerja MATLAB.
Satu-satunya hubungan antara ruang kerja MATLAB dengan variabel-variabel di dalam
fungsi adalah variabel-variabel input dan output fungsi. Jika suatu fungsi mengubah
nilai dalam bentuk variabel input, perubahan itu hanya tampak dalam fungsi dan dak
memengaruhi area kerja MATLAB.
4. Jumlah argumen input dan output yang digunakan jika suatu fungsi dipanggil hanya ada
dalam fungsi tersebut.
5. Fungsi dapat berbagi variabel dengan fungsi lain, area kerja MATLAB dan pemanggilan
rekursi untuk dirinya sendiri apabila variabelnya dideklarasikan sebagai variabel global.
6. Fungsi M-file berhen dieksekusi dan kembali ke prompt jika telah mencapai akhir
atau jika menemui perintah return. Perintah return merupakan cara sederhana untuk
menghen kan fungsi sebelum mencapai akhir file.
7. Fungsi M-file dapat memuat lebih dari sebuah fungsi.
Secara umum M-file didefinisikan dengan command func on. Sintaksis standar untuk perintah
func on adalah
func on[output1,output2,…]= NamaFunc on(input1,input2,..)

output1, output2,…adalah barisan nama output yang akan dimunculkan di layar command
window MATLAB jika NamaFunc on yang dipanggil dengan input argumen adalah
input1,input2,…. Input tersebut dipanggil dan dikirim by value, yaitu perubahan nilai input di
dalam fungsi dak akan ditampilkan di luar (perubahannya hanya lokal). Jika ingin melakukan
assignment fungsi by name, nama output yang ingin dikirim keluar fungsi diletakkan di sebelah
kiri (yang dinamakan output1, output2,…). Input dan output di atas adalah op onal argumen,
ar nya dimungkinkan untuk membuat suatu fungsi tanpa input argumen. Jika diberikan tanpa
output argumen, yang ditampilkan adalah eksekusi statemen/ekspresi terakhir.

3.1.6 Pemrograman MATLAB dengan Fasilitas GUIDE


Untuk membuat tampilan antarmuka pada MATLAB, kita dapat menggunakan fasilitas GUIDE.
Sebagai permulaan, buatlah desain figure. Desain figure dapat memanfaatkan uicontrol (user
interface control) yang terdapat pada editor figure seper terlihat pada Gambar 3.5.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 43

Gambar 3.5 Menu utama GUIDE

Agar komponen GUI yang berupa user interface control dapat bekerja sesuai dengan ke-
inginan, pengguna harus memprogram masing-masing komponen. Pemrograman komponen
GUI dilakukan dengan mengatur secara fisik komponen dari property inspector serta
menambahkan beberapa kode MATLAB pada M-file. Komponen pale e GUI (uicontrol) terdiri
atas pushbu on, sta c text, toggle bu on, radio bu on, edit text, popup menu, checkbox, list
box, dan frame seper diperlihatkan pada Gambar 3.6.
44 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 3.6 Komponen uicontrol


DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 45
1. Pushbu on dan sta c text
Pushbu on merupakan jenis kontrol berupa tombol tekan yang akan menghasilkan
sebuah ndakan jika diklik, misalnya tombol OK atau CANCEL. Sebagai contoh, kita akan
menampilkan tulisan “Kita akan belajar pemrograman MATLAB”, apabila pushbu on
“Proses” ditekan.

Gambar 3.7 Contoh desain pushbu on

Kontrol sta c text akan menghasilkan teks bersifat sta s/tetap sehingga pengguna dak
dapat melakukan perubahan padanya. Sta c text dapat digunakan untuk mengatur teks
dengan beberapa fasilitas, antara lain jenis dan ukuran fon, serta warna jus fikasi (le ,
center, right). Modifikasi pada kontrol sta c text dilakukan melalui property inspector.
Func on untuk mengatur tools pushbu on 1 dan sta c text dapat dilihat pada gambar 3.9.

Gambar 3.8 Contoh desain sta c text


46 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 3.9 Memprogram komponen pushbu on dan sta c text

2. Toggle bu on
Toggle bu on menghasilkan efek yang hampir sama dengan pushbu on. Perbedaannya
adalah saat pushbu on ditekan, tombol akan kembali ke posisi semula jika tombol mouse
dilepas. Sebaliknya, pada toggle bu on tombol dak akan kembali ke posisi semula, kecuali
kita menekannya kembali.

Gambar 3.10 Contoh desain toggle bu on

3. Radiobu on dan edit text


Radiobu on mirip dengan tombol checkbox. Pada radiobu on pengguna hanya dapat
memilih atau menandai satu pilihan dari beberapa pilihan yang ada. Contoh desain aplikasi
radiobu on dan edit text dapat dilihat pada Gambar 3.11. Untuk sintaks func on pada
masing-masing tools dapat dilihat pada lampiran.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 47

Gambar 3.11 Contoh desain radiobu on dan edit text

4. Checkbox
Kontrol checkbox menghasilkan suatu ndakan ke ka diklik, yaitu tanda atau status.
Checkbox berguna jika aplikasi yang dibuat ingin menyediakan sejumlah pilihan mandiri
yang dak tergantung pada pilihan lainnya. Jika ingin mengetahui apakah sebuah checkbox
telah ditandai atau belum, lihatlah pada value property apakah bernilai 1 atau 0. Gambar
3.12 memperlihatkan contoh desain checkbox. Untuk sintaks program pada func on yang
mengatur tools checkbox dapat dilihat pada lampiran.

Gambar 3.12 Contoh desain checkbox

Gambar 3.13 Hasil running komponen checkbox


48 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

5. Slider
Slider merupakan komponen GUI yang dapat bergeser secara horizontal ataupun ver kal.
Jika bahasa pemrograman lain, seper VB, memiliki scroll (penggulung) horizontal dan
ver kal yang terpisah, MATLAB memiliki sebuah slider yang dapat diatur menjadi slider
horizontal atau slider ver kal dengan cara drag mouse sesuai dengan keinginan. Slider
digunakan jika kita menginginkan input yang dak dilakukan dari keyboard. Slider lebih
fleksibel dalam melakukan pemasukan data karena dapat mengatur sendiri nilai-nilai
maksimum dan minimum, serta slider step.
Ada empat proper yang mengontrol nilai range dan step pada slider, yaitu
1. Value: berisikan nilai slider saat ini;
2. Max: mendefinisikan nilai maksimum slider;
3. Min: mendefinisikan nilai minimum slider;
4. Slider step: menentukan ukuran step slider.

Gambar 3.14 Contoh desain slider

Untuk sintaks program pada func on yang mengatur tools slider dapat dilihat pada
lampiran.
6. Listbox
Kontrol listbox menampilkan semua da ar item yang terdapat pada string property dan
dapat digunakan untuk memilih satu atau lebih item yang ada. Value property berisi
indeks yang dihubungkan dengan da ar item yang dapat dipilih. Jika kita memilih item
lebih dari satu, nilai yang dikirimkan merupakan sebuah vektor. Indeks item sebuah listbox
merupakan bilangan bulat, di mana item pertama diberi indeks 0, item kedua diberi indeks
l, dan seterusnya. Untuk sintaks program pada func on yang mengatur tools listbox dapat
dilihat pada lampiran.
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 49

Gambar 3.15 Contoh desain listbox

Gambar 3.16 Contoh tampilan listbox

7. Popup menu
Popup menu digunakan untuk membuka tampilan da ar pilihan yang didefinisikan pada
string property ke ka kita mengklik tanda panah pada aplikasi. Jika dak dibuka, popup
menu hanya akan menampilkan satu item yang menjadi pilihan saat ini, yang ditentukan
oleh sebuah indeks berisi value property. Item pertama pada string property sebuah popup
menu akan diberi nilai 1, item berikutnya diberi nilai 2, dan begitu seterusnya. Popup menu
sangat bermanfaat ke ka kita ingin memberi pemakai sebuah pilihan atau alterna f tanpa
jarak. Contoh pemakaian popup menu hampir sama dengan listbox.
50 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

8. Axes
Axes dapat digunakan untuk membuat aplikasi yang berfungsi untuk menampilkan sebuah
grafik atau gambar (citra). Axes sebenarnya dak termasuk golongan user interface control,
tetapi axes dapat diprogram agar pemakai dapat berinteraksi dengan axes dan objek grafik
yang dapat ditampilkan melalui sebuah axes. Gambar 3.17 adalah contoh aplikasi yang
menggunakan axes.

Gambar 3.17 Contoh desain axes (a) dan tampilannya (b)

3.2 Dasar Pengolahan Citra


Is lah citra mengacu pada suatu fungsi intensitas dalam bidang dua dimensi yang biasanya
ditulis dalam koordinat kartesian x-y. Karena merupakan sistem koordinat yang memiliki nilai,
biasanya citra/image/gambar dianggap sebagai sebuah matriks x-y yang berisi nilai piksel.
Representasi matriks tersebut dapat ditulis seper berikut:
⎡ f (0,0) f (0,1) K f (0, N − 1) ⎤
⎢ f (1,0) f (1,1) K f (1, N − 1) ⎥⎥
f (x , y) = ⎢
⎢ M M K M ⎥
⎢ ⎥
⎣ f (M − 1,0) f (M − 1,1) K f (M − 1, N − 1)⎦

Indeks matriks pada MATLAB selalu dimulai dengan angka 1 sehingga f(0,0) akan sama dengan
f(1,1). Representasi di MATLAB ditulis seper berikut:
⎡ f (1,1) f (1,2) K f (1, N) ⎤
⎢ f (2,1) f (2,2) K f (2, N) ⎥⎥
f =⎢
⎢ M M K M ⎥
⎢ ⎥
⎣ f (M ,1) f (M ,2) K f (M , N)⎦
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 51
Bentuk matriks ini kemudian diolah menurut teori-teori yang bertujuan untuk memecahkan
masalah tertentu. Bentuk matriks adalah perwujudan dari bentuk sinyal digital sehingga
proses pemecahan dan pengolahan matriks dari citra biasanya disebut dengan pengolahan
citra digital (digital image processing).
Pemrosesan citra dengan komputer membutuhkan citra digital sebagai masukannya. Format
citra digital terdiri atas beberapa bentuk yang masing-masing memiliki format penyimpanan
dan pembacaan data yang berbeda-beda seper terlihat pada TABEL 3.5.
TABEL 3.5 Bentuk format citra digital
Format Deskripsi Recognized Extension
TIFF Tagged Image File Format . ff
JPEG Joint Photographics Expert’s Group .jpeg
GIF Graphics Interchange Format .gif
BMP Windows Bitmap .bmp
PNG Portable Network Graphics .png
XWD X-Window Dump .xwd

3.2.1 Membaca dan Menampilkan File Citra


Penggunaan toolbox image processing pada MATLAB akan mempermudah proses pembacaan
citra. Pembacaan citra juga dapat menggunakan perintah imread. Perintah imread akan
membaca citra menjadi sebuah data matriks. Format citra yang dapat dibaca oleh MATLAB
bermacam-macam, seper .bmp, .jpg, . f, .png, dan sebagainya. Perintah untuk menampilkan
citra dapat menggunakan perintah imshow sebagaimana diperlihatkan oleh beberapa contoh
berikut:
1. Windows Bitmap (*.bmp)
a=imread(‘taz_ref.bmp’);
figure,imshow(a);
2. Joint Photographic Experts Group (*.jpg)
b=imread(‘oranges.jpg’);
figure,imshow(b);
3. Tagged Image File Format (*. f)
c=imread(‘saturn.tif’);
figure,imshow(c);
Hasil dari pembacaan imread(‘filename’) bisa berupa matriks dua dimensi jika gambar yang
dibaca adalah gambar grayscale (keabuan) dan matriks ga-dimensi jika berupa gambar ga-
dimensi. Pembacaan file citra pada aplikasi GUI menggunakan fungsi uigeƞile. Perintah itu
digunakan untuk membaca file citra dengan format yang telah ditentukan, misalnya *.bmp
atau *.jpg. Sebaliknya, fungsi ~isequal(nama_file,0) memberikan tes kondisi yang menyatakan
keberadaan sebuah file. Jika file-nya ada, isequal() akan memberikan nilai 1 dan 0 untuk
52 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

sebaliknya. Fungsi Imread(fullfile(nama_path1,nama_file1)) digunakan untuk membaca


citra yang diberi nama nama_file1 yang tersimpan dalam folder yang sesuai dengan nama_
path1 menjadi sebuah data matriks. Fungsi uipuƞile digunakan untuk menyimpan file citra
menggunakan aplikasi GUI pada MATLAB dengan format yang telah ditentukan, misalnya
*.bmp, *.jpg, atau *. ff. Format penulisan fungsinya adalah
imwrite(file_yang_akan_disimpan,file,format_file_yg_akan_
disimpan)

Contoh:
imwrite(enkrip1,file,’bmp’)
Ar nya, file citra yang akan disimpan bernama enkrip1, dan disimpan dengan format bmp.

3.2.2 Mentransformasi dan Mengubah Format Citra


Warna
Suatu citra berwarna dapat dinyatakan dalam banyak cara. Salah satu metode yang paling
populer adalah dengan menggunakan metode kanal RGB. Dalam format ini, suatu citra
berwarna dinyatakan dalam bentuk gabungan dari ga buah citra monokrom merah, hijau, dan
biru yang berukuran sama. Warna dari se ap piksel citra digital bergantung pada kombinasi
ke ga nilai intensitas piksel monokrom yang bersesuaian.
MATLAB menyediakan fasilitas yang cukup baik untuk memisahkan ke ga warna RGB, yaitu
dengan perintah berikut:
d = imread(nama_file);
dR=d(:,:,1);
dG=d(:,:,2);
dB=d(:,:,3);
Indeks 1 pada perintah d(:,:,1) digunakan untuk mengambil nilai piksel warna merah, indeks
2 untuk mengambil nilai piksel warna hijau, sedangkan indeks 3 untuk mengambil nilai piksel
warna biru. MATLAB juga menyediakan fasilitas untuk mentransformasi balik citra yang telah
dipisahkan warnanya dengan perintah berikut:
d(:,:,1)= dR;
d(:,:,2)= dG;
d(:,:,3)= gB;
Proses awal yang kerap dilakukan dalam pengolahan citra adalah mengubah citra berwarna
menjadi citra grayscale (keabuan). Proses ini digunakan untuk menyederhanakan model citra.
Citra berwarna terdiri atas 3 layer matriks, yaitu red-layer, gray-layer, dan blue-layer sehingga
untuk melakukan proses-proses selanjutnya, tetap memperha kan ga layer tersebut. Jika
DASAR PEMROGRAMAN MATLAB DAN PENGOLAHAN CITRA 53
se ap proses perhitungan dilakukan dengan ga layer, ada ga perhitungan yang sama yang
akan dikerjakan. Konsep tersebut digan dengan cara mengubah 3 layer di atas menjadi 1 layer
matriks keabuan sehingga hasilnya adalah citra keabuan. MATLAB menyediakan fasilitas yang
cukup baik untuk mengubah warna RGB ke format keabuan, yaitu dengan perintah berikut:
d = rgb2gray(nama_file);
MATLAB juga menyediakan fasilitas yang cukup baik untuk mengubah warna RGB ke format
black white (BW), yaitu dengan perintah berikut:
BW = im2bw(RGB, level);

3.3 Evaluasi
1. Jelaskan masing-masing fungsi dari se ap jendela pada aplikasi MATLAB.
2. Buatlah program dalam M-file untuk menjumlahkan dan mengurangkan 2 buah matriks
yang dibangkitkan secara acak.
3. Buatlah program untuk mengonversikan 2 variabel ke dalam bentuk biner. Selanjutnya,
lakukan operasi xor pada 2 variabel tersebut.
4. Buatlah sebuah program dengan M-file atau fungsi M-file untuk menampilkan citra asli dan
citra hasil transformasi warna yang ditampilkan dalam satu layar output.
5. Buatlah sebuah program dengan GUI pada MATLAB untuk menampilkan citra asli dan citra
setelah diubah ke format grayscale dan format BW.
54 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
BAB IV
TEORI BILANGAN
DAN ANALISIS ENKRIPSI

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. memahami konsep bilangan yang mendukung algoritma kriptografi;
2. menerapkan konsep bilangan untuk diimplementasikan pada algoritma kriptografi;
3. menjelaskan parameter yang digunakan untuk mengukur apakah algoritma enkripsi
yang diusulkan cukup aman untuk diimplementasikan atau dak.

4.1 Teori Bilangan


Teori bilangan adalah cabang dari ilmu matema ka murni yang mempelajari sifat-sifat
bilangan bulat dan mengandung berbagai masalah terbuka yang dapat dengan mudah
dimenger oleh orang yang bukan ahli matema ka sekalipun. Bilangan bulat adalah bilangan
yang dak mempunyai pecahan desimal, misalnya 8, 21, 8765, -34, dan 0. Teori bilangan
kerap digunakan untuk mendasari pemahaman kriptografi, khususnya sistem kriptografi kunci
publik. Pesan-pesan yang disandikan dapat direpresentasikan oleh bilangan-bilangan yang
dalam pemrosesannya menggunakan operasi matema ka untuk mentransformasikan nilai
input yang berupa bilangan bulat menjadi nilai output yang berupa bilangan bulat pula.

4.1.1 ArimeƟka Modular


Aritme ka modular merupakan operasi matema ka yang kerap diimplementasikan pada
metode kriptografi. Aritme ka modular adalah suatu perhitungan matema ka yang
berhubungan dengan hasil sisa pembagian. Dalam aritme ka modular, pada bilangan bulat
posi f n dan bilangan bulat m, jika dilakukan pembagian m dan n dengan syarat n > 0, akan
dihasilkan bilangan q dan sisa pembagian r. Operator yang digunakan pada aritme ka modular
adalah mod sehingga notasi matema ka dari aritme ka modular dapat dinyatakan sebagai
56 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

m mod n = r sedemikian sehingga m = qn + r; 0 ≤ r ≤ n ; q = m/n (4.1)

Contoh:
1. 14 dibagi 5 memberikan hasil bagi 2 dan sisa 4, atau dituliskan
14 = 5.2 + 4 sehingga 14 mod 5 = 4.
2. 172 dibagi 37 memberikan hasil bagi 4 dan sisa 24, atau dituliskan
172 = 37. 4 + 24 sehingga 172 mod 37 = 24.
3. -22 dibagi 3 dak memberikan hasil bagi -7 dan sisa -1 karena bila dituliskan sebagai
-22 = (-7).3 + (-1), akan dihasilkan nilai r = -1. Persamaan tersebut menjadi salah karena
dak memenuhi syarat 0 ≤ r ≤ n.
Apabila m nega f, penyelesaian dilakukan dengan cara | m | dibagi n sehingga didapatkan sisa
r. Di sini m mod n = n – r bila r ≠ 0. Jadi, jika |-22| mod 3 = 1, -22 mod 3 = 3 – 1 = 2. Oleh karena
itu, -22 mod 3 = 2 karena dapat dituliskan sebagai -22 mod 3 = (-8).3 + 2. Pada MATLAB sintaks
yang dapat digunakan adalah fungsi berikut:
m = mod(x,y)

di mana x adalah bilangan yang akan dibagi, dan y adalah bilangan pembagi.
>> m=mod(-22,3)
m=
2

4.1.2 Pembagi Bersama Terbesar (PBB)


Dua buah bilangan bulat dapat memiliki faktor pembagi bersama terbesar (PBB)/greatest
common divisor (gcd). Contoh, faktor pembagi 45: 1, 3, 5, 9, 15, 45; faktor pembagi 36: 1, 2, 3,
4, 9, 12, 18, 36. Faktor pembagi bersama dari 45 dan 36 adalah 1, 3, 9 sehingga PBB(45,36) = 9.
Misalkan a dan b adalah dua buah bilangan bulat dak nol. PBB a dan b adalah bilangan bulat
terbesar d sedemikian sehingga d | a dan d | b. Dalam hal ini, kita nyatakan bahwa PBB(a,b)
= d.
Sifat-sifat pembagi terbesar dapat dinyatakan sebagai berikut: misalkan a, b, dan c adalah
bilangan bulat,
1. c | (a+b) jika c adalah PBB dari a dan b;
2. c | (a-b) jika c adalah PBB dari a dan b;
3. c | ab jika c | a.
TEORI BILANGAN DAN ANALISIS ENKRIPSI 57
Contoh:
PBB dari 25 dan 20 adalah 5 menurut teorema di atas.
1. 5 habis membagi 25+20 = 45, atau 5 | (25+20)
2. 5 habis membagi 25 – 20 = 5, atau 5 | (25-20)
3. 5 habis membagi 25*20 = 500, atau 5 | (25*20)
Pada MATLAB, sintaks yang dapat digunakan adalah fungsi berikut:
G = gcd(A,B)

>> G=gcd(45,36)
G=
9

4.1.3 Algoritma Euclidean


Algoritma Euclidean adalah algoritma untuk mencari nilai pembagi bersama terbesar (PBB) dari
dua buah bilangan bulat. Euklides adalah matema kawan Yunani yang menuliskan algoritma
Euclidean dalam buku Element-nya yang sangat terkenal.
Secara formal algoritma Euclidean dirumuskan sebagai berikut: apabila diberikan dua buah
bilangan bulat tak nega f r0 dan r1, maka r0 ≥ r1. Algoritma Euclidean dihitung dengan algoritma
pembagian berikut:
r0 = q1 r1 + r2 , 0 < r2 < r1
r1 = q2 r2 + r3 , 0 < r3 < r2
K
rn−2 = qn−1 rn−1 + rn , 0 < rn < rn−1
rn−1 = qn rn (4.2)
Dari pernyataan di atas dapat ditunjukkan bahwa PBB(r0,r1) = PBB(r1,r2) = ... = PBB(rn-1,rn) =
PBB(rn,0) = rn (Buchmann, 2000).
Contoh:
Akan dihitung PBB(80,12). Maka, r0 = 80 dan r1 = 12, serta dipenuhi syarat r0 ≥ r1. PBB(80,12)
dihitung dengan algoritma Euclidean berikut:
58 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Sisa pembagian terakhir sebelum 0 adalah 4 sehingga PBB(80,12) = 4.

4.1.4 RelaƟf Prima


Dua buah bilangan bulat a dan b dikatakan rela f prima jika PBB(a,b) = 1. Jika a dan b rela f
prima, terdapat bilangan bulat m dan n sedemikian sehingga ma + nb = 1.
Contoh:
20 dan 3 rela f prima sebab PBB (20,3) = 1. Atau, dapat ditulis 2 . 20 + (-13) . 3 = 1, dengan m
= 2 dan n = -13. Tetapi, 20 dan 5 dak rela f prima karena PBB (20,5) = 5 ≠ 1 sehingga 20 dan
5 dak dapat dinyatakan dalam m . 20 + n . 5 = 1

4.1.5 Kekongruenan
Kadang-kadang dua buah bilangan bulat a dan b mempunyai sisa yang sama jika dibagi dengan
bilangan bulat posi f n sehingga a dan b dikatakan kongruen dalam modulo n dan dinotasikan
a b (mod n), dibaca a adalah kongruen ke b modulo n, di mana integer a, b, dan n ≠ 0 jika dan
hanya jika a = b + k. n untuk beberapa k. Jika a ≡ b (mod n), b disebut sisa dari a modulo n.
Sebagai contoh, 17 ≡ 5 (mod 12), dan 5 adalah sisa dari 17 modulo 12. a adalah himpunan {r1,
r2, …, rn} disebut semua himpunan sisa mod n jika se ap bilangan bulat a tepat berpasangan
dengan satu ri di dalam himpunan yang memenuhi a ≡ ri (mod n). Sembarang modulo { 0,1, …,
n-1} membentuk semua himpunan sisa mod n. Jika n = 12, semua himpunan sisa adalah {0, 1,
…, 11}.
Bentuk b ∈ {0, 1, …, n-1} lebih sering digunakan, namun kadang-kadang bilangan bulat berada
di dalam range b ∈ {-½ (n-1), … ½(n-1)} yang lebih berguna lagi. Sebagai catatan:
-12 (mod 7) ≡ -5 (mod 7) ≡ 2 (mod 7) ≡ 9 (mod 7) ≡ … dst.
Beberapa contoh kekongruenan:
1. 17 ≡ 2 (mod 3) (3 habis membagi 17 – 2 = 15)
2. - 7 ≡ 15 (mod 11) (11 habis membagi -7 – 15 = -22)
TEORI BILANGAN DAN ANALISIS ENKRIPSI 59
Kekongruenan a ≡ b (mod m) dapat pula dituliskan dalam hubungan a = b + km. Dalam hal ini,
k adalah bilangan bulat. Berdasarkan definisi aritme ka, modulo juga dapat dituliskan dalam
bentuk a mod m = r sebagai ≡ r (mod m). Contoh:
1. 17 ≡ 2 (mod 3) dapat ditulis sebagai 17 = 2 + 5 . 3
2. -7 ≡ 15 (mod 11) dapat ditulis sebagai -7 = 15 + (-2) . 11
Pembahasan berikutnya adalah tentang terbentuknya pembagian bilangan bulat n untuk
penjumlahan dan perkalian dengan hukum asosia f, komuta f, dan distribu f.
Teoremanya, misalkan m adalah bilangan bulat posi f.
1. Jika a ≡ b (mod m) dan c adalah sembarang bilangan bulat,
a. (a + c) ≡ (b + c) (mod m)
b. ac ≡ bc (mod m)
c. ap ≡ bp (mod m) untuk suatu bilangan bulat tak nega f p
2. Jika a ≡ b (mod m) dan c d (mod m),
a. (a + c) ≡ (b + d) (mod m)
b. ac ≡ bd (mod m)
Contoh:
17 ≡ 2 (mod 3) dan 10 ≡ 4 (mod 3), maka menurut teorema di atas:
1. 17 + 5 = 2 + 5 (mod 3) Ù 22 = 7 (mod 3)
2. 17 . 5 = 2 . 5 (mod 3) Ù 85 = 10 (mod 3)
3. 17 + 10 = 2 + 4 (mod 3) Ù 27 = 6 (mod 3)
4. 17 . 10 = 2 . 4 (mod 3) Ù 170 = 8 (mod 3)

4.1.6 Invers Modulo


Apabila mencari invers modulo terhadap operasi penggandaan, kita dapat menggunakan
perluasan dari algoritma Euclidean (Extended Euclidean Algorithm). Algoritma ini didasarkan
pada pernyataan berikut: apabila diberikan bilangan bulat posi f r0 dan r1 , r0 > r1 . Jika
PBB(r0 , r1 ) = 1 , r1 −1 mod r0 ada. Jika PBB(r0 , r1 ) ≠ 1 , r1 −1 mod r0 dak ada. Selanjutnya, untuk
menghitung r1 −1 mod r0 , digunakan rumus rekurensi berikut.
t0 = 0, t1 = 1
t j = t j − 2 − q j −1 t j − 1 , j ≥ 2
(4.3)
Keterangan: q j diperoleh dari perhitungan gcd(r0 , r1 ) dengan algoritma Euclidean. Jika
PBB(r0 , r1 ) = 1 , berar r1 −1 = tn sehingga rn = tn r1 atau 1 = tn r1 (S nson, 2006).
Contoh:
Hitung 28−1 mod 75
60 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Penyelesaian:
Diketahui r0 = 75 dan r1 = 28. Selanjutnya dihitung nilai PBB(75,28) dengan algoritma
Euclidean.
75 = 2.28 + 19, maka untuk n = 1, r1 = 28, q1 = 2
28 = 2.19 + 9, maka untuk n = 2, r2 = 19, q2 = 2
19 = 2.9 + 1, maka untuk n = 3, r3 = 9, q3 = 2
9 = 9.1, maka untuk n = 4, r4 = 1, q3 = 9
Jadi, PBB(75,28) = 1. Dengan kata lain, 28−1 mod 75 ada. Dari penyelesaian algoritma Euclidean
di atas diperoleh n = 4. Selanjutnya, dengan rumus rekurensi di atas diperoleh (semua
perhitungan dilakukan dalam mod 75):

t2 = t0 − q1t1 = 0 − 2.1 = −2 = 73
t3 = t1 − q2t2 = 1 − 1.(−2) = 3
t4 = t2 − q3t3 = −2 − 2.3 = −8 = 67
r4 = t4 r1 = 67.28 = 1 ⇔ 67 = 28−1

Dari hasil terakhir di atas diperoleh 28−1 mod 75 = 67.

4.1.7 Persoalan Chinese Remainder


Pada abad pertama, seorang matema kawan Tiongkok bernama Sun Tse mengajukan per-
tanyaan berikut: “Tentukan sebuah bilangan bulat yang bila dibagi 5 menyisakan 3, bila dibagi
7 menyisakan 5, dan bila dibagi 11 menyisakan 7.” Pertanyaan Sun Tse dapat dirumuskan
dalam sistem kongruen lanjar berikut:
x ≡ 3 (mod 5)
x ≡ 5 (mod 7)
x ≡ 7 (mod 11)
Teorema Chinese remainder: misal m = m1, m2… mn, dan se ap pasang mi,mj coprime (bilangan
bulat posi f sedemikian hingga PBB(mi,mj) = 1 untuk i ≠ j), maka sistem kongruen lanjar
x = ak mod mk (4.4)

mempunyai sebuah solusi unik modulo m = m1 .m2 … . mn


Algoritma Chinese remainder:

⎛ t ⎛ n⎞ ⎞
x = ⎜ ∑ ⎜ ⎟ yi x i ⎟ mod n
⎝ i =1 ⎝ d i ⎠ ⎠
(4.5)
TEORI BILANGAN DAN ANALISIS ENKRIPSI 61
di mana yi adalah suatu solusi

⎛ n⎞
⎜⎝ d ⎟⎠ yi mod di = 1
i

Dengan catatan,

⎛⎛ t ⎛ n ⎞ ⎞ ⎞
x mod di = ⎜ ⎜ ∑ ⎜ ⎟ yi x j ⎟ mod n⎟ mod di = x i
⎝ ⎝ j =1 ⎝ d j ⎠ ⎠ ⎠

Contoh:
Diketahui 3 x mod 10 = 1, maka tentukan nilai x untuk permasalahan tersebut.
Penyelesaian:
1. Nilai 10 = 2 x 5 (10 didapat dari perkalian 2 bilangan prima, yaitu 2 dan 5)
2. Pertama dicari solusi untuk nilai x1 dan x2.
3 x mod 2 = 1 ⇒ x1 = 1
3 x mod 5 = 1 ⇒ x2 = 2
3. Langkah selanjutnya, aplikasikan algoritma Chinese remainder untuk mencari solusi dari
persamaan berikut:
x mod 2 = x1 = 1
x mod 5 = x2 = 2
Pertama, dicari nilai y1 dan y2:

⎛ 10 ⎞
⎜⎝ ⎟⎠ y1 mod 2 = 1 ⇒ y1 = 1
2

⎛ 10 ⎞
⎜⎝ ⎟⎠ y2 mod 5 = 1 ⇒ y1 = 3
5
sehingga didapatkan

⎛ 10 ⎞ ⎛ 10 ⎞
x = ⎜ ⎟ y1 x1 + ⎜ ⎟ y2 x2 mod 10
⎝ 2⎠ ⎝ 5⎠
= 5 × 1 × 1 + 2 × 3 × 2 mod10 = 7
maka x = 7 adalah jawaban dari 3x mod 10 = 1 (dengan kata lain, 7 adalah mul plica ve
invers dari 3 modulo 10).
62 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

4.1.8 General Equa ons


Apabila diketahui persamaan berbentuk ax mod n = b, untuk mencari nilai x, dapat digunakan
metode general equa ons. Terdapat dua kondisi untuk mencari nilai x, yaitu apabila PBB(a,n)
= 1 dan apabila PBB(a,n) = g.
1. Apabila PBB(a,n) = 1
Dicari penyelesaian x0 untuk ax mod n = b.
Jika ax0 mod n = 1 termasuk abx0 mod n = b, maka x = bx0 mod n.
2. Apabila PBB(a,n) = g
Jika g pembagi b, di mana b mod g = 0, maka ax mod n = b jika q penyelesaian dari bentuk
⎛b n⎞
x = ⎜ x 0 + t ⎟ mod n , untuk t = 0, 1, …, g-1, di mana x0 adalah penyelesaian untuk
⎝g g⎠
a n
x mod = 1 .
g g
Jika g bukan pembagi b, dak ada penyelesaiannya.

Contoh: Diketahui 6 x mod 10 = 4.


Penyelesaian:
1. g = PBB(6,10) = 2, dan 2 merupakan pembagi dari 4 sehingga terdapat 2 penyelesaian.
6 10
2. Hitung x0 dari x mod = 1 . Diambil x0 = 2.
2 2
3. Kemudian hitung kedua penyelesaian tersebut.
4 10
t = 0, maka x = × 2 + 0 mod 10 = 4
2 2
4 10
t = 1, maka x = × 2 + 1 mod 10 = 9
2 2
Cek:
6 x 4 mod 10 = 24 mod 10 = 4
6 x 9 mod 10 = 54 mod 10 = 4

4.1.9 Metode Fast Exponen a on


Metode fast exponen a on digunakan untuk menghitung operasi pemangkatan dengan
bilangan bulat yang besar dengan cepat. Metode ini memanfaatkan ekspansi biner dari
eksponennya dan didasarkan pada pernyataan berikut:
t +1 t
g2 = (g2 )2 (4.6)
TEORI BILANGAN DAN ANALISIS ENKRIPSI 63

Langkah-langkah metode fast exponen a on dari ab mod c adalah sebagai berikut.


1. Pangkat dari bilangan a, yaitu bilangan b, dikonversikan ke bentuk biner.
n
2. Hitung nilai a2 mod c di mana n = 0, 1, …m dan m adalah panjang digit dari hasil konversi
biner pada langkah 1.
n
3. Hitung perkalian hasil a2 mod c untuk nilai n yang sesuai dengan bilangan biner hasil
langkah 1.
Contoh: Hitung 673 mod100
Penyelesaian:
1. 73 = 1.2 + 1.2 + 1.2 atau 73 = (1001001)2
6 3 0

2. Semua perhitungan dilakukan dalam mod 100.


0 1 2 3
62 = 6, 62 = 36, 62 = 362 = 96, 62 = 16
4 5 6
62 = 162 = 56, 62 = 562 = 36, 62 = 562 = 96
20 23 26
3. 6 = 6 .6 .6 = 6.16.96 = 16
73

Jadi, 673 mod100 = 16

4.1.10 Euler To ent Func on


Dasar teorema dari teori bilangan adalah bahwa se ap bilangan bulat posi f dapat ditulis
dalam bentuk yang unik, seper terlihat pada Persamaan 4.7.

p1e1 P2e 2 K pt et (4.7)


di mana pi adalah bilangan prima dan p1 < p2 < K < pt .
Fungsi Euler dalam rancangan algoritma Pohlig-Hellman digunakan dalam penentuan nilai
rela f prima dari pembangkit kunci. Apabila se ap bilangan bulat posi f n, nilai ϕ ( n) pada
Euler to ent func on adalah jumlah bilangan bulat posi f < n yang rela f prima ke-n.
1. Jika n rela f prima, φ(n) = n – 1.
Contoh:
φ(1) = 1 – 1 = 0
φ(2) = 2 – 1 = 1
φ(3) = 3 – 1 = 2
φ(7) = 7 – 1 = 6
2. Jika n adalah hasil kali dari 2 prima, n = p x q sehingga φ(n) = (p – 1) x (q – 1)
Contoh:
φ(10) = 4
Karena 10 = 5 . 2, maka φ(5) . φ(2) = 4 . 1 = 4
64 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

3. Jika p bilangan prima dan k > 0, maka φ(pk) = pk - pk-1 = pk-1 (p – 1)


Contoh:
φ(16) = φ(24) = 24 – 23 = 16 – 8 = 8.
φ(40) = φ(5 x 23) = (5 – 1) x 22 x (2 – 1) = 4 x 4 x 1 = 16
Fungsi ini digunakan pada kriptografi dalam penggunaan teorema Euler yang menyatakan
bahwa jika PBB(a,n) = 1, maka aϕ (n) = 1(mod n) .
Catatan: a = 1 (mod n)
≈ a mod n = 1
Contoh:
Jika PBB(9,14) = 1, maka 9ϕ (14) mod 14 = 1
ϕ (14 ) = 1 × 6 = 6 ⇒ dari 14 = 2 × 7
ϕ (14 ) = ( 2 − 1) ( 7 − 1) = 6
Maka, 96 mod14 = 1
Teorema Fermat: jika p adalah prima dan 1 < a < p, maka a p−1 = 1(mod p) .
Jika diketahui faktor-faktor n, kita dapat menghitung
ϕ (a × b) = ϕ (a) × ϕ (b)

untuk mencari ϕ (n) . Jika diketahui ϕ (n) dan n adalah hasil kali p dan q, kita dapat mencari p
dan q dengan menggunakan metode berikut:
sum = n - ϕ (n) + 1
diff = sqrt(sum*sum – 4n)
p = (sum – diff) / 2
q = sum – p
Jika n bukan hasil kali dari dua bilangan prima, faktor-faktor ϕ (n) akan lebih sulit dicari.

4.2 Parameter Kualitas Hasil Enkripsi


Untuk mengetahui apakah algoritma enkripsi yang diusulkan cukup aman untuk diimple-
mentasikan atau dak, dilakukan analisis dan pengujian algoritma enkripsi menggunakan
beberapa parameter seper nilai korelasi, entropi, histogram warna, waktu proses, dan
kualitas enkripsi.

4.2.1 Korelasi
Penghitungan korelasi dan entropi dilakukan untuk menilai kualitas data hasil enkripsi.
Semakin rendah korelasi antarpiksel dan semakin nggi entropinya, semakin aman sistem
enkripsinya. Untuk menghitung korelasi, digunakan rumus berikut (Younes dan Jantan, 2008):
TEORI BILANGAN DAN ANALISIS ENKRIPSI 65

n∑ (xy) − ∑ x ∑ y
r=
⎡⎣ n∑ (x 2 ) − (∑ x )2 ⎤⎦ ⎡⎣ n∑ (y 2 ) − (∑ y)2 ⎤⎦
(4.8)
Keterangan:
r nilai korelasi
n jumlah data
Σxy jumlah perkalian x dan y
Σx jumlah data x
Σy jumlah data y
Σx2 jumlah data x kuadrat
Σy2 jumlah data y kuadrat
Pada MATLAB, fungsi M-file untuk memanggil fungsi korelasi ada di Lampiran dengan nama
korrela on.m. Sintaks pemanggilan fungsi korrela on.m pada command window dapat dilihat
pada Gambar 4.1.

Gambar 4.1 Hasil perhitungan korelasi pada command window

4.2.2 Entropi
Entropi adalah konsep acak di mana terdapat keadaan yang kemungkinannya dak pas .
Definisi entropi yang berhubungan dengan teori informasi adalah ukuran yang menyatakan
jumlah informasi di dalam pesan. Biasanya entropi dinyatakan dalam satuan bit. Entropi
berguna untuk memperkirakan jumlah bit rata-rata untuk mengodekan elemen pesan (Munir,
2006). Entropi pesan dapat dihitung dengan rumus berikut (Younes dan Jantan, 2008):

n
He = − ∑ P(k)log2 (P(k)) (4.9)
k =0
66 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Keterangan:
He entropi
n jumlah simbol yang berbeda di dalam pesan, pada citra n adalah nilai keabuan dari citra
P(k) probabilitas kejadian simbol k
Jika sebuah informasi dienkripsi dan dalam kondisi teracak, nilai entropi yang ideal adalah
≈8. Ar nya, se ap simbol dikodekan sebanyak ≈ 8 bit. Dengan demikian, sistem enkripsi yang
dirancang aman dari serangan entropi. Jika nilai entropi lebih kecil dari 8, dapat dikatakan
bahwa sistem enkripsi masih dapat ditebak (Jolfaei dan Mirghadri, 2011).
Pada MATLAB, sintaks yang dapat digunakan adalah fungsi
E = entropy(I)

Sintaks pemanggilan pada command window dapat dilihat pada Gambar 4.2.

Gambar 4.2 Hasil perhitungan entropi pada command window

4.2.3 Analisis Histogram


Teknik analisis histogram digunakan untuk mengukur hasil enkripsi pada data citra. Teknik
ini digunakan untuk melihat kesesuaian distribusi warna antara plain image dengan cipher
image. Jika nilai histogram cipher image memiliki distribusi keragaman dan perbedaan
yang signifikan dengan histogram plain image, dapat dikatakan bahwa cipher image dak
memberikan petunjuk apa-apa untuk melakukan sta s cal a ack pada algoritma enkripsi
yang digunakan. Histogram dapat digunakan untuk mencari citra yang memiliki kemiripan
komposisi warna. Pada MATLAB, sintaks yang dapat digunakan adalah fungsi
imhist(I)

Fungsi M-file untuk memanggil fungsi histogram dicantumkan dalam Lampiran dengan nama
histogram.m. Sintaks pemanggilan fungsi histogram.m pada command window dapat dilihat
pada Gambar 4.3.
TEORI BILANGAN DAN ANALISIS ENKRIPSI 67

Gambar 4.3 Pemanggilan fungsi histogram.m pada command window

Hasil fungsi histogram.m dapat dilihat pada Gambar 4.4.

Gambar 4.4 Hasil tampilan fungsi histogram.m

4.2.4 Kualitas Enkripsi


Pengukuran kualitas enkripsi dilakukan dengan membandingkan nilai data sebelum dan
sesudah dienkripsi. Semakin nggi ngkat perubahan data, semakin efek f enkripsi data dan
semakin aman datanya (Jolfaei dan Mirghadri, 2011). Ukuran kualitas enkripsi dinyatakan
sebagai deviasi antara plaintext atau plain image dengan ciphertext atau cipher image. Kualitas
enkripsi merepresentasikan jumlah rata-rata perubahan se ap data, dan pada data yang
berupa citra, kualitas enkripsi merepresentasikan jumlah rata-rata perubahan se ap derajat
keabuan.
Untuk mengukur kualitas enkripsi citra digunakan rumus berikut (Jolfaei dan Mirghadri, 2011):
255

∑ H (C ) − H (P)
L L
EQ = L= 0

256 (4.10)
68 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Keterangan:
EQ kualitas enkripsi
P citra asli (plain image)
C citra hasil enkripsi (cipher image)
L derajat keabuan
HL (P) jumlah kejadian untuk se ap L pada plain image
HL (C) jumlah kejadian untuk se ap L pada cipher image
M-file untuk memanggil fungsi untuk menghitung kualitas hasil enkripsi citra disertakan dalam
Lampiran dengan nama Kualitas_enkripsi.m. Pemanggilan fungsi Kualitas_enkripsi.m pada
command window dapat dilihat pada Gambar 4.5.

Gambar 4.5 Pemanggilan fungsi Kualitas_enkripsi.m pada command window

4.3 Evaluasi
1. Carilah:
a. 21 (mod 4)
b. 48 (mod 15)
c. 312354567789 (mod 4)
2. Berapakah nilai dari
a. φ(7)
b. φ(14)
c. φ(12)
d. φ(56)
3. Carilah nilai PBB dari
a. PBB(325, 234)
b. PBB(4567, 123)
c. PBB(789456, 123)
TEORI BILANGAN DAN ANALISIS ENKRIPSI 69
4. Carilah nilai x dari
a. 23 x (mod 57) = 1
b. 25 x (mod 39) = 4
5. Jelaskan parameter apa saja yang digunakan untuk mengukur aman- daknya metode
enkripsi.
70 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
BAB V
KRIPTOGRAFI KLASIK

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. mengetahui dan memahami konsep dasar kriptografi klasik;
2. mengaplikasikan algoritma kriptografi klasik dengan aplikasi MATLAB.

Database merupakan komponen yang vital pada era masyarakat berbasis informasi sehingga
memerlukan pengamanan yang baik saat didistribusikan ataupun saat disimpan. Salah satu
metode pengamanan data adalah kriptografi. Kriptografi termasuk metode pengamanan yang
tangguh karena sekali disandikan dengan algoritma sandi yang baik, data akan tetap aman
kenda se ap orang dapat mengaksesnya secara bebas. Selama algoritma sandi tersebut tetap
terjaga, data yang disandikan akan tetap aman.
Kriptografi klasik adalah salah satu metode kriptografi yang dipakai pada zaman dahulu sebe-
lum ada komputer. Bentuk penyandiannya berupa teks (karakter) yang berbasis karakter dengan
menggunakan alat tulis berupa kertas dan pensil, atau dengan mesin sandi yang masih sangat
sederhana. Kriptografi klasik ini digolongkan dalam kriptografi kunci simetrik dan digunakan
jauh sebelum kriptografi kunci publik ditemukan. Sekarang algoritma ini jarang digunakan lagi
karena mereka sangat mudah dipecahkan. Meskipun demikian, kriptogafi klasik tetap perlu
kita pelajari. Alasannya adalah sebagai berikut:
1. untuk memberikan pemahaman tentang konsep dasar kriptografi;
2. menjadi dasar untuk mempelajari algoritma kriptografi modern;
3. memahami kelemahan sistem cipher.
Cipher adalah algoritma matema s yang digunakan untuk proses penyandian plaintext men-
jadi ciphertext. Di sini cipher yang tergolong dalam kriptografi klasik adalah
1. cipher subs tusi (subs tu on cipher);
2. cipher transposisi (transposi on cipher).
72 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

5.1 Cipher SubsƟtusi


Cipher subs tusi adalah algoritma kriptografi yang menggan se ap unit plaintext dengan
satu unit ciphertext. Satu unit di sini dapat berar satu karakter, pasangan karakter, atau
kelompok lebih dari dua karakter. Cipher subs tusi terdiri atas empat jenis, yaitu
1. cipher abjad-tunggal (monoalphabe c cipher);
2. cipher homofonik (homophonic subs tu on cipher);
3. cipher abjad-majemuk (polyalphabe c subs tu on cipher);
4. cipher poligram (polygram subs tu on cipher).

5.1.1 Cipher Abjad-Tunggal


Cipher abjad-tunggal menggan kan satu karakter di plaintext dengan satu karakter yang
bersesuaian. Jumlah kemungkinan susunan karakter-karakter ciphertext yang dapat dibuat
untuk karakter abjad A–Z (sebanyak 26 karakter) adalah
26! = 403.291.461.126.605.635.584.000.000
Contoh cipher abjad tunggal adalah Caesar cipher dan simple subs tu on cipher.

5.1.1.1 Caesar Cipher


Caesar cipher merupakan teknik kriptografi dan enkripsi yang sudah ada sejak zaman Julius
Caesar. Cipher ini dirancang sendiri oleh Julius Caesar untuk mengirim pesan kepada Cleopatra.
Enkripsinya menggunakan teknik penggeseran karakter 3 langkah ke kiri dari karakter A–Z:
AÆD
BÆE
C Æ F dan seterusnya
Jadi, untuk se ap cipher, penggeseran karakter ke-i pada alfabet menjadi karakter ke-i+k pada
urutan alfabet inilah yang disebut Caesar cipher.
pi: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ci: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Caesar cipher merupakan contoh sederhana dari teknik enkripsi, di mana se ap karakter
alfabet digan kan dengan karakter lain dengan panjang alfabet sebanyak 26 karakter. Tekno-
logi di atas dak dapat digunakan lagi pada zaman sekarang karena terlalu sederhana.
Sintaks fungsi enkripsi menggunakan metode Caesar cipher dan 256 karakter ASCII dapat
dilihat pada Gambar 5.1.
KRIPTOGRAFI KLASIK 73
function enkripcaesar
plaintext=input(‘Masukkan Plaintext: ‘);
kunci=input(‘Masukkan kunci : ‘);
p=double(plaintext);
c=mod((p+kunci),256);
cc=char(c);
fprintf(‘Ciphertext: %s \n’,cc);

Gambar 5.1 Fungsi untuk mengenkripsi data teks dengan metode Caesar cipher

Contoh hasil enkripsi dengan metode Caesar cipher dapat dilihat pada Gambar 5.2.

Gambar 5.2 Hasil enkripsi data teks dengan metode Caesar cipher

Salah satu cara penyerangan (a ack) yang dapat dilakukan pada metode Caesar cipher adalah
dengan menganalisis sta s k dari karakter yang muncul. Stallings dalam bukunya Network
and Internetwork Security (Stallings, 1995) menunjukkan sta s k kemunculan karakter untuk
tulisan dalam bahasa Inggris. Cara yang sama dapat dilakukan untuk mencari distribusi
penggunaan karakter dalam teks bahasa Indonesia. Sebagai contoh, apabila dipunyai teks
dalam bahasa Indonesia seper berikut:
Kemajuan teknologi telah menjadikan fungsi teknologi informasi dan komuni-
kasi menjadi konvergen sehingga kini muncul istilah ICT (Information and
Communication Technology). Internet dan telepon seluler memiliki peran penting
sebagai medium untuk konvergensi multimedia saat ini.
Teknologi komunikasi bergerak juga berkembang pesat, begitu juga perkembangan
fitur-fitur layanan yang mendukung dalam sistem GSM. Salah satu layanan yang
ditawarkan adalah MMS (Multimedia Messaging Service) yang merupakan
perkembangan dari SMS (Short Message Service) yang memungkinkan melakukan
pengiriman data berupa image, audio, dan video.
Tingkat keamanan data yang dikirim melalui MMS belum terjamin, karena pihak
penyelenggara jaringan atau operator dapat mengetahui isi pesan yang dikirim.
Terutama karena penerimaan dan pengiriman pesan melalui MMS menggunakan
jalur dan protokol IP yang merupakan jalur yang rentan terhadap serangan dari
pihak-pihak yang tidak berhak.
Problem yang ada adalah keterbatasan sumberdaya komputasi serta keragaman
platform telepon seluler, sehingga diperlukan rancangan yang mampu menjamin
kompatibilitas dan interoperabilitas pada berbagai perangkat. Sementara algoritma
kriptografi membutuhkan sumberdaya komputasi yang relatif besar.
74 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Berdasarkan data teks tersebut, persentase frekuensi kemunculan masing-masing karakter


dalam bahasa Indonesia dapat dilihat pada Gambar 5.3.

Gambar 5.3 Frekuensi kemunculan untuk se ap karakter pada teks bahasa Indonesia

Gambar 5.4 Frekuensi enkripsi karakter dengan I Æ I+3 (Seberry dan Pieprzyk, 1989)

Secara umum rumus untuk penggeseran Caesar cipher adalah sebagai berikut. Jika diketahui P
= C = K = Z26. (x,y ∈ Z26), di mana 0 ≤ K ≤ 25:
1. Formula encipher: EK(x) = x + K mod 26 (5.1)
2. Formula decipher: DK(y) = y – K mod 26 (5.2)
Jika se ap karakter dapat diasumsikan sebagai suatu nilai ordinal dengan menggunakan
modulo 26, karakter dapat diilustrasikan seper pada TABEL 5.1.
TABEL 5.1 Konversi karakter ke urutan bilangan integer dari 0–25
A B C D E F G H I J K L M N O
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

P Q R S T U V W X Y Z
15 16 17 18 19 20 21 22 23 24 25
KRIPTOGRAFI KLASIK 75
Jika digunakan 256 karakter ASCII:
1. Enkripsi: ci = E(pi) = (pi + k) mod 256 (5.3)
2. Dekripsi: pi = D(ci) = (ci – k) mod 256 (5.4)
di mana k adalah kunci rahasia.
Kriptanalis menggunakan pendistribusian frekuensi dari karakter yang ada di surat. Jika seorang
kriptanalis sukses dengan surat sederhana, ia dapat menemukan kunci yang digunakan untuk
enkripsi dengan memperha kan frekuensi seringnya suatu karakter muncul pada suatu surat
dan mengetahui berapa penggeserannya.
Untuk melakukan enkripsi, kita bisa menggunakan langkah-langkah berikut.
1. Ubah plaintext ke dalam urutan bilangan integer dengan memperha kan TABEL 5.1.
2. Tambahkan nilai K (kunci yang berisi besarnya penggeseran) pada masing-masing urutan
bilangan yang merupakan plaintext dan lakukan reduksi sebagai penjumlahan modulo 26.
3. Konversikan kembali urutan bilangan ke dalam karakter dengan mengacu pada TABEL 5.1.

Contoh:
Plaintext: H A L
Dengan kunci menggunakan nilai K = 1
Hasil konversi plaintext menjadi 7 0 11
Setelah dilakukan proses x + 1 mod 26 didapatkan 8 1 12
Ciphertext: I B M
Berikut adalah langkah-langkah untuk melakukan dekripsi.
1. Ubah ciphertext ke dalam urutan bilangan integer dengan memperha kan TABEL 5.1.
2. Se ap urutan bilangan yang merupakan ciphertext dikurangi dengan nilai K (kunci yang
berisi besarnya penggeseran) dan direduksi sebagai penjumlahan modulo 26.
3. Konversikan kembali urutan bilangan ke dalam karakter dengan kembali mengacu pada
TABEL 5.1.
Contoh:
Ciphertext: SHQBDQGLDQ GHQJDQ NULSWRJUDIL
dengan kunci menggunakan nilai K = 3
Hasil konversi ciphertext menjadi:
18 7 16 1 3 16 6 11 3 16 6 7 16 9 3 16 13 20 11 18 22 17 9 20 3 8 11
Setelah dilakukan proses y - 3 mod 26, hasilnya menjadi:
15 4 13 24 0 13 3 8 0 13 3 4 13 6 0 13 10 17 8 15 19 14 6 17 0 5 8
Plaintext: PENYANDIAN DENGAN KRIPTOGRAFI
76 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Dalam prak k, ciphertext dikumpulkan ke dalam kelompok n-karakter, misalnya kelompok


4-karakter:
SHQB DQGL DQGH QJDQ NULS WRJU DIL
Atau, tanpa spasi:
SHQBDQGLDQGHQJDQNULSWRJUDIL
Tujuan model di atas adalah agar kriptanalisis menjadi lebih sulit dilakukan (Caesar cipher
ini mudah dipecahkan dengan exhaus ve key search karena jumlah kuncinya sangat sedikit
[hanya ada 26 kunci]).
Contoh fungsi lain untuk menjelaskan Caesar cipher adalah ROT13 di dalam sistem operasi
Unix. ROT13 menggunakan cipher abjad-tunggal dengan pergeseran k = 13. Nama ROT13
berasal dari net.jokes (h p://groups.google.com/group/net.jokes). ROT13 biasanya digunakan
di dalam forum online untuk menyandikan jawaban teka-teki, kuis, canda, dan sebagainya.

Gambar 5.5 ROT13


(sumber: www.commons.wikimedia.org/wiki/File:ROT13.png)

Contoh:
ROT13(ROTATE) = ROT13(17,14,19,0,19,4) = EBGNGR
Enkripsi arsip dua kali dengan ROT13 menghasilkan arsip semula:
P = ROT13(ROT13(P))
sebab ROT13(ROT13(x)) = ROT26(x) = x
Jadi, dekripsi cukup dilakukan dengan mengenkripsi ciphertext kembali dengan ROT13.
KRIPTOGRAFI KLASIK 77

5.1.1.2 Cipher SubsƟtusi Berdasarkan Cara Pembangkitan Kunci


Kriptosistem jenis abjad tunggal yang baik lainnya adalah cipher subs tusi (subs tu on
cipher). Kriptosistem ini sudah digunakan sejak beribu-ribu tahun yang lalu. Puzzle
“cryptogram” pada surat kabar adalah contoh cipher subs tusi.
Pada cipher subs tusi, enkripsi dilakukan dengan cara menggan se ap karakter dalam
plaintext dari alfabet A dengan alfabet C. Misalkan dipunyai alfabet A: a1, a2, a3, …, an, maka
alfabet subs tusi: f(a1), f(a2), …, f(an), di mana f : A → C menggunakan konsep injek f dan
bijek f. Dalam hal ini, A dak harus sama dengan C.
Alfabet A: 0, 1, 2, 3, …, 9, A, B, C, D, E, F
Alfabet C: a, b, c, d, e, …, p.
Alfabet A dan C dapat juga merupakan karakter, di mana alfabet A berisi urutan dari alfabet
dari A–Z, sedangkan alfabet C atau alfabet subs tusi merupakan urutan karakter yang didapat
dengan beberapa cara berikut.
1. Urutan awal dibentuk dari karakter pada kata kunci
Urutan awal dibentuk dari karakter pada kata kunci dengan mengambil karakter yang
berbeda (bila ada duplikasi, karakter itu dak perlu dimasukkan ke dalam urutan). Urutan
selanjutnya adalah urutan karakter alfabet berikutnya yang belum digunakan pada kunci
(Sasongko, 2005)
Berikut adalah p untuk membuat kunci.
a. Buat kunci dari sembarang kalimat:
BELAJAR KRIPTOGRAFI SANGAT MENYENANGKAN
b. Buang karakter yang berulang:
BELAJRKIPTOGFSNMY
c. Sambungkan dengan karakter lain yang belum ada:
BELAJRKIPTOGFSNMYCDHQUVWXZ
Langkah-langkah enkripsinya adalah sebagai berikut.
a. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
b. Tentukan alfabet C, yaitu urutan yang diawali dengan karakter yang dak sama pada
kunci K dan diiku oleh urutan karakter alfabet lain yang belum digunakan pada kunci.
c. Ciphertext didapatkan dengan menggunakan posisi pada alfabet A untuk mencari
karakter pada alfabet C.
Contoh:
Plaintext: CRYPTOGRAPHY
Proses enkripsi menggunakan kunci EMY SETYANINGSIH.
a. Menentukan alfabet A dan C
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet C E M Y S T A N I G H B C D F J
78 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet C K L O P Q R U V W X Z
b. Nilai posisi dari karakter pada plaintext adalah sebagai berikut.
Plaintext C R Y P T O G R A P H Y
Posisi pada alfabet A 3 18 25 16 20 15 7 18 1 16 8 25
c. Posisi pada alfabet A digunakan untuk mencari karakter pada alfabet C.
Posisi pada alfabet C 3 18 25 16 20 15 7 18 1 16 8 25
Ciphertext Y O X K Q J N O E K I X
d. Ciphertext: YOXKQJNOEKIX
M-file untuk memanggil fungsi enkripsi dengan metode cipher subs tusi disertakan
dalam Lampiran dengan nama subs tusi.m. Sintaks pemanggilan pada command
window adalah
>> substitusi

Gambar 5.6 Hasil enkripsi data teks dengan metode cipher subs tusi

Berikut adalah langkah-langkah untuk dekripsi data teks.


a. Tentukan alfabet C, yaitu urutan yang diawali dengan karakter yang dak sama pada
kunci K dan diiku oleh urutan karakter alfabet lainnya yang belum digunakan pada
kunci.
b. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
c. Cari posisi karakter ciphertext di alfabet C untuk mencari karakter pada alfabet A.
Contoh:
Ciphertext: YOXKQJNOEKIX dengan K = EMY SETYANINGSIH
Proses dekripsi dilakukan dengan langkah-langkah berikut:
a. Menentukan alfabet A dan C.
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet C E M Y S T A N I G H B C D F J
Alfabet A A B C D E F G H I J K L M N O
KRIPTOGRAFI KLASIK 79

Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet C K L O P Q R U V W X Z
Alfabet A P Q R S T U V W X Y Z
b. Nilai posisi dari karakter pada ciphertext adalah sebagai berikut.
Ciphertext Y O X K Q J N O E K I X
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet C
c. Posisi pada alfabet C digunakan untuk mencari karakter pada alfabet A.
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet A
Plaintext C R Y P T O G R A P H Y
d. Plaintext: CRYPTOGRAPHY
M-file untuk memanggil fungsi dekripsi dengan metode cipher subs tusi diserta-
kan dalam Lampiran dengan nama dekrip_subs tusi.m. Sintaks pemanggilan pada
command window adalah
>> dekrip_substitusi

Gambar 5.7 Hasil dekripsi data teks dengan metode cipher subs tusi

2. Alfabet subsƟtusi menggunakan bentuk f(x) = (x + k) mod n(α)


Alfabet subs tusi menggunakan bentuk f(x) = (x + k) mod n(α), di mana nilai k diketahui
(sebagai kunci), dan x adalah nilai integer sebuah karakter (nilai integer karakter alfabet
dapat dilihat di TABEL 5.1).
Langkah-langkah enkripsinya adalah sebagai berikut.
a. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
b. Tentukan alfabet C, yaitu hasil dari f(x) = (x + k) mod n(α), di mana x adalah nilai integer
dari sebuah karakter, dan n = 26 (karena nilai integer karakter A–Z adalah 26).
c. Ciphertext didapatkan dengan mencari posisi karakter dari plaintext di alfabet A. Posisi
tersebut digunakan untuk mencari karakter pada alfabet C.
Contoh:
Plaintext: CRYPTOGRAPHY
Proses enkripsi menggunakan kunci k = 9.
80 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

a. Menentukan alfabet A dan alfabet subs tusi n(α) = 26 dan k = 9.


Misalkan kita akan mencari alfabet subs tusi dari karakter “A”:
f(A) = (0 + 9) mod 26
= 9 mod 26 = 9 = “J”
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet C J K L M N O P Q R S T U V W X
Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet C Y Z A B C D E F G H I
b. Nilai posisi dari karakter pada plaintext adalah sebagai berikut.
Plaintext C R Y P T O G R A P H Y
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet A
c. Posisi pada alfabet A digunakan untuk mencari karakter pada alfabet C.
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet C
Ciphertext L A H Y C X P A J Y Q H
d. Ciphertext: LAHYCXPAJYQH
Langkah-langkah dekripsinya adalah sebagai berikut.
a. Analog dengan langkah 1 dan 2 pada proses enkripsi.
b. Plaintext didapatkan dengan mencari posisi karakter ciphertext pada alfabet
C. Posisi tersebut digunakan untuk mencari karakter pada alfabet A.
Contoh:
Ciphertext: LAHYCXPAJYQH dengan K = 9
Proses dekripsi:
a. Menentukan alfabet A dan C.
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet C J K L M N O P Q R S T U V W X
Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet C Y Z A B C D E F G H I
b. Nilai posisi dari karakter pada ciphertext adalah sebagai berikut.
Ciphertext L A H Y C X P A J Y Q H
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet C
c. Posisi pada alfabet C digunakan untuk mencari karakter pada alfabet A.
Posisi pada 3 18 25 16 20 15 7 18 1 16 8 25
alfabet A
Plaintext C R Y P T O G R A P H Y
d. Plaintext: CRYPTOGRAPHY
KRIPTOGRAFI KLASIK 81
3. Alfabet subsƟtusi menggunakan bentuk f(x) = (x * k) mod n(α)
Alfabet subs tusi menggunakan bentuk f(x) = (x * k) mod n(α), di mana nilai k diketahui
(sebagai kunci), dan x adalah nilai integer dari sebuah karakter.
Langkah-langkah enkripsinya adalah sebagai berikut.
a. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
b. Tentukan alfabet C, yaitu hasil dari f(x) = (x * k) mod n(α), di mana x adalah nilai integer
karakter, dan n = 26 (karena nilai integer karakter A–Z adalah 26).
c. Ciphertext didapatkan dengan mencari posisi karakter plaintext di alfabet A. Posisi
tersebut digunakan untuk mencari karakter pada alfabet C.
Contoh:
Plaintext: CRYPTOGRAPHY
Proses enkripsi menggunakan kunci k = 9.
a. Menentukan alfabet A dan alfabet subs tusi, di mana n(α) = 26 dan k = 9.
Misalkan kita akan mencari alfabet subs tusi dari karakter “C”, maka
f(C) = (2 * 9) mod 26
= 18 mod 26 = 18
= “S”
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet C A J S B K T C L U D M V E N W
Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet C F O X G P Y H Q Z I R
b. Nilai posisi dari karakter pada plaintext adalah sebagai berikut.
Plaintext C R Y P T O G R A P H Y
Posisi pada alfabet A 3 18 25 16 20 15 7 18 1 16 8 25
c. Posisi pada alfabet A digunakan untuk mencari karakter pada alfabet C.
Posisi pada alfabet C 3 18 25 16 20 15 7 18 1 16 8 25
Ciphertext S X I F P W C X A F L I
d. Ciphertext: SXIFPWCXAFLI
Berikut adalah langkah-langkah dekripsinya.
a. Analog dengan langkah 1 dan 2 pada langkah enkripsi.
b. Plaintext didapatkan dengan mencari posisi karakter ciphertext pada alfabet C.
Posisi itu digunakan untuk mencari karakter pada alfabet A.
Contoh:
Ciphertext : SXIFPWCXAFLI
Proses dekripsi menggunakan K = 9.
a. Menentukan alfabet A dan C.
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet C A J S B K T C L U D M V E N W
82 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet C F O X G P Y H Q Z I R
b. Nilai posisi dari karakter pada ciphertext adalah sebagai berikut.
Ciphertext S X I F P W C X A F L I
Posisi pada alfabet C 3 18 25 16 20 15 7 18 1 16 8 25
c. Posisi pada alfabet C digunakan untuk mencari karakter pada alfabet A.
Posisi pada alfabet A 3 18 25 16 20 15 7 18 1 16 8 25
Plaintext C R Y P T O G R A P H Y
d. Plaintext: CRYPTOGRAPHY

5.1.2 Cipher Homofonik


Homofon adalah subs tusi cipher homofonik yang memetakan se ap karakter x pada plaintext
menjadi kumpulan elemen ciphertext f(x). Pemetaan f dari plaintext ke ciphertext pada cipher
f : 2→ c .
jenis ini menggunakan formula Á
Plaintext dari pesan M = m1m2 … dilakukan dengan proses enkripsi sehingga dihasilkan
ciphertext C = c1c2… di mana se ap ci yang terbaik dipilih secara acak dari himpunan homofon
f(mi).
Fungsi ciphering memetakan satu ke banyak (one to many), sedangkan dekripsi memetakan
satu ke satu (one to one) menggunakan tabel homofon yang sama. Misalnya, karakter A dapat
berkorespondensi dengan 7, 9, atau 16; karakter B dapat berkorespondensi dengan 5, 10,
atau 23, dan seterusnya. Tujuannya adalah untuk menyembunyikan hubungan sta s k antara
plaintext dengan ciphertext (Sasongko, 2005). Contoh:
Andaikan dipunyai suatu karakter yang bila dilakukan proses enkripsi dapat disandikan antara
a–z, seper terlihat pada TABEL 5.2:
Plaintext: ITU
Cipher1: b k x
Cipher: e k y dan seterusnya
TABEL 5.2 Contoh cipher homofonik
KARAKTER HOMOFON
E a, e, c
A g, h
I b, d, e, f
O J
U x, y
Y r, s

T K
KRIPTOGRAFI KLASIK 83

5.1.3 Cipher PolialfabeƟk


Cipher polialfabe k menyembunyikan pendistribusian frekuensi karakter tunggal dengan
menggunakan subs tusi berganda. Cipher abjad majemuk dibuat dari sejumlah cipher abjad
tunggal di mana masing-masing menggunakan kunci yang berbeda.
Metode cipher polialfabe k ini mulai dikembangkan tahun 1568 oleh Leon Ba sta Alber .
Alber menggunakan suatu disk cipher yang didefinisikan sebagai subs tusi berganda.
Sebagian besar cipher polialfabe k adalah cipher subs tusi periodik yang didasarkan pada
periode d (banyaknya kunci yang digunakan). Bila dipunyai d alfabet cipher (kunci cipher) C1,
C2, …, Cd, maka fi: A Æ Ci, misalnya, merupakan pemetaan dari alfabet plaintext A ke urutan ke-i
alfabet cipher Ci, di mana 1 ≤ i ≤ d.
Bila suatu pesan M = m1m2…mdmd+1…m2d… dienkripsi, ciphertext yang terbentuk
berasal dari pengulangan urutan pemetaan f1, f2, …, fd untuk se ap d karakter. Maka,
Ek ( M ) = f1 ( m1 ) f2 ( m2 )K fd ( md ) f1 ( md +1 )K , dengan catatan bahwa jika d = 1, cipher-nya
monoalfabe k dan ekuivalen dengan subs tusi sederhana.
Langkah-langkah enkripsinya adalah sebagai berikut.
1. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
2. Tentukan alfabet f1, f2, …, fd, yaitu urutan yang diawali dengan karakter yang dak sama pada
kunci k1, k2, …, kd, dan diiku oleh urutan karakter alfabet lainnya yang belum digunakan
pada kunci.
3. Ciphertext didapatkan dengan menggunakan posisi pada alfabet A untuk mencari karakter
ke-1 pada alfabet f1, karakter ke-2 pada alfabet f2, dan seterusnya. Penggunaan alfabet
kuncinya bergan an secara periodik.
Contoh:
Plaintext: CRYPTOGRAPHY
Proses enkripsi menggunakan kunci k1 = EMY SETYANINGSIH dan k2 = MALECITA NUR ATALA
1. Tentukan alfabet A, f1, dan f2.
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Alfabet A A B C D E F G H I J K L M N O P Q
Alfabet f1 E M Y S T A N I G H B C D F J K L
Alfabet f2 M A L E C I T N U R B D F G H J K
Posisi 18 19 20 21 22 23 24 25 26
Alfabet A R S T U V W X Y Z
Alfabet f1 O P Q R U V W X Z
Alfabet f2 O P Q S V W X Y Z
2. Nilai posisi dari karakter pada plaintext adalah sebagai berikut.
Plaintext C R Y P T O G R A P H Y
Posisi pada alfabet A 3 18 25 16 20 15 7 18 1 16 8 25
84 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

3. Posisi pada alfabet A digunakan untuk mencari karakter pada alfabet f1 dan alfabet f2.
Posisi 3 18 25 16 20 15 7 18 1 16 8 25
Alfabet f1 f2 f1 f2 f1 f2 f1 f2 f1 f2 f1 f2
Ciphertext Y O X J Q H N O E J I Y
4. Ciphertext: YOXJQHNOEJIY
M-file untuk memanggil fungsi enkripsi dengan metode cipher polialfabe k disertakan
dalam Lampiran dengan nama enkrip_polyalpabe c.m. Sintaks pemanggilan pada
command window adalah
>> enkrip_polyalpabetic

Gambar 5.8 Hasil enkripsi data teks dengan metode cipher polialfabe k

Sementara langkah-langkah dekripsinya adalah sebagai berikut.


1. Tentukan alfabet f1, f2, …, fd, yaitu urutan yang diawali dengan karakter yang dak sama pada
kunci k1, k2, …, kd, dan diiku oleh urutan karakter alfabet lainnya yang belum digunakan
pada kunci.
2. Tentukan alfabet A, yaitu urutan dari alfabet A–Z.
3. Plaintext didapatkan dengan menggunakan posisi pada alfabet f1 dan f2 untuk mencari
karakter pada alfabet A (bergan an secara periodik, karakter ke-1 dicari dengan posisi
pada alfabet f1, sementara karakter ke-2 dicari dengan posisi pada alfabet f2).
Contoh:
Ciphertext: YOXJQHNOEJIY
k1: EMY SETYANINGSIH
k2: MALECITA NUR ATALA
Proses dekripsi:
1. Menentukan alfabet A, f1, dan f2.
Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alfabet A A B C D E F G H I J K L M N O
Alfabet f1 E M Y S T A N I G H B C D F J
Alfabet f2 M A L E C I T N U R B D F G H
Posisi 16 17 18 19 20 21 22 23 24 25 26
Alfabet A P Q R S T U V W X Y Z
Alfabet f1 K L O P Q R U V W X Z
Alfabet f2 J K O P Q S V W X Y Z
KRIPTOGRAFI KLASIK 85
2. Nilai posisi dari karakter pada ciphertext adalah sebagai berikut.
Ciphertext Y O X J Q H N O E J I Y
Posisi pada alfabet f1 dan 3 18 25 16 20 15 7 18 1 16 8 25
alfabet f2
3. Kemudian posisi tersebut dicari karakternya pada alfabet A
Posisi pada alfabet A 3 18 25 16 20 15 7 18 1 16 8 25
Plaintext C R Y P T O G R A P H Y
4. Plaintext: CRYPTOGRAPHY
M-file untuk memanggil fungsi dekripsi dengan metode cipher polialfabe k disertakan
dalam Lampiran dengan nama dekrip_polyalpabe c.m. Sintaks pemanggilan pada
command window adalah
>> dekrip_polyalpabetic

Gambar 5.9 Hasil dekripsi data teks dengan metode cipher polialfabe k

5.1.3.1 Vigenere Cipher


Vigenere cipher adalah metode enkripsi abjad majemuk manual (polyalphabe cal subs tu on
cipher). Algoritma ini ditemukan oleh seorang diplomat sekaligus kriptolog Prancis, Blaise de
Vigenere, pada abad XVI. Metode ini dipublikasikan pada tahun 1856, dan sekitar dua ratus
tahun setelahnya, pada abad XIX, Vigenere cipher digunakan oleh tentara konfederasi pada
Perang Sipil Amerika.
Vigenere cipher pada dasarnya menggunakan teknik yang sama dengan Caesar cipher.
Bedanya, dalam Vigenere cipher se ap karakter pada plaintext dapat dienkripsikan dengan
kunci yang berbeda. Karakter pertama pada plaintext dienkripsikan dengan kunci berupa
karakter pertama dari kata kunci dan seterusnya. Sifat polialfabe k yang dimiliki oleh Vigenere
cipher diimplementasikan dengan bujur sangkar Vigenere (Gambar 5.10). Sifat periodiknya
terlihat apabila panjang kunci lebih kecil daripada panjang plaintext. Kunci dapat diulang
penggunaannya sampai panjang kunci sama dengan panjang plaintext. Jika panjang kunci
hanya satu karakter, enkripsinya sama dengan Caesar cipher biasa.
86 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Bujur sangkar Vigenere digunakan untuk mempermudah proses enkripsi dengan Vigenere
cipher. Kolom paling kiri dari bujur sangkar menyatakan karakter kunci, sedangkan baris paling
atas menyatakan karakter plaintext. Se ap baris dalam bujur sangkar menyatakan karakter-
karakter ciphertext yang diperoleh dengan Caesar cipher di mana pergeseran karakter plaintext
ditentukan oleh nilai desimal karakter kunci tersebut.
TABEL 5.3 Bujur sangkar Vigenere cipher
(sumber: www.audinoventri.blogspot.com)

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

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

Cara menggunakan bujur sangkar Vigenere adalah sebagai berikut. Tarik garis ver kal
dari karakter plaintext ke bawah, lalu tarik garis horizontal dari karakter kunci ke kanan.
Perpotongan kedua garis tersebut menyatakan karakter ciphertext dari karakter plaintext yang
bersangkutan. Sebagai contoh, plaintext-nya karakter S dan kuncinya karakter P, maka untuk
mencari ciphertext di tabel Vigenere, lihat kolom S dan cari baris P. Hasil pertemuannya adalah
H, seper terlihat pada Gambar 5.10. Secara matema s, jika kunci K dengan panjang m adalah
rangkaian karakter-karakter K = k1 … km di mana ki didapat dari banyaknya penggeseran pada
alfabet ke-i, plaintext adalah rangkaian p1, p2, …, pm, dan ciphertext adalah rangkaian c1, c2,
…, cm, ke ganya dapat dinyatakan dengan formula (S nson, 2006). Misalkan m menentukan
beberapa nilai integer posi f. Diberikan P = C = K = (Z26)m. Untuk sebuah kunci K = (k1, k2, …, km),
kita definisikan dengan persamaan berikut:
eK(c1, c2, …, cm) = (p1+k1,p2+k2, …, pm+km) mod 26 (5.5)
KRIPTOGRAFI KLASIK 87
dK(p1, p2, …, pm) = (c1-k1, c2-k2, …, cm-km) (5.6)

di mana semua operasi berbasis pada Z26.

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

L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K
L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L
M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Gambar 5.10 Enkripsi dengan bujur sangkar Vigenere cipher

Proses enkripsi pada Vigenere cipher dilakukan dengan cara berikut.


1. Ubah kunci dan plaintext ke dalam urutan bilangan integer dengan memperha kan TABEL
5.1.
2. Tambahkan nilai K dan plaintext dengan mereduksikannya sebagai penjumlahan modulo
26, dan apabila ukuran plaintext lebih panjang daripada kunci, penjumlahan dengan K
dilakukan secara periodik. Ar nya, bila K sudah mencapai nilai terakhir, proses akan diulang
kembali pada K untuk nilai dengan urutan pertama.
3. Konversikan kembali urutan bilangan hasil penjumlahan K dan plaintext ke dalam karakter
dengan kembali mengacu pada TABEL 5.1.
Contoh:
Plaintext: ILMU KOMPUTER
Kuncinya menggunakan nilai K = ISTA
Hasil konversi plaintext: 8 11 12 20 10 14 12 15 20 19 4 17
Hasil konversi kunci: 8 18 19 0
Ciphertext:
8 11 12 20 10 14 12 15 20 19 4 17
8 18 19 0 8 18 19 0 8 18 19 0
+
16 29 31 20 18 32 31 15 28 39 23 17
Hasil mod 26: 16 3 5 20 18 6 5 15 2 11 23 17
Ciphertext: QDFU SGFPCLXR
88 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

M-file untuk memanggil fungsi enkripsi dengan metode Vigenere cipher disertakan dalam
Lampiran dengan nama enkripsi_vigenere.m. Sintaks pemanggilan pada command window
adalah
>> enkrip_vigenere

Gambar 5.11 Hasil enkripsi data teks dengan metode Vigenere cipher

Lebih lanjut, proses dekripsi pada Vigenere cipher bisa dilakukan dengan cara berikut.
1. Ubah ciphertext dan kunci ke dalam urutan bilangan integer dengan memperha kan TABEL
5.1.
2. Pada masing-masing urutan bilangan yang merupakan ciphertext, kurangkan dengan nilai
K dan reduksikan sebagai penjumlahan modulo 26.
3. Konversikan kembali urutan bilangan ke dalam karakter dengan kembali mengacu pada
TABEL 5.1.
Contoh:
Ciphertext: QDFUSGFPCLXR
Kuncinya menggunakan nilai K = ISTA
Hasil konversi ciphertext: 16 3 5 20 18 6 5 15 2 11 23 17
Hasil konversi kunci: 8 18 19 0
Plaintext:
16 3 5 20 18 6 5 15 2 11 23 17
8 18 19 0 8 18 19 0 8 18 19 0
-
8 -15 -14 20 10 -12 -14 15 -6 -7 4 17
Hasil mod 26: 8 11 12 20 10 14 12 15 20 19 4 17
Plaintext: ILMU KOMPUTER
M-file untuk memanggil fungsi dekripsi dengan metode Vigenere cipher disertakan dalam
Lampiran dengan nama dekripsi_vigenere.m. Sintaks pemanggilan pada command window
adalah
>> dekripsi_vigenere
KRIPTOGRAFI KLASIK 89

Gambar 5.12 Hasil dekripsi data teks dengan metode Vigenere cipher

Pengembangan metode Vigenere cipher untuk penyandian citra dilakukan dengan formula
Vigenere cipher yang memakai nilai basis modulo 256 sesuai dengan intensitas warna pada
citra. Kunci-kuncinya disebut tabel Vigenere. Implementasi tabel tersebut dikembangkan
dengan nilai plaintext dari 0 sampai dengan 255. TABEL 5.4 adalah tabel Vigenere yang telah
dikembangkan.
TABEL 5.4 Pengembangan bujur sangkar Vigenere cipher (Suhartana, 2009)

Keterangan untuk TABEL 5.4 adalah sebagai berikut.


1. Angka pada baris pertama dengan arsiran adalah indeks nilai piksel citra yang dikodekan
(plaintext yang berupa image primer).
2. Angka pada kolom pertama dengan arsiran adalah kode kunci (key).
3. Angka tanpa arsiran adalah hasil (cipher image primer).
Rumus enkripsi yang digunakan untuk menghitung nilai cipher image se ap piksel adalah
Eki (a) = (a + ki)mod256 (5.7)

Keterangan:
a intensitas ke-i, j citra asli
ki kunci ke-i
Sebagai contoh, jika diketahui bahwa plaintext adalah citra dengan intensitas 143 78 70 79 82
77 65 84 73 75, dan kunci yang digunakan adalah 173 83 84, proses enkripsi yang terjadi dapat
dilihat pada TABEL 5.5.
90 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

TABEL 5.5 Contoh proses enkripsi dengan metode Vigenere cipher


Plaintext: 143 78 70 79 82 77 65 84 73 75
Kunci: 173 83 84 173 83 84 173 83 84 173
Ciphertext: 60 161 154 252 165 161 238 167 157 248

Pada TABEL 5.5 kunci 173 83 84 diulang sedemikian rupa hingga panjang kunci menjadi sama
dengan plaintext. Jika panjangnya sudah sama, proses enkripsi dilakukan dengan menggeser
(seper pada Caesar cipher) se ap nilai piksel pada plaintext sesuai dengan kunci yang
bersesuaian dengan nilai piksel plaintext tersebut. Pada contoh di atas, piksel pertama pada
plaintext, yaitu 143, akan digeser sesuai dengan kunci pertama, yaitu 173, menjadi 60 (dengan
operasi penjumlahan berbasis 256). Kemudian, piksel plaintext kedua akan digeser juga sesuai
dengan kunci kedua. Hal tersebut dilakukan untuk plaintext berikutnya hingga semua plaintext
terenkripsi menjadi ciphertext.
Dekripsi cipher dengan metode Vigenere cipher hampir sama dengan cara enkripsinya. Bedanya
hanya pada arah penggeseran karakter yang dilakukan. Se ap intensitas warna pada cipher
image digeser ke kiri (atau dilakukan operasi pengurangan berbasis 256) sesuai dengan kunci
yang cocok dengan ciphertext tersebut. Rumus yang digunakan untuk mendapatkan kembali
plaintext yang berupa citra se ap piksel yang telah terenkripsi adalah
Dki (a) = (a − ki )mod256 (5.8)

Keterangan
a intensitas citra piksel ke-i,j yang terenkripsi
ki kunci ke-i
Dekripsi citra dengan metode Vigenere cipher dilakukan dengan langkah-langkah berikut.
1. Pisahkan komponen warna RGB dari citra yang telah tersandikan melalui proses transfor-
masi warna seper pada proses enkripsi.
2. Selanjutnya, se ap komponen warna ciphertext dikurangkan dengan kunci yang digunakan
pada proses enkripsi dengan menggunakan konsep pengurangan modulo 256.
3. Langkah tersebut dilakukan pada semua blok ciphertext untuk semua komponen warna.
4. Vektor hasil dekripsi dikembalikan sebagai nilai RGB dengan transformasi warna balik
sehingga menghasilkan citra yang sama dengan citra aslinya.
Kekuatan algoritma Vigenere cipher ini dapat mencegah frekuensi karakter-karakter di dalam
ciphertext yang memiliki pola tertentu yang sama, seper yang terjadi pada cipher abjad
tunggal. Karakter yang paling sering muncul pada cipher abjad tunggal dalam ciphertext
merupakan subs tusi dari karakter yang paling sering muncul di plaintext. Akibatnya, kriptanalis
bisa dengan mudah menebak karakter tersebut dengan teknik analisis. Namun, pada Vigenere
cipher hal tersebut dak bisa dilakukan karena satu macam karakter pada plaintext mungkin
dienkripsi menjadi beberapa macam karakter pada ciphertext.
Meskipun dapat dikatakan bahwa algoritma Vigenere cipher lebih kuat daripada algoritma
Caesar cipher, algoritma ini tetap memiliki kelemahan sehingga ciphertext hasil dari algoritma
KRIPTOGRAFI KLASIK 91
Vigenere cipher ini dapat dibuka secara paksa oleh kriptanalis. Kelemahan ini muncul jika
panjang kunci lebih pendek dari panjang plaintext-nya sehingga terdapat perulangan kunci
yang digunakan untuk mengenkripsi plaintext tersebut. Kunci yang berulang itu menimbulkan
celah berupa jumlah pergeseran yang sama untuk se ap plaintext yang disubs tusi oleh
karakter pada kunci yang sama. Pada TABEL 5.5, piksel ke-1, 4, 7, dan 10 akan digeser dengan
nilai pergeseran yang sama sehingga karakter-karakter tersebut memiliki kunci yang sama,
yaitu 173, karena terjadinya perulangan kunci. Hal yang sama juga terjadi pada piksel ke-2, 5,
8, dan seterusnya. Karena terdapat kelompok piksel plaintext yang disubs tusi dengan nilai
kunci yang sama, pada se ap kelompok piksel dapat dikenakan metode analisis frekuensi. Jika
kita ama , kelompok piksel yang digeser dengan nilai yang sama karena perulangan kunci ini
sebanyak panjang kunci tersebut.
Kriptanalis perlu mengetahui kunci untuk memecahkan Vigenere cipher. Jika periode/panjang
kunci (m) diketahui, kunci dapat diterka dengan exhaus ve search, meskipun memerlukan
hingga 256m kali percobaan untuk mendapatkan kunci yang menghasilkan plaintext yang
sesuai. Orang pertama yang berhasil menemukan kelemahan Vigenere cipher dan memecahkan
ciphertext adalah Friedreich Kasiski, pada tahun 1863. Kasiski berpendapat bahwa jika panjang
kunci dapat ditemukan, ciphertext dapat dipecahkan dengan menggunakan metode analisis
frekuensi pada masing-masing kelompok ciphertext yang dihasilkan (Abrihama, 2008).
Gambar 5.13 mengilustrasikan apa yang terjadi apabila se ap citra disandikan dengan panjang
kunci yang berbeda. Hasil enkripsi citra menggunakan kunci dengan panjang 25 karakter terlihat
lebih acak dibandingkan hasil enkripsi citra menggunakan kunci dengan panjang 9 karakter.
Demikian juga hasil enkripsi untuk semua citra yang diujikan, yang menunjukkan enkripsi citra
semakin baik apabila menggunakan kunci yang lebih panjang. Rata-rata citra yang diujikan pada
Gambar 5.13 memiliki hasil enkripsi yang semakin baik apabila menggunakan panjang kunci
minimal 0,2% dari ukuran citra yang berupa angka antara 0 sampai dengan 255 (Setyaningsih,
2010). Hal ini terlihat dari dak dikenalinya lagi gambar asli citra yang tersandikan.
Supaya cipher dak mudah dipecahkan dengan metode Kasiski, kita dapat menggunakan
metode one- me-pad cipher yang menggunakan panjang kunci yang sama dengan panjang
plaintext. Namun, dalam kehidupan sehari-hari hal ini sulit dilakukan, mengingat kunci yang
begitu panjang bukanlah sesuatu yang mudah dipakai. Agar panjang kunci yang digunakan
untuk melakukan enkripsi ataupun dekripsi sama dengan plaintext, metode keystream
Vigenere cipher dapat digunakan.
92 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

PANJANG KUNCI
CITRA
PENGUJIAN 9 25 81 100 200
KARAKTER KARAKTER KARAKTER KARAKTER KARAKTER

Gambar 5.13 Citra tersandikan dengan metode Vigenere cipher (Setyaningsih, 2010)

Keystream Vigenere cipher melakukan pendekatan keystream generator jika kunci semula U
yang merupakan masukan pengguna lebih pendek dari panjang plaintext sehingga ditambahkan
kunci sepanjang plaintext. Penambahan karakter kunci (keystream) ke-i, dengan i > m (panjang
kunci semula U), ditentukan dengan persamaan berikut:
ki = (ki-1+ ki-m) mod 256 (5.9)

Persamaan 5.9 diulangi hingga panjang kunci sama dengan panjang plaintext. Sebagai contoh,
jika plaintext adalah citra dengan intensitas 173 78 70 79 82 77 dan kunci yang digunakan
adalah 173 83 84, kunci yang digunakan untuk proses enkripsi harus ditambahi 3 elemen
kunci agar panjang kunci sama dengan panjang plaintext. Kunci ke-4 sampai dengan kunci ke-6
didapatkan dengan cara berikut:
k4 = (k3 + k1) mod 256 = (84 + 173) mod 256 = 1
k5 = (k4 + k2) mod 256 = (1 + 83) mod 256 = 84
k6 = (k5 + k3) mod 256 = (84 + 84) mod 256 = 168

5.1.3.2 Beaufort Cipher


Pada Beaufort cipher, kunci K adalah urutan karakter-karakter K = k1 … kd di mana ki didapat
dari banyaknya penggeseran pada alfabet ke-i sama seper pada Vigenere cipher.
Formula Beaufort cipher: misalkan m menentukan beberapa nilai integer posi f. Diberikan P
= C = K = (Z26)m. Untuk sebuah kunci K = (k1, k2, …, km), kita definisikan dengan dua persamaan
berikut:
eK(x1, x2, …, xm) = (k1 - x1 , k2 - x2, …, km - xm) (5.10)
KRIPTOGRAFI KLASIK 93
dK(y1, y2, …, ym) = (k1- y1, k2 - y2, …, km - ym) (5.11)

di mana semua operasi ini berbasis pada Z26.


Langkah-langkah enkripsinya adalah sebagai berikut.
1. Ubah kunci dan plaintext ke dalam urutan bilangan integer dengan memperha kan TABEL
5.1.
2. Kurangkan nilai K dengan plaintext dengan mereduksikannya sebagai pengurangan modulo
26. Jika ukuran plaintext lebih panjang daripada kunci, pengurangan dengan K dilakukan
secara periodik. Ar nya, bila K sudah mencapai nilai terakhir, proses akan diulang kembali
pada K untuk nilai dengan urutan pertama.
3. Konversikan kembali urutan bilangan hasil pengurangan K dengan plaintext ke dalam
karakter dengan kembali mengacu pada TABEL 5.1.
Contoh:
Plaintext: ILMU KOMPUTER
Kuncinya menggunakan nilai K = ISTA
Hasil konversi plaintext: 8 11 12 20 10 14 12 15 20 19 4 17
Hasil konversi kunci: 8 18 19 0
Ciphertext:
8 18 19 0 8 18 19 0 8 18 19 0
8 11 12 20 10 14 12 15 20 19 4 17 -
0 7 7 -20 -2 4 7 -15 -12 -1 15 -17
Hasil mod 26: 0 7 7 6 24 4 7 11 14 25 15 9
Ciphertext: AHHGYEHLOZPJ
Langkah-langkah dekripsinya adalah sebagai berikut.
1. Ubah ciphertext dan kunci ke dalam urutan bilangan integer dengan memperha kan TABEL
5.1.
2. Pada masing-masing urutan bilangan yang merupakan ciphertext, kurangkan dengan nilai
K dan reduksikan sebagai penjumlahan modulo 26.
3. Konversikan kembali urutan bilangan ke dalam karakter dengan kembali mengacu pada
TABEL 5.1.
Contoh:
Ciphertext: AHHGYEHLOZPJ
Kuncinya menggunakan nilai K = ISTA
Hasil konversi ciphertext: 0 7 7 6 24 4 7 11 14 25 15 9
Hasil konversi kunci: 8 18 19 0
94 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Plaintext:
8 18 19 0 8 18 19 0 8 18 19 0
0 7 7 6 24 4 7 11 14 25 15 9 -
8 11 12 -6 -16 14 12 -11 -6 7 4 -9
Hasil mod 26: 8 11 12 20 10 14 12 15 20 19 4 17
Plaintext: ILMU KOMPUTER

5.1.4 Cipher Poligram


Proses enkripsi yang dibahas sebelumnya dilakukan dengan menggunakan karakter tunggal
(atau bit) pada plaintext dalam se ap proses. Cipher poligram merupakan salah satu metode
yang digolongkan dalam kriptogafi klasik yang proses enkripsinya menggunakan pemrosesan
dalam bentuk blok-blok yang sangat besar. Metode ini merupakan salah satu cara untuk
mengatasi kelemahan metode kriptografi klasik lainnya yang mudah tertebak karena
terdapat korespondensi satu-satu antara plaintext dengan ciphertext. Contoh metode cipher
poligram adalah Playfair cipher dan Hill cipher. Kedua penyandian tersebut dilakukan dengan
memanfaatkan operasi matriks biasa.

5.1.4.1 Playfair Cipher


Peningkatan keamanan enkripsi dapat dilakukan dengan mengelompokkan beberapa karakter
menjadi sebuah kesatuan (unit) yang kemudian dienkripsi. Konsep itu disebut mul ple-le er
encryp on. Salah satu contohnya adalah Playfair.
Playfair cipher merupakan suatu diagram cipher subs tusi yang ditemukan pada tahun 1854
oleh Charles Wheatstone dan telah digunakan oleh bangsa Inggris (S nson, 1995). Cipher ini
mengenkripsikan pasangan karakter (bigram atau digraf) bukan karakter tunggal seper pada
cipher klasik lainnya. Tujuannya adalah untuk membuat analisis frekuensi menjadi sangat sulit
sebab frekuensi kemunculan karakter-karakter di dalam ciphertext menjadi datar atau flat
(Sasongko, 2005).
Proses enkripsi pada metode Playfair cipher dilakukan dengan cara berikut.
1. Bentuk matriks berukuran 5 x 5 yang berisi karakter alfabet. Karena karakter alfabetnya 26,
salah satu karakter harus dihilangkan. Biasanya dipilih karakter yang dak sering digunakan
dalam suatu kalimat. Sebagai contoh, pada matriks berikut karakter J bukanlah kuncinya.
H A R P S
I C O D B
E F G K L
M N Q T U
V W X Y Z
KRIPTOGRAFI KLASIK 95
2. Proses enkripsi menggunakan se ap pasangan m1m2 dalam plaintext (plaintext dibagi da-
lam blok-blok di mana se ap blok berisi 2 karakter). Jika banyaknya karakter pada plaintext
(panjang plaintext) ganjil, tambahkan suatu karakter tertentu, misalnya karakter X.
a. Jika m1 dan m2 ada di baris yang sama dalam matriks kunci, c1 diambil dari 1 karakter
sebelah kanan m1, sementara c2 diambil dari 1 karakter sebelah kanan m2 pada matriks
kunci.
b. Jika m1 dan m2 ada di kolom yang sama dalam matriks, c1 dan c2 masing-masing diambil
dari 1 karakter di bawah m1 dan m2 pada matriks kunci.
c. Jika m1 dan m2 berbeda baris dan kolom dalam matriks kunci, c1 diambil dari pertemuan
baris m1 dan kolom m2, sementara c2 diambil dari pertemuan baris m2 dan kolom m1
pada matriks kunci.
d. Jika m1 = m2, ciphertext adalah m1, dan karakter tambahan yang sudah ditentukan
adalah m2.
Contoh:
Plaintext: UJIAN AKHIR EMPAT MINGGU LAGI
Proses enkripsi: karakter yang dak digunakan adalah Q.
1. Matriks kunci yang digunakan, misalnya,
P B S A N
G I C D M
L W V U J
K N R X Z
E O F Y T
2. Plaintext dibagi ke dalam blok yang masing-masing berisi 2 karakter:
UJ IA NA KH IR EM PA TM IN GG UL AG IX
3. Kemudian pasangan karakter pada se ap blok digunakan untuk mencari ciphertext dengan
memperha kan matriks kunci dan aturan yang telah ditentukan.
JL DB XB ZP CN TG BH HJ WO GXG JW PD DN
4. Ciphertext: JLDBXBZPCNTGBHHJWOGXGJWPDDN
M-file untuk memanggil fungsi enkripsi dengan metode Playfair cipher disertakan dalam
Lampiran dengan nama playspasi.m. Sintaks pemanggilan pada command window adalah
>> playspasi(x,y)

Variabel x adalah data teks, dan y adalah matriks kunci yang digunakan untuk melakukan
proses enkripsi. Proses enkripsi pada func on playspasi dilakukan dengan cara menghilangkan
spasi pada plaintext. Kemudian, plaintext dipasangkan dua-dua dan dilakukan proses enkripsi
sesuai dengan aturan yang telah dijelaskan di atas.
96 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 5.14 Hasil enkripsi data teks dengan metode Playfair cipher

Lebih lanjut, proses dekripsi pada metode Playfair cipher dilakukan dengan cara berikut.
1. Tentukan matriks kunci dan karakter yang dak digunakan sebagai kunci seper halnya
pada enkripsi.
2. Bagi ciphertext ke dalam beberapa blok di mana se ap blok berisi 2 karakter. Apabila pada
urutan ciphertext ada karakter yang sama dan terletak di antara karakter tertentu, blok
akan berisi 3 karakter.
a. Jika c1 dan c2 ada di baris yang sama dalam matriks kunci, m1 diambil dari 1 karakter
sebelah kiri c1, sementara m2 diambil dari 1 karakter sebelah kiri c2 pada matriks kunci.
b. Jika c1 dan c2 ada di kolom yang sama dalam matriks kunci, m1 dan m2 masing-masing
diambil dari 1 karakter di atas m1 dan m2 pada matriks kunci.
c. Jika c1 dan c2 berbeda baris dan kolom dalam matriks kunci, m1 diambil dari pertemuan
baris c1 dan kolom c2, sementara m2 diambil dari pertemuan baris c2 dan kolom c1 pada
matriks kunci.
d. Jika terdapat 3 karakter pada satu blok, ciphertext didapatkan dengan menghilangkan
karakter di antara c1 dan c2.
Contoh:
Ciphertext: JLDBXBZPCNTGBHHJWOGXGJWPDDN
Proses dekripsi: karakter yang dak digunakan adalah Q.
1. Matriks kunci yang digunakan, misalnya,
P B S A N
G I C D M
L W V U J
K N R X Z
E O F Y T
KRIPTOGRAFI KLASIK 97
2. Ciphertext dibagi ke dalam blok yang masing-masing berisi 2 karakter, dan bila terdapat
karakter yang diapit dengan suatu karakter yang sama, blok berisi 3 karakter.
JL DB XB ZP CN TG BH HJ WO GXG JW PD DN
3. Kemudian pasangan karakter pada se ap blok digunakan untuk mencari plaintext dengan
memperha kan matriks kunci dan aturan yang telah ditentukan.
UJ IA NA KH IR EM PA TM IN GG UL AG IX
4. Plaintext: UJIAN AKHIR EMPAT MINGGU LAGI
M-file untuk memanggil fungsi dekripsi dengan metode Playfair cipher disertakan dalam
Lampiran dengan nama deplayfair.m. Sintaks pemanggilan pada command window adalah
>> deplayfair(x,y)

Variabel x adalah data teks, dan y adalah matriks kunci yang digunakan untuk melakukan
proses dekripsi.

Gambar 5.15 Hasil dekripsi data teks dengan metode Playfair cipher

Metode Playfair cipher juga dapat diimplementasikan untuk menyandikan sebuah citra
mengingat citra dapat direpresentasikan dalam sebuah matriks yang berisi bilangan-bilangan
bulat. Untuk menyandikan citra dengan metode Playfair cipher, langkah-langkah yang dilakukan
adalah sebagai berikut.
1. Pisahkan nilai RGB se ap piksel melalui proses transformasi warna. Pada MATLAB, untuk
memisahkan komponen warna citra digunakan perintah:
>> citra = imread(‘lenna.bmp’);
>> Red =citra(:,:,1);
>> Green = citra(:,:,2) ;
>> Blue = citra(:,:,3);
98 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

2. Masing-masing komponen warna (red, green, dan blue) dibagi menjadi blok plaintext yang
terdiri atas 2 piksel per baris pada se ap komponen warna. Misalnya, untuk komponen red
didapat matriks citra pada baris 1–256 dan kolom 1–256 seper berikut:
139 175 167 159… 145
158 191 186 188 … 130
Komponen red = 156 190 185 185 … 135
… … … … … ...
111 135 128 117 … 185
Maka, blok plaintext ke-1 diambil dari komponen citra pada baris 1 kolom 1 dan 2, yaitu
139 175
Blok plaintext ke-2 diambil dari komponen citra pada baris 1 kolom 3 dan 4, yaitu
167 159
dan seterusnya sampai dengan baris ke-256.
3. Pilih matriks kunci berukuran 16 x 16 yang nilai elemennya bilangan bulat antara 0 sampai
dengan 255 yang dibangkitkan secara acak.
4. Selanjutnya, se ap blok plaintext digan kan dengan nilai piksel pada matriks kunci dengan
aturan berikut.
a. Jika m1 dan m2 ada di baris yang sama dalam matriks kunci, c1 diambil dari 1 piksel
sebelah kanan m1, sementara c2 diambil dari 1 piksel sebelah kanan m2 pada matriks
kunci.
b. Jika m1 dan m2 ada di kolom yang sama dalam matriks, c1 dan c2 masing-masing diambil
dari 1 piksel di bawah m1 dan m2 pada matriks kunci.
c. Jika m1 dan m2 berbeda baris dan kolom dalam matriks kunci, c1 diambil dari pertemuan
baris piksel m1 dan kolom m2, sementara c2 diambil dari pertemuan baris m2 dan kolom
m1 pada matriks kunci.
d. Jika m1 = m2, ciphertext adalah c1 = m1 dan c2 = m2.
Sebagai contoh, blok plaintext yang digunakan adalah blok plaintext ke-1, yaitu 139 dan
175, yang berbeda baris dan kolom seper terlihat pada Gambar 5.15 sehingga ciphertext
menggunakan aturan bu r 4c: plaintext 139 digan kan dengan nilai 241, sedangkan plaintext
175 digan kan dengan nilai 118.
80 213 11 21 183 9 179 132 128 22 139 67 241 137 224 98
217 100 182 114 44 34 232 159 3 28 169 96 199 166 153 230
194 216 163 125 195 59 229 26 152 219 118 5 175 112 25 198
Gambar 5.16 Potongan matriks kunci

Langkah tersebut dilakukan pada semua blok plaintext untuk semua komponen warna.
KRIPTOGRAFI KLASIK 99

CITRA PENGUJIAN KUNCI PLAYFAIR KE-1 KUNCI PLAYFAIR KE-2

Gambar 5.17 Citra tersandikan dengan metode Playfair cipher

Gambar 5.16 mengilustrasikan hasil pengujian pada data citra dengan metode Playfair
cipher. Se ap citra diujikan pada 2 kunci yang berbeda yang dibangun dengan MATLAB. Hasil
enkripsi pada se ap citra secara visual terlihat acak pada masing-masing kunci yang diujikan
(Setyaningsih, 2009). Berdasarkan hasil secara visual, metode Playfair cipher cukup baik
apabila diimplementasikan pada citra.
Meskipun sulit dipecahkan dengan analisis frekuensi karena ukuran kunci matriksnya
cukup besar (membuat kemungkinan matriks kunci tertebak juga cukup besar, yaitu 256!
kemungkinan), Playfair cipher masih mungkin dipecahkan dengan analisis frekuensi pasangan
karakter. Hal itu karena frekuensi kemunculan bigram pada ciphertext akan bersesuaian
dengan frekuensi kemunculannya di plaintext sehingga kriptanalis dapat menerka isi bujur
sangkar dengan mudah, terutama pada implementasi data yang berukuran besar (pada data
berukuran besar frekuensi kemunculan bigram pada ciphertext yang bersesuaian dengan
frekuensi kemunculan di plaintext cukup nggi). Agar lebih jelas, lihat uji sta s k pada TABEL
5.6. Rata-rata nilai entropi (He), yaitu 7,3 dan 7,7, masih cukup jauh dari nilai 8. Berdasarkan
teori yang dikemukakan oleh Jolfae dan Mirghadri (2011), jika sebuah informasi dienkripsi dan
dalam kondisi teracak, nilai entropi yang ideal adalah ≈ 8.
TABEL 5.6 Hasil uji sta s k dengan metode Playfair cipher (Setyaningsih, 2009)

Ukuran Ukuran Hasil Pengukuran


Nama File Waktu Proses (De k)
Piksel File Nilai
He Eq Korelasi Enkripsi Dekripsi
airplane.jpg 480 x 640 59 7,5100 871,737 0,024783 10,02 10,02
Kuda Poni.
480 x 640 34 7,4672 651,753 0,009933 8,81 8,80
jpg
Kamboja.jpg 480 x 640 58 7,9234 765,156 0,017866 11,25 11,28
Matador.jpg 480 x 640 63 7,9223 690,646 0,059214 11,25 11,36
Rata-rata 7,7057 744,8230 0,027949 10,33 10,36
androm.bmp 256 x 256 193 6,9049 251,839 0,171223 1,92 2,01
baboon.bmp 256 x 256 192 7,8312 310,029 0,005299 2,20 2,17
crowded.
256 x 256 193 7,9772 108,680 0,002398 2,20 2,26
bmp
100 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Ukuran Ukuran Hasil Pengukuran


Nama File Waktu Proses (De k)
Piksel File Nilai
jelly beans.
256 x 256 193 6,4918 243,107 0,014130 1,70 1,75
bmp
Rata-rata 7,3013 228,414 0,048263 2,00 2,05
Keterangan:
He histogram equaliza on (nilai entropi)
Eq encryp on quality
Ic image correla on
Selain diukur dari nilai entropinya, kekuatan dari suatu algoritma enkripsi juga diukur
berdasarkan nilai korelasinya (Ic). Pengukuran korelasi ini bermanfaat untuk menghitung
kekuatan hubungan antara dua variabel dengan skala 0 sampai 1. Pada TABEL 5.6 terlihat
bahwa rata-rata nilai korelasi antara plain image dengan cipher image adalah 0,03 dan 0,05
(Setyaningsih, 2009). Karena rata-rata nilai korelasinya mendeka nol, keterhubungan antara
plain image dan cipher image dak ada. Dengan kata lain, sistem enkripsi tersebut sesuai
dengan teori perfect secrecy yang dikemukakan oleh Shannon, yaitu semakin rendah korelasi,
semakin aman algoritmanya (Shannon, 1949).

5.1.4.2 Hill Cipher


Hill cipher merupakan penerapan aritme ka modulo pada kriptografi. Teknik kriptografi ini
menggunakan sebuah matriks persegi sebagai kunci untuk melakukan enkripsi dan dekripsi. Hill
cipher diciptakan oleh Lester S. Hill pada tahun 1929. Teknik kriptografi ini diciptakan dengan
maksud membuat cipher yang dak dapat dipecahkan dengan teknik analisis frekuensi.
Berbeda dengan Caesar cipher, Hill cipher dak menggan se ap karakter yang sama pada
plaintext dengan karakter lainnya yang sama pada ciphertext karena cipher ini menggunakan
perkalian matriks pada enkripsi dan dekripsinya. Hill cipher termasuk algoritma kriptografi
klasik yang sangat sulit dipecahkan oleh kriptanalis apabila mereka hanya mengetahui berkas
ciphertext saja atau jika matriks kuncinya menghasilkan nilai invers determinan bernilai besar
(Setyaningsih, 2009). Namun, itu dak berar bahwa teknik ini tanpa cela. Hill cipher dapat
dipecahkan dengan cukup mudah apabila kriptanalis memiliki berkas ciphertext dan potongan
berkas plaintext. Teknik kriptanalisisnya disebut known-plaintext a ack. Selain itu, dak
semua matriks kunci dapat digunakan untuk proses enkripsi ataupun dekripsi. Matriks yang
dapat digunakan untuk kunci hanya matriks yang nilai determinan kuncinya bernilai ganjil
sehingga sangat menguntungkan kriptanalis karena mengurangi kemungkinan kunci yang
dapat digunakan dan mengurangi waktu untuk proses perkiraan kunci yang dipakai untuk
metode ini (Setyaningsih, 2009).
Kunci pada Hill cipher adalah matriks K dengan ukuran d x d, di mana d adalah ukuran blok.
Matriks K yang menjadi kunci harus merupakan matriks yang inver ble, yaitu memiliki
KRIPTOGRAFI KLASIK 101
mul plica ve inverse K-1 sehingga K . K-1 = 1. Kunci yang digunakan harus mempunyai invers
karena kunci invers tersebut akan dipakai untuk melakukan dekripsi (S nson, 2006).
Jika m adalah bilangan bulat posi f, P dan C didefinisikan sebagai P = C = (Z26)m. Ide metode ini
adalah menempatkan m dengan kombinasi linier pada m karakter alfabet di posisi dalam suatu
elemen plaintext sehingga menghasilkan m karakter alfabet di posisi dalam suatu elemen
ciphertext (S nson, 2006).
Proses enkripsi dilakukan dengan cara berikut.
1. Tentukan matriks kunci yang berukuran d x d (dengan syarat bahwa matriks tersebut
berinvers).
2. Bagilah plaintext ke dalam blok-blok di mana se ap blok berisi d karakter (d bernilai sama
dengan ukuran matriks kunci). Jika banyaknya karakter pada plaintext (panjang plaintext)
dak sesuai dengan panjang se ap blok, tambahkan karakter sejumlah kekurangannya
pada se ap blok tertentu dengan karakter X, misalnya.
3. Kalikan matriks kunci dengan masing-masing blok plaintext.
C = Ek(M) = K M mod n

⎡c1 ⎤ ⎡ m1 ⎤
⎢c 2 ⎥ ⎢ ⎥
⎢ ⎥ = ⎢ m2 ⎥ mod n
⎢M ⎥ K dxd ⎢ M ⎥
⎢ ⎥ ⎢ ⎥
⎣ cd ⎦ ⎣ md ⎦ (5.12)
Keterangan:
K matriks kunci
n ukuran karakter, dalam hal ini adalah 26.
Contoh:
Plaintext: PULANG SEGERA YAA
Proses enkripsi menggunakan matriks ukuran 2 x 2.
⎡3 2 ⎤
Misalkan matriks kunci yang digunakan adalah ⎢ ⎥.
⎣3 5⎦
1. Plaintext dibagi ke dalam blok yang masing-masing berisi 2 karakter.
PU LA NG SE GE RA YA AX
2. Kemudian se ap pasangan karakter pada se ap blok digunakan untuk mencari ciphertext
dengan mengalikannya dengan matriks kunci. Sebagai contoh, untuk blok yang berisi
karakter PU:
Berdasarkan TABEL 5.1, PU = 15 20
⎡3 2 ⎤ ⎡15 ⎤ ⎡ 85 ⎤ ⎡7⎤
C= ⎢ ⎥ ⎢ ⎥ mod 26 = ⎢ ⎥ mod 26 = ⎢ ⎥
⎣3 5⎦ ⎣20 ⎦ ⎣145⎦ ⎣15⎦
⎡H ⎤
=⎢ ⎥
⎣P ⎦
102 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Setelah proses di atas dilakukan untuk se ap blok, blok-blok ciphertext akan berisi karakter-
karakter berikut.
HP HH ZR KW AM ZZ UU UL
3. Ciphertext: HPHHZRKWAMZZUUUL
M-file untuk memanggil fungsi enkripsi dengan metode Hill cipher disertakan dalam
Lampiran dengan nama hillspasi.m. Sintaks pemanggilan pada command window adalah
>> hillspasi(x,k)

Variabel x adalah kata atau kalimat yang akan dienkripsi, dan k adalah matriks kunci yang
harus berukuran bujur sangkar. Apabila matriks yang digunakan sebagai kunci dak berbentuk
matriks bujur sangkar, tulisan “MATRIK KUNCI HARUS MATRIK BUJUR SANGKAR” akan muncul.
Ciphertext yang akan ditampilkan ada dua. Pertama, ciphertext yang memperha kan tampilan
spasi dan karakter tambahan X. Jika teks pada plaintext bukan merupakan kelipatan dari
dimensi matriks kunci, hasil enkripsinya akan ditampilkan. Sementara untuk ciphertext yang
kedua, meskipun memperha kan tampilan spasi, enkripsi karakter tambahan pada plaintext
dak ditampilkan.

Gambar 5.18 Hasil enkripsi data teks dengan metode Hill cipher

Lebih lanjut, langkah-langkah dekripsi data teks yang telah disandikan dengan metode Hill
cipher dilakukan dengan cara berikut.
1. Tentukan matriks kunci yang berukuran d x d (dengan syarat bahwa matriks tersebut
berinvers).
2. Bagilah ciphertext ke dalam blok-blok di mana se ap blok berisi d karakter (d bernilai sama
dengan ukuran matriks kunci).
3. Kalikan invers matriks kunci dengan masing-masing blok ciphertext.
KRIPTOGRAFI KLASIK 103
P = Dk(M) = K-1 C mod n (5.13)
K-1 adalah invers matriks kunci dan n adalah ukuran karakter (26).
Contoh:
Ciphertext: HPHHZRKWAMZZUUUL
Proses dekripsi menggunakan matriks ukuran 2 x 2.
⎡3 2 ⎤
Misalkan matriks kunci yang digunakan adalah ⎢ ⎥ , invers matriks kunci mod 26-nya
⎣3 5⎦
⎡15 20 ⎤
adalah ⎢ ⎥.
⎣17 9 ⎦
1. Ciphertext dibagi ke dalam blok yang masing-masing berisi 2 karakter sehingga menjadi
seper berikut:
HP HH ZR KW AM ZZ UU UL
2. Kemudian kalikan se ap pasangan karakter pada blok dengan invers matriks kunci untuk
mencari plaintext.
Contoh: untuk blok yang berisi karakter HP.
Berdasarkan TABEL 5.1, HP = 7 15.
⎡15 20 ⎤ ⎡ 7 ⎤ ⎡ 405⎤ ⎡15 ⎤ ⎡ P ⎤
P= ⎢ ⎥ ⎢ ⎥ mod 26 = ⎢254 ⎥ mod 26 = ⎢20 ⎥ = ⎢U ⎥
⎣17 9 ⎦ ⎣15⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦
Setelah proses di atas dilakukan untuk se ap blok, blok-blok Plaintext akan berisi karakter
berikut:
PU LA NG SE GE RA YA AX
3. Plaintext: PULANG SEGERA YAA
M-file untuk memanggil fungsi dekripsi dengan metode Hill cipher disertakan dalam Lampiran
dengan nama dehill.m. Sintaks pemanggilan pada command window adalah
>> dehill(x,k)

Variabel x adalah kata atau kalimat yang akan didekripsi, dan k adalah matriks kunci yang harus
berukuran bujur sangkar.
104 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 5.19 Hasil dekripsi data teks dengan metode Hill cipher

Metode Hill cipher juga dapat diimplementasikan untuk menyandikan sebuah citra karena citra
dapat direpresentasikan dalam matriks yang berisi bilangan-bilangan bulat. Langkah-langkah
penyandian citra dengan metode Hill cipher adalah sebagai berikut.
1. Pisahkan nilai RGB se ap piksel melalui proses transformasi warna. Pada aplikasi MATLAB,
pemisahan komponen warna citra dilakukan seper pada metode Playfair cipher.
2. Bagilah masing-masing komponen warna (red, green, dan blue) ke dalam blok plaintext
yang terdiri atas 2 x 256 piksel. Contohnya, untuk komponen red didapat matriks citra pada
baris ke-1–256 dan kolom ke-1–256 seper berikut:
139 175 167 159 … 145
158 191 186 188 … 130
Komponen red = 156 190 185 185 … 135
153 192 187 187 … 132
… … … … … ...
111 135 128 117 .. 185
Maka, blok plaintext ke-1 diambil dari komponen citra pada baris ke-1 dan 2, yaitu
139 175 167 159 … 145
158 191 186 188 … 130
Blok plaintext ke-2 diambil dari komponen citra pada baris ke-3 dan 4, yaitu
156 190 185 185 … 135
153 192 187 187 … 132
dan seterusnya sampai dengan baris ke-256.
3. Kalikan se ap blok plaintext dengan kunci yang berordo 2 x 2 dengan konsep perkalian
modulo 256. Namun sebelumnya, cek kunci yang dipilih apakah matriks mempunyai invers
atau dak. Caranya, cari nilai pembagi terbesar antara determinan nilai kunci dengan
intensitas piksel. Apabila PBB(det(kunci),256) = 1, matriks dapat digunakan sebagai kunci.
KRIPTOGRAFI KLASIK 105
Misalnya, kunci K1 mempunyai invers, maka untuk melakukan enkripsi, kalikan dengan
plaintext ke-1 sehingga didapatkan hasil sebagai berikut:
139 175 167 159 … 145
Blok cipher ke-1 = (mod 256)
158 191 186 188 … 130
107 229 159 131 … 225
=
240 155 124 114 … 168
Langkah tersebut dilakukan pada semua blok plaintext untuk semua komponen warna.
Kembalikan vektor hasil enkripsi sebagai nilai RGB dengan transformasi warna balik sehingga
menghasilkan citra baru yang sudah tersandikan. Gambar 5.19 menunjukkan hasil enkripsi
citra yang diimplementasikan pada MATLAB dengan metode Hill cipher menggunakan 3
⎡5 6 ⎤ ⎡1 2⎤ ⎡19 5 ⎤
kunci berbentuk matriks ukuran 2 x 2, yaitu K1 = ⎢ ⎥ . ;2 = ⎢3 1 ⎥ ;3 = ⎢12 23⎥ . .
⎣2 3 ⎦ ⎣ ⎦. ⎣ ⎦
CITRA PENGUJIAN KUNCI K1 KUNCI K2 KUNCI K3

Gambar 5.20 Citra tersandikan dengan metode Hill cipher (Setyaningsih, 2009)
⎡19 5 ⎤
Pada Gambar 5.19 terlihat bahwa hasil enkripsi citra dengan kunci K3, yaitu ⎢ ⎥ . Lebih
⎣12 23⎦
baik daripada hasil enkripsi dengan kunci K1 dan K2. Invers determinan kunci K3 memiliki nilai
terbesar, yaitu 201 (K1 = 171 dan K2 = 51). Nilai tersebut menunjukkan bahwa besarnya nilai
invers determinan dari kunci menyebabkan keteracakan warna dan perubahan intensitas
warna yang cukup signifikan sehingga hasil enkripsi pada citra semakin baik (Setyaningsih,
2009).
Langkah-langkah untuk mendekripsi citra dengan Hill cipher adalah sebagai berikut.
1. Pisahkan komponen warna RGB dari citra yang telah tersandikan melalui proses transformasi
warna seper pada proses enkripsi.
2. Bagilah masing-masing komponen warna (red, green, dan blue) menjadi blok ciphertext
yang terdiri atas 2 x 256 piksel, seper pada proses enkripsi.
106 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

⎡5 6 ⎤ -1
Cari invers dari matriks kunci, misalkan matriks kunci K1 = ⎢ ⎥ . ,angkah untuk mencari K1
⎣ 2 3 ⎦
adalah sebagai berikut.
a. Cari nilai determinan modulo 256 dari matriks kunci. Untuk kunci K1, nilai determinan
modulo 256 adalah Det(K1) = 3.
b. Cek nilai pembagi bersama terbesar antara det(K1) dengan intensitas piksel, yaitu 256.
Karena PPB(det(K1),256) = 1, kunci mempunyai invers.
c. Maka, K1-1 = adj(K1)/det(K1).

⎡ 3 −6 ⎤
K 1 −1 = 3−1 × ⎢ ⎥ (mod 256)
⎣ −2 5 ⎦
⎡ 3 −6 ⎤
K 1 −1 = 171 × ⎢ ⎥ (mod 256)
⎣ −2 5 ⎦
⎡ 513 −1026 ⎤
K 1 −1 = ⎢ ⎥ (mod 256)
⎣ −342 855 ⎦
⎡ 1 254 ⎤
K 1 −1 = ⎢ ⎥
⎣170 87 ⎦
3. Kalikan se ap blok ciphertext dengan invers kunci dengan konsep perkalian modulo 256.
Misalkan kunci K1-1 digunakan untuk mendekripsi ciphertext blok ke-1, akan didapatkan
hasil berikut:
⎡ 1 254 ⎤ ⎡107 229 159 131 K 225⎤
Blok plaintext ke-1 =⎢ ⎥×⎢ ⎥ (mod 256)
⎣170 87 ⎦ ⎣240 155 124 114 K 168 ⎦
⎡139 175 167 159 K 145 ⎤
=⎢ ⎥
⎣158 191 186 188 K 130 ⎦
4. Lakukan langkah tersebut pada semua blok ciphertext untuk semua komponen warna.
5. Kembalikan vektor hasil dekripsi sebagai nilai RGB dengan transformasi warna balik
sehingga menghasilkan citra yang sama dengan citra aslinya.

5.2 Cipher Transposisi


Cipher transposisi adalah metode penyusunan kembali karakter dengan menyesuaikan
beberapa skema yang sering kali digunakan pada penggambaran beberapa geometri. Ciphertext
diperoleh dengan pengubahan posisi. Dengan kata lain, algoritma ini mentransposisi rangkaian
karakter di dalam teks. Nama lain untuk metode ini adalah permutasi karena transposisi
se ap karakter di dalam teks sama dengan mempermutasikan karakter-karakter tersebut
dengan menggunakan kunci penggambaran tambahan dan metode untuk menuliskan serta
meletakkannya ke dalam urutan tertentu dengan cara zig-zag per baris.
KRIPTOGRAFI KLASIK 107
Algoritma kriptografi klasik jenis transposisi mempunyai banyak cara/aturan dalam pengubahan
susunan karakternya, antara lain transposisi grup, transposisi serial, dan transposisi kolom/
baris.
1. Transposisi grup
Pada metode ini plaintext dibagi ke dalam blok-blok/grup yang ukurannya sama. Kemudian,
pada se ap blok pesan diaplikasikan suatu susunan karakter yang telah didefinisikan.
2. Transposisi serial
Metode ini mengelompokkan seluruh karakter plaintext ke dalam beberapa grup dengan
aturan tertentu, kemudian ciphertext disusun dengan menyatukan grup-grup tersebut
secara berurutan (serial).
3. Transposisi kolom/baris
Dasar metode ini adalah menuliskan plaintext dalam beberapa baris, kemudian ciphertext
diperoleh dengan cara membacanya kolom per kolom (karakter).

5.2.1 Metode Zig-Zag


Enkripsi pada metode zig-zag dilakukan dengan langkah-langkah berikut.
1. Letakkan se ap urutan karakter dari plaintext ke dalam matriks per kolom secara zig-zag
sebanyak baris yang disesuaikan dengan besarnya nilai kunci.
2. Cipher didapatkan dengan membaca karakter per baris dari matriks yang terbentuk atau
dengan formula berikut:
Baris = 1 EK(x) diambil urutan plaintext pada posisi ke-1 yang dilanjutkan dengan
mengambil posisi plaintext dengan jeda c dan jeda (K*2-d) secara bergan an
selama nilai jeda ≤ ukuran plaintext dan diketahui K = banyak baris sebagai kunci,
nilai d = 2, dan nilai c = 0.
Baris = 2 EK(x) diambil urutan plaintext pada posisi ke-2 yang dilanjutkan dengan
mengambil posisi plaintext dengan jeda c dan jeda (K*2-d) secara bergan an
selama nilai jeda ≤ ukuran plaintext, dengan nilai d dan c ditambah 2.
Baris = K analog dengan proses baris ke-2.
Cipher didapat dengan menampilkan EK(x).
Contoh:
Digunakan baris = 3
Plaintext: F A K U L T A S S A I N S T E R A P A N
Enkripsi:
I=1 F 2*3-2=4 L 4 S 4 S 4 A
I=2 A 4-2 U 2 T S A N T R P N
I=3 K 2+2=4 A I E A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
108 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Ciphertext: F L S S A A U T S A N T R P N K A I E A
Pada metode ini pesan yang akan dikirimkan ditulis per baris sebanyak baris yang ditentukan
(sesuai dengan nilai n-nya). Sebelumnya karakter disusun dalam posisi baris dan kolom dengan
urutan berikut.
1. Baris ke-1, menyusun karakter dengan urutan menggunakan jeda ke-1 = 2*n baris – 2 dan
jeda 2 = 0.
2. Baris ke-2, menyusun karakter dengan urutan menggunakan jeda ke-1 sebelumnya yang
dikurangi 2 dan nilai jeda ke-2 sebelumnya yang ditambah 2.
3. Demikian seterusnya sampai baris ke-n.
M-file untuk memanggil fungsi enkripsi dengan metode zig-zag disertakan dalam Lampiran
dengan nama enkripsi.m. Sintaksnya adalah
>> c = enkripsi(x,baris)

Variabel x adalah kata atau kalimat yang akan dienkripsi, dan baris adalah jumlah baris yang
digunakan sebagai kunci.

Gambar 5.21 Hasil enkripsi data teks dengan metode zig-zag

Sementara dekripsi pada metode ini bisa dilakukan dengan langkah-langkah berikut.
1. Jeda1 untuk baris ke-1 adalah c dan jeda2 = (2*K-d), di mana kunci banyaknya baris c = 0
dan d = 2.
2. Untuk baris pertama, I = 1, sehingga posisi untuk urutan cipher ke-I berada di urutan ke-I
ditambah jeda1 pada plaintext. Kemudian urutan cipher ke-I+1 ditambah jeda2 menjadi
posisi pada plaintext. Demikian seterusnya dilakukan penambahan jeda secara bergan an
selama posisi yang dihasilkan ≤ ukuran ciphertext.
3. Untuk mencari posisi pada baris berikutnya, jeda1 ditambah 2, dan jeda2 dikurangi 2.
Langkah yang digunakan analog dengan langkah 2.
M-file untuk memanggil fungsi dekripsi dengan metode zig-zag disertakan dalam Lampiran
dengan nama dekrip.m. Sintaksnya:
>> c = dekrip(x,baris)
KRIPTOGRAFI KLASIK 109

Variabel x adalah kata atau kalimat yang akan didekripsi, dan baris adalah jumlah baris yang
digunakan sebagai kunci.

Gambar 5.22 Hasil dekripsi data teks dengan metode zig-zag

5.2.2 Columnar Transposi on Cipher


Teknik columnar transposi on cipher menggunakan generalisasi untuk array n-dimensi.
Langkah-langkah berikut digunakan untuk melakukan enkripsi.
1. Bagilah plaintext ke dalam beberapa blok di mana masing-masing blok terdiri atas n
karakter. N ini menyatakan banyaknya kolom yang digunakan sebagai kunci (spasi dianggap
sebagai karakter sehingga ikut dihitung).
2. Masing-masing blok diletakkan sebagai baris dalam matriks sehingga akan terbentuk
matriks dengan ukuran banyak blok x n.
3. Ciphertext didapatkan dengan membaca per kolom matriks yang terbentuk dari langkah 2
dengan urutan yang telah ditentukan sebagai kunci.
Sebagai ilustrasi, misalkan permutasi yang digunakan a1 a2 a3 … an. Maka, plaintext dibagi
menjadi n kolom.

kolom 1 kolom 2 kolom 3 ... kolom n


Kemudian, ubah kolom menjadi baris.
Kolom 1 a1 a2 a3 ... an
Kolom 2
Kolom 3

Kolom n
110 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Contoh:
Plaintext: EMYSETYANINGSIH
Proses enkripsi menggunakan 6 kolom dengan urutan 6-5-2-4-1-3.
1. Bagilah banyaknya karakter dengan banyaknya kolom sehingga didapatkan banyaknya baris
yang paling dekat dengan hasil pembagian yang dibulatkan ke atas.
Baris = banyak karakter dalam plaintext : 6
= 15 : 6 = 3 baris
2. Isikan plaintext ke dalam matriks dengan ukuran kolom yang digunakan sebagai kunci
(dalam contoh ini, 6), sebanyak baris yang telah dihitung pada langkah 1, yaitu 3, sehingga
matriks berukuran 3 x 6.
3. Matriksnya tampak seper berikut:
E M Y S E T
Y A N I N G
S I H
Kolom 1 2 3 4 5 6
4. Ciphertext dihasilkan dengan membaca karakter per kolom sesuai dengan urutan yang
menjadi kunci, yaitu 6-5-2-4-1-3.
5. Ciphertext: TG EN MAISI EYSYNH
M-file untuk memanggil fungsi enkripsi dengan metode transposisi disertakan dalam Lampiran
dengan nama enkripsi.m. Sintaksnya adalah
>> c = enkripsi(x,permutasi)

Variabel x adalah kata atau kalimat yang akan dienkripsi, dan permutasi adalah matriks kunci
urutan kolom.

Gambar 5.23 Hasil enkripsi data teks dengan metode transposisi

Selanjutnya kita akan membahas langkah-langkah untuk melakukan dekripsi.


1. Bagi ciphertext ke dalam n blok di mana n menyatakan banyaknya kolom yang digunakan
sebagai kunci (spasi diangap sebagai karakter sehingga ikut dihitung).
KRIPTOGRAFI KLASIK 111
2. Letakkan masing-masing blok yang terdiri atas m karakter sebagai kolom dalam matriks
sehingga akan terbentuk matriks dengan ukuran banyak karakter se ap blok (m) x n.
3. Dapatkan ciphertext dengan membaca per baris matriks yang terbentuk dari langkah ke-2
dengan urutan kolom yang disesuaikan agar dapat terbentuk suatu pesan yang dapat
dimenger ar nya (dengan trial and error untuk urutan kolomnya).
Contoh:
Ciphertext: KSNR_FTATALS_P_AAIENU_SA_
Digunakan kolom (K) = 5
Proses dekripsi:
1. Masing-masing blok terdiri atas 25/5 = 5 karakter.
2. Masing-masing blok dituliskan sebagai kolom sehingga terbentuk matriks berikut:
K F L A U
S T S A _
N A _ I S
R T P E A
_ A _ N _
1 2 3 4 5
3. Kemungkinan urutan kolomnya adalah sebagai berikut.
a. Karena hanya kolom 2 dan 4 yang baris terakhirnya terisi, kemungkinan kolom 2 dan 4
akan berada pada posisi ke-1 atau 2.
b. Dengan melihat kemungkinan posisi pada baris berikutnya, dapat disimpulkan bahwa
urutan pembacaannya adalah 3 1 5 2 4.
4. Plaintext: FAKULTAS_SAINS_TERAPAN
M-file untuk memanggil fungsi dekripsi dengan metode transposisi disertakan dalam Lampiran
dengan nama dekrip.m. Sintaksnya adalah
>> c = dekrip(x,permutasi)

Variabel x adalah kata atau kalimat yang akan didekripsi, dan permutasi adalah matriks kunci
urutan kolom.

Gambar 5.24 Hasil dekripsi data teks dengan metode transposisi


112 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

5.3 Super Enkripsi


Super enkripsi merupakan salah satu kriptografi berbasis karakter yang menggabungkan cipher
subs tusi dan cipher transposisi untuk mendapatkan cipher yang lebih kuat ( dak mudah
dipecahkan). Enkripsi dan dekripsi dapat dilakukan dengan urutan cipher subs tusi, kemudian
cipher transposisi, atau sebaliknya.
Konsep super enkripsi dapat diperluas penggunaannya dari teks ke citra warna. Ini dimungkinkan
mengingat sebuah citra merupakan deretan piksel-piksel yang terdiri atas komponen red (R),
green (G), dan blue (B) yang merupakan bilangan-bilangan bulat sehingga dapat dioperasikan
dalam sebuah matriks.

5.3.1 Super Enkripsi dengan Metode Hill Cipher


dan Playfair Cipher
Di bagian ini, sebagai contoh penggunaan metode super enkripsi, kita gabungkan metode Hill
cipher dengan Playfair cipher. Proses enkripsi dilakukan dengan cara meng-input-kan kunci
yang akan digunakan untuk enkripsi dengan metode Hill cipher dan Playfair cipher. Langkah
kedua adalah proses enkripsi dengan Hill cipher. Ciphertext hasil enkripsi Hill cipher selanjutnya
menjadi plaintext untuk proses enkripsi dengan metode Playfair cipher seper diperlihatkan
pada Gambar 5.25.

Gambar 5.25 Algoritma enkripsi dengan metode Hill cipher


dan Playfair cipher (Setyaningsih, 2010)

Hill cipher merupakan salah satu metode kriptografi klasik yang lemah jika diserang dengan
known-plaintext a ack. Metode ini dapat dengan mudah dipecahkan oleh seorang kriptanalis
KRIPTOGRAFI KLASIK 113
apabila ia memiliki berkas ciphertext dan potongan berkas plaintext. Sementara Playfair
cipher merupakan metode yang lemah karena frekuensi kemunculan bigram pada ciphertext
akan bersesuaian dengan frekuensi kemunculannya di plaintext sehingga kriptanalis dapat
menerka isi bujur sangkar dengan mudah, terutama pada implementasi citra yang berukuran
besar. Mengacu pada metode super enkripsi, dilakukan pengujian enkripsi dengan Hill cipher,
kemudian dengan Playfair cipher untuk mendapatkan cipher yang lebih kuat. Skema enkripsi
citra dengan kombinasi metode Hill cipher dan Playfair cipher dengan GUI pada MATLAB dapat
dilihat pada Gambar 5.26.

Gambar 5.26 Skema proses enkripsi citra dengan metode super enkripsi
(Setyaningsih, 2010)

Penggunaan metode super enkripsi menunjukkan keteracakan warna dan perubahan intensitas
warna yang cukup signifikan sehingga hasil enkripsi pada citranya semakin baik (Gambar 5.26).
Pada metode ini, kriptanalis juga akan membutuhkan waktu yang lebih lama karena harus
mencari 2 kunci yang digunakan untuk menyandikan citra tersebut.
Algoritma dekripsinya dilakukan dengan langkah yang hampir sama dengan proses enkripsi
di mana penerima harus meng-input-kan kunci untuk melakukan dekripsi dengan Hill cipher
dan kunci untuk dekripsi citra dengan Playfair cipher. Langkah berikutnya adalah melakukan
dekripsi terhadap ciphertext dengan metode Playfair cipher sehingga menghasilkan plaintext.
Langkah terakhir adalah melakukan dekripsi dengan Hill cipher terhadap plaintext hasil dekripsi
menggunakan metode Playfair cipher. Algoritma dekripsi dari super enkripsi dapat dilihat pada
Gambar 5.27.
114 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 5.27 Algoritma dekripsi dengan metode Hill cipher


dan Playfair cipher (Setyaningsih, 2010)

5.3.2 Super Enkripsi dengan Metode Vigenere Cipher


dan Playfair Cipher
Pengembangan metode super enkripsi yang lain adalah penggabungan antara metode
Vigenere cipher dan Playfair cipher dengan proses enkripsi dan dekripsi yang dilakukan
satu kali untuk masing-masing cipher (Setyaningsih, 2012). Skema proses enkripsi yang
diusulkan dapat dilihat pada Gambar 5.28. Dalam metode ini, kunci yang dirahasiakan dan
telah disetujui oleh pengirim dan penerima pesan adalah kunci yang digunakan untuk proses
enkripsi dengan Playfair cipher seper dijelaskan pada algoritma Playfair cipher. Sementara
kunci yang digunakan untuk proses enkripsi dengan Vigenere cipher dibangkitkan dari kunci
Playfair sepanjang n kunci yang selanjutnya kunci n+1 sampai dengan m x n kunci dengan
menggunakan metode keystream generator pada Persamaan 5.9.

Gambar 5.28 Skema proses enkripsi dengan metode super enkripsi (Setyaningsih, 2012)
KRIPTOGRAFI KLASIK 115
Langkah-langkah enkripsi citranya adalah sebagai berikut.
1. Pilih kunci Playfair cipher yang telah disetujui oleh pengirim dan penerima pesan.
2. Bangkitkan kunci Vigenere cipher. Caranya:
a. Ambil nilai elemen matriks kunci Playfair cipher pada posisi (1,1), misalnya bernilai 82.
b. Kunci Playfair cipher sepanjang 82 elemen diambil dari elemen kunci Playfair cipher dari
posisi (1,1) sampai dengan posisi (5,2). Nilai kunci pada posisi 83 sampai dengan ke-n
(n = jumlah baris * jumlah kolom dari matriks citra yang akan dienkripsi) dibangkitkan
dengan metode keystream generator pada Persamaan 5.9.
3. Ambil citra yang akan dienkripsi.
4. Lakukan transformasi warna untuk memisahkan warna RGB (untuk citra berwarna)
sehingga menjadi 3 buah matriks (Gambar 5.28). Untuk citra grayscale dak perlu dilakukan
transformasi warna.
5. Gunakan kunci Vigenere cipher untuk masing-masing matriks komponen warna.
6. Gunakan algoritma Playfair cipher (kunci Playfair cipher) untuk melakukan enkripsi pada
hasil enkripsi dengan kunci Vigenere cipher.
7. Kembalikan vektor hasil enkripsi sebagai nilai RGB dengan transformasi warna balik
sehingga menghasilkan citra baru yang sudah tersandikan seper terlihat pada Gambar
5.29.

Gambar 5.29 Tampilan proses hasil enkripsi citra


dengan metode super enkripsi (Setyaningsih, 2012)

Dari Gambar 5.29 terlihat bahwa citra asli dak dapat terlihat setelah dilakukan proses enkripsi.
Hasil penyandian citra menunjukkan keteracakan warna dan perubahan intensitas warna yang
cukup signifikan. Dengan kata lain, proses enkripsinya berhasil. Berdasarkan analisis histogram
warna yang digunakan untuk melihat kesesuaian distribusi warna antara plain image dengan
cipher image didapatkan hasil seper terlihat pada Gambar 5.30.
116 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Citra Kontras Rendah Citra Kontras Tinggi

Ukuran 256 x 256 piksel Ukuran 480 x 640 piksel Ukuran 256 x 256 piksel Ukuran 480 x 640 piksel

Gambar 5.30 Histogram citra hasil enkripsi berdasarkan perbedaan kontras


(Setyaningsih, 2012)

Berdasarkan pengamatan secara visual pada histogram plain image dengan histogram
cipher image pada Gambar 5.30 diketahui bahwa histogram cipher image memiliki distribusi
keragaman dan perbedaan yang signifikan dengan histogram plain image. Hasil uji visual pada
histogram cipher image juga memperlihatkan meratanya frekuensi kemunculan masing-masing
nilai intensitas citra. Ar nya, algoritma enkripsi yang digunakan dak dapat memberikan
petunjuk apa-apa yang bisa dipakai kriptanalis untuk melancarkan sta s cal a ack.
TABEL 5.7 Hasil uji sta s k dengan metode super enkripsi (Setyaningsih, 2012)

Ukuran Waktu Proses


Ukuran Hasil Pengukuran Nilai
Nama File File (DeƟk)
Piksel (KB) He Eq Ic Enkripsi Dekripsi
airplane.jpg 480 x 640 59 7.9994 1294.87 -0.000091 486.08 485.60
Kuda Poni.jpg 480 x 640 34 7.9995 1275.26 0.000219 459.19 473.03
Kamboja.jpg 480 x 640 58 7.9994 827.429 -0.000319 461.49 474.34
Matador.jpg 480 x 640 63 7.9994 802.156 0.000232 462.18 475.23
Rata-rata 7.9994 1049.9288 0.000010 467.24 477.05
androm.bmp 256 x 256 193 7.9975 292.422 0.002759 4.17 6.68
baboon.bmp 256 x 256 192 7.9973 308.966 -0.000119 4.18 6.88
crowded.bmp 256 x 256 193 7.9973 103.984 -0.000671 4.27 6.49
jelly.bmp 256 x 256 193 7.9976 341.294 0.000021 4.18 6.89
Rata-rata 7.9974 261.667 0.000497 4.20 6.73
Rata-rata seluruh citra 7.9984 655.7976 0.000254
Keterangan:
He histogram equaliza on (nilai entropi)
Eq encryp on quality
Ic image correla on
Dari hasil uji sta s k pada TABEL 5.7 terlihat bahwa untuk 2 kelompok citra yang diujikan
rata-rata nilai entropinya (He) 7,9984. Berdasarkan teori yang dikemukakan oleh Jolfae dan
Mirghadri (2011), algoritma enkripsi yang dirancang ini aman dari serangan entropi atau
KRIPTOGRAFI KLASIK 117
sulit ditebak oleh kriptanalis karena nilainya sangat dekat dengan 8. Selain itu, kekuatan dari
algoritma super enkripsi ini dapat diukur berdasarkan nilai korelasinya (Ic), di mana rata-
rata nilai korelasi antara plain image dengan cipher image-nya 0,000254. Karena rata-rata
nilai korelasinya mendeka nol, keterhubungan antara plain image dan cipher image dak
ada. Ar nya, sistem enkripsi ini sesuai dengan teori perfect secrecy yang dikemukakan oleh
Shannon, yaitu semakin rendah korelasi antarpiksel dan semakin nggi entropinya, semakin
aman sistem enkripsinya (Jolfae dan Mirghadri, 2011).
Sementara langkah-langkah dekripsi citranya adalah sebagai berikut.
1. Tentukan citra yang akan didekripsi.
2. Pilih kunci yang akan digunakan untuk dekripsi citra dengan metode Playfair cipher.
Selanjutnya, bangkitkan kunci untuk dekripsi citra dengan metode Vigenere cipher
menggunakan cara yang sama pada proses enkripsi.
3. Transformasi warna sehingga komponen warna RGB dari citra yang telah tersandikan
terpisahkan seper pada proses enkripsi.
4. Pada proses dekripsi, gunakan metode Playfair cipher dengan langkah yang sama seper
langkah pada proses enkripsi untuk se ap matriks warna.
5. Selanjutnya, se ap komponen warna ciphertext hasil dekripsi dengan metode Playfair
cipher didekripsi menggunakan metode Vigenere cipher dengan cara ciphertext dikurangi
kunci Vigenere cipher menggunakan konsep pengurangan modulo 256 untuk semua
matriks warna.
6. Kembalikan vektor hasil dekripsi sebagai nilai RGB dengan transformasi warna balik
sehingga menghasilkan citra yang sama dengan citra aslinya.

Gambar 5.31 Skema proses dekripsi (Setyaningsih, 2012)


118 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

5.4 Evaluasi
1. Pesan berikut dienkripsi dengan metode Caesar cipher:
TETEBN KVKWLO BUKDKV EBECNK VKWLOB XSKDKN KVKRLE KRNKBS UOSURV KCKX
Pecahkan kode pesan tersebut dan tuliskan dengan bahasa yang baik. Menggunakan kunci
penggeseran berapa kode pesan ini?
2. Enkripsikan pesan berikut dengan metode cipher polialfabe k menggunakan 4 kunci
dengan syarat kunci 1 adalah nama Anda, kunci 2 salah satu nama saudara Anda, kunci 3
nama salah satu teman Anda, dan kunci 4 adalah nama idola Anda.
ANUGRAH PALING BERHARGA ADALAH BAYANGAN NURANI DIALAH PERMATA HIDUP
KITA
3. Pesan berikut dikirimkan dengan metode subs tusi poligram menggunakan metode
Playfair cipher dengan kunci matriks 5 x 5. Gunakan nama ANDA untuk mengisi awal-awal
baris matriks. Lengkapi matriks tersebut. Tuliskan matriksnya serta karakter apa yang dak
Anda masukkan. Pesannya adalah UKURAN TUBUHMU TIDAK PENTING UKURAN OTAKMU
CUKUP PENTING UKURAN HATIMU ITULAH YANG TERPENTING
4. Pesan berikut dienkripsi menggunakan metode transposi on cipher:
ATPEI CENSI USSAT NEICD UROGA E
Pecahkan kode pesan tersebut, dan tuliskan dengan bahasa yang baik. Menggunakan kunci
penggeseran berapa kode pesan ini?
5. Diketahui citra berukuran 4 x 4 piksel dengan 16 derajat keabuan yang dinyatakan sebagai
matriks derajat keabuan berikut:
5 3 0 15
5 4 14 12
3 2 11 14
1 15 13 5
a. Tulislah cipher dari digitalisasi citra di atas apabila dilakukan penyandian dengan metode
Playfair cipher, dan tuliskan kunci yang Anda gunakan.
b. Tulislah cipher dari digitalisasi citra di atas apabila dilakukan penyandian menggunakan
metode Vigenere cipher dengan nomor mahasiswa Anda sebagai kuncinya.
c. Buatlah program dengan MATLAB.
6. Rancanglah metode super enkripsi dengan kombinasi algoritma kriptografi klasik lainnya,
kemudian lakukan analisis terhadap metode tersebut apakah metode yang dirancang akan
menjadi salah satu metode yang dak mudah dipecahkan oleh seorang kriptanalis.
BAB VI
KRIPTOGRAFI MODERN

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. mengetahui dan memahami konsep dasar kriptografi modern;
2. membedakan antara kriptografi kunci publik dan kriptografi kunci privat;
3. memahami dan menjelaskan prinsip kerja metode kriptografi cipher aliran dan cipher
blok.

Algoritma kriptografi klasik umumnya beroperasi dalam mode karakter, sedangkan kriptografi
modern beroperasi pada mode bit. Operasi dalam mode bit berar semua data dan informasi
(baik kunci, plaintext, maupun ciphertext) dinyatakan dalam rangkaian (string) bit biner, 0 dan
1.

Gambar 6.1 Diagram blok kriptografi modern (Munir, 2006)


120 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Algoritma enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian
bit. Rangkaian bit yang menyatakan plaintext dienkripsi menjadi ciphertext dalam bentuk
rangkaian bit. Demikian juga sebaliknya. Muara dari kriptografi modern adalah menyediakan
keamanan pesan di dalam jaringan komputer.

6.1 Rangkaian Bit dan Operasinya


Pada umumnya algoritma kriptografi modern memproses data dalam bentuk blok-blok
rangkaian bit yang dipecahkan menjadi blok-blok bit yang dapat ditulis dalam sejumlah cara,
bergantung pada panjang blok. Contoh:
Bila plaintext 101101110001000001110010 dibagi menjadi blok 4-bit:
1011 0111 0001 0000 0111 0010
se ap blok akan menyatakan 0 sampai 15:
9 7 1072
Bila plaintext dibagi menjadi blok 3-bit:
101 101 110 001 000 001 110 010
se ap blok akan menyatakan 0 sampai 7:
556 10162
Jika panjang rangkaian bit dak habis dibagi dengan ukuran blok yang ditetapkan, blok terakhir
ditambahkan bit semu yang disebut padding bit. Misalnya, rangkaian bit di atas dibagi menjadi
blok 5-bit:
10110 11100 01000 00111 00010
Blok terakhir telah ditambahkan 1 bit 0 di bagian awal agar ukurannya menjadi 5 bit . Padding
bit dapat mengakibatkan ukuran ciphertext hasil enkripsi menjadi lebih panjang daripada
ukuran plaintext semula. Cara lain untuk menyatakan rangkaian bit adalah dengan notasi
heksadesimal (HEX). Rangkaian bit dibagi menjadi blok berukuran 4 bit dengan representasi
dalam HEX-nya adalah
0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0110 = 6 0111 = 7
1000 = 8 1001 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1110 = E 1111 = F
Contoh:
Plaintext 111011110001 dibagi menjadi blok 4-bit:
1110 1111 0001
Dalam notasi HEX, plaintext itu menjadi E F 1.
KRIPTOGRAFI MODERN 121
Operasi biner yang sering digunakan dalam cipher yang beroperasi dalam mode bit adalah
XOR. Notasi matema s untuk operator XOR adalah ⊕. Operator XOR dioperasikan pada dua
bit dengan aturan seper terlihat pada TABEL 6.1.
TABEL 6.1 XOR
a b a⊕b
0 0 0
0 1 1
1 0 1
1 1 0
Operator XOR iden k dengan penjumlahan modulo 2 seper terlihat pada contoh berikut:
0 ⊕ 0 = 0 ⇔ 0 + 0 (mod 2) = 0
0 ⊕ 1 = 1 ⇔ 0 + 1 (mod 2) = 1
1 ⊕ 0 = 1 ⇔ 0 + 1 (mod 2) = 1
1 ⊕ 1 = 1 ⇔ 1 + 1 (mod 2) = 0
Hukum-hukum yang terkait dengan operator XOR adalah
1. a ⊕ a = 0
2. a ⊕ b = b ⊕ a
3. a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c
Jika dua rangkaian bit dioperasikan dengan XOR, operasinya dilakukan dengan meng-XOR-kan
se ap bit yang berkorespondensi dari kedua rangkaian bit tersebut.
Contoh:
1010 ⊕ 1101 = 0110
Dalam hal ini, hasilnya adalah
1 0 1 0
1 1 0 1
1⊕1 0⊕1 1⊕0 1⊕1 ⊕
0 1 1 0

6.2 Algoritma Enkripsi dengan XOR Sederhana


Algoritma enkripsi dengan XOR sederhana ini meng-XOR-kan plaintext (P) dengan kunci (K)
sehingga menghasilkan ciphertext (C):
C=P⊕K (6.1)
Apabila bit ciphertext (C) di-XOR-kan dengan kunci (K) yang sama, akan dihasilkan plaintext
(P):
P=C⊕K (6.2)
122 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Apabila plaintext di-XOR-kan dengan nilai yang sama dua kali secara berturut-turut, akan
dihasilkan nilai semula.
Contoh:
Plaintext Kunci 01100001 (karakter a)

00110111 (karakter 7)
Ciphertext Kunci 01010110 (karakter V)

00110111 (karakter 7)
Plaintext 01100001 (karakter a)

M-file untuk memanggil fungsi enkripsi dengan metode XOR sederhana disertakan dalam
Lampiran dengan nama enkrip_xor.m. Sintaksnya adalah
>> cipher=enkrip_xor(p,k)

Gambar 6.2 Hasil enkripsi data karakter dengan metode XOR sederhana

Algoritma enkripsi XOR sederhana pada prinsipnya sama seper Vigenere cipher dalam
penggunaan kunci yang berulang secara periodik. Se ap bit plaintext di-XOR-kan dengan
se ap bit kunci. Program komersial berbasis DOS atau Macintosh menggunakan algoritma
XOR sederhana ini. Sayangnya, algoritma ini dak aman karena ciphertext mudah dipecahkan,
misalnya, dengan cara berikut (Munir, 2004).
1. Mencari panjang kunci dengan prosedur coun ng coincidence. XOR-kan ciphertext terhadap
dirinya sendiri setelah digeser sejumlah byte, kemudian hitung jumlah byte yang sama. Jika
pergeseran mempunyai kelipatan dari panjang kunci (yang dak diketahui), 6% dari byte
akan sama. Jika dak, 0,4% akan sama. Angka persentase ini disebut index of coincidence.
Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
2. Menggeser ciphertext sejauh panjang kunci, dan meng-XOR-kan dengan dirinya sendiri.
Operasi ini menghasilkan plaintext yang ter-XOR dengan plaintext yang digeser sejauh
panjang kunci tersebut.
Kriptografi modern dapat memecahkan masalah algoritma rahasia, yaitu dengan algoritma
kunci. Kunci ini dapat berupa sembarang nilai dari sejumlah angka. Dengan demikian, ngkat
keamanan algoritma yang menggunakan kunci ini berdasarkan kerahasiaan kuncinya, bukan
berdasarkan detail algoritma itu sendiri. Algoritma dapat dipublikasikan serta dianalisis, dan
diproduksi secara massal. Secara umum ada dua pe algoritma yang termasuk dalam algoritma
modern, yaitu algoritma simetrik (symmetric algorithm) dan algoritma kunci publik (public-key
algorithm). Perbedaan utama antara keduanya terletak pada kunci enkripsinya. Perbedaan
KRIPTOGRAFI MODERN 123

lainnya juga bisa dilihat dalam kecepatan proses dan keamanannya apabila digunakan kunci K1
dan kunci dekripsi K2 . Gambar 6.3 adalah bagan suatu sistem penyandian berdasarkan kunci
beserta contoh-contoh algoritma yang digunakan.

Gambar 6.3 Blok diagram pembagian sistem kriptografi berdasarkan kunci


(sumber: www.dc442.4shared.com/doc/rpue4IpH/preview.html)

6.3 Kriptografi Kunci Simetrik


Algoritma kunci simetrik mengacu pada metode enkripsi di mana pengirim dan penerima
memiliki kunci yang sama. Algoritma kunci simetrik modern beroperasi dalam mode bit dan
dapat dikelompokkan menjadi dua kategori, yaitu
1. cipher aliran (stream cipher);
2. cipher blok (block cipher).

6.3.1 Kriptografi Cipher Aliran


Cipher aliran mengenkripsikan plaintext menjadi ciphertext bit per bit (1 bit se ap kali
transformasi) atau byte per byte (1 karakter = 1 byte). Nama lain untuk cipher aliran adalah
cipher status sebab enkripsi se ap bit bergantung pada status saat ini (current state). Variasi
cipher aliran lainnya adalah mengenkripsikan plaintext menjadi ciphertext karakter per karakter
124 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

atau kata per kata, misalnya pada Vigenere cipher dan one- me pad chiper. Contoh cipher
aliran adalah algoritma RC4, A5, A2, SEAL, WAKE, dan Cellular Automa on.
Cipher aliran pertama kali diperkenalkan oleh Vernam melalui algoritmanya yang dikenal
dengan nama Vernam cipher. Vernam cipher diadopsi dari one- me pad cipher, yang dalam hal
ini karakter digan dengan bit (0 dan 1). Ciphertext diperoleh dengan melakukan penjumlahan
modulo 2 satu bit plaintext dengan satu bit kunci.
ci = (pi + ki) mod 2 (6.3)

Keterangan:
pi bit plaintext
ki bit kunci
ci bit ciphertext
Plaintext diperoleh dengan melakukan penjumlahan modulo 2 satu bit ciphertext dengan satu
bit kunci: pi = (ci + ki) mod 2, sehingga kita dapat menyatakan bahwa cipher aliran merupakan
aproksimasi dari unbreakable cipher, yaitu one- me pad cipher.
Mengingat operasi penjumlahan modulo 2 iden k dengan operasi bit dengan operator XOR,
pada cipher aliran, bit hanya mempunyai dua buah nilai sehingga proses enkripsi hanya
menyebabkan dua keadaan pada bit tersebut: berubah atau dak berubah. Dua keadaan itu
ditentukan oleh kunci enkripsi yang disebut aliran kunci (keystream).
Keystream dibangkitkan dari pembangkit aliran-kunci (keystream generator). Keystream di-
XOR-kan dengan aliran bit-bit plaintext p1, p2, …, pi untuk menghasilkan aliran bit ciphertext.
ci = pi ⊕ ki (6.4)

Di sisi penerima, bit ciphertext di-XOR-kan dengan keystream yang sama untuk menghasilkan
bit plaintext:
pi = ci ⊕ ki (6.5)

Gambar 6.4 Konsep cipher aliran


KRIPTOGRAFI MODERN 125
Contoh:
Plaintext : 1100101
Keystream : 1000110
Ciphertext didapatkan dengan meng-XOR-kan bit plaintext menggunakan keystream pada
posisi yang berkorespondensi sehingga didapatkan 0100011.
Keamanan sistem cipher aliran bergantung seluruhnya pada pembangkit aliran bit kunci.
Semakin acak keluaran yang dihasilkan oleh pembangkit aliran bit kunci, semakin sulit
kriptanalis memecahkan ciphertext. Ada ga keluaran yang dihasilkan oleh pembangkit aliran
bit kunci.
1. Jika pembangkit mengeluarkan aliran bit kunci yang seluruhnya nol, ciphertext sama
dengan plaintext, dan proses enkripsinya dak berar .
2. Jika pembangkit mengeluarkan aliran-bit-kunci dengan pola 16-bit yang berulang, algoritma
enkripsinya menjadi sama seper enkripsi dengan XOR sederhana yang memiliki ngkat
keamanan yang dak berar .
3. Jika pembangkit mengeluarkan aliran-bit-kunci yang benar-benar acak (truly random),
algoritma enkripsinya sama dengan one- me pad dengan ngkat keamanan yang
sempurna. Pada kasus ini, aliran-bit-kunci sama panjangnya dengan panjang plaintext, dan
kita mendapatkan cipher aliran sebagai unbreakable cipher.
Pembangkit bit keystream dapat diimplementasikan sebagai prosedur algoritmik sehingga bit
keystream dapat dibangkitkan secara simultan oleh pengirim dan penerima pesan. Prosedur
algoritmik tersebut menerima masukan sebuah kunci U. Keluaran dari prosedur merupakan
fungsi dari U (lihat Gambar 6.5). Pembangkit harus menghasilkan bit keystream yang kuat
secara kriptografi.

Gambar 6.5 Cipher aliran dengan pembangkit bit keystream yang bergantung pada kunci U

Karena pengirim dan penerima harus menghasilkan bit keystream yang sama, keduanya harus
memiliki kunci U yang sama sehingga kunci U harus dijaga kerahasiaannya. Cipher aliran
biasanya menggunakan kunci U yang rela f pendek untuk membangkitkan bit keystream yang
panjang.
126 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Contoh:
Misalkan U adalah kunci 4 bit yang dipilih secara sembarang, kecuali 0000. Bit keystream yang
dibangkitkan akan berulang se ap 15 bit. Misalkan U = 1111. Barisan bit keystream diperoleh
dengan meng-XOR-kan bit pertama dengan bit terakhir dari empat bit sebelumnya dengan
persamaan ki = ki-1⊕ ki-m sehingga menghasilkan 111101011001000 1111 dan akan berulang
se ap 15 bit. Secara umum, jika panjang kunci U adalah n bit, bit keystream dak akan berulang
sampai 2n – 1 bit.
Karena U adalah besaran yang konstan, bit keystream yang dihasilkan pada se ap lelaran dak
berubah jika bergantung hanya pada U. Ar nya, pembangkit bit keystream dak boleh dimulai
dengan kondisi awal yang sama supaya dak menghasilkan kembali bit keystream yang sama
pada se ap lelaran.

6.3.1.1 Algoritma RC4 (ARCFOUR)


RC4 adalah cipher aliran yang digunakan secara luas pada sistem keamanan seper protokol
Secure Socket Layer (SSL). Algoritma kriptografi ini sederhana dan mudah diimplementasikan.
RC4 dibuat oleh Ron Rivest dari Laboratorium RSA (RC adalah singkatan dari Ron’s Code).
Gambar 6.6 memperlihatkan rangkaian proses yang dijalankan untuk mengenkripsi atau
mendekripsi data (Hari dan Mulyana, 2012).

Gambar 6.6 Rangkaian proses RC4

RC4 membangkitkan keystream yang kemudian di-XOR-kan dengan plaintext pada waktu
enkripsi (atau di-XOR-kan dengan bit-bit ciphertext pada waktu dekripsi). RC4 dak seper
cipher aliran yang memproses data dalam bit. RC4 memproses data dalam ukuran byte (1 byte
= 8 bit).
RC4 menggunakan dua buah kotak subs tusi (S-box) array 256 byte yang berisi permutasi dari
bilangan 0 sampai 255, dan S-box kedua yang berisi permutasi fungsi dari kunci sepanjang
variabel. Langkah algoritma enkripsi RC4 adalah sebagai berikut.
KRIPTOGRAFI MODERN 127
1. Inisialisasi array S-box pertama, S[0], S[1],..., S[255], diisi dengan bilangan 0 sampai 255
sehingga array S-box array S berbentuk S[0] = 0, S[1] = 1, ..., S[255] = 255. Proses inisialisasi
S-box (array S):
For r = 0 to 255
S[r] = r
Pada MATLAB dapat dituliskan dengan sintaks perintah:
S = 0:255;

2. Inisialisasi array kunci (S-box lain), misalnya array kunci K dengan panjang 256. Jika
panjang kunci K < 256, dilakukan padding, yaitu penambahan byte sehingga panjang kunci
menjadi 256 byte. Misalnya, K = abc (hanya 3 byte atau 3 huruf), lakukan padding dengan
penambahan byte (huruf) semu, misalnya K = abcabcabc… sampai panjang K mencapai 256
byte sehingga S-box array kunci K berbentuk K[0], K[1], ..., K[255]. Proses inisialisasi S-box
(array K):
Array kunci // panjang kunci “length”.
for i = 0 to 255
K[i] = Kunci[i mod length];
Pada MATLAB proses di atas dapat dituliskan dengan sintaks perintah berikut:
function K=Sbox_K(kunci);
panjang=size(kunci,2);
sisa=mod(256,panjang);
b=(256-sisa)/panjang ;
K=[];
for i=1:b
K=[K kunci];
end;
K=[K kunci(1:sisa)];

3. Lakukan permutasi terhadap nilai-nilai di dalam array S dengan cara menukarkan isi array
S[i] dengan S[j]. Prosesnya adalah sebagai berikut:
j=0
For i = 0 to 255
j = (j + S[i] + K[i]) mod 256
isi S[i] dan isi S[j] ditukar
128 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Sintaks perintah pada MATLAB:


function S=permutasi(S,K);
j = 0;
for i=0:255
j = mod((j + S(i+1) + K(i+1)),256);
dum=S(i+1);
S(i+1)=S(j+1);
S(j+1)=dum;
end;

4. Bangkitkan keystream dan lakukan enkripsi.


Proses untuk membangkitkan kunci enkripsi adalah sebagai berikut:
i=j=0
i = (i + 1) mod 256
j = (j + S[i]) mod 256
isi S[i] dan S[j] ditukar
t = (S[i] + S[j]) mod 256
K=S[t];
Proses pembangkitan keystream K dipilih dengan mengambil nilai S[i] dan S[j] dan
menjumlahkannya dalam modulo 256. Hasil penjumlahan adalah nilai indeks t sedemikian
sehingga S[t] menjadi kunci aliran K. Pada MATLAB, pembangkitan keystream K dapat
dituliskan dengan sintaks perintah berikut:
function KE=pembangkit_kunci(S);
i = 0;
j = 0 ;
i = mod((i + 1),256);
j = mod((j + S(i+1)),256);
dum=S(i+1);
S(i+1)=S(j+1);
S(j+1)=dum;
t = S((mod((S(i+1) + S(j+1)),256))+1);
KE=S(t+1);

5. Keystream K kemudian digunakan untuk mengenkripsi plaintext ke-idx sehingga didapatkan


ciphertext, sedangkan untuk mendapatkan plaintext, XOR-kan ciphertext dengan kunci
yang sama dengan proses enkripsi. Contoh:
Contoj : Implementasi algoritma RC4 menggunakan mode 4 byte untuk mengenkripsi
plaintext EMY dengan kunci 2 8.
a. Inisialisasi array S-box dengan panjang 4 byte sehingga array S-box array S berbentuk
S[0] = 0, S[1] = 1, S[2] = 2, S[3]=3.
KRIPTOGRAFI MODERN 129

Index 0 1 2 3
S 0 1 2 3
b. Inisialisasi array kunci (S-box lain). Karena pada contoh ini digunakan algoritma RC4
dengan mode 4 byte, kunci K diulang sampai panjangnya 4 byte sehingga kunci K = [2 8
2 8], S-box array kunci K berbentuk K[0] = 2, K[1] = 8, K[2] = 2, dan K[3] = 8.
Index 0 1 2 3
K 2 8 2 8
c. Lakukan permutasi terhadap nilai-nilai di dalam array S dengan cara menukarkan isi
array S[i] dengan S[j]. Karena pada contoh ini digunakan algoritma RC4 dengan mode 4
byte, prosesnya menjadi seper berikut:
j=0
For i = 0 to 3
j = (j + S[i] + K[i]) mod 4
isi S[i] dan isi S[j] ditukar
Dengan menggunakan algoritma tersebut, untuk nilai i = 0 sampai i = 3 didapatkan nilai
array S berikut:
1) Iterasi pertama, untuk nilai i = 0
j = (j + S[i] + K[i]) mod 4
j = (j + S[0] + K[0]) mod 4
j = (0 + 0 + 2) mod 4
j=2
Dilakukan penukaran isi array S[0] dan S[2] sehingga array S berbentuk:
Index 0 1 2 3
S 2 1 0 3
2) Iterasi kedua, untuk nilai i = 1 dan j = 2 (nilai j = 2 didapatkan dari hasil iterasi
pertama)
j = (j + S[i] + K[i]) mod 4
j = (j + S[1] + K[1]) mod 4
j = (2 + 1 + 8) mod 4
j=3
Dilakukan penukaran isi array S[1] dan S[3] sehingga array S berbentuk:
Index 0 1 2 3
S 2 3 0 1
3) Iterasi ke ga, untuk nilai i = 2 dan j = 3 (nilai j = 3 didapatkan dari hasil iterasi kedua)
j = (j + S[i] + K[i]) mod 4
j = (j + S[2] + K[2]) mod 4
j = (3 + 0 + 2) mod 4
j=1
Dilakukan penukaran isi array S[2] dan S[1] sehingga array S berbentuk:
Index 0 1 2 3
S 2 0 3 1
130 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

4) Iterasi keempat, untuk nilai i = 3 dan j = 1 (nilai j = 1 didapatkan dari hasil iterasi
ke ga)
j = (j + S[i] + K[i]) mod 4
j = (j + S[3] + K[3]) mod 4
j = (1 + 1 + 8) mod 4
j=2
Dilakukan penukaran isi array S[3] dan S[2] sehingga array S berbentuk:
Index 0 1 2 3
S 2 0 1 3
5) Array S-box yang digunakan untuk langkah selanjutnya adalah array S hasil iterasi
terakhir atau iterasi keempat pada implementasi algoritma RC4 dengan mode 4
byte.
d. Karena Plaintext mempunyai panjang 4 byte, untuk mendapatkan ciphertext, terlebih
dahulu bangkitkan keystream sebanyak 3 byte. Proses untuk membangkitkan kunci
enkripsi pada mode 4 byte adalah sebagai berikut:
i=j=0
i = (i + 1) mod 4
j = (j + S[i]) mod 4
Isi S[i] dan S[j] ditukar
t = (S[i] + S[j]) mod 4
K= S[t]
Dengan menggunakan algoritma tersebut, kita bisa membangkitkan 3 buah kunci untuk
proses enkripsi dengan cara berikut:
1) Iterasi pertama, untuk nilai i = j = 0, maka
i = (i + 1) mod 4
i = (0 + 1) mod 4 = 1
j = (j + S[i]) mod 4
j = (0 +S[1]) mod 4
j = (0 + 0) mod 4 = 0
Menukar isi S[1] dan S[0] sehingga array S berbentuk:
Index 0 1 2 3
S 0 2 1 3
t = (S[1] + S[0]) mod 4
t = (2 + 0) mod 4 = 2
K = S[t] = S[2] = 1
Jadi, kunci pertama untuk enkripsi adalah 3.
2) Iterasi kedua, untuk nilai i = 1 dan j = 0 (nilai i dan j didapatkan dari hasil iterasi
pertama), maka
i = (i + 1) mod 4
i = (1 + 1) mod 4 = 2
j = (j + S[i]) mod 4
KRIPTOGRAFI MODERN 131
j = (0 +S[2]) mod 4
j = (0 + 1) mod 4 = 1
Menukar isi S[2] dan S[1] sehingga array S berbentuk:
Index 0 1 2 3
S 0 1 2 3
t = (S[2] + S[1]) mod 4
t = (2 + 1) mod 4 = 3
K = S[t] = S[3] = 3
Jadi, kunci kedua untuk enkripsi adalah 3.
3) Iterasi ke ga, untuk nilai i = 2 dan j = 1 (nilai i dan j didapatkan dari hasil iterasi
kedua), maka
i = (i + 1) mod 4
i = (2 + 1) mod 4 = 3
j = (j + S[i]) mod 4
j = (1 +S[3]) mod 4
j = (1 + 3 ) mod 4 = 0
Menukar isi S[3] dan S[0] sehingga array S berbentuk:
Index 0 1 2 3
S 3 1 2 0
t = (S[3] + S[0]) mod 4
t = (0 + 3) mod 4 = 3
K = S[t] = S[3] = 0
Jadi, kunci ke ga untuk enkripsi adalah 0.
e. Proses enkripsinya: plaintext di-XOR-kan dengan kunci.
Untuk plaintext E M Y dan kunci 1 3 0 dari hasil pembangkitan kunci, ciphertext-nya
adalah
Kode Biner
E M Y
Plaintext (P) 01000101 01001101 01011001
Kunci (K) 00000001 00000101 00000000
P⊕K 01000100 01001000 01011001
Ciphertext @ H Y
Cara mendapatkan plaintext:
Kode Biner
@ H Y
Ciphertext (C) 01000100 01001000 01011001
Kunci (K) 00000101 00000101 00000000
C⊕K 01000101 01001101 01011001
Plaintext (P) E M Y
132 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Kelemahan algoritma RC4 adalah kemungkinan adanya nilai-nilai di dalam array S yang
bernilai sama. Hal ini karena karakter-karakter kunci dikopi secara berulang-ulang. RC4 juga
mudah diserang dengan known-plaintext a ack jika kriptanalis mengetahui beberapa buah
plaintext dan ciphertext yang berkorespondensi. Untuk mengatasi permasalahan tersebut, ada
beberapa cara yang bisa dilakukan, di antaranya adalah sebagai berikut (Irfian , 2007).
1. Menggunakan kunci yang panjang (minimal panjang kunci ≥ 3 karakter dan maksimal ≤ 255
karakter) agar kemungkinan kunci dimasukkan secara berulang dalam array kunci semakin
kecil dan memakai kombinasi yang berlainan.
2. Untuk mengenkripsi file yang berbeda, usahakan untuk dak menggunakan kunci yang
sama.
3. Jika menggunakan kunci yang sama untuk se ap kali mengenkripsi file, kita memerlukan
ini aliza on vector (IV) pada secret key. Jika IV yang digunakan untuk se ap kali proses
enkripsi dak pernah sama, akan dihasilkan ciphertext yang berbeda, meskipun plaintext
yang dienkripsi sama.
4. Mengacak (mengubah susunan) plaintext sebelum diubah ke dalam ciphertext sehingga jika
seorang pengganggu memperoleh 1 byte data dari plaintext, ia dak dapat memperoleh
data lainnya dengan cara meng-XOR-kan dua buah ciphertext dan byte data yang diketahui.
5. Mengubah metode pengisian kunci ke dalam kunci array. Caranya, pengisian kunci ke
dalam array cukup sekali, kemudian sisa variabel kunci array yang lainnya akan diisi dengan
nilai yang dibangkitkan secara acak.

6.3.1.2 Algoritma A5
Algoritma A5 merupakan jenis algoritma simetrik di mana kunci yang dipakai untuk proses
enkripsi dan dekripsi sama. A5 digunakan untuk mengenkripsi transmisi sinyal percakapan
dari standar telepon seluler GSM (Groupe Special Mobile). Algoritma A5 dibagi menjadi A5/1,
A5/2, dan versi terbarunya, yaitu A5/3. Algoritma A5/1 yang merupakan dasar enkripsi pada
jaringan GSM pertama kali dikriptanalisis oleh Golic. Golic berhasil mendekripsi informasi
tersebut karena adanya gambaran besar mengenai informasi A5/1 yang beredar.
Algoritma A5/2 pertama kali dianalisis oleh Goldberg, Wagner, dan Green. Mereka berhasil
melakukan kriptanalisis terhadap algoritma tersebut dalam waktu yang rela f cepat. Cara
kriptanalisis yang digunakan oleh mereka adalah dengan mendapatkan 2 buah plaintext
dan dengan menggunakan reverse engineering. Cara lain yang ditawarkan oleh Petrovi’c
dan F’uster-Sabater untuk melakukan kriptanalisis terhadap algoritma A5/2 adalah dengan
menggunakan sebuah rumus kuadra k yang variabelnya akan mendeskripsikan keadaan A5/2
tersebut. Apabila menggunakan cara ini, kita dak akan mendapatkan kunci untuk mendekripsi,
tetapi hanya dapat mendekripsi sisa dari informasi yang ada pada suatu komunikasi yang telah
tersandikan (Darwin, 2011).
Algoritma A5/2 merupakan algoritma enkripsi cipher aliran di mana enkripsi dilakukan
bersamaan dengan dikirimkannya pesan/informasi tersebut. Penerapan enkripsi pada jaringan
KRIPTOGRAFI MODERN 133
GSM adalah bahwa pesan/informasi yang dikirimkan merupakan suara dari pengguna pada
saat berbicara di telepon. Penerapan rumus umum pada cipher aliran adalah sebagai berikut
(Darwin, 2011):

ó i +1 = F ( σ i ; x i ; K )
yi = f ( σ i ; x i ; K )
(6.6)
Keterangan:
K kunci yang digunakan
xi plaintext
yi ciphertext
σi keadaan pada saat i
F fungsi next-state
f fungsi output
Algoritma A5/2 menggunakan kunci dengan panjang 64-bit dan juga ini al value berukuran
22-bit. Ini al value yang digunakan bersifat publik sehingga dapat diketahui oleh siapa saja.
Ini al value pada umumnya bernama COUNT, yang merupakan angka frame.
Algoritma A5/2 memiliki 4 shi register yang dilakukan melalui variabel R1, R2, R3, dan R4
seper terlihat pada Gambar 6.7. Se ap variabel tersebut memiliki panjang bit tersendiri. R1
mempunyai 17-bit, R2 23-bit, R3 23-bit, dan R4 17-bit. Sebelum sebuah register mengalami
waktu clocking yang baru, terlebih dahulu kita menghitung data yang dimiliki, kemudian
menyisipkannya ke bagian paling kiri sehingga seluruh bit yang ada bergeser ke kanan 1 petak.

Gambar 6.7 Struktur algoritma A5/2 (Darwin, 2011)

Pengaturan awal terhadap kunci algoritma ini memiliki 4 tahapan seper terlihat pada Gambar
6.8. Tahapan-tahapan tersebut juga menjelaskan bagaimana shi register diacak. Pengacakan
134 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

shi register berjalan sesuai dengan clocking yang digunakan. K(i) merupakan kunci ke-i, dan
f(i) merupakan hasil COUNT.
1. Set R1 = R2 = R3 = R4 =0
2. For i = 0 to 63
– Clock all four register
– R1[0] Å R1[0] ⊕ Kc[i]; R2[0] ÅR2[0] ⊕ Kc[i];
R3[0] ÅR3[0] ⊕ Kc[i]; R4[0] ÅR4[0] ⊕ Kc[i];
3. For i = 0 to 21
– Clock all four register
– R1[0] Å R1[0] ⊕ f[i]; R2[0] ÅR2[0] ⊕ f[i];
R3[0] ÅR3[0] ⊕ f[i]; R4[0] ÅR4[0] ⊕ f[i];
4. Set the bit R1[15] Å1; R2[16] Å1; R3[18] Å1; R4[10] Å1

Gambar 6.8 Pengaturan pada algoritma A5/2 (Darwin, 2011)

Algoritma A5/2 bekerja secara siklik. Ar nya, se ap satu putaran berhasil dilakukan, akan
dihasilkan sebuah bit baru yang akan dikirimkan ke R1, R2, dan R3. Hasil tersebut bergantung
pada R4 sehingga R4 juga menjadi penentu dalam menghasilkan enkripsi yang diinginkan. Pada
fungsi yang digunakan untuk menghasilkan keystream generator dipakai sistem siklik untuk
mendapatkan hasil yang diinginkan. Tahapan yang dilakukan untuk mendapatkan keystream
tersebut adalah sebagai berikut:
1. melakukan inisialisasi seper pada Gambar 6.8;
2. mengak an siklik tersebut selama 99 siklik dan membuang hasilnya;
3. mengak an kembali siklik tersebut selama 228 siklik dan menggunakannya sebagai
keystream untuk enkripsi.
Setelah mendapatkan fungsi keystream yang diinginkan, bagi bit tersebut menjadi 2 bagian
yang sama banyak. Sebanyak 114 bit pertama akan kita gunakan untuk mengenkripsi jaringan
ke telepon. 114 bit sisanya akan kita gunakan untuk mengenkripsi jalur telepon ke jaringan.
Perlu juga diketahui bahwa algoritma A5/2 dibangun berdasarkan pada arsitektur algoritma
A5/1. Fungsi kembalian dari R1, R2, dan R3 mirip dengan fungsi yang dimiliki oleh algoritma
A5/1. Proses inisialisasi yang dilakukan oleh algoritma A5/2 juga serupa dengan algoritma
A5/1. Hal yang berbeda tampak pada fungsi R4 yang digunakan. Pada algoritma A5/2
digunakan fungsi R4 untuk mendapatkan fungsi clocking yang akan memengaruhi fungsi R1,
R2, dan R3. Sementara pada algoritma A5/1, clocking yang digunakan berasal dari R1, R2,
dan R3 itu sendiri. Salah satu penyebab lemahnya algoritma A5/2 adalah karena algoritma ini
menggunakan arsitektur algoritma A5/1.
Pada tahun 2002 sebuah algoritma keamanan baru yang dikenal sebagai A5/3 telah
memberikan ngkat keamanan yang lebih nggi terhadap eavesdropping. Algoritma ini
juga memas kan bahwa, walaupun seseorang dapat mengambil sinyal percakapan GSM, ia
dak dapat memahami hasil yang ia curi tersebut, meskipun melalui proses komputasi yang
nggi. Sebetulnya algoritma A5/3 ini didasari oleh algoritma lain yang dikembangkan oleh
KRIPTOGRAFI MODERN 135
Security Algorithms Group of Experts (SAGE), yang merupakan bagian dari European Tele-
communica ons Standards Ins tute (ETSI), yaitu KASUMI. SAGE diminta untuk mengembang-
kan sebuah algoritma untuk mobile telephone generasi ke ga berdasarkan spesifikasi yang
diberikan oleh SA-WG2. Akibat jadwal tenggat waktu yang singkat, SAGE memutuskan bahwa
mereka akan menggunakan algoritma yang telah ada sebelumnya sebagai dasar dari algoritma
baru yang akan mereka kembangkan, yaitu MISTY1. Alasan pemilihan algoritma ini karena
MISTY1 memiliki ngkat keamanan yang nggi. Algoritma ini juga merupakan satu-satunya
algoritma yang dapat berjalan pada perangkat keras yang menggunakan dak lebih dari
sepuluh ribu gerbang logika (Donnie, 2007).
Perubahan yang diterapkan terhadap MISTY1 saat perancangan KASUMI adalah sebagai
berikut (Donnie, 2007).
1. Data enkripsi
a. Mengubah lokasi fungsi FL
Pengubahan lokasi fungsi FL menyederhanakan, namun memperlambat implementasi
perangkat keras. Kelemahan ini bisa dimi gasi dengan perubahan lainnya.
b. Menghilangkan subkey KOi4 pada fungsi FO
Penghilangan subkey KOi4 pada fungsi FO mempercepat dan menyederhanakan
implementasi pada perangkat keras. Saat ini fungsi FO memiliki struktur pengulangan
yang sederhana.
c. Menambahkan fungsi pergeseran rotasi pada fungsi FL
Fungsi pergeseran diasumsikan dapat mempersulit proses kriptanalisis. Penambahan
fungsi pergeseran rotasi dak berdampak nega f terhadap ukuran ataupun kecepatan
perangkat keras.
d. Mengubah tabel subs tusi S7
Tabel subs tusi S7 dak mengalami perubahan yang berar , hanya dilakukan
penyusunan urutan dari bit sebelum dan sesudah S7 yang asli. Tidak ada tabel yang
lebih baik jika dipandang dari sudut pandang implementasi perangkat keras.
e. Mengubah tabel subs tusi S9
Pengubahan tabel subs tusi S9 memperkecil dan mempercepat perangkat keras.
Jumlah total term S9 yang baru lebih kecil dibandingkan dengan yang asli.
f. Menambahkan S7 pada fungsi FI
Penambahan S7 sangat meningkatkan ngkat keamanan, tetapi memperbesar
perangkat keras. Diharapkan bahwa pembesaran akan dikompensasi oleh pengurangan
penjadwalan kunci.
136 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

2. Penjadwalan kunci
a. Menghilangkan seluruh fungsi FI di bagian penjadwalan kunci
Penghilangan seluruh fungsi FI akan memperkecil perangkat keras dan/atau mengurangi
waktu yang digunakan untuk mempersiapkan kunci. Diharapkan bahwa serangan yang
berhubungan dengan kunci dak akan bekerja untuk struktur ini.
b. Menambahkan nilai konstanta Ci dan operasi pergeseran rotasi bit
Penambahan nilai konstanta dapat menghindari penggunaan subkey yang sama untuk
iterasi yang berbeda.
KASUMI beroperasi pada 64-bit masukan I dengan kunci K 128-bit untuk menghasilkan keluaran
64-bit. Langkah pertama pada operasi algoritma KASUMI adalah memasukkan I, membaginya
menjadi dua: L0 dan R0 (masing-masing 32-bit) di mana I = L0 || R0. Kemudian, se ap integer i
dengan 1 ≤ i ≤ 8 didefinisikan dengan persamaan berikut:
Ri = Li-1, Li = Ri-1 ⊕ fi(Li-1, RKi) (6.7)
Operasi ini akan menghasilkan keluaran (L8 ||R8) pada akhir iterasi kedelapan.
Komponen KASUMI terdiri atas fungsi fi, FL, FO, FI, dan S-box (Donnie, 2007).
1. Fungsi fi
Fungsi fi( ) mengambil masukan 32-bit I dan menghasilkan keluaran 32-bit O yang
dikendalikan oleh round key RKi, di mana round key tersebut terdiri atas subkey triplet dari
(KLi, KOi, KIi). Fungsi fi( ) terbentuk dari dua subfungsi, yaitu FL and FO yang berasosiasi
dengan subkey KLi (untuk FL), dan subkey KOi dan KIi (untuk FO). Fungsi fi( ) memiliki dua
bentuk yang berbeda tergantung pada iterasi yang sedang berjalan, apakah iterasi ganjil
atau genap.
Untuk iterasi 1, 3, 5, dan 7:
fi(I,RKi) = FO( FL( I, KLi), KOi, KIi ) (6.8)
Sementara untuk iterasi 2, 4, 6, dan 8:
fi(I,Ki) = FL( FO( I, KOi, KIi ), KLi ) (6.9)
Ilustrasi fungsi fi dapat dilihat pada Gambar 6.9.
KRIPTOGRAFI MODERN 137

Gambar 6.9 Fungsi fi pada algoritma KASUMI

2. Fungsi FL
Masukan dari fungsi FL terdiri atas 32-bit data masukan I dan 32-bit subkey KLi. Subkey KLi
dibagi menjadi dua bagian, yaitu KLi,1 dan KLi,2, di mana
KLi = KLi,1 || KLi,2 (6.10)
Data masukan I juga dibagi dua, masing-masing 16-bit, yaitu L dan R, di mana
I = L || R (6.11)
138 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Didefinisikan:
R ' = R ⊕ ROL(L ∩ KLi ,1 ) (6.12)
L ' = L ⊕ ROL(R '∩ KLi ,2 ) (6.13)
Hasil keluaran dari fungsi ini sebesar 32-bit yang nilainya
I = L’ || R’ (6.14)
Ilustrasi fungsi FL ditunjukkan pada Gambar 6.10.

Gambar 6.10 Fungsi FL pada algoritma KASUMI dengan ∪ simbol operasi OR,
∩ simbol operasi AND, dan <<< rotasi satu bit ke kiri

3. Fungsi FO
Masukan dari fungsi FO terdiri atas 32-bit data masukan I dan dua set dari subkey, 48-bit
subkey KOi dan 48-bit subkey KIi. Data masukan sebesar 32-bit tersebut dibagi menjadi dua
bagian, yaitu L0 and R0, di mana

I = L0 || R (6.15)
Subkey 48-bit tersebut dibagi menjadi ga subkey sebesar 16-bit, di mana
KOi = KOi,1 || KOi,2 || KOi,3 (6.16)
KIi = KIi,1 || KIi,2 || KIi,3 (6.17)
Kemudian, untuk se ap integer j dengan 1≤ j ≤ 3, didefinisikan:

( )
R j = FI Lj −1 ⊕ KOi , j , KIi , j ⊕ R j −1
L j = R j −1
(6.18)
Fungsi tersebut akan menghasilkan keluaran (L3 || R3) sebesar 32-bit. Ilustrasi fungsi FL
ditunjukkan pada Gambar 6.11.
KRIPTOGRAFI MODERN 139

Gambar 6.11 Fungsi FO pada algoritma KASUMI

4. Fungsi FI
Fungsi FI mengambil masukan 16-bit data masukan I dan 16-bit subkey KIi,j. Masukan I
dibagi menjadi dua bagian yang dak sama panjang: 9-bit untuk bagian kiri (L0) dan 7-bit
untuk bagian kanan (R0), di mana
I = L0 || R0 (6.19)
Sama dengan data input, kunci KIi,j dibagi menjadi komponen 7-bit KIi,j,1 dan komponen
9-bit KIi,j,2, di mana
KIi,j = KIi,j,1 || KIi,j,2 (6.20)
Fungsi FI menggunakan dua S-box, yaitu S7 yang memetakan masukan 7-bit menjadi
keluaran 7-bit dan S9 yang memetakan masukan 9-bit menjadi keluaran 9-bit. Hal ini akan
dijelaskan secara lebih terperinci pada bagian selanjutnya. Fungsi FI juga menggunakan
dua fungsi tambahan, yaitu ZE( ) dan TR( ). Keduanya didefinisikan sebagai berikut:
ZE(x): Mengambil masukan 7-bit dari x dan mengubahnya menjadi 9-bit dengan
menambahkan dua 0 bit ke bagian MSB.
TR(x): Mengambil masukan 9-bit dari x dan mengubahnya menjadi 7-bit dengan
menghilangkan dua 0 bit dari bagian MSB.
140 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Selanjutnya didefinisikan operasi berikut:


L1 = R0
R1 = S9 [ L0 ] ⊕ ZE ( R0 )
L2 = R1 ⊕ KIi , j ,2
R2 = S7 [ L1 ] ⊕ TR ( R1 ) ⊕ KIi , j ,1
L3 = R2
R3 = S9 [ L2 ] ⊕ ZE ( R2 )
L4 = S7 [ L3 ] ⊕ TR ( R3 )
R4 = R3
Hasil fungsi FI adalah (L4 || R4) sebesar 16-bit. Ilustrasi fungsi FI ditunjukkan pada Gambar
6.12.

Gambar 6.12 Fungsi FI pada algoritma KASUMI

5. S-box
KASUMI memiliki dua S-box yang telah dirancang untuk dapat diimplementasikan dengan
mudah, baik dalam logika kombinasi maupun dalam look-up table. Masukan x terdiri atas
tujuh atau sembilan bit dengan nomor bit yang bernilai sama dengan keluaran y.
x = x8 || x7 || x6 || x5 || x4 || x3 || x2 || x1 || x0
y = y8 || y7 || y6 || y5 || y4 || y3 || y2 || y1 || y0
di mana bit x8, y8 dan x7, y7 hanya digunakan pada S9, dan bit x0 dan y0 adalah LSB.
KRIPTOGRAFI MODERN 141
a. S7- S-box, gerbang logika
y0 = x1x3 ⊕ x4 ⊕ x0x1x4 ⊕ x5 ⊕ x2x5 ⊕ x3x4x5 ⊕ x6 ⊕ x0x6 ⊕ x1x6
⊕ x3x6 ⊕ x2x4x6 ⊕ x1x5x6 ⊕ x4x5x6
y1 = x0x1 ⊕ x0x4 ⊕ x2x4 ⊕ x5 ⊕ x1x2x5 ⊕ x0x3x5 ⊕ x6 ⊕ x0x2x6 ⊕ x3x6
⊕ x4x5x6 ⊕ 1
y2 = x0 ⊕ x0x3 ⊕ x2x3 ⊕ x1x2x4 ⊕ x0x3x4 ⊕ x1x5 ⊕ x0x2x5 ⊕ x0x6
⊕ x0x1x6 ⊕ x2x6 ⊕ x4x6 ⊕ 1
y3 = x1 ⊕ x0x1x2 ⊕ x1x4 ⊕ x3x4 ⊕ x0x5 ⊕ x0x1x5 ⊕ x2x3x5 ⊕ x1x4x5 ⊕ x2x6
⊕ x1x3x6
y4 = x0x2 ⊕ x3 ⊕ x1x3 ⊕ x1x4 ⊕ x0x1x4 ⊕ x2x3x4 ⊕ x0x5 ⊕ x1x3x5 ⊕ x0x4x5
⊕ x1x6 ⊕ x3x6 ⊕ x0x3x6 ⊕ x5x6 ⊕ 1
y5 = x2 ⊕ x0x2 ⊕ x0x3 ⊕ x1x2x3 ⊕ x0x2x4 ⊕ x0x5 ⊕ x2x5 ⊕ x4x5 ⊕ x1x6
⊕ x1x2x6 ⊕ x0x3x6 ⊕ x3x4x6 ⊕ x2x5x6 ⊕ 1
y6 = x1x2 ⊕ x0x1x3 ⊕ x0x4 ⊕ x1x5 ⊕ x3x5 ⊕ x6 ⊕ x0x1x6 ⊕ x2x3x6 ⊕ x1x4x6
⊕ x0x5x6

TABEL 6.2 Tabel desimal S7


54 50 62 56 22 34 94 96 38 6 63 93 2 18 123 33
55 113 39 114 21 67 65 12 47 73 46 27 25 111 124 81
53 9 121 79 52 60 58 48 101 127 40 120 104 70 71 43
20 122 72 61 23 109 13 100 77 1 16 7 82 10 105 98
117 116 76 11 89 106 0 125 118 99 86 69 30 57 126 87
112 51 17 5 95 14 90 84 91 8 35 103 32 97 28 66
102 31 26 45 75 4 85 92 37 74 80 49 68 29 115 44
64 107 108 24 110 83 36 78 42 19 15 41 88 119 59 3
Contoh:
Jika kita memiliki nilai masukan sebesar 38, dengan menggunakan tabel desimal S7[38],
keluaran yang akan dihasilkan adalah 58. Sementara untuk gerbang logika kita jabarkan:
38 = 01001102
di mana x6 = 0, x5 = 1, x4 = 0, x3 = 0, x2 = 1, x1 = 1, x0 = 0, yang jika dimasukkan ke dalam
rumus gerbang logika S7 akan menjadi seper berikut:
y0 = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
y1 = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
y2 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 0
y3 = 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1
y4 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
y5 = 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
y6 = 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
Maka, y = 01110102 = 58.
142 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

b. S9-S-box
y0 = x0x2 ⊕ x3 ⊕ x2x5 ⊕ x5x6 ⊕ x0x7 ⊕ x1x7 ⊕ x2x7 ⊕ x4x8 ⊕ x5x8
⊕ x7x8 ⊕ 1
y1 = x1 ⊕ x0x1 ⊕ x2x3 ⊕ x0x4⊕ x1x4 ⊕ x0x5 ⊕ x3x5 ⊕ x6 ⊕ x1x7
⊕ x2x7 ⊕ x5x8 ⊕ 1
y2 = x1 ⊕ x0x3 ⊕ x3x4 ⊕ x0x5 ⊕ x2x6 ⊕ x3x6 ⊕ x5x6 ⊕ x4x7 ⊕ x5x7
⊕ x6x7 ⊕ x8 ⊕ x0x8 ⊕ 1
y3 = x0 ⊕ x1x2 ⊕ x0x3 ⊕ x2x4 ⊕ x5 ⊕ x0x6 ⊕ x1x6 ⊕ x4x7 ⊕ x0x8
⊕ x1x8 ⊕ x7x8
y4 = x0x1 ⊕ x1x3 ⊕ x4 ⊕ x0x5 ⊕ x3x6 ⊕ x0x7 ⊕ x6x7 ⊕ x1x8 ⊕ x2x8
⊕ x3x8
y5 = x2 ⊕ x1x4 ⊕ x4x5 ⊕ x0x6 ⊕ x1x6 ⊕ x3x7 ⊕ x4x7 ⊕ x6x7 ⊕ x5x8
⊕ x6x8 ⊕ x7x8 ⊕ 1
y6 = x0 ⊕ x2x3 ⊕ x1x5 ⊕ x2x5⊕ x4x5 ⊕ x3x6 ⊕ x4x6 ⊕ x5x6 ⊕ x7
⊕ x1x8 ⊕ x3x8 ⊕ x5x8 ⊕ x7x8
y7 = x0x1 ⊕ x0x2 ⊕ x1x2 ⊕ x3⊕ x0x3 ⊕ x2x3 ⊕ x4x5 ⊕ x2x6⊕ x3x6 ⊕ x2x7
⊕ x5x7 ⊕ x8 ⊕ 1
y8 = x0x1 ⊕ x2 ⊕ x1x2 ⊕ x3x4⊕ x1x5 ⊕ x2x5 ⊕ x1x6 ⊕ x4x6 ⊕ x7 ⊕ x2x8
⊕ x3x8
TABEL 6.3 Tabel desimal S9
167 239 161 379 391 334 9 338 38 226 48 358 452 385 90 397
183 253 147 331 415 340 51 362 306 500 262 82 216 159 356 177
175 241 489 37 206 17 0 333 44 254 378 58 143 220 81 400
95 3 315 245 54 235 218 405 472 264 172 494 371 290 399 76
165 197 395 121 257 480 423 212 240 28 462 176 406 507 288 223
501 407 249 265 89 186 221 428 164 74 440 196 458 421 350 163
232 158 134 354 13 250 491 142 191 69 193 425 152 227 366 135
344 300 276 242 437 320 113 278 11 243 87 317 36 93 496 27
487 446 482 41 68 156 457 131 326 403 339 20 39 115 442 124
475 384 508 53 112 170 479 151 126 169 73 268 279 321 168 364
363 292 46 499 393 327 324 24 456 267 157 460 488 426 309 229
439 506 208 271 349 401 434 236 16 209 359 52 56 120 199 277
465 416 252 287 246 6 83 305 420 345 153 502 65 61 244 282
173 222 418 67 386 368 261 101 476 291 195 430 49 79 166 330
280 383 373 128 382 408 155 495 367 388 274 107 459 417 62 454
132 225 203 316 234 14 301 91 503 286 424 211 347 307 140 374
35 103 125 427 19 214 453 146 498 314 444 230 256 329 198 285
50 116 78 410 10 205 510 171 231 45 139 467 29 86 505 32
72 26 342 150 313 490 431 238 411 325 149 473 40 119 174 355
185 233 389 71 448 273 372 55 110 178 322 12 469 392 369 190
1 109 375 137 181 88 75 308 260 484 98 272 370 275 412 111
336 318 4 504 492 259 304 77 337 435 21 357 303 332 483 18
47 85 25 497 474 289 100 269 296 478 270 106 31 104 433 84
414 486 394 96 99 154 511 148 413 361 409 255 162 215 302 201
266 351 343 144 441 365 108 298 251 34 182 509 138 210 335 133
311 352 328 141 396 346 123 319 450 281 429 228 443 481 92 404
KRIPTOGRAFI MODERN 143

485 422 248 297 23 213 130 466 22 217 283 70 294 360 419 127
312 377 7 468 194 2 117 295 463 258 224 447 247 187 80 398
284 353 105 390 299 471 470 184 57 200 348 63 204 188 33 451
97 30 310 219 94 160 129 493 64 179 263 102 189 207 114 402
438 477 387 122 192 42 381 5 145 118 180 449 293 323 136 380
43 66 60 455 341 445 202 432 8 237 15 376 436 464 59 461

Contoh:
Jika kita memiliki nilai masukan sebesar 138, dengan menggunakan tabel desimal
S9[138], keluaran yang akan dihasilkan adalah 339. Sementara untuk gerbang logika
kita jabarkan:
138 = 0100010102
di mana x8 = 0, x7 = 1, x6 = 0, x5 = 0, x4 = 0, x3 = 1, x2 = 0, x1 = 1, x0 = 0, yang jika dimasukkan
ke dalam rumus gerbang logika S9 akan menjadi seper berikut:
y0 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
y1 = 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 1
y2 = 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 0
y3 = 0 ⊕ 0 ⊕ 0 ⊕0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
y4 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1
y5 = 0 ⊕0 ⊕0 ⊕0 ⊕0 ⊕1 ⊕0 ⊕0 ⊕0 ⊕0 ⊕0 ⊕1 = 0
y6 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1
y7 = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 0
y8 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 1
Maka, y = 1010100112 = 339.
KASUMI memiliki kunci K sebesar 128-bit. Untuk se ap iterasi, KASUMI menggunakan kunci
128-bit yang diturunkan dari K. Kunci K pertama dibagi menjadi 16-bit sebanyak 8 buah K1, …,
K8 di mana
K = K1 || K2 || K3 ||…|| K8 (6.21)

Array dari subkey kedua, Kj’ diturunkan dari Kj dengan cara berikut: untuk se ap integer j
dengan 1 ≤ j ≤ 8, maka
Kj’ = Kj ⊕ Cj (6.22)

di mana Cj adalah nilai konstanta pada TABEL 6.4.


TABEL 6.4 Nilai konstanta Cj
C1 0x0123
C2 0x456
C3 0x89AB
C4 0xCDEF
C5 0xFEDC
C6 0xBA98
C7 0x7654
C8 0x3210
144 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Round subkey diturunkan dari Kj and Kj’ sesuai dengan aturan pada TABEL 6.5.
TABEL 6.5 Tabel round subkey

1 2 3 4 5 6 7 8
KLi,1 K1<<<1 K2<<<1 K3<<<1 K4<<<1 K5<<<1 K6<<<1 K7<<<1 K8<<<1
KLi,2 K3’ K4’ K5’ K6’ K7’ K8’ K1’ K2’

KOi,1 K2<<<5 K3<<<5 K4<<<5 K5<<<5 K6<<<5 K7<<<5 K8<<<5 K1<<<5


KOi,2 K6<<<8 K7<<<8 K8<<<8 K1<<<8 K2<<<8 K3<<<8 K4<<<8 K5<<<8
KOi,3 K7<<<13 K8<<<13 K1<<<13 K2<<<13 K3<<<13 K4<<<13 K5<<<13 K6<<<13

KIi,1 K5’ K6’ K7’ K8’ K1’ K2’ K3’ K4’


Kli,2 K4’ K5’ K6’ K7’ K8’ K1’ K2’ K3’
Kli,3 K8’ K1’ K2’ K3’ K4’ K5’ K6’ K7’

6.3.2 Kriptografi Cipher Blok (Block Cipher)


Cipher blok adalah algoritma kriptografi pembagi plaintext yang akan dikirimkan menggunakan
ukuran tertentu (disebut blok) dengan panjang t, dan se ap blok akan dienkripsi dengan kunci
yang sama. Pada umumnya, cipher blok memproses plaintext dengan blok yang rela f panjang,
lebih dari 64 bit, untuk mempersulit penggunaan pola-pola serangan untuk membongkar kunci.
Misalnya, panjang bloknya 64 bit, maka algoritma enkripsi memerlukan 8 karakter se ap kali
enkripsi (1 karakter = 8 bit dalam pengodean ASCII). Algoritma enkripsi menghasilkan blok
ciphertext yang pada kebanyakan sistem kriptografi simetrik berukuran sama dengan blok
plaintext karena blok plaintext yang sama akan dienkripsi menjadi blok ciphertext yang sama
bila digunakan kunci yang sama pula. Hal ini berbeda dengan cipher aliran di mana bit-bit
plaintext yang sama akan dienkripsi menjadi bit ciphertext yang berbeda se ap kali dienkripsi.

Gambar 6.13 Blok cipher (Akram, 2012)


KRIPTOGRAFI MODERN 145
Misalkan blok plaintext (P) yang berukuran m bit dinyatakan sebagai vektor P = (p1, p2, …, pm)
yang dalam hal ini, pi adalah 0 atau 1 untuk i = 1, 2, …, m, dan blok ciphertext (C) adalah C = (c1,
c2, …, cm), yang dalam hal ini ci adalah 0 atau 1 untuk i = 1, 2, …, m. Jika plaintext dibagi menjadi
n buah blok, barisan blok-blok plaintext dinyatakan sebagai (P1, P2, …, Pn). Untuk se ap blok
plaintext Pi, bit-bit penyusunnya dapat dinyatakan sebagai vektor:
Pi = (pi1, pi2, …, pim) (6.23)

Enkripsi dan dekripsi dengan kunci K dinyatakan berturut-turut dengan Persamaan 6.24 dan
6.25.
EK(P) = C (6.24)

DK(C) = P (6.25)

Fungsi E haruslah fungsi yang berkorespondensi satu-ke-satu sehingga E-1 = D.


Algoritma cipher blok menggabungkan beberapa teknik kriptografi klasik berikut dalam proses
enkripsi sehingga dapat menjadi super enkripsi.
1. Subs tusi: Menggan kan satu atau sekumpulan bit pada blok plaintext tanpa mengubah
urutannya.
2. Transposisi atau permutasi: Memindahkan atau menggeser posisi bit pada blok plaintext
berdasarkan aturan tertentu.
3. Ekspansi: Memperbanyak jumlah bit pada blok plaintext berdasarkan aturan tertentu,
misalnya 32-bit menjadi 48-bit.
4. Kompresi: Kebalikan dari ekspansi, jumlah bit pada blok plaintext dimampatkan berdasarkan
aturan tertentu.
Pada tahun 1949, Claude Shannon memublikasikan makalahnya yang berjudul “Communi-
ca on Theory of Secrecy Systems”. Di dalam makalah itu terdapat dua prinsip penyandian
yang sering digunakan dalam perancangan cipher blok yang kuat, yaitu confusion dan diffusion
(Shannon, 1949).
1. Confusion
Prinsip ini menyembunyikan semua hubungan antara plaintext, ciphertext, dan kunci.
Prinsip confusion akan membuat kriptanalis frustrasi dalam pencarian pola-pola sta s k
yang muncul pada cipher. Jika diterapkan secara benar, prinsip ini akan membuat hubungan
sta s k antara plaintext, ciphertext, dan kunci menjadi sangat rumit.
2. Diffusion
Prinsip diffusion menyebarkan pengaruh satu bit plaintext atau kunci ke sebanyak mungkin
ciphertext. Sebagai contoh, pengubahan kecil pada plaintext sebanyak satu atau dua bit
akan menghasilkan perubahan pada ciphertext yang dak dapat diprediksi. Prinsip diffusion
juga menyembunyikan hubungan sta s k antara plaintext, ciphertext, dan kunci untuk
membuat kriptanalisis menjadi sulit.
146 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Untuk mendapatkan keamanan yang baik, prinsip confusion dan diffusion diulang berkali-kali
pada sebuah blok tunggal dengan kombinasi yang berbeda.
Sistem cipher blok juga mempunyai empat mode operasi yang dapat diterapkan untuk
melakukan enkripsi terhadap keseluruhan blok plaintext, yaitu electronic code book (ECB),
cipher block chaining (CBC), cipher feedback (CFB), dan output feedback (OFB).
1. Electronic code book (ECB)
Proses enkripsi pada mode ECB dilakukan dengan cara se ap blok plaintext pi dienkripsi
secara individual dan independen menjadi blok ciphertext Ci. Secara matema s, enkripsi
dengan mode ECB dinyatakan sebagai
Ci = EK (Pi)
Secara matema s, algoritma dekripsi mode ECB dinyatakan sebagai
Pi = DK (Ci)
K adalah kunci Pi, dan Ci masing-masing blok plaintext dan ciphertext ke-i.
Pada mode operasi ECB sebuah blok-input plaintext dipetakan secara sta s ke sebuah blok-
output ciphertext sehingga se ap plaintext yang sama akan menghasilkan ciphertext yang
selalu sama pula. Sifat-sifat mode operasi ECB adalah sebagai berikut:
a. sederhana dan efisien;
b. memungkinkan implementasi paralel;
c. dak menyembunyikan pola plaintext.
Mode ECB memungkinkan terjadinya ac ve a ack. Skema mode operasi ECB dapat dilihat
pada Gambar 6.14.

Gambar 6.14 Skema mode operasi ECB


(sumber: www.des asalma.blogspot.com)

Is lah code book di dalam ECB muncul dari fakta bahwa karena blok plaintext yang sama
selalu dienkripsi menjadi blok ciphertext yang sama, secara teore s dimungkinkan mem-
buat code-book plaintext dari ciphertext yang berkorespondensi. Jika ukuran blok semakin
besar, semakin besar pula ukuran code-book-nya. Jika blok berukuran 64 bit, misalnya,
code book terdiri atas 264 – 1 buah kode (entry), yang berar terlalu besar untuk disimpan.
Lagi pula se ap kunci mempunyai code book yang berbeda.
KRIPTOGRAFI MODERN 147
Contoh:
Plaintext dalam biner: 100011010100111010100
Bagi plaintext menjadi blok berukuran 4 bit:
1000 1101 0100 1110 1010 0000
Karena blok terakhir hanya 1 digit, dilakukan padding sehingga notasi HEX menjadi 8D4EA0.
Kunci (K) yang digunakan (panjangnya juga 4 bit) adalah 1110, atau E dalam HEX. Contoh
fungsi enkripsi E yang sederhana (tetapi lemah) adalah meng-XOR-kan blok plaintext Pi
dengan K, kemudian menggeser secara wrapping bit-bit dari pi ⊕ K satu posisi ke kiri.
Proses enkripsi untuk se ap blok ditampilkan pada TABEL 6.6.
TABEL 6.6 Proses enkripsi untuk se ap blok
Plaintext dalam biner 1000 1101 0100 1110 1010 0000
Kunci (K) 1110 1110 1110 1110 1110 1110
Hasil XOR 0110 0011 1011 0000 0100 1110
Geser 1 bit ke kiri 1100 0110 0111 0000 1000 1101
Dalam notasi HEX C6708D
Jadi, hasil enkripsi plaintext:
100011010100111010100000 (8D4EA0 dalam notasi HEX)
adalah
110001100111000010001101 (C6708D dalam notasi HEX)
Keuntungan mode ECB adalah sebagai berikut (Akram, 2012).
a. Apabila se ap blok plaintext dienkripsi secara independen, kita dak perlu mengen-
kripsi file secara linier. Kita dapat mengenkripsi 5 blok pertama, lalu berlanjut ke blok-
blok akhir, kembali ke blok-blok di tengah, dan seterusnya.
b. Mode ECB cocok untuk mengenkripsi arsip (file) yang diakses secara acak, misalnya
arsip-arsip basis data. Jika basis data dienkripsi dengan mode ECB, sembarang record
dapat dienkripsi atau didekripsi secara independen dari record lainnya (dengan asumsi
bahwa se ap record terdiri atas sejumlah blok diskret yang sama banyak).
c. Jika mode ECB dikerjakan dengan prosesor paralel, se ap prosesor dapat melakukan
enkripsi atau dekripsi blok plaintext yang berbeda-beda.
d. Jika satu atau lebih bit pada blok ciphertext mengalami kesalahan, kesalahan itu hanya
memengaruhi ciphertext yang bersangkutan pada waktu dekripsi. Blok-blok ciphertext
lainnya dak terpengaruh oleh kesalahan bit ciphertext tersebut.
Sementara kelemahan ECB adalah sebagai berikut (Rachman, 2010).
a. Karena bagian plaintext sering berulang, hasil enkripsinya menghasilkan blok ciphertext
yang sama. E-mail pesan, misalnya, sering mengandung bagian yang redundan seper
string 0 atau spasi panjang yang, bila dienkripsi, akan menghasilkan pola-pola ciphertext
yang mudah dipecahkan dengan serangan yang berbasis sta s k. Selain itu, e-mail
juga mempunyai struktur yang teratur yang menimbulkan pola-pola yang khas dalam
ciphertext-nya.
148 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

b. Pihak lawan dapat memanipulasi ciphertext untuk membodohi atau mengelabui


penerima pesan. Manipulasi, misalnya, dilakukan dengan menghapus beberapa buah
blok atau menyisipkan beberapa buah blok ciphertext baru.
Untuk mengatasi kelemahan ECB, kita bisa menggunakan cara-cara berikut.
a. Gunakan ukuran blok yang besar, misalnya 64 bit, sebab ukuran blok yang besar dapat
menghilangkan kemungkinan menghasilkan blok-blok yang iden k.
b. Atur agar enkripsi se ap blok individual bergantung pada semua blok sebelumnya.
Dengan cara ini blok plaintext yang iden k akan menghasilkan blok ciphertext yang
berbeda, dan manipulasi ciphertext mungkin menghasilkan pesan hasil dekripsi yang
dak bermakna.
2. Cipher block chaining (CBC)
Pada mode cipher block chaining, hasil enkripsi dari blok sebelumnya memengaruhi hasil
enkripsi selanjutnya, atau enkripsi sebelumnya menjadi feedback untuk enkripsi blok saat
itu. Jadi, se ap blok ciphertext bergantung bukan hanya pada blok plaintext- nya, tetapi
bergantung pula pada blok-blok plaintext sebelumnya sehingga plaintext yang sama belum
tentu menghasilkan ciphertext yang sama pula.
Dekripsi dilakukan dengan memasukkan blok ciphertext yang current ke fungsi dekripsi,
kemudian meng-XOR-kan hasilnya dengan blok ciphertext sebelumnya. Pada mode CBC,
blok ciphertext sebelumnya berfungsi sebagai umpan-maju (feedforward) pada akhir
proses dekripsi.
Gambar 6.15 merupakan ilustrasi mode operasi CBC. Proses enkripsi diawali dengan meng-
XOR-kan plaintext menggunakan ini aliza on vector (IV), baru kemudian dilakukan enkripsi.
Setelah itu, ciphertext pertamanya akan dikirimkan kepada si penerima. Plaintext ke-2 pun
demikian, harus di-XOR-kan terlebih dahulu dengan ciphertext sebelumnya, kemudian
mengalami proses enkripsi baru, lalu dikirimkan kepada si penerima sebagai ciphertext 2.

Gambar 6.15 Skema mode operasi CBC


(sumber: www.destiasalma.blogspot.com)
KRIPTOGRAFI MODERN 149
Sifat-sifat mode operasi CBC adalah sebagai berikut:
a. lebih aman dari ac ve a acks dibandingkan dengan mode operasi ECB;
b. kesalahan pada satu ciphertext dapat berakibat parah;
c. menutupi pola plaintext.
Secara matema s, enkripsi dan dekripsi dengan mode CBC dinyatakan dengan persamaan
berikut:
Ci = EK (Pi ⊕ Ci-1)
Pi = DK (Ci ⊕ Ci-1) (6.26)
Pada enkripsi blok pertama C0 = ini aliza on vector (IV). IV diberikan oleh pengguna atau
dibangkitkan secara acak oleh program. Jadi, untuk menghasilkan blok ciphertext pertama
(Ci), IV digunakan untuk menggan kan blok ciphertext sebelumnya (C0). Sebaliknya, pada
dekripsi, blok plaintext pertama diperoleh dengan cara meng-XOR-kan IV dengan hasil
dekripsi terhadap blok ciphertext pertama. Nilai IV dak perlu dirahasiakan.
Contoh:
Plaintext: 100011010100111010100
Bagi plaintext menjadi blok-blok yang berukuran 4 bit:
1000 1101 0100 1110 1010 0000
Atau, 8D4EA0 dalam notasi HEX. Misalkan kunci (K) yang digunakan (panjangnya juga 4 bit)
adalah 1110 atau E dalam notasi HEX, sedangkan IV yang digunakan seluruhnya bit 0 (jadi,
C0 = 0000). Misalkan fungsi enkripsi E yang sederhana adalah meng-XOR-kan blok plaintext
Pi dengan K, kemudian menggeser secara wrapping bit-bit dari Pi ⊕ K satu posisi ke kiri.
C1 diperoleh dari
P1 ⊕ C0 = 1000 ⊕ 0000 = 1000
Enkripsi 1000 dengan fungsi E:
1000 ⊕ K = 1000 ⊕ 1110 = 0110
Geser 0110 satu bit ke kiri = 1100
Jadi, C1 = 1100 (atau C dalam HEX)
C2 diperoleh dari
P2 ⊕ C1 = 1101 ⊕ 1100 = 0001
Enkripsi 0001 dengan fungsi E:
0001 ⊕ K = 0001 ⊕ 1110 = 1111
Geser 1111 satu bit ke kiri = 1111
Jadi, C2 = 1111 (atau F dalam HEX)
C3 diperoleh dari
P3 ⊕ C2 = 0100 ⊕ 1111 = 1011
Enkripsi 1011 dengan fungsi E:
1011 ⊕ K = 1011 ⊕ 1110 = 0101
Geser 0101 satu bit ke kiri = 1010
Jadi, C3 = 1010 (atau A dalam HEX)
150 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

C4 diperoleh dari
P4 ⊕ C3 = 1110 ⊕ 1010 = 0100
Enkripsi 0100 dengan fungsi E:
0100 ⊕ K = 0000 ⊕ 1110 = 1110
Geser 1110 satu bit ke kiri = 1101
Jadi, C4 = 1101 (atau D dalam HEX)
C5 diperoleh dari
P5 ⊕ C4 = 1010 ⊕ 1101 = 0111
Enkripsi 0111 dengan fungsi E:
0111 ⊕ K = 0111 ⊕ 1110 = 1001
Geser 1001 satu bit ke kiri = 0011
Jadi, C5 = 0011 (atau 3 dalam HEX)
C6 diperoleh dari
P6 ⊕ C5 = 0000 ⊕ 0011 = 0011
Enkripsi 0011 dengan fungsi E:
0011 ⊕ K = 0011 ⊕ 1110 = 1101
Geser 1101 satu bit ke kiri = 1011
Jadi, C6 = 1011 (atau B dalam HEX)
Dengan demikian,
plaintext : 8D4EA0
ciphertext (mode ECB) : C6708D
ciphertext (mode CBC) : CFAD3B
Keuntungan mode CBC adalah sebagai berikut.
a. Pesan menjadi jauh lebih aman untuk dideteksi kuncinya karena kunci se ap blok
berbeda-beda tergantung pada plaintext sebelumnya.
b. Karena blok-blok plaintext yang sama dak menghasilkan blok-blok ciphertext yang
sama, kriptanalisis menjadi lebih sulit dilakukan.
Sementara berikut adalah kelemahan mode CBC.
a. Karena blok ciphertext yang dihasilkan selama proses enkripsi bergantung pada blok-
blok ciphertext sebelumnya, kesalahan satu bit pada sebuah blok plaintext akan
merambat pada blok ciphertext yang berkorespondensi dan semua blok ciphertext
berikutnya.
b. Kesalahan bit ciphertext biasanya terjadi karena adanya gangguan pada saluran
komunikasi data selama transmisi atau malafungsi pada media penyimpanan.
c. Proses mode CBC jauh lebih rumit dan membutuhkan penanganan matema k daripada
mode ECB.
Selain keuntungan dan kelemahan, kita juga perlu memperha kan persoalan keamanan
yang muncul pada mode CBC.
a. Karena blok cipher memengaruhi blok-blok berikutnya, pihak lawan dapat menambah-
kan blok ciphertext pada akhir pesan terenkripsi tanpa terdeteksi.
KRIPTOGRAFI MODERN 151
b. Pihak lawan dapat mengubah ciphertext, misalnya mengubah sebuah bit pada suatu
blok ciphertext.
3. Cipher feedback (CFB)
Pada mode cipher feedback, data dienkripsikan dalam unit yang lebih kecil daripada ukuran
blok. Unit yang dienkripsikan dapat berupa bit per bit, 2 bit, 3 bit, dan seterusnya. Bila unit
yang dienkripsikan satu karakter se ap kalinya, mode CFB-nya disebut CFB 8-bit.
Secara umum CFB p-bit mengenkripsi plaintext sebanyak p bit se ap kalinya, yang dalam
hal ini, p ≤ n (n = ukuran blok). Dengan kata lain, CFB mengenkripsi cipher blok seper
pada cipher aliran. Mode CFB membutuhkan sebuah antrean yang berukuran sama dengan
ukuran blok masukan, contohnya CFB 8-bit yang bekerja pada blok berukuran 64-bit (habis
dibagi 8-bit).
Secara formal, mode CFB dapat dinyatakan dengan persamaan berikut:
Proses enkripsi: Ci = Pi ⊕ MSBm(Ek (Xi))
Xi+1 = LSBm – n(Xi) || Ci
Proses dekripsi: Pi = Ci ⊕ MSBm(Ek (Xi))
Xi+1 = LSBm – n(Xi) || Ci (6.27)
Keterangan:
Xi isi antrean, di mana X1 adalah IV
E fungsi enkripsi dengan algoritma cipher blok
K kunci
m panjang blok enkripsi
n panjang unit enkripsi
|| operator penyambungan (concatena on)
MSB most significant byte
LSB least significant byte
Berikut diuraikan proses yang dilakukan pada enkripsi dengan CFB.
a. Antrean diisi dengan IV seper pada mode CBC.
b. Enkripsikan antrean dengan kunci K.
c. Nilai bit (8-bit) dari byte/karakter paling kiri dari hasil enkripsi berlaku sebagai
keystream yang kemudian di-XOR-kan dengan nilai bit (8-bit) karakter pertama dari
plaintext sehingga menjadi karakter (8-bit) pertama dari ciphertext. Karakter ciphertext
ini dikirim (pada aplikasi komunikasi data) atau disimpan (pada aplikasi penyimpanan
data).
d. Salinan karakter ciphertext kemudian dimasukkan ke dalam antrean dari sebelah kanan
sehingga seluruh karakter yang ada pada antrean tergeser ke kiri dan menggan kan
karakter 8-bit pertama (paling kiri) yang telah digunakan.
e. Proses berulang kembali untuk blok-blok selanjutnya.
152 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 6.16 Proses enkripsi dengan mode CFB

Lebih lanjut, berikut dijelaskan proses dekripsi dengan mode CFB.


a. Antrean diisi dengan IV seper pada mode CBC.
b. Dekripsikan antrean dengan kunci K.
c. Nilai bit (8-bit) dari byte/karakter paling kiri dari hasil enkripsi berlaku sebagai keystream
yang kemudian di-XOR-kan dengan nilai bit (8-bit) karakter pertama dari ciphertext
sehingga menjadi karakter (8-bit) pertama dari plaintext.
d. Salinan blok ciphertext yang telah didekripsi kemudian dimasukkan ke dalam antrean
dari sebelah kanan sehingga seluruh karakter pada antrean ikut tergeser ke kiri dan
menggan kan karakter 8-bit pertama (paling kiri) yang telah digunakan.
e. Proses diulang untuk blok-blok selanjutnya.

Gambar 6.17 Proses dekripsi dengan mode CFB

3. Output feedback (OFB)


Mode OFB mirip dengan mode CFB. Perbedaannya terletak pada penyalinan karakter p-bit
paling kiri hasil enkripsi terhadap antrean menjadi elemen posisi paling kanan di antrean.
OFB 8-bit bekerja pada blok berukuran 64-bit (setara dengan 8 byte).
KRIPTOGRAFI MODERN 153

Gambar 6.18 Proses enkripsi dengan mode OFB

Dekripsi dilakukan sebagai kebalikan proses enkripsi.

Gambar 6.19 Proses dekripsi dengan mode OFB

Algoritma kriptografi cipher blok yang sudah pernah dipublikasikan di antaranya adalah
Data Encryp on Standard (DES), Triple DES (3DES), Interna onal Data Encryp on Algorithm
(IDEA), Blowish, Gost, Safer, LOKI, FEAL, RC2, RC5, Serpent, dan sebagainya. Algoritma
kriptografi yang terbaru adalah Advanced Encryp on Standard (AES).

6.3.2.1 Data Encryp on Standard (DES)


Data Encryp on Standard (DES) atau dikenal juga sebagai Data Encryp on Algorithm (DEA)
oleh ANSI dan DEA-1 oleh ISO merupakan algoritma kriptografi kunci simetrik (menggunakan
kunci yang sama untuk melakukan enkripsi dan dekripsi) yang paling umum digunakan saat ini.
Sejarah DES dimulai dari permintaan pemerintah Amerika Serikat untuk memasukkan proposal
enkripsi. Algoritma DES dibuat di IBM dan merupakan modifikasi dari algoritma terdahulu yang
bernama Lucifer. Lucifer merupakan algoritma cipher blok yang beroperasi pada blok masukan
64 bit dan kuncinya berukuran 128 bit. Pengurangan jumlah bit kunci pada DES dilakukan
dengan alasan agar mekanisme algoritma ini bisa diimplementasikan dalam satu chip. Horst
Feistel merupakan salah satu periset yang mula-mula mengembangkan DES ke ka bekerja di
IBM Watson Laboratory di Yorktown Heights, New York. DES baru secara resmi digunakan oleh
pemerintah Amerika Serikat pada tahun 1977.
154 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

DES juga mengundang banyak kontroversi dari para ahli di seluruh dunia. Salah satu kontroversi
tersebut adalah mengenai S-box yang digunakan pada DES. S-box merupakan bagian vital dari
DES yang paling sulit dipecahkan. Hal itu karena S-box merupakan satu-satunya bagian DES
yang komputasinya dak linier. Sementara itu, rancangan S-box sendiri dak diberitahukan
kepada publik. Oleh karena itu, banyak yang curiga bahwa S-box dirancang sedemikian rupa
sehingga memberikan trapdoor kepada NSA agar NSA bisa membongkar semua ciphertext yang
dienkripsi dengan DES kapan saja. Kontroversi yang kedua adalah jumlah bit pada kunci DES
yang dianggap terlalu kecil, hanya 56 bit. Akibatnya, DES rawan terhadap serangan brute force.
Namun demikian, DES tetap digunakan pada banyak aplikasi seper pada enkripsi personal
iden fica on numbers (PIN) di mesin automa c teller machine (ATM), enkripsi password di
sistem UNIX, transaksi perbankan lewat internet, serta organisasi-organisasi pemerintahan di
Amerika (Department of Energy, Jus ce Department, dan Federal Reserve System menggunakan
DES untuk melindungi penyebaran data mereka).
DES dengan penggunaan biasa (cookbook mode) yang panjang kuncinya 56 bit saat ini sudah
dianggap dak aman karena telah berhasil dipecahkan dengan metode coba-coba (brute force
a ack). Brute force a ack dilakukan dengan cara mencoba semua kombinasi yang terdiri atas
256 kombinasi atau sekitar 7 x 1017 atau 70 juta miliar kombinasi untuk membongkar algoritma
ini. Ada berbagai grup yang mencoba memecahkan DES dengan berbagai cara. Salah satu
grup yang bernama distributed.net menggunakan teknologi internet untuk memecahkan
problem ini menjadi sub permasalahan yang lebih kecil (dalam ukuran blok). Pengguna dapat
menjalankan sebuah program yang khusus dikembangkan oleh m ini untuk mengambil
beberapa blok melalui internet, kemudian memecahkannya di komputer pribadinya. Program
yang disediakan melipu berbagai sistem operasi seper Windows, DOS, berbagai variasi Unix,
serta Macintosh. Blok yang sudah diproses dikembalikan ke distributed.net melalui internet.
Mekanisme ini dapat memecahkan DES dalam waktu 30 hari (Rahardjo, 2005).

Gambar 6.20 Contoh peragaan client distributed.net


untuk Windows 95 (Rahardjo, 2005)
KRIPTOGRAFI MODERN 155
Grup lain yang disebut Electronic Fron er Founda on (EFF) membuat sebuah komputer yang
dilengkapi dengan integrated circuit chip DES cracker. DES 56-bit dapat dipecahkan grup ini
dengan mesin seharga US$50.000 dalam waktu rata-rata empat sampai lima hari. DES cracker
yang mereka kembangkan dapat melakukan eksplorasi keseluruhan dari 56-bit keyspace
dalam waktu sembilan hari. Karena 56-bit memiliki 216 (atau 65.536) keyspace dibandingkan
DES dengan 40-bit, untuk memecahkan DES 40-bit hanya dibutuhkan waktu sekitar 12 de k
sehingga dengan menggunakan hukum rata-rata, waktu untuk memecahkan DES 40-bit adalah
6 de k.
Algoritma DES terbagi menjadi ga kelompok, yaitu pemrosesan kunci, enkripsi data 64 bit,
dan dekripsi data 64 bit, di mana kelompok yang satu dengan yang lain saling berinteraksi
dan terkait. Algoritma DES dirancang untuk mengenkripsi dan mendekripsi data dalam blok
data yang terdiri atas 64 bit di bawah kontrol kunci 64 bit. Dekripsi data harus dikerjakan
menggunakan kunci yang sama dengan yang dipakai untuk mengenkripsi data, dengan
penjadwalan alamat kunci bit yang diubah sehingga proses membaca merupakan kebalikan
dari proses menulis.
DES mengenkripsikan 64 bit plaintext menjadi 64 bit ciphertext dengan menggunakan 56 bit
kunci internal yang dibangkitkan dari 64 bit kunci eksternal. Kunci eksternal merupakan kunci
yang dimasukkan oleh pengguna pada sistem, sedangkan kunci internal merupakan kunci yang
digunakan untuk melakukan enkripsi pada se ap putaran DES (ada 16 putaran) yang diperoleh
dari kunci eksternal yang telah diproses.

Gambar 6.21 Skema global algoritma DES

Skema global algoritma DES seper diperlihatkan pada Gambar 6.21 adalah sebagai berikut.
1. Blok plaintext dipermutasi dengan matriks permutasi awal (ini al permuta on atau IP).
Plaintext merupakan data yang akan dienkripsi. Plaintext ini direpresentasikan sebagai bit,
misalnya huruf P direpresentasikan sebagai 01010000. Keseluruhan plaintext dibagi ke
dalam blok-blok. Se ap blok terdiri atas 64 bit.
156 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

2. Hasil permutasi awal kemudian dienkripsikan sebanyak 16 kali (16 putaran). Se ap putaran
menggunakan kunci internal yang berbeda.
3. Hasil enkripsi kemudian dipermutasikan dengan matriks permutasi balikan (inverse ini al
permuta on atau IP-1) menjadi blok ciphertext.

6.3.2.1.1 Pemrosesan Kunci


Algoritma pemrosesan kunci akan sangat berguna sewaktu dilakukan implementasi pada
program. Pembangkitan kunci internal DES dapat dilihat pada Gambar 6.22.

Gambar 6.22 Proses pembangkitan kunci internal DES

Adapun algoritmanya adalah sebagai berikut.


1. Pengguna memasukkan sebuah kunci sebesar 64 bit atau 8 karakter, di mana nan nya
se ap bit dalam kunci ini akan digunakan sebagai bit paritas. Misalkan kunci eksternal =
PASSWORD:
P = 01010000 A = 01000001 S = 01010011
S = 01010011 W = 01010111 O = 01001111
R = 01010010 D = 01000100
2. Sebelum dilakukan permutasi terhadap kunci tersebut, perlu diadakan penjadwalan kunci
rahasia (secret key-schedulling). Hal ini dilakukan untuk menyusun 16 buah kunci yang
akan dimasukkan pada se ap iterasi DES, baik pada enkripsi maupun dekripsi. Lebih lanjut,
jika dituliskan dalam bentuk biner, kunci eksternal PASSWORD akan menjadi 01010000
01000001 01010011 01010011 01010111 01001111 01010010 01000100.
KRIPTOGRAFI MODERN 157
3. Langkah selanjutnya adalah proses permutasi. Permutasi dilakukan pada kunci 64 bit. Pada
tahapan ini bit-bit paritas dak dilibatkan sehingga bit kunci berkurang menjadi 56 bit. Bit
1 pada kunci ke-56 adalah bit 57 pada kunci awalnya, bit 2 adalah bit 49, dan seterusnya
hingga bit 56 adalah bit 4 kunci 64. Posisi bit hasil permutasi pada langkah pertama ini
diberi nama permuted choice 1 (PC-1), seper terlihat pada TABEL 6.7.
TABEL 6.7 Permuted choice 1 (PC-1)
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
Hasilnya PC-1 pada contoh tersebut menjadi 0000000 0111111 1100000 0000101 0111110
0101100 0000100 0001101.
4. Output pada PC-1 selanjutnya dibagi menjadi dua bagian. 28 bit pertama disebut C(0),
sedangkan 28 bit terakhir disebut D(0).
a. C0 berisi bit-bit dari K pada posisi berikut:
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36
b. D0 berisi bit -bit dari K pada posisi berikut:
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
Nilai C0 dan D0 untuk contoh di atas menjadi
C0 = 0000000 0111111 1100000 0000101
D0 = 0111110 0101100 0000100 0001101
5. Langkah selanjutnya adalah menggeser kedua bagian ke kiri (le shi ) sepanjang satu
atau dua bit bergantung pada se ap putaran. Operasi penggeseran bersifat wrapping atau
round-shi . Jumlah penggeseran pada se ap putaran ditunjukkan pada TABEL 6.8.
TABEL 6.8 Step rotasi yang dilakukan pada se ap iterasi
Iterasi ke- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Jml. step 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Misalkan (Ci, Di) menyatakan penggabungan Ci dan Di , (Ci+1, Di+1) diperoleh dengan
menggeser Ci dan Di satu atau dua bit. Berdasarkan TABEL 6.8, pada iterasi ke-1 jumlah step
rotasi penggeserannya adalah 1 sehingga nilai C0 dan D0 pada iterasi ke-1 menjadi
C1 = 0000000 1111111 1000000 0001010
D1 = 1111100 1011000 0001000 0011010
6. Pada se ap hasil Cj dan Dj, kunci pada iterasi ke-j didapatkan dengan cara melakukan
permutasi kembali pada Cj dan Dj. Permutasi tersebut dikenal dengan nama permuted
choice 2 (PC-2), seper terlihat pada TABEL 6.9.
158 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

TABEL 6.9 Permuted choice 2 (PC-2)


14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Dengan menggunakan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di). Dalam hal ini,
Ki merupakan penggabungan bit-bit Ci pada posisi berikut:
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2
dengan bit-bit Di pada posisi berikut:
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
Jadi, se ap kunci internal Ki mempunyai panjang 48 bit.
Iterasi ke-1 untuk contoh di atas menghasilkan nilai berikut:
K1 = 101000 001001 001001 001010 011001 100010 001001 100111
K2 diperoleh dari permuted choice 2 yang dilakukan pada C1 dan D1 yang digeser 1 bit ke
kiri sesuai dengan TABEL 6.8 (iterasi ke-2 penggeseran bit = 1) sehingga didapatkan nilai C2
dan D2:
C2 = 0000000 1111111 0000001 0010100
D2 = 1111001 0110000 0010000 0110101
K2 = 101101 000011 001011 000010 011100 101100 000100 000011
K3 diperoleh dari permuted choice 2 yang dilakukan pada C2 dan D2 yang digeser 2 bit ke kiri
sesuai dengan TABEL 6.8 (iterasi ke-3 penggeseran bit = 2). Iterasi dilakukan terus-menerus
hingga ke-16 kunci berhasil disusun. Contoh ini juga bisa dilihat pada h p://www.even d.
net/docs/desexample.htm.
KRIPTOGRAFI MODERN 159

6.3.2.1.2 Enkripsi Pesan


Perhitungan dalam proses enkripsi algoritma DES dapat dilihat pada Gambar 6.23.

Gambar 6.23 Algoritma enkripsi DES

Sebelum putaran pertama, terhadap blok plaintext dilakukan permutasi awal/IP. Tujuan
permutasi awal adalah untuk mengacak plaintext sehingga urutan bit-bit di dalamnya berubah.
160 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Pengacakan dilakukan dengan matriks permutasi awal seper tampak pada TABEL 6.10.
TABEL 6.10 Permutasi awal (IP)
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Cara membaca TABEL 6.10: misalkan untuk dua entri ujung kiri atas (58 dan 50), “pindahkan bit
ke-58 ke posisi bit 1”, “pindahkan bit ke-50 ke posisi bit 2”, dan seterusnya sampai pada bit 7
di posisi kanan bawah pada TABEL 6.10 yang berar “pindahkan bit ke-7 ke posisi bit terakhir”.
Blok input yang mengalami permutasi kemudian menjadi input pada perhitungan dan
tergantung pada kunci kompleks. Output perhitungan ini disebut preoutput. Output tersebut
akan diteruskan pada permutasi berikutnya yang merupakan kebalikan dari permutasi awal.
TABEL 6.11 merupakan tabel kebalikan dari IP, yaitu IP-1.
TABEL 6.11 IP-1, kebalikan dari IP
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 4 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Output dari algoritma di atas mempunyai bit 40 dari blok preoutput sebagai bit pertamanya, bit
8 sebagai bit kedua, dan bit 25 sebagai bit terakhir. Perhitungan yang menggunakan blok input
dikenakan permutasi sebagai input untuk menghasilkan blok preoutput. Proses pertukaran
blok akhir, yaitu pada iterasi ke-16 merupakan fungsi cipher f yang mengoperasikan 2 blok,
yaitu salah satu dari 32 bit dan salah satu dari 48 bit. Kalkulasi tersebut akan menghasilkan
blok sepanjang 32 bit. 64 bit dari blok input adalah 32 bit blok L yang diiku oleh 32 bit blok L.
Input blok ini didefinisikan sebagai LR. K menjadi input blok dari 48 bit yang dipilih dari 64 bit
kunci. Kemudian, output L’R’ dari iterasi dengan input LR menghasilkan Persamaan 6.28.
L’ = R
R’ = L(+)f(R,K) (6.28)

di mana (+) merupakan penambahan bit demi bit yang kemudian dibagi 2.
Input iterasi pertama dari perhitungan tersebut adalah blok input yang mengalami permutasi.
L’R’ adalah output dari iterasi ke-16, kemudian R’L’ adalah blok preoutput. Pada se ap iterasi
KRIPTOGRAFI MODERN 161
sebuah blok yang berbeda, K adalah kunci bit yang dipilih dari 64 kunci yang ditunjukkan KEY.
KS menjadi sebuah fungsi yang menggunakan bilangan bulat n dengan jangkauan dari bilangan
1 sampai bilangan 16 dan blok 64 bit KEY sebagai input serta hasilnya sebagai output blok 48
bit Kn. Nilai Kn ditentukan oleh bit dalam posisi bit yang berbeda dengan KEY. KS disebut kunci
skedul karena blok K digunakan dalam iterasi ke-n (Persamaan 6.28) dan blok Kn ditentukan
oleh Persamaan 6.29.
Kn = KS(n, KEY) (6.29)

Karena sebelumnya blok input dipermutasikan dengan LR, akhirnya L0 dan R0 berubah menjadi
L dan R, sedangkan Ln dan Rn berubah menjadi L’ dan R’. Selanjutnya, L dan R berubah menjadi
Ln-1 dan Rn-1. K merupakan Kn, yaitu ke ka n dalam jangkauan bilangan 1 sampai bilangan 16.
Perha kan Persamaan 6.30.
Ln = Rn-1
Rnn = Ln-1(+)f(Rn-1, Kn) (6.30)

Blok preoutput dari persamaan di atas adalah R16 L16

6.3.2.1.3 Dekripsi Pesan


IP-1 menerapkan blok preoutput yang merupakan kebalikan dari IP. Adapun persamaan berikut
merupakan kelanjutan dari Persamaan 6.28.
R’ = L
L’ = R(+)f(L’,K) (6.31)

Akibatnya, penguraian pesan harus menerapkan algoritma yang sama pada waktu pesan
dienkripsi. Dengan mengambil masing-masing iterasi dan perhitungan blok yang sama dari
kunci bit K, penguraian itu dilakukan. Dengan menggunakan notasi-notasi dari persamaan
sebelumnya, Persamaan 6.32 akan menjelaskan kondisi berikut:
Rn-1 = Ln
Ln-1 = Rn(+)f(Ln,Kn) (6.32)

Setelah ada Persamaan 6.32, sekarang R16L16 adalah blok input dari permutasi dalam
perhitungan penguraian, sedangkan L0 dan R0 adalah blok preoutput. Penguraian perhitungan
menggunakan R16L16 sebagai input permutasi. K16 digunakan dalam iterasi yang pertama, K15
pada iterasi kedua, dan seterusnya sampai K1 yang digunakan pada iterasi ke-16.
162 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

6.3.2.1.4 Fungsi Cipher F


Perhitungan dari fungsi f(R,K) dapat dilihat pada Gambar 6.24.

Gambar 6.24 Fungsi cipher F

E adalah fungsi yang mengambil blok 32 bit sebagai input dan hasil 48 bit sebagai output. E
48 bit yang merupakan output ditulis sebagai 8 blok dari 6 bit yang masing-masing diperoleh
dengan cara menyeleksi bit dalam input. Perha kan TABEL 6.12.
TABEL 6.12 E-bit seleksi
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 33
3 bit pertama dari E adalah bit dalam posisi 32, kemudian bit ke-1 disusul bit ke-2 dari R dan 2
bit E yang terakhir adalah bit dalam posisi 32 dan 1. Masing-masing fungsi seleksi untuk S1, S2,
…, S8 mengambil blok 6 bit sebagai input dan hasil blok 4 bit sebagai output. Pengilustrasiannya
dengan menggunakan tabel yang berisi S1 terlihat seper pada TABEL 6.13.
KRIPTOGRAFI MODERN 163
TABEL 6.13 Fungsi seleksi
S1
Column Number
Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Number
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Jika S1 adalah fungsi yang didefinisikan dalam tabel, dan B adalah blok dari 6 bit, S1(B) ditentu-
kan dengan cara berikut.
1. Bit pertama dan bit terakhir B mewakili, pada base 2, sebuah angka dalam jangkauan 0
sampai 3. Angka tersebut didefinisikan sebagai i.
2. 4 bit di tengah B mewakili, pada base 2, sebuah angka dalam jangkauan 0 sampai
dengan 15. Angka tersebut didefinisikan sebagai j.
3. Lihat TABEL 6.13, angka dalam baris ke-i dan kolom ke-j. Angka dalam jangkauan 0
sampai dengan 15 diwakili oleh 4 bit blok.
4. Blok itu adalah output S1(B) dan S1 untuk input B.
Sebagai contoh, untuk input 0 1 1 0 1 1:
Baris : 0 1 nilai desimalnya adalah 1 sehingga nilai baris = 1.
Kolom : 1 1 0 1 nilai desimalnya adalah 13 sehingga nilai kolom = 13.
Hasil fungsi permutasi P output 32 bit dari input 32 bit dengan permutasi bit dari input blok
dapat dilihat pada TABEL 6.14.
TABEL 6.14 Tabel P

16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Output P(L) untuk fungsi P didefinisikan oleh tabel di atas dan diperoleh dari input L dengan
mengambil bit ke-16 dari L sebagai bit pertama P(L), bit ke-7 sebagai bit ke-2 dari P(L), dan
seterusnya sampai bit ke-25 dari L diambil sebagai bit ke-32 dari P(L).
S1,S2, …, S8 menjadi fungsi seleksi yang berbeda, P menjadi fungsi permutasi, dan E menjadi
fungsi yang telah didefinisikan di atas. Langkah pertama untuk mendefinisikan f(R,K) adalah
merumuskan B1, …, B8 menjadi blok dari 6 bit masing-masing untuk Persamaan 6.33.
B1, B2,…, B8 = K (+) E(R) (6.33)
164 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Blok f(R,K) kemudian didefinisikan menjadi Persamaan 6.34.


P(S1(B1) (S2(B2) … (S8(B8)) (6.34)

Jadi, K (+) E(R) adalah hasil pertama yang dibagi dalam 8 blok input yang dapat dilihat pada
Persamaan 6.33, kemudian masing-masing B1 diambil sebagai input untuk S1. 8 blok (S1(B1)
(S2,B2), … (S8(B8)) dari 4 bit masing-masing digabungkan menjadi blok tunggal dari 32 bit yang
membentuk input P. Output pada Persamaan 6.34 kemudian menjadi input untuk R dan K.

6.3.2.1.5 Enkripsi Data 64-Bit


Algoritma yang menunjang adanya enkripsi data 64 bit adalah sebagai berikut.
1. Mengambil blok data sebanyak 64 bit. Jika pengambilan blok data kurang dari 64 bit, perlu
ada penambahan supaya dalam penggunaannya ada kesesuaian dengan jumlah datanya.
2. Dibentuk IP pada blok data 64 bit dengan memperha kan permutasi pada TABEL 6.15.
TABEL 6.15 Permutasi awal

58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
3. Bagilah blok data tersebut menjadi 2 bagian. 32 bit pertama disebut L[0] dan 32 bit kedua
disebut R[0].
4. Keenam belas subkey dioperasikan dengan blok data, dimulai dari j = 1. Caranya adalah
sebagai berikut.
a. R[j-1] dikembangkan menjadi 48-bit menurut fungsi pemilihan ekspansi seper terlihat
pada TABEL 6.16.
TABEL 6.16 Expansion (E)
32 1 2 3 4 5 6 7 8 9
8 9 10 11 12 13 14 15 16 17
16 17 18 19 20 21 22 23 24 25
24 25 26 27 28 29 30 31 32 33
b. Langkah berikutnya adalah meng-XOR-kan E(R[j-1]) dengan K[j].
c. Hasil E(R[j-1]) XOR K[j] dipecah menjadi delapan blok 6-bit. Kelompok bit 1–6 disebut
B[1], bit 7–12 disebut B[2], dan seterusnya hingga bit 43–48 disebut B[8].
d. Jumlah bit dikurangi dengan penukaran nilai-nilai yang ada dalam tabel S untuk se ap
B[j]. Dimulai dengan j = 1, se ap nilai dalam tabel S memiliki 4 bit.
KRIPTOGRAFI MODERN 165
e. Adapun langkah-langkah dalam tahap ini adalah sebagai berikut.
1) Mengambil bit ke-1 dan ke-6 dari B[j] secara bersama-sama sebagai nilai 2 bit,
misalnya m, yang menunjukkan baris dalam tabel S[j].
2) Mengambil bit ke-2 hingga ke-5 dari B[j] sebagai nilai 4 bit, misalnya n, yang
menunjukkan kolom dalam S[j].
3) Hasil proses ini adalah S[j][m][n] untuk se ap B[j] sehingga banyaknya iterasi yang
diperoleh adalah 8 kali. Hasil ini sering disebut juga subs tu on box yang terdiri
atas 8 buah iterasi seper terlihat pada TABEL 6.17–6.24.
TABEL 6.17 Subs tu on box-1 (S[1])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
TABEL 6.18 Subs tu on box-2 (S[2])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
TABEL 6.19 Subs tu on box-3 (S[3])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
TABEL 6.20 Subs tu on box-4 (S[4])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
TABEL 6.21 Subs tu on box-5 (S[5])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 14 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
166 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

TABEL 6.22 Subs tu on box-6 (S[6])


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 15 10 11 14 1 7 6 0 8 13 12
TABEL 6.23 Subs tu on box-7 (S[7])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
TABEL 6.24 Subs tu on box-8 (S[8])
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
4) Permutasi dilakukan kembali pada kombinasi hasil subs tusi S[1][m][n] sampai
dengan S[8][m2][n2] dengan memperha kan keterangan pada TABEL 6.25.
TABEL 6.25 Permuta on P
16 7 20 21 29 12 18 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
5) Hasil permutasi kemudian di-XOR-kan dengan L[j-1]. Selanjutnya, hasil tersebut
menjadi R[j]. Perha kan Persamaan 6.35.
R[i] = l[j-1] XOR P(S[1](B[1] ... S[8](B[8]) (6.35)
B[j] merupakan blok 6 bit hasil kombinasi R(R[i-1]) XOR K[i]. Fungsi ini bisa ditulis
sebagai Persamaan 6.36.
R[i] = L[i-1] XOR f(R[i-1],K[i])
L[i] = R[i-1] (6.36)
6) Ulangi kembali langkah paling atas hingga K[16].
7) Permutasi akhir dilakukan kembali dengan tabel permutasi yang merupakan invers
dari permutasi awal. Tabel permutasi akhir dapat dilihat pada TABEL 6.26.
KRIPTOGRAFI MODERN 167
TABEL 6.26 Final permuta on (IP**-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25

6.3.2.1.6 Dekripsi Data 64-Bit


Dekripsi dilakukan dengan proses yang sama, hanya saja kunci yang digunakan adalah K[j]
dalam urutan yang berlawanan, yaitu memasukkan K[16] terlebih dahulu, kemudian K[15],
dan seterusnya hingga K[1]. Algoritmanya adalah sebagai berikut.
1. Mengambil blok ciphertext sebanyak 64 bit. Apabila pengambilan blok ciphertext kurang
dari 64 bit, perlu adanya penambahan supaya dalam penggunaannya ada kesesuaian
dengan jumlah datanya.
2. Bentuk IP pada blok enkripsi 64 bit tersebut dengan memperha kan permutasi pada TABEL
6.15.
3. Bagilah blok enkripsi tersebut menjadi 2 bagian. 32 bit pertama disebut L[0] dan 32 bit
kedua disebut R[0].
4. Keenam belas subkey dioperasikan dengan blok ciphertext, dimulai dengan j = 1 dan terbagi
menjadi cara-cara berikut.
a. R[j-1] dikembangkan menjadi 48-bit menurut fungsi pemilihan ekspansi pada TABEL
6.16.
b. Langkah berikutnya adalah men-XOR-kan E(R[j-1]) dengan K[j].
c. Hasil E(R[j-1]) XOR K[j] dipecah menjadi delapan blok 6-bit. Kelompok bit 1–6 disebut
B[1], bit 7–12 disebut B[2], dan seterusnya hingga bit 43–48 disebut B[8].
d. Jumlah bit dikurangi dengan pertukaran nilai-nilai yang ada dalam tabel S untuk se ap
B[j] yang dimulai dengan j = 1. Se ap nilai dalam S memiliki 4 bit. Adapun langkah-
langkah dalam tahap ini adalah sebagai berikut.
1) Ambil bit ke-1 dan ke-6 dari B[j] secara bersama-sama sebagai nilai 2 bit, misalnya
m, yang menunjukkan baris dalam tabel S[j].
2) Ambil bit ke-2 hingga ke-5 dari B[j] sebagai nilai 4 bit, misalnya n, yang menunjukkan
kolom dalam S[j].
3) Hasil proses ini adalah S[j][m][n] untuk se ap B[j] sehingga banyaknya iterasi yang
diperlukan adalah 8 kali. Hasil ini sering disebut juga subs tu on box. Nan nya akan
ada subs tu on box 8 buah iterasi seper terlihat pada TABEL 6.17–6.24.
e. Permutasi dilakukan kembali pada kombinasi hasil subs tusi di atas, S[1][m1][n1]
hingga S[8][m2][n2], dengan memperha kan keterangan TABEL 6.25.
168 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

f. Hasil permutasi kemudian di-XOR-kan dengan R[i]. Selanjutnya, hasil ini menjadi L[i-1].
L[i-1] = R[i] XOR f(L[i], K[i]) (6.37)
g. L[i] = R[i-1]
h. Ulangi kembali langkah paling atas hingga K[1].
5. Permutasi akhir dilakukan kembali dengan tabel permutasi yang merupakan invers dari
permutasi awal seper terlihat pada TABEL 6.26.

6.3.2.2 Advanced Encryp on Standard (AES)


Vincent Rijmen dan John Daemen asal Belgia merupakan pemenang kontes algoritma krip-
tografi penggan DES, yang diadakan oleh Na onal Ins tutes of Standards and Technology
(NIST) milik pemerintah Amerika Serikat pada 26 November 2001, yang diberi nama Rijndael
(Munir, 2006). Algoritma Rijndael inilah yang kemudian dikenal dengan Advanced Encryp on
Standard (AES). Setelah mengalami beberapa proses standardisasi oleh NIST, Rijndael kemudian
diadopsi menjadi standar algoritma kriptografi secara resmi pada 22 Mei 2002. Pada 2006 AES
merupakan salah satu algoritma terpopuler yang digunakan dalam kriptografi kunci simetrik.
AES merupakan algoritma cipher blok yang menggunakan teknik subs tusi, permutasi, dan
sejumlah putaran pada se ap blok yang akan dienkripsi. Sistem permutasi dan subs tusi
(S-box) yang digunakan pada AES dak menggunakan jaringan Feistel sebagaimana cipher blok
pada umumnya.
Algoritma Rijndael dirancang untuk memiliki proper berikut:
1. ketahanan terhadap semua jenis serangan yang diketahui;
2. kesederhanaan rancangan;
3. kekompakan kode dan kecepatan pada berbagai pla orm.
AES terbagi dalam ga jenis, yaitu
1. AES-128;
2. AES-192;
3. AES-256.
Pengelompokan jenis AES tersebut didasarkan pada panjang kunci yang digunakan (digambarkan
dengan angka-angka di belakang kata AES). Perbedaan panjang kunci akan memengaruhi
jumlah round yang akan diimplementasikan pada algoritma AES. TABEL 6.27 memperlihatkan
jumlah round (Nr) yang harus diimplementasikan pada masing-masing panjang kunci.
TABEL 6.27 Perbandingan jumlah round dan kunci (Wibowo dan Wihartantyo, 2004)
Jumlah Kunci Besar Blok Jumlah Round
(Nk) (Nb) (Nr)
AES – 128 16 byte 16 byte 10
AES – 192 24 byte 16 byte 12
AES – 256 32 byte 16 byte 14
KRIPTOGRAFI MODERN 169
AES memiliki ukuran blok yang tetap sepanjang 128 bit dan ukuran kunci sepanjang 128, 192,
atau 256 bit. Berdasarkan ukuran blok yang tetap, AES bekerja pada matriks berukuran 4 x 4
yang disebut state, di mana ap- ap sel matriks terdiri atas 1 byte (8 bit).

6.3.2.2.1 Proses Enkripsi Algoritma AES Rinjdael


Proses enkripsi algoritma AES terdiri atas empat jenis transformasi bytes, yaitu SubBytes,
Shi Rows, Mixcolumns, dan AddRoundKey. Pada awal proses enkripsi, input yang telah
dikopikan ke dalam state akan mengalami transformasi byte AddRoundKey. Selanjutnya, state
akan mengalami transformasi SubBytes, Shi Rows, MixColumns, dan AddRoundKey secara
berulang-ulang sebanyak Nr. Proses tersebut dalam algoritma AES disebut sebagai round
func on. Round yang terakhir agak berbeda dengan round sebelumnya di mana pada round
terakhir, state dak mengalami transformasi MixColumns. Gambar 6.25 merupakan diagram
proses enkripsi AES.

Gambar 6.25 Diagram proses enkripsi algoritma AES Rijndael (Munir, 2006)

Garis besar algoritma AES Rijndael yang beroperasi pada blok 128-bit dengan kunci 128-bit (di
luar proses pembangkitan round key) adalah sebagai berikut.
1. AddRoundKey: Melakukan XOR antara state awal (plaintext) dengan cipher key. Tahap ini
disebut juga ini al round.
2. Round: Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada se ap putaran adalah
sebagai berikut:
a. SubBytes: subs tusi byte dengan tabel subs tusi (S-box).
b. Shi Rows: pergeseran baris-baris array state secara wrapping.
170 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

c. MixColumns: pengacakan data di masing-masing kolom array state.


d. AddRoundKey: peng-XOR-an antara state sekarang round key.
3. Final round: proses untuk putaran terakhir:
a. SubBytes,
b. Shi Rows, dan
c. AddRoundKey.
Langkah kerja dari enkripsi adalah sebagai berikut.
1. Transformasi SubBytes
Transformasi SubBytes() memetakan se ap byte dari array state menggunakan tabel
subs tusi S-box. Tabel S-box yang digunakan adalah seper yang ditunjukkan pada TABEL
6.28.
TABEL 6.28 Rijndael S-box (Munir, 2006)

Untuk se ap byte pada array state, misalnya S[r, c] = xy, di mana xy adalah digit
heksadesimal dari nilai S[r, c], nilai subs tusinya (dinyatakan dengan S’[r,c]) adalah elemen
di dalam tabel sub tusi yang merupakan perpotongan baris x dengan kolom y. Gambar
6.26 mengilustrasikan pengaruh pemetaan byte pada se ap byte dalam state.
KRIPTOGRAFI MODERN 171

Gambar 6.26 Transformasi SubBytes (Gladman, 2003)

2. Transformasi Shi Rows


Tahap Shi Rows akan menggeser ke kiri secara berputar se ap bytes dalam se ap baris
dari state. Jumlah pergeseran se ap byte berbeda untuk se ap barisnya. Baris pertama
akan tetap pada keadaan semula. Se ap byte dari baris kedua digeser satu langkah ke kiri.
Baris ke ga dan keempat digeser ke kiri sebanyak dua dan ga langkah. Untuk ukuran blok
128 bit dan 192 bit pola pergeserannya sama. Se ap kolom dari state keluaran dari tahap
Shi Rows disusun dari byte se ap kolom dari state masukan. Ukuran blok 256 bit, baris
pertama dak berubah posisinya, dan pergeseran untuk baris kedua, ke ga, dan keempat
adalah 1 byte, 2 byte, dan 4 byte. Proses pergeseran Shi Rows ditunjukkan dalam Gambar
6.27.

Gambar 6.27 Proses Shi Rows (Gladman, 2003)

3. Transformasi MixColumns
Tahap MixColumns dapat dilakukan dengan mengalikan empat angka dari kolom state
dalam GF(28) dengan perkalian matriks:
s '(x ) = a(x ) ⊗ s(x )

⎡ S '0,C ⎤ ⎡ 02 03 01 01⎤ ⎡ S0,C ⎤


⎢ S ' ⎥ ⎢ 01 02 03 01⎥⎥ ⎢⎢ S1,C ⎥⎥
⎢ 1,C ⎥ = ⎢
⎢ S '2,C ⎥ ⎢ 01 01 02 03⎥ ⎢ S2,C ⎥
⎢ ⎥ ⎢ ⎥⎢ ⎥
⎣ S '3,C ⎦ ⎣ 03 01 01 02⎦ ⎣ S3,C ⎦
172 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Hasil dari perkalian matriks di atas dapat dianggap seper perkalian berikut:
S '0,C = ( { 02} • S0,C ) ⊕ ( { 03} • S1,C ) ⊕ S2,C ⊕ S3,C
S '1,C = S0,C ⊕ ( { 02} • S1,C ) ⊕ ( { 03} • S2,C ) ⊕ S3,C
S '2,C = S0,C ⊕ S1,C ⊕ ( { 02} • S2,C ) ⊕ ( { 03} • S3,C )
S '3,C = ( { 03} • S0,C ) ⊕ S1,C ⊕ S2,C ⊕ ( { 02} • S3,C )

Karena perhitungan ini dilakukan dalam Galois Field milik Rijndael GF(28), operasi
penjumlahan sebenarnya adalah operasi XOR.

Gambar 6.28 Transformasi MixColumns (Gladman, 2003)

4. AddRoundKey
Pada enkripsi dan dekripsi AES, proses AddRoundKey sama, sebuah round key ditambahkan
pada state dengan operasi XOR. Se ap round key terdiri atas Nb word di mana se ap word
tersebut akan dijumlahkan dengan word atau kolom yang bersesuaian dari state sehingga
⎡⎣ S '0,c , S '2,c , S '3,c ⎤⎦ = ⎡⎣ S0,c , S1,c , S2,c , S3,c ⎤⎦ ⊕ [wround*Nb +c ] untuk 0 ≤ c ≤ Nb
[wi] adalah word dari key yang bersesuaian di mana i = round*Nb+c. Transformasi
AddRoundKey pada proses enkripsi pertama kali dilakukan pada round = 0, dan pada
round = round + 1 untuk round selanjutnya. Sementara pada proses dekripsi, pertama kali
dilakukan pada round = 14, dan pada round = round – 1 untuk round selanjutnya.

Gambar 6.29 Transformasi AddRoundKey (Gladman, 2003)


KRIPTOGRAFI MODERN 173

6.3.2.2.2 Proses Dekripsi Algoritma AES Rijndael


Proses dekripsi algoritma AES Rijndael dapat dilihat pada Gambar 6.30.

Gambar 6.30 Diagram proses dekripsi algoritma AES Rijndael

Transformasi cipher dapat dibalikkan dan diimplementasikan pada arah yang berlawanan
untuk menghasilkan inverse cipher yang mudah dipahami untuk algoritma AES. Transformasi
byte yang digunakan pada inverse cipher adalah InvShi Rows, InvSubBytes, InvMixColumns,
dan AddRoundKey. Urutan proses dekripsi AES bukan merupakan kebalikan dari enkripsi. Ada
proses yang dipertukarkan urutannya, walaupun penggunaan kuncinya sama.
1. InvShi Rows
InvShi Rows adalah transformasi byte yang berkebalikan dengan transformasi Shi Rows.
Pada proses transformasi InvShi Rows dilakukan penggeseran bit ke kanan, sedangkan
pada Shi Rows dilakukan penggeseran bit ke kiri. Pada baris kedua penggeseran bit
dilakukan 3 kali, sedangkan pada baris ke ga dan baris keempat, dilakukan penggeseran
bit dua kali dan satu kali.
174 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 6.31 Transformasi InvShi Rows

2. InvSubBytes
InvSubBytes juga merupakan transformasi bytes yang berkebalikan dengan transformasi
SubBytes. Proses InvSubBytes dilakukan dengan cara se ap elemen pada state dipetakan
dengan menggunakan tabel inverse S-box. Tabel ini berbeda dengan tabel S-box karena
hasil yang didapat dari tabel ini adalah hasil dari dua proses yang berbeda urutannya, yaitu
transformasi afin (affine) terlebih dahulu, baru kemudian perkalian invers dalam GF(28).
Perkalian invers yang dilakukan pada transformasi InvSubBytes ini sama dengan perkalian
invers yang dilakukan pada transformasi SubBytes.
TABEL 6.29 Inverse S-box (Munir, 2006)

3. InvMixColumns
Se ap kolom dalam state dikalikan dengan matriks perkalian dalam AES. Perkalian dalam
matriks dapat dituliskan seper berikut:
⎡ S ' 0,C ⎤ ⎡ 0 E 0 B 0 D 09 ⎤ ⎡ S 0,C ⎤
⎢ S ' ⎥ ⎢ 09 0 E 0 B 0 D ⎥ ⎢⎢ S1,C ⎥⎥
⎢ 1,C ⎥ = ⎢ ⎥
⎢ S ' 2,C ⎥ ⎢0 D 09 0 E 0 B ⎥ ⎢ S 2,C ⎥
⎢ ⎥ ⎢ ⎥⎢ ⎥
⎣ S ' 3,C ⎦ ⎣ 0 B 0 D 09 0 E ⎦ ⎣ S 3,C ⎦
KRIPTOGRAFI MODERN 175
Hasil dari perkalian matriks adalah
S ' 0,C = ({0 E }• S 0,C ) ⊕ ({0 B}• S1,C ) ⊕ ({0 D}• S 2,C ) ⊕ ({09 }• S 3,C )
S '1,C = ({09 }• S 0,C ) ⊕ ({0 E }• S1,C ) ⊕ ({0 B}• S 2,C ) ⊕ ({0 D}• S 3,C )
S ' 2,C = ({0 D}• S 0,C ) ⊕ ({09 }• S1,C ) ⊕ ({0 E }• S 2,C ) ⊕ ({0 B}• S 3,C )
S ' 3,C = ({0 B}• S 0,C ) ⊕ ({0 D}• S1,C ) ⊕ ({09 }• S 2,C ) ⊕ ({0 E }• S 3,C )
4. Inverse AddRoundKey
Transformasi Inverse AddRoundKey dak berbeda dengan transformasi AddRoundKey
karena pada transformasi ini hanya dilakukan operasi penambahan sederhana dengan
operasi bitwise XOR.

6.3.2.2.3 Contoh Proses Enkripsi dengan Algoritma AES (Sinjaya, 2013)


Misalkan sebuah plaintext memiliki kunci seper berikut:
Plaintext : 0 1 2 3 4 5 6 7 8 9 A B C D E F
Dalam HEX : 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
Kunci : A B C D E F G H I J K L M N O P
Dalam HEX : 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50
Sebelumnya kita sediakan 2 buah matriks 4 x 4 yang se ap kolom matriksnya mewakili 8 bit
data input yang berurutan:
Plaintext (HEX): 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 dibentuk dalam matriks
berikut:
⎡30 34 38 43 ⎤
⎢31 35 39 44 ⎥⎥

⎢32 36 41 45 ⎥
⎢ ⎥
⎣33 37 42 46 ⎦

Kunci (HEX): 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 dibentuk dalam matriks berikut:


⎡ 41 45 49 4D ⎤
⎢ 42 46 4A 4E ⎥⎥

⎢ 43 47 4B 4F ⎥
⎢ ⎥
⎣44 48 4C 50 ⎦
1. Dilakukan proses XOR pada plaintext/state dengan roundkey. Proses XOR antarkolom
kedua matriks yang bersesuaian diawali dengan terlebih dahulu mengonversi data
heksadesimal se ap kolom menjadi bentuk biner. Contoh biner HEX 30 adalah 0011 0000,
dan HEX 41 adalah 0100 0001. Jadi, 0011 0000 0100 0001 = 0111 0001 dalam HEX 71.
Demikian seterusnya proses XOR untuk se ap kolom yang bersesuaian. Langkah ini disebut
AddRoundKey, yang menghasilkan matriks baru berikut:
176 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

⎡71 71 71 0E ⎤
⎢73 73 73 0 A⎥⎥

⎢71 71 0A 0 A⎥
⎢ ⎥
⎣77 1F 0E 16 ⎦
2. Pada matriks hasil XOR antara plaintext dengan roundkey dilakukan proses subs tusi dengan
S-box. Hasil subs tusinya berupa matriks berikut:
⎡ A3 A3 A3 AB ⎤
⎢ 8F 8F 8F 67 ⎥⎥

⎢ A3 A3 67 67 ⎥
⎢ ⎥
⎣F5 C 0 AB 47 ⎦
3. Pada hasil dari subs tusi dengan S-box dilakukan proses shi Rows. Prosesnya sangat
sederhana, dengan melakukan penggeseran secara wrapping (siklik) pada 3 baris terakhir
array state. Jumlah penggeseran bergantung pada nilai baris (r). Baris r = 1 digeser sejauh 1
byte, baris r = 2 digeser 2 byte, dan baris r = 3 digeser sejauh 3 byte. Baris r = 0 dak digeser.
Hasilnya berupa matriks seper berikut:
⎡ A3 A3 A3 AB ⎤
⎢ 8F 8F 867 8F ⎥⎥
F 67

⎢ 67 67 A3 A3 ⎥
⎢ ⎥
⎣ 47 F5 C 0 AB ⎦
4. Langkah selanjutnya setelah hasil Shi Rows didapat adalah melakukan MixColumns dengan
cara mengalikan matriks hasil Shi Rows dengan matriks Rijndael. Transformasi ini
dinyatakan sebagai perkalian matriks:
A3 07

8F 06
x =
67 2B

47 FB

Semua state dilakukan dengan cara yang sama, sehingga didapatkan matriks hasil proses
MixColumns sebagai berikut:
⎡ 07 B5 67 96 ⎤
⎢ 06 41 CC 2 A⎥⎥

⎢2B B1 91 69 ⎥
⎢ ⎥
⎣ FB E3 9A A8 ⎦
5. Setelah perhitungan MixColumns selesai, dilakukan AddRoundKey, yaitu melakukan XOR
antara matriks dari MixColumns dengan kunci yang dihasilkan dari proses ekspansi kunci.
KRIPTOGRAFI MODERN 177
Langkah ke-1 hingga ke-5 diulang untuk iterasi ke-1 sampai ke-9. Namun pada saat iterasi
ke-10, setelah melakukan step Shi Rows, dak dilakukan MixColumns lagi, tetapi langsung
melakukan XOR hasil state saat Shi Rows dengan kunci terakhir.

6.3.2.2.4 Ekspansi Kunci


Pada penggunaan ukuran kunci 128 bit kita perlu menyiapkan 10 buah kunci yang dihasilkan
dari ekspansi kunci awal. Berikut adalah kunci awal yang telah di-input-kan ke dalam matriks:
⎡ 41 45 49 4D ⎤
⎢ 42 46 4A 4E ⎥⎥

⎢ 43 47 4B 4F ⎥
⎢ ⎥
⎣ 44 48 4C 50 ⎦

Kemudian, ambil 4 byte terakhir, yaitu 4D 4E 4F 50, lalu geser byte pertama menjadi byte
terakhir. Hasilnya, 4E 4F 50 4D. Subs tusikan dengan S-box, hasilnya adalah 2F 84 53 E3.
Langkah selanjutnya, XOR-kan dengan konstanta nilai tertentu dari pengguna.
2F XOR 01 = 0010 1111 XOR 0000 0001 = 0010 1110 = 2E
84 XOR 00 = 1000 0100 XOR 0000 0000 = 1000 0100 = 84
53 XOR 00 = 0101 0011 XOR 0000 0000 = 0101 0011 = 53
E3 XOR 00 = 1110 0011 XOR 0000 0000 = 1110 0011 = E3
Langkah terakhir, XOR-kan 2E 84 53 E3 dengan 4 byte pertama kunci awal, yaitu 41 42 43 44.
2E XOR 41 = 0010 1110 XOR 0100 0001 = 0110 1111 = 6F
84 XOR 42 = 1000 0100 XOR 0100 0010 = 1100 0110 = C6
53 XOR 43 = 0101 0011 XOR 0100 0011 = 0001 0000 = 10
E3 XOR 44 = 1110 0011 XOR 0100 0100 = 1010 0111 = A7
Hasil proses XOR di atas adalah 6F C6 10 A7 yang merupakan 4 byte pertama dari kunci yang
baru untuk byte. Untuk empat byte kedua, kita nggal melakukan operasi XOR antara 4 byte
kunci selanjutnya dengan 6F C6 10 A7 seper contoh berikut:
45 XOR 6F = 0100 0101 xor 0110 1111 = 0010 1010 = 2A
46 XOR C6 = 0100 0110 xor 1100 0110 = 1000 0000 = 80
47 XOR 10 = 0100 0111 xor 0001 0000 = 0101 0111 = 57
48 XOR A7 = 0100 1000 xor 1010 0111 = 1110 1111 = EF
Demikian seterusnya hingga didapatkan 16 byte set kunci yang baru. Ekspansi keseluruhan
kunci untuk kunci 128 bit dapat dilihat pada Gambar 6.32.
178 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 6.32 Ekspansi kunci yang akan digunakan pada proses enkripsi dan dekripsi AES

Matriks proses enkripsi menggunakan metode AES dengan kunci 128 bit berikut:
Round Mulai Setelah Setelah Setelah Nilai
SubBytes ShiftRows MixColumns RoundKey

30 34 38 43 41 45 49 4D

input 31 35 39 44 42 46 4A 4E

32 36 41 45 43 47 4B 4F

33 37 42 46 44 48 4C 50

71 71 71 0E A3 A3 A3 AB A3 A3 A3 AB 07 B5 67 96 6F 2A 63 2E

1 73 73 73 0A 8F 8F 8F 67 8F 8F 67 8F 06 41 CC 2A C6 80 CA 8B

71 71 0A 0A A3 A3 67 67 67 67 A3 A3 2B B1 91 69 10 57 1C 53

77 1F 0E 16 F5 C0 AB 47 47 F5 C0 AB FB E3 9A AB A7 EF A3 F3

68 9F 04 B8 45 DB F2 6C 45 DB F2 6C C1 9B 26 ED 50 7A 19 37

2 C0 C1 06 A1 BA 78 6F 32 78 6F 32 BA E4 7C 0C EE 2B AB 61 EA

3B E6 8D 3A E2 8E 5D 80 5D 80 E2 8E 28 0F 8F 08 1D 4A 56 05

5C 0C 39 5B 4A FE 12 39 39 4A FE 12 60 3F 6A A4 96 79 DA 29
KRIPTOGRAFI MODERN 179

91 E1 3F DA 81 F8 75 57 81 F8 75 57 4F 59 DC A8 D3 49 B0 87
3 CF D7 6D 04 8A 0E 3C F2 0E 3C F2 8A C8 67 D9 5A EB EB 8A 60

35 45 D9 0D 96 6E 35 D7 35 D7 96 6E FD 8C 51 B7 B8 F2 A4 A1

F6 46 B0 8D 42 5A E7 5D 5D 42 5A E7 FD 6B 0A DE 0C 75 AF 86

9C F0 6C 2F DE 8C 50 15 DE 8C 50 15 2E 4B 35 07 0B A2 12 95
4 88 8C 53 3A C4 64 ED 80 64 ED 80 C4 E9 1F 94 32 72 99 13 73

45 7E F5 16 6E F3 E6 47 E6 47 6E F3 63 8C 71 D2 FC 0E AA 0B

F1 1E A5 58 A1 72 06 6A 6A A1 72 06 3D 54 A4 C2 1B 6E C1 47

25 E9 27 92 3F 1E CC 4F 3F 1E CC 4F 22 FC E0 79 94 36 24 B1
5 9B 86 87 41 14 44 17 83 44 17 83 14 49 58 C2 BD 59 C0 D3 A0
34 6D DB D9 18 3C B9 35 B9 35 18 3C F7 9E 7B 1C 5C 52 F8 F3
26 3A 65 85 F7 80 4D 97 97 F7 80 4D 1B 03 BA 63 31 5F 9E D9

B6 CA C4 C8 4E 74 1C E8 4E 74 1C E8 FE 9D 58 D5 54 62 46 F7

6 10 98 11 10 CA 46 82 CA 46 82 CA CA 86 9B 76 61 44 84 57 F7

AB CC 83 EF 62 4B EC DF EC DF 62 4B 0E 03 96 BF 69 3B C3 30

2A 5C 24 BA E5 A4 36 F4 F4 E5 4A 36 56 A0 15 BE F9 A6 38 E1

AA FF 1E 22 AC 16 72 93 AC 16 72 93 30 F3 BF CC 7C 1E 58 AF

7 C2 1F 21 96 25 C0 FD 90 C0 FD 90 25 43 BA 30 DD 40 C4 93 64

66 38 55 8F 33 07 FC 73 FC 73 33 07 CA C1 4D CB 91 AA 69 59

AF 06 2D 5F 79 6F D8 CF CF 79 6F D8 C8 BE 51 74 91 32 0F EE

4C ED E7 63 29 55 94 FB 29 55 94 FB 7E 28 71 3E BF A1 F9 56

8 03 7E A3 B9 7B F3 0A 56 F3 0A 56 7B 26 4A 9A B8 8B 4F DC B8

5B 6B 24 92 39 7F 36 4F 36 4F 39 7F FA DB BA 39 B9 13 7A 23

59 89 5E 9B CB A7 58 14 14 CB A7 58 15 C3 7D 39 E8 DF D0 3E

C1 89 88 68 78 A7 C4 45 78 A7 C4 45 68 70 4B B3 C8 69 90 C6

9 AD 05 46 00 95 6B 5A 63 6B 5A 53 95 F9 F6 F1 1F AD E2 3E 86

43 C8 C0 1A 1A E8 BA A2 BA A2 1A E8 DF 0D BA F1 0B 18 62 41

FD 1C AD 07 54 9C 95 C5 C5 54 9C 95 01 6F 17 DC 59 86 56 68

A0 19 DB 75 E0 04 B9 9D E0 D4 B9 9D BA D3 43 85

10 54 14 CF 99 20 FA 8A EE FA 8A EE 20 2E CC F2 74

D4 15 D8 B0 48 59 61 E7 61 E7 48 59 4E 56 34 75

58 E9 41 B4 6A 1E 83 8D 8D 6A 1E 83 ED 6B 3D 55
180 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

5A 07 FA 18

D4 46 1C 54 Ciphertext
2F B1 7C 2C

60 01 2E D6

Output (ciphertext) dari keseluruhan round adalah


5A D4 2F 60 07 46 B1 01 FA 1C 7C 2E 18 54 2C D6
Ciphertext di atas didapatkan dari proses berikut:
E0 XOR BA = 1110 0000 1011 1010 = 0101 1010 = 5A
FA XOR 2E = 1111 1010 0010 1110 = 1101 0100 = D4
61 XOR 4E = 0110 0001 0100 1110 = 0010 1111 = 2F
8D XOR ED = 1000 1101 1110 1101 = 0110 0000 = 60
D4 XOR D3 = 1101 0100 1101 0011 = 0000 0111 = 07
8A XOR CC = 1000 1010 1100 1100 = 0100 0110 = 46
E7 XOR 56 = 1110 0111 0101 0110 = 1011 0001 = B1
6A XOR 6B = 0110 1010 0110 1011 = 0000 0001 = 01
B9 XOR 43 = 1011 1001 0100 0011 = 1111 1010 = FA
EE XOR F2 = 1110 1110 1111 0010 = 0001 1100 = 1C
48 XOR 34 = 0100 1000 0011 0100 = 0111 1100 = 7C
1E XOR 3D = 0001 1110 0011 1101 = 0010 1110 = 2E
9D XOR 85 = 1001 1101 1000 0101 = 0001 1000 = 18
20 XOR 74 = 0010 0000 0111 0100 = 0101 0100 = 54
59 XOR 75 = 0101 1001 0111 0101 = 0010 1100 = 2C
83 XOR 55 = 1000 0011 0101 0101 = 1101 0110 = D6

6.4 Kriptografi Kunci Asimetrik


Penemu kriptografi asimetrik pertama sebenarnya adalah James H. Ellis, Clifford Cocks, dan
Malcolm Williamson di Inggris pada awal 1970. Mereka menemukan mekanisme pertukaran
kunci, yang kemudian dikenal dengan nama algoritma pertukaran kunci Diffie Hellman.
Sayangnya, algoritma tersebut dirahasiakan dan dak pernah dipublikasikan hingga tahun
1997.
Sistem kriptografi asimetrik dipublikasikan pertama kali pada tahun 1976 oleh Whi ield Diffie
dan Mar n Helman, dua oang ilmuwan dari Stanford University melalui makalah pertamanya
di jurnal IEEE yang berjudul “New Direc ons in Cryptography”. Makalah mereka membahas
distribusi kunci rahasia pada saluran komunikasi publik (yang dak aman) dengan metode
KRIPTOGRAFI MODERN 181
pertukaran kunci yang belakangan dikenal dengan nama algoritma pertukaran kunci Diffie-
Helman.
Pada tahun 1977 generalisasi dari ide Cocks ditemukan kembali oleh ga orang ilmuwan MIT,
yaitu Rivest, Shamir, dan Adleman. Algoritma enkripsi yang mereka buat dikenal dengan nama
RSA. Akhirnya, sejak tahun 1976 berbagai algoritma enkripsi, tanda tangan digital, pertukaran
kunci, dan teknik lain dikembangkan dalam bidang kriptografi kunci asimetrik, misalnya
algoritma ElGamal untuk enkripsi dan tanda tangan digital serta algoritma DSA untuk tanda
tangan digital. Pada tahun 1980 Neal Kobliz memperkenalkan Ellip c Curve Cryptography
sebagai keluarga baru yang dianalogikan dengan algoritma kriptogafi kunci publik. Hingga saat
ini kriptografi kunci asimetrik terus berkembang pesat seiring dengan aplikasinya yang begitu
luas.
Aplikasi kriptografi kunci asimetrik dapat dibagi menjadi ga kategori, yaitu kerahasiaan data,
tanda tangan digital, dan pertukaran kunci.
1. Kerahasiaan data
Seper pada kriptografi kunci simetrik, kriptografi kunci asimetrik dapat digunakan untuk
menjaga kerahasiaan data (provide confiden ality/secrecy) melalui mekanisme enkripsi
dan dekripsi. Contoh algoritma untuk aplikasi ini adalah RSA, Knapsack, Robin, ElGamal,
dan Ellip c Curve Cryptography (ECC).
2. Tanda-tangan digital
Tanda-tangan digital (digital signature) dengan algoritma kriptogafi kunci asimetrik dapat
digunakan untuk membuk kan auten kasi pesan ataupun auten kasi pengiriman (provide
authen fica on). Contoh algoritma untuk aplikasi ini adalah RSA, DSA, dan ElGamal.
3. Pertukaran kunci (key-exchange)
Algoritma kriptografi kunci asimetrik dapat digunakan untuk mengirim kunci simetrik
(session keys). Contoh algoritmanya adalah RSA dan Diffie-Hellman.
Beberapa algoritma kriptografi kunci asimetrik dapat digunakan untuk ke ga macam
kategori aplikasi (misalnya, RSA) tersebut. Beberapa algoritma hanya ditujukan untuk
aplikasi spesifik (misalnya, DSA untuk digital signature).
Kelebihan kriptografi kunci asimetrik adalah sebagai berikut.
1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh se ap en tas yang berkomunikasi
(tetapi auten kasi kunci publik tetap harus terjamin). Tidak ada kebutuhan untuk mengirim
kunci privat sebagaimana pada sistem simetrik.
2. Pasangan kunci publik/kunci privat dak perlu diubah, bahkan dalam periode waktu yang
panjang.
3. Dapat digunakan untuk mengamankan pengiriman kunci simetrik.
4. Beberapa algoritma kunci asimetrik dapat digunakan untuk memberi tanda tangan digital
pada pesan.
182 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Sementara kelemahan kriptogafi kunci asimetrik adalah sebagai berikut.


1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetrik karena enkripsi
dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan
yang besar.
2. Ukuran ciphertext lebih besar daripada plaintext (bisa dua sampai empat kali ukuran
plaintext).
3. Ukuran kunci rela f lebih besar daripada ukuran kunci simetrik.
4. Karena kunci publik diketahui secara luas dan dapat digunakan oleh se ap orang, ciphertext
dak memberikan informasi mengenai auten kasi pengirim.
5. Tidak ada algoritma kunci publik yang terbuk aman (sama seper cipher blok). Kebanyakan
algoritma mendasarkan keamanannya pada sulitnya memecahkan persoalan-persoalan
aritme k yang menjadi dasar pembangkitan kunci. Kriptografi kunci asimetrik juga dak
aman dari serangan man-in-the-middle a ack. Orang di tengah mengintersepsi komunikasi,
lalu berpura-pura menjadi salah satu pihak yang berkomunikasi untuk mengetahui informasi
rahasia.
Dari sekian banyak algoritma kriptografi kunci asimetrik yang pernah dibuat, algoritma yang
paling populer adalah RSA. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan
bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh
kunci privat. Selama belum ditemukan algoritma yang mangkus untuk memfaktorkan bilangan
besar menjadi faktor-faktor prima, selama itu pula keamanan algoritma RSA tetap terjamin.
Algoritma RSA memiliki besaran-besaran berikut:
1. p dan q bilangan prima (rahasia)
2. n = p . q ( dak rahasia)
3. φ(n) = (p-1)(q-1) (rahasia)
4. e (kunci enkripsi) ( dak rahasia)
5. d (kunci dekripsi) (rahasia)
6. m (plaintext) (rahasia)
7. c (ciphertext) ( dak rahasia)
RSA adalah suatu blok sandi rahasia di mana plaintext dan ciphertext merupakan bilangan
bulat antara 0 dan n-1 untuk beberapa n. Enkripsi dan dekripsi berasal dari beberapa bentuk
berikut, untuk beberapa blok teks asli M dan blok teks rahasia C.
C = M’ mod n
M = Cd mod n = (Me)d mod n = Med mod n
Blok pengirim ataupun penerima harus mengetahui nilai n dan e, dan hanya penerima saja
yang mengetahui nilai d. Algoritma enkripsi kunci umum memiliki kunci umum sebesar KU =
{e,n} dan kunci khusus sebesar KR = {d,n}. Agar bisa memenuhi syarat sebagai enkripsi kunci
umum yang baik, algoritma ini harus memenuhi ketentuan-ketentuan berikut.
1. Kemungkinan menemukan nilai e, d, n sedemikian rupa sehingga Med = M mod n untuk
semua M < n.
KRIPTOGRAFI MODERN 183
2. Rela f mudah untuk menghitung Me dan Cd untuk semua nilai M < n.
3. Tidak mudah untuk menghitung d, yang diberi e dan n.
Dua ketentuan pertama bisa terpenuhi dengan mudah. Sementara ketentuan ke ga baru bisa
dipenuhi untuk nilai e dan n yang besar.
1. Pembangkitan kunci
a. Memilih dua bilangan prima p, q. Bilangan ini harus cukup besar (minimal 100 digit).
b. Menghitung n = p . q. Bilangan n disebut parameter security (sebaiknya, p ≠ q sebab jika
p = q, n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n).
c. Menghitung φ(n) = (p-1)(q-1).
d. Memilih bilangan bulat e dengan algoritma Euclidean, yaitu gcd(φ(n),e)=1, di mana 1<
e < φ(n).
e. Menghitung d dengan rumus d = e-1 mod φ(n) atau e . d ≡ 1 (mod φ(n)). Perha kan
bahwa e . d ≡ 1 (mod φ(n)) ekuivalen dengan e . d = 1 + k φ(n) sehingga secara sederhana
d dapat dihitung dengan rumus berikut:
d = ( 1 + k . φ(n)) / e
f. Kunci umum (kunci publik) adalah KU = {e,n}
g. Kunci pribadi (kunci privat adalah KR = {d,n}
Sebagai catatan, n dak bersifat rahasia sebab ia diperlukan pada perhitungan enkripsi/
dekripsi.
2. Enkripsi
B mengenkripsi pesan M untuk A. Oleh karena itu, B melakukan hal-hal berikut.
a. Teks asli dengan syarat M < n.
b. Mengambil kunci publik A yang auten k (n,e).
c. Merepresentasikan pesan sebagai integer M dalam interval [0,n-1].
d. Teks rahasia didapat dari C = Me (mod n).
e. Mengirim C ke A.
3. Dekripsi
Untuk mendekripsi, A melakukan hal-hal berikut.
a. Menggunakan kunci privat d untuk menghasilkan M.
b. Teks rahasia adalah C.
c. Teks asli didapat dari M = Cd (mod n)

Gambar 6.33 Contoh algoritma RSA (Stallings, 1993)


184 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Algoritma RSA dimulai dengan memilih dua bilangan prima p dan q dan menghitung
perkalian mereka (n), yang merupakan modulo untuk enkripsi dan dekripsi. Berikutnya,
kita membutuhkan kuan tas φ(n), disebut sebagai Euler to ent untuk n, yang merupakan
jumlah bilangan bulat posi f yang kurang dari rela f prima terhadap n. Selanjutnya, kita
memilih bilangan bulat e yang rela f prima terhadap φ(n), maksudnya pembagi biasa
terbesar dari e dan φ(n) adalah 1. Proses terakhir adalah menghitung d sebagai perkalian
terbalik dari e, modulo φ(n) di mana d dan e memiliki sifat-sifat yang diinginkan.
Anggap bahwa pemakai A telah memublikasikan kunci umumnya dan bahwa pemakai B
ingin mengirim pesan M ke A. Langkah selanjutnya, B menghitung C = Me (mod n) dan
mentransmisikan C. Untuk penerimaan teks rahasia ini oleh pemakai A dilakukan proses
dekripsi dengan cara menghitung M = Cd(mod n). Sebuah contoh ditunjukkan dalam
Gambar 6.33. Pada contoh ini, kunci-kunci digerakkan seper berikut:
1. memilih dua bilangan prima, p = 7 dan q = 17;
2. menghitung n = pq = 7 x 17 = 119;
3. menghitung φ(n)=(p-1)(q-1) = 96;
4. memilih e sedemikian rupa sehingga e rela f prima terhadap φ(n) = 96 dan kurang dari
φ(n), dalam hal ini, e = 5;
5. menentukan d sedemikian rupa sehingga de = 1 mod 96 dan d < 96. Nilai yang benar
adalah d = 77 karena 77 x 5 = 385 = 4 x 96 + 1.
Kunci-kunci yang dihasilkan adalah kunci umum KU = [5,119] dan kunci khusus KR = [77,119].
Contoh tersebut juga digunakan untuk menunjukkan penggunaan kunci-kunci ini untuk proses
enkripsi dan dekripsi. Misalkan input teks asli M = 19, enkripsi di ngkatkan ke 195, menghasilkan
2.476.099. Berdasarkan pembagian dengan 119, sisa ditetapkan menjadi 66. Oleh karena itu,
195 ≡ 66 mod 119 , dan teks rahasianya sama dengan 66. Untuk dekripsi ditetapkan bahwa
6677 ≡ 19 mod 119 .
Ada dua pendekatan yang bisa dilakukan untuk menggagalkan algoritma RSA. Pendekatan
pertama adalah pendekatan paksaan, mencoba semua kunci pribadi yang memungkinkan.
Jadi, semakin besar jumlah bit di dalam e dan d, semakin aman algoritmanya. Namun, karena
penghitungan yang dilakukan baik dalam pembangkitan kunci maupun dalam enkripsi/dekripsi
sangat kompleks, semakin besar ukuran kunci, semakin lambat jalannya sistem.
Sebagian besar pembahasan mengenai pemecahan rahasia RSA difokuskan pada tugas
memfaktorkan n ke dalam dua faktor primanya. Untuk n yang besar dengan faktor prima yang
besar, pemfaktoran adalah masalah yang berat, namun dak seberat penggunaannya.
Contoh pembangkitan pasangan kunci:
1. Hasilkan dua buah integer prima besar p dan q. Untuk memperoleh ngkat keamanan
yang nggi, pilih p dan q yang berukuran besar, misalnya 1024 bit. Pada contoh ini dipilih
bilangan kecil untuk mempermudah perhitungan, yaitu p = 47 dan q = 71.
2. Hitung m = (p-1)*(q-1)
m = (47-1) * (71-1)
KRIPTOGRAFI MODERN 185
m = 46 * 70
= 3220
3. Hitung n = p*q
n = 47 * 71
= 3337
4. Pilih d yang rela f prima terhadap m. E rela f prima terhadap m ar nya faktor pembagi
terbesar keduanya adalah 1, secara matema s disebut gcd(e,m) = 1. Untuk mencarinya,
dapat digunakan algoritma Euclidean.
e = 79 gcd(e,3220) = 1
5. Cari d sehingga e*d = 1 mod(m) atau d = (1+nm)/e
Untuk bilangan besar dapat digunakan algoritma extended Euclidean.
n = 25 d = (1 + 25. 3220)/79 = 1019 (memenuhi)
6. Kunci publik: (e,n) = (79,3337)
Kunci privat: (d,n) = (1019,3337)
Contoh penerapannya adalah sebagai berikut. Misalkan Nohan mengirim pesan kepada Salsa.
Pesan (plaintext) yang akan dikirimkan kepada Salsa adalah
m = HARI INI
atau yang dalam sistem desimal (pengodean ASCII) adalah
7265827332737873
Nohan memecah m menjadi blok yang lebih kecil, misalnya m dipecah menjadi enam blok
yang berukuran 3 digit:
m1 = 726 m4 = 273
m2 = 582 m5 = 787
m3 = 733 m6 = 003
Nilai-nilai mi masih terletak di dalam selang [0, 3337–1] agar transformasi menjadi satu ke satu.
Nohan tahu bahwa kunci publik Salsa adalah e = 79 dan n = 3337. Salsa dapat mengenkripsikan
se ap blok plaintext seper berikut:
C1 = 72679 mod 3337 = 215
C2 = 58279 mod 3337 = 776
C3 = 73379 mod 3337 = 1743
C4 = 27379 mod 3337 = 933
C5 = 78779 mod 3337 = 1731
C6 = 00379 mod 3337 = 158
Jadi, ciphertext yang dihasilkan adalah
C = 215 776 1743 933 1731 158
Dekripsi dilakukan dengan mengunakan kunci privat berikut:
d = 1019
186 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Blok-blok ciphertext didekripsikan dengan cara berikut:


m1 = 2151019 mod 3337 = 726
m2 = 7761019 mod 3337 = 582
m3 = 17431019 mod 3337 = 733
m4 = 9331019 mod 3337 = 273
m5 = 17311019 mod 3337 = 787
m6 = 1581019 mod 3337 = 003
Blok plaintext yang lain dikembalikan dengan cara yang serupa. Akhirnya, kita memperoleh
kembali plaintext semula:
m = 7265827332737873
yang dalam sistem pengodean ASCII adalah m = HARI INI.
Sementara algoritma programnya adalah sebagai berikut.
1. Memilih dua bilangan prima p dan q, kemudian d dan plaintext yang akan dienkripsi. Bila
yang di-input-kan bukan bilangan prima, program akan terhen dan memberitahukan
bahwa p dan q harus prima.
2. Menghitung nilai n = p. q.
3. Menghitung φ(n) = (p-1)(q-1).
4. Mencari nilai e sedemikian hingga e rela f prima terhadap φ(n) dan kurang dari φ(n).
5. Memecah plaintext ke dalam blok-blok yang masing-masing berisi 2 karakter. Bila jumlah
karakter dak genap, di akhir ditambahkan karakter X. Kemudian, masing-masing blok
dikonversikan ke dalam bentuk bilangan.
6. Cipher dari masing-masing blok didapatkan dengan mencari nilai konversi blok yang
dipangkatkan dengan e modulo n.
7. Untuk mencari cipher dari modulo bilangan berpangkat yang nilainya sangat besar, kita
bisa menggunakan cara berikut.
a. Mengubah pangkat blok plaintext (nilai e) ke dalam biner.
b. Kemudian, pada se ap digit bilangan biner dilakukan iterasi dari bit paling kiri sampai
bit paling kanan. Pada awalnya, cipher diberi nilai 1, kemudian masing-masing bit
dideteksi. Apabila bit bernilai 1, nilai cipher berubah dari perkalian antara blok plaintext
(M) dengan kuadrat dari nilai cipher sebelumnya di mod n; bila bit bernilai 0, nilai cipher
berubah dan digan kan dengan nilai kuadrat dari nilai cipher sebelumnya di mod n,
demikian seterusnya sampai bit terakhir.
c. Hasil cipher merupakan nilai cipher terakhir dari proses iterasi.
KRIPTOGRAFI MODERN 187

6.5 Evaluasi
1. a. Tentukan kunci publik dan kunci privat untuk penyandian dengan metode RSA apabila
p = 5 dan q = 9.
b. Apabila diketahui plaintext = FST, tentukan ciphertext menggunakan kunci pada soal 1a
bila diketahui desimalnya F = 5, S = 18, dan T = 19.
2. Buk kan bahwa hasil soal 1b, apabila dilakukan proses dekripsi, akan membentuk plaintext
FST.
3. Diberikan bilangan prima p = 23 dan q = 37, serta dipilih b = 67. Apakah nilai p, q, dan b
dapat digunakan untuk proses pembentukan kunci pada metode RSA? Jika ya, tentukan
kunci publik dan kunci rahasianya.
4. Apabila diketahui plaintext FST dan kunci yang Anda tentukan sendiri, carilah ciphertext
dengan metode berikut:
a. electronic code book (ECB);
b. cipher block chaining (CBC) menggunakan kunci huruf pertama nama Anda;
c. cipher feedback (CFB) dan IV atau c0 menggunakan digit terakhir tanggal lahir Anda
(menggunakan panjang kode 8 bit);
d. cipher feedback (CFB).
5. Bangkitkan kunci internal DES apabila diketahui bahwa kunci eksternalnya adalah nama
Anda.
6. Ceritakan cara kerja fungsi f pada algoritma DES.
7. Di dalam algoritma DES diketahui S-box 6 x 4, yang memetakan 6 bit masukan menjadi 4 bit
keluaran seper dalam tabel berikut.
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
Carilah hasil subs tusinya jika diketahui bahwa masukannya adalah FST (petunjuk: masukan
diubah ke biner 6 bit terlebih dahulu).
8. Tentukan ciphertext KRIPTOGRAFI dengan kunci FST apabila dilakukan enkripsi menggunakan
metode RC4.
9. Jelaskan perbedaan antara kriptografi kunci publik dan kunci privat. Berikan juga contohnya
untuk memperjelas pendapat Anda.
10. Ceritakan langkah kerja dari salah satu algoritma kriptografi berbasis cipher aliran yang
Anda ketahui, dan berikan contohnya.
188 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
BAB VII
APLIKASI KRIPTOGRAFI

Kompetensi:
Setelah mempelajari pokok bahasan ini, pembaca diharapkan mampu
1. mengetahui alasan mengapa tanda tangan digital dan ser fikat digital diperlukan;
2. mengetahui secara umum prinsip kerja algoritma hash;
3. memahami aspek-aspek keamanan yang disediakan oleh kriptografi yang
berhubungan dengan auten fikasi.

Internet sebagai jalan raya informasi (the informa on highway) dirasakan telah benar-benar
membawa perubahan pada banyak aspek kehidupan manusia. Teknologi baru ini menawarkan
banyak keuntungan sekaligus ancaman.
Kita tentu sering memanfaatkan fasilitas dalam internet seper pengiriman dokumen bisnis
yang dilampirkan pada e-mail. Fasilitas ini memberikan kenyamanan karena lebih efisien,
cepat, dan murah. Namun, karena internet merupakan jaringan publik yang dak aman, saat
dokumen dikirim, seseorang bisa saja dengan ilegal mengubah isi dokumen itu tanpa diketahui
pengirim atau penerima. Tanpa fasilitas keamanan yang baik, sang penerima akan menerima
dokumen tersebut tanpa mencurigai adanya perubahan.

7.1 Tanda Tangan Digital


Tanda tangan digital atau digital signature merupakan suatu tanda tangan (penanda) yang
dibubuhkan pada data digital. Tanda tangan digital bukan merupakan hasil pemindaian
atau input tanda tangan melalui antarmuka tertentu. Tanda tangan digital adalah suatu
nilai kriptografi yang bergantung pada isi data itu sendiri serta kunci yang digunakan untuk
membangkitkan nilai kriptografinya sehingga nilai se ap tanda tangan digital dapat selalu
berbeda tergantung pada data yang ditandatangani.
190 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Tanda tangan digital yang dibubuhkan ke dalam suatu data dapat memvalidasi asal data
tersebut. Tanda tangan digital ini memberi rasa aman kepada penerima data karena mampu
mengetahui pengirim suatu data. Tanda tangan yang valid saat diauten fikasi ulang juga
menjamin bahwa data yang dikirim dak mengalami perubahan atau modifikasi selama proses
pengiriman.
Tanda tangan digital menerapkan teori kriptografi asimetrik. Kriptografi asimetrik merupakan
jenis kriptografi yang menggunakan kunci yang berbeda untuk mengenkripsi dan mendekripsi
pesan. Kriptografi asimetrik ini dimungkinkan setelah dikenalkannya konsep penggunaan
kunci publik dan kunci privat pada kriptografi. Dengan adanya sepasang kunci publik dan kunci
privat, pengirim dapat membubuhi data yang dikirimkannya dengan tanda tangan yang telah
dienkripsi. Tanda tangan digital yang telah dienkripsi ini lebih memberikan rasa aman dan
kepercayaan bagi pihak penerima.
Tanda tangan digital secara umum terdiri atas ga bagian, yaitu public key generator, hash
func on, dan verifica on func on.
1. Public key generator
Algoritma untuk membangkitkan sepasang kunci publik dan kunci privat. Kunci publik
digunakan untuk mengenkripsi pesan atau, dalam hal ini, tanda tangan yang dibubuhkan,
sedangkan kunci privat digunakan untuk mendekripsi ulang tanda tangan yang telah
dienkripsi. Dengan cara ini dapat diketahui dari mana pesan itu berasal.
2. Hash func on
Algoritma untuk membuat tanda tangan digital atau signing algorithm. Fungsi hash akan
menghasilkan nilai tertentu yang unik berdasarkan data yang digunakan sebagai masukan
fungsi hash. Nilai hash ini bisa dijadikan tanda tangan bersama dengan proses enkripsi
yang dilakukan sehingga tanda tangan yang dihasilkan pun benar-benar merepresentasikan
pesan yang dikirim.
3. Verifica on func on
Algoritma untuk memverifikasi tanda tangan yang dibubuhkan. Bagian ini sebenarnya
sama dengan bagian untuk mengekripsi tanda tangan. Karena menggunakan pasangan
kunci publik dan privat, seharusnya proses enkripsi dan dekripsi bisa dilakukan dengan
algoritma yang sama dengan tambahan fungsi hash yang sama pula.
Suatu tanda tangan digital yang dibangkitkan dari suatu pesan dan dienkripsi dengan kunci
tertentu harus dapat digunakan untuk membuk kan keaslian pesan. Ar nya, fungsi hash
dan proses enkripsi yang diterapkan harus membuat tanda tangan tersebut unik dan hanya
bergantung pada data dan kunci masukan. Selain itu, kunci yang digunakan untuk proses
enkripsi dan dekripsi harus merupakan kunci yang kuat yang dak mudah didapatkan oleh
pihak ke ga yang dak memiliki kunci privat pengirim.
APLIKASI KRIPTOGRAFI 191

7.1.1 Sifat Tanda Tangan Digital


Ke ka penerima mendapat komunikasi tertanda secara digital dalam bentuk yang dienkripsi,
komputer penerima mengoperasikan program yang berisi algoritma kriptografi yang sama
dan fungsi hash yang pengirim gunakan untuk menciptakan tanda tangan digital dari program
pengenkripsi tanda tangan yang secara otoma s menggunakan kunci publik pengirim. Oleh
karena itu, jika program dapat mendekripsi tanda tangan, penerima tahu bahwa komunikasi
datang dari pengirim karena hanya kunci publik dari pengirimlah yang dapat mendekripsi
tanda tangan digital dengan kunci privat pengirim.
Adapun sifat-sifat yang diinginkan dari tanda tangan digital di antaranya adalah membuk kan,
formal, menyetujui, dan efisien.
1. MembukƟkan
Sebuah tanda tangan mengauten kasikan suatu dokumen dengan mengiden fikasi
penanda tangan dengan dokumen yang ditandatangani.
2. Formal
Penandatanganan suatu dokumen “memaksa” pihak penanda tangan untuk mengakui
pen ngnya dokumen tersebut.
3. Menyetujui
Dalam beberapa kondisi yang disebutkan dalam hukum, sebuah tanda tangan menyatakan
persetujuan pihak penanda tangan terhadap isi dokumen yang ditandatangani.
4. Efisien
Sebuah tanda tangan pada dokumen tertulis sering menyatakan klarifikasi pada suatu
transaksi dan menghindari akibat-akibat yang tersirat di luar apa yang telah dituliskan.
Penandatanganan pesan dapat dilakukan dengan salah satu dari dua cara, yaitu enkripsi pesan
dan tanda tangan digital dengan fungsi hash.
1. Enkripsi pesan
Enkripsi pesan dengan sendirinya juga menyediakan ukuran auten kasi. Pesan terenkripsi
sudah menyatakan bahwa pesan tersebut telah ditandatangani.
2. Tanda tangan digital dengan fungsi hash (hash func on)
Tanda tangan digital dibangkitkan dari hash tehadap pesan. Nilai hash adalah kode ringkas
dari pesan. Tanda tangan digital berlaku seper tanda tangan pada dokumen kertas. Tanda
tangan digital ditambahkan pada pesan.

7.1.2 Cara Kerja Tanda Tangan Digital


Tanda tangan digital dibuat dengan menggunakan teknik kriptografi, suatu cabang dari
matema ka terapan yang menangani pengubahan suatu informasi menjadi bentuk lain yang
192 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

dak dapat dimenger dan dikembalikan seper semula. Tanda tangan digital menggunakan
kriptografi kunci publik (public key cryptography), di mana algoritmanya menggunakan dua
buah kunci. Kunci yang pertama adalah kunci pembentuk tanda tangan digital atau pengubah
data ke bentuk lain yang dak dapat dimenger , sedangkan kunci yang kedua digunakan untuk
verifikasi tanda tangan digital ataupun mengembalikan pesan ke bentuk semula. Konsep ini
juga dikenal sebagai sistem kriptografi asimetrik (assymmetric cryptosystem).
Sistem kriptografi asimetrik menggunakan kunci privat, yang hanya diketahui oleh penanda
tangan, untuk membentuk tanda tangan digital, dan kunci publik, yang digunakan untuk
verifikasi tanda tangan digital. Jika beberapa orang ingin memverifikasi suatu tanda tangan
digital yang dikeluarkan oleh seseorang, kunci publik harus disebarkan ke orang-orang tersebut.
Kunci privat dan kunci publik ini sesungguhnya secara matema s “berhubungan” (memenuhi
persamaan-persamaan dan kaidah-kaidah tertentu). Walaupun demikian, kunci privat dak
dapat ditemukan dengan informasi yang didapat dari kunci publik.
Proses lain yang tak kalah pen ng adalah fungsi hash, yang digunakan untuk membentuk
sekaligus memverifikasi tanda tangan digital. Fungsi hash adalah sebuah algoritma pembentuk
representasi digital atau semacam sidik jari dalam bentuk nilai hash (hash value) yang biasanya
jauh lebih kecil dari dokumen aslinya dan unik karena hanya berlaku untuk dokumen tersebut.
Perubahan sekecil apa pun pada suatu dokumen akan mengakibatkan perubahan pada nilai
hash yang berkorelasi dengan dokumen tersebut. Fungsi hash yang demikian disebut juga
fungsi hash satu arah karena nilai hash dak dapat digunakan untuk membentuk kembali
dokumen aslinya.
Penggunaan tanda tangan digital memerlukan dua proses, yaitu pembentukan dan verifikasi
tanda tangan digital.
1. Pembentukan tanda tangan digital
Pembentukan tanda tangan digital menggunakan nilai hash yang dihasilkan dari dokumen
serta kunci privat yang telah didefinisikan sebelumnya. Untuk menjamin keamanan nilai
hash, seharusnya terdapat kemungkinan yang sangat kecil bahwa tanda tangan digital yang
sama dapat dihasilkan dari dua dokumen serta kunci privat yang berbeda.
2. Verifikasi tanda tangan digital
Proses pengecekan tanda tangan digital dilakukan dengan mereferensikannya ke dokumen
asli dan kunci publik yang telah diberikan. Dengan cara demikian dapat ditentukan apakah
tanda tangan digital dibuat untuk dokumen yang sama menggunakan kunci privat yang
berkorespondensi dengan kunci publik atau dak.
Jika ada sebuah dokumen atau informasi lain yang akan ditandatangani, penanda tangan
pertama-tama membatasi secara tepat bagian-bagian mana yang akan ditandatangani.
Informasi yang dibatasi tersebut dinamakan message. Kemudian, aplikasi tanda tangan digital
akan membentuk nilai hash menjadi tanda tangan digital menggunakan kunci privat. Tanda
tangan digital yang terbentuk ini unik baik untuk message maupun kunci privat.
APLIKASI KRIPTOGRAFI 193
Umumnya, sebuah tanda tangan digital disertakan dan juga disimpan pada dokumen. Namun
demikian, tanda tangan digital juga dapat dikirim atau disimpan sebagai dokumen terpisah
sepanjang masih dapat diasosiasikan dengan dokumennya. Karena tanda tangan digital bersifat
unik pada dokumennya, pemisahan tanda tangan digital seper itu merupakan hal yang dak
perlu dilakukan.
Proses pembentukan dan verifikasi tanda tangan digital memenuhi unsur-unsur paling pen ng
yang diharapkan dalam suatu tujuan legal, yaitu auten kasi penanda tangan, auten kasi
dokumen, penegasan, dan efisiensi.
1. AutenƟkasi penanda tangan
Jika pasangan kunci publik dan kunci privat berasosiasi dengan pemilik sah yang telah
didefinisikan, tanda tangan digital dapat menghubungkan/mengasosiasikan dokumen
dengan penanda tangan. Tanda tangan digital dak dapat dipalsukan, kecuali penanda
tangan kehilangan kontrol atas kunci privat miliknya.
2. AutenƟkasi dokumen
Tanda tangan digital juga mengiden kkan dokumen yang ditandatangani dengan ngkat
kepas an dan ketepatan yang jauh lebih nggi daripada tanda tangan di atas kertas.
3. Penegasan
Membuat tanda tangan digital memerlukan penggunaan kunci privat penanda tangan.
Tindakan ini menegaskan bahwa penanda tangan setuju dan bertanggung jawab terhadap
isi dokumen.
4. Efisiensi
Proses pembentukan dan verifikasi tanda tangan digital menyediakan ngkat kepas an
yang nggi bahwa tanda tangan yang ada merupakan tanda tangan sah dan asli dari pemilik
kunci privat. Dengan tanda tangan digital dak perlu ada verifikasi dengan melihat secara
teli (membandingkan) antara tanda tangan yang terdapat di dokumen dengan contoh
tanda tangan aslinya seper yang biasa dilakukan dalam pengecekan tanda tangan secara
manual.
Kelemahan yang masih menyertai teknologi tanda tangan digital adalah biaya tambahan secara
ins tusional dan biaya langganan.
1. Biaya tambahan secara insƟtusional
Tanda tangan digital memerlukan pembentukan otoritas-otoritas yang berhak menerbitkan
ser fikat serta biaya-biaya lain untuk menjaga dan mengembangkan fungsi-fungsinya.
2. Biaya langganan
Penanda tangan memerlukan perangkat lunak aplikasi dan juga membayar untuk
memperoleh ser fikasi dari otoritas yang berhak mengeluarkan ser fikat.
Sementara itu, kelebihan yang paling utama dari adanya tanda tangan digital adalah lebih
terjaminnya auten kasi sebuah dokumen. Tanda tangan digital sangat sulit dipalsukan dan
berasosiasi dengan kombinasi dokumen dan kunci privat secara unik.
194 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

7.1.3 Fungsi Hash


Kini akan dibahas mengenai keutuhan pesan saat dikirimkan. Bagaimana jika Anto mengirimkan
surat pembayaran kepada Badu sebesar 1 juta rupiah, namun di tengah jalan Maman (yang
ternyata berhasil membobol sandi entah dengan cara apa) membubuhkan satu nol di belakang
angka 1 juta sehingga menjadi 10 juta rupiah? Di mata Tari, pesan tersebut harus utuh, dak
diubah-ubah oleh siapa pun, bukan hanya oleh Maman, namun juga oleh Anto, Badu, dan
gangguan pada transmisi pesan (noise). Hal ini dapat dilakukan dengan fungsi hash satu arah
(one-way hash func on), yang kadang disebut sidik jari (fingerprint), hash, message integrity
check, atau manipula on detec on code.
Saat hendak mengirimkan pesannya, Anto harus membuat sidik jari dari pesan yang akan
dikirimkan kepada Badu. Pesan (yang besarnya dapat bervariasi) yang akan di-hash disebut
pre-image, sedangkan output-nya yang memiliki ukuran tetap disebut hash-value (nilai hash).
Kemudian, melalui saluran komunikasi yang aman, Anto mengirimkan sidik jarinya kepada
Badu. Setelah Badu menerima pesan, Anto dak peduli lewat saluran komunikasi yang mana,
Badu juga membuat sidik jari dari pesan yang telah diterimanya dari Anto. Selanjutnya, Badu
membandingkan sidik jari yang dibuatnya dengan sidik jari yang diterimanya dari Anto. Jika
kedua sidik jari itu iden k, Badu dapat yakin bahwa pesan itu utuh dan dak diubah-ubah
sejak dibuatnya sidik jari yang diterima Badu. Jika pesan pembayaran 1 juta rupiah itu diubah
menjadi 10 juta rupiah, nilai hash yang dihasilkan tentu berbeda.

Gambar 7.1 Membuat sidik jari pesan

Fungsi hash untuk membuat sidik jari tersebut dapat diketahui oleh siapa pun, tak terkecuali,
sehingga semuanya dapat memeriksa keutuhan dokumen atau pesan tertentu. Tak ada
algoritma rahasia, dan umumnya tak ada pula kunci rahasia.
Jaminan dari keamanan sidik jari berangkat dari kenyataan bahwa hampir dak ada dua pre-
image yang memiliki hash-value yang sama. Inilah yang disebut dengan sifat collision free dari
suatu fungsi hash yang baik. Selain itu, sangat sulit untuk membuat suatu pre-image jika hanya
diketahui hash-value-nya saja.
Berikut diuraikan sifat-sifat fungsi hash kriptografi.
1. Tahan pre-image (pre-image resistent): Bila diketahui nilai hash h, sulit didapatkan (secara
komputasi dak layak) m di mana h = hash(m).
2. Tahan pre-image kedua (second pre-image resistant): Bila diketahui input m1, sulit dicari
input m2 ( dak sama dengan m1) yang menyebabkan hash(m1) = hash(m2).
APLIKASI KRIPTOGRAFI 195
3. Tahan tumbukan (collision-resistant): Sulit dicari dua input yang berbeda, m1 dan m2, yang
menyebabkan hash(m1) = hash(m2).
Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan
mengonversinya menjadi string keluaran yang panjangnya tetap (fixed), umumnya berukuran
jauh lebih kecil daripada ukuran string semula. Fungsi hash dapat menerima masukan string
apa saja. Jika string menyatakan pesan (message), sembarang pesan M berukuran bebas
dikompresi oleh fungsi hash H melalui persamaan berikut:
h = H(M) (7.1)
Keterangan:
M pesan dengan panjang sembarang
h nilai hash (hash value) atau pesan ringkas (message digest)
Keluaran fungsi hash disebut juga nilai hash (hash value) atau pesan ringkas (message digest).
Fungsi hash akan mengembalikan hash value yang panjangnya jauh lebih pendek dibandingkan
dengan panjang string masukan. Sebagai contoh, pesan yang ingin dicari nilai hash-nya hanya
memiliki ukuran sebesar 1 Mb, maka hash value yang dihasilkan hanya 128 bit. Kebanyakan
fungsi hash yang ada saat ini berupa fungsi hash satu arah. Ar nya, pesan yang sudah diubah
menjadi message digest dak dapat dikembalikan lagi menjadi pesan semula (irreversible).
Selain itu, fungsi hash satu arah mempunyai sifat sebagai berikut.
1. Fungsi H dapat diterapkan pada blok data berukuran berapa saja.
2. H menghasilkan nilai (h) dengan panjang tetap (fixed length output).
3. H(x) mudah dihitung untuk se ap nilai x yang diberikan.
4. Untuk se ap h yang dihasilkan, dak mungkin dikembalikan nilai x sedemikian sehingga
H(x) = h.
5. Untuk se ap x yang diberikan, dak mungkin dicari y ≠ x sedemikian sehingga H(y) = H(x).
6. Tidak mungkin dicari pasangan x dan y sedemikian sehingga H(x) = H(y).
Persamaan fungsi hash satu arah dapat dilihat pada Persamaan 7.2.
hi = H(Mi, hi – 1) (7.2)

Skema fungsi hash ditunjukkan pada Gambar 7.2.

Gambar 7.2 Fungsi hash satu arah

Contoh algoritma fungsi hash satu arah yang sering digunakan dalam kriptografi adalah MD5
dan SHA. Message authen ca on code (MAC) adalah salah satu variasi dari fungsi hash satu
arah. Hanya saja, selain pre-image, sebuah kunci rahasia juga menjadi input untuk fungsi MAC.
196 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

7.1.4 Algoritma MD5


MD5 adalah fungsi hash satu arah yang dibuat oleh Ron Rivest. MD5 merupakan perbaikan
dari MD4, yang berhasil diserang oleh kriptanalis. Algoritma MD5 menerima masukan berupa
pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit.
Dengan panjang message digest 128 bit, secara brute force dibutuhkan percobaan sebanyak
2128 kali untuk menemukan dua buah pesan atau lebih yang mempunyai message digest
yang sama. Gambaran pembuatan message digest dengan algoritma MD5 diperlihatkan pada
Gambar 7.3.

Gambar 7.3 Pembuatan message digest dengan algoritma MD5 (Munir, 2006)

Langkah-langkah pembuatan message digest secara garis besar adalah menambahkan padding
bits, menambahkan nilai panjang pesan semula, menginisialisasi penyangga (buffer) MD, dan
mengolah pesan dalam blok berukuran 512 bit.
1. Menambahkan padding bits
a. Pesan ditambah dengan sejumlah padding bits sedemikian sehingga panjang pesan
(dalam satuan bit) kongruen dengan 448 modulo 512.
b. Jika panjang pesan 448 bit, tambahkan 512 bit sehingga menjadi 960 bit. Jadi, panjang
bit padding bits adalah antara 1 sampai 512.
c. Padding bits terdiri atas sebuah bit 1 dan, sisanya, yang mengiku nya, bit 0
2. Menambahkan nilai panjang pesan
a. Pesan yang telah diberi padding bits selanjutnya ditambah lagi dengan 64 bit yang
menyatakan panjang pesan semula.
b. Jika panjang pesan > 264, yang diambil adalah panjangnya dalam modulo 264. Dengan
kata lain, jika panjang pesan semula adalah K bit, 64 bit yang ditambahkan menyatakan
K modulo 264.
c. Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit.
APLIKASI KRIPTOGRAFI 197
3. Menginisialisasi penyangga MD
a. MD5 membutuhkan 4 buah penyangga yang masing-masing panjangnya 32 bit. Total
panjang penyangga adalah 4 × 32 = 128 bit. Keempat penyangga ini menampung hasil
antara dan hasil akhir.
b. Keempat penyangga dinamai A, B, C, dan D. Se ap penyangga diinisialisasi dengan nilai-
nilai (dalam notasi HEX) berikut:
A = 01 23 45 67
B = 89 AB CD EF
C = FE DC BA 98
D = 76 54 32 10
4. Mengolah pesan dalam blok berukuran 512 bit
a. Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai
YL – 1).
b. Se ap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit,
yang disebut proses HMD5 seper diperlihatkan pada Gambar 7.4. Proses HMD5 terdiri atas
4 buah putaran. Masing-masing putaran melakukan operasi dasar MD5 sebanyak 16
kali, dan se ap operasi dasar memakai sebuah elemen T. Jadi, se ap putaran memakai
16 elemen tabel T.
c. Pada Gambar 7.4, Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambahi
padding bits dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai message
digest 128-bit dari proses HMD5 ke-q. Pada awal proses, MDq berisi nilai inisialisasi
penyangga MD.

Gambar 7.4 Pengolahan blok 512 bit (proses HSHA) [Munir, 2006]
198 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

d. Fungsi-fungsi fF, fG, fH, dan fI masing-masing berisi 16 kali operasi dasar terhadap
masukan. Se ap operasi dasar menggunakan elemen tabel T. Operasi dasar MD5
diperlihatkan pada Gambar 7.5.

Gambar 7.5 Operasi dasar MD5 (Munir, 2006)

Operasi dasar MD5 yang diperlihatkan pada Gambar 7.5 dapat ditulis dalam bentuk
Persamaan 7.3.
a Å b + CLSs(a + g(b, c, d) + X[k] + T[i]) (7.3)
Keterangan:
a, b, c, d empat buah peubah penyangga 32-bit (berisi nilai penyangga A, B, C, D)
g salah satu fungsi F, G, H, I
CLSs circular le shi sebanyak s bit
X[k] kelompok 32-bit ke-k dari blok 512 bit message ke-q.
Nilai k 0 sampai 15
T[i] elemen tabel T ke-i (32 bit)
+ operasi penjumlahan modulo 232
Fungsi fF, fG, fH, dan fI adalah fungsi untuk memanipulasi masukan a, b, c, dan d dengan
ukuran 32-bit. Masing-masing fungsi dapat dilihat pada TABEL 7.1.
TABEL 7.1 Fungsi-fungsi dasar MD5
Nama Notasi g(b,c,d)
fF F(b,c,d) (b ∧ c) ∨ (~ b ∧ d )
fG G(b,c,d) (b ∧ d ) ∨ (c ∧ ~ d )
fH H(b,c,d) b⊕c⊕d
fI I(b,c,d) c ⊕ (b ∧ ~ d )
APLIKASI KRIPTOGRAFI 199
Sebagai catatan, operator logika AND, OR, NOT, dan XOR masing-masing dilambangkan
dengan ∧,∨, ~ , ⊕.
Nilai T[i] dapat dilihat pada TABEL 7.2 yang disusun oleh fungsi 232 x abs(sin(i)) dengan
i dalam radian.
TABEL 7.2 Nilai T[i]

Dari Tabel 7.2 dapat dilihat bahwa masing-masing fungsi fF, fG, fH, dan fI melakukan 16
kali operasi dasar. Misalkan notasi [abcd k s i] menyatakan operasi
A Å b + ((a + g(b, c, d) + X[k] + T[i])<<<s) (7.4)
di mana <<< s melambangkan operasi circular le shi 32-bit, operasi dasar pada
masing-masing putaran dapat ditabulasikan sebagai berikut.
1) Putaran 1: 16 kali operasi dasar dengan g(b, c, d) = F(b, c, d) [lihat TABEL 7.3]
TABEL 7.3 Perincian operasi pada fungsi F(b, c, d)

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

2) Putaran 2: 16 kali operasi dasar dengan g(b, c, d) = G(b, c, d) [lihat TABEL 7.4]
TABEL 7.4 Perincian operasi pada fungsi G(b, c, d)
No. [abcd k s i ]
1. [ABCD 1 5 17]
2. [DABC 6 9 18]
3. [CDAB 11 14 19]
4. [BCDA 0 20 20]
5. [ABCD 5 5 21]
6. [DABC 10 9 22]
7. [CDAB 15 14 23]
8. [BCDA 4 20 24]
9. [ABCD 9 5 25]
10. [DABC 14 9 26]
11. [CDAB 3 14 27]
12. [BCDA 8 20 28]
13. [ABCD 13 5 29]
14. [DABC 2 9 30]
15. [CDAB 7 14 31]
16. [BCDA 12 20 32]
3) Putaran 3: 16 kali operasi dasar dengan g(b, c, d) = H(b, c, d) [lihat TABEL 7.5]
TABEL 7.5 Perincian operasi pada fungsi H(b, c, d)
No. [abcd k s i ]
1. [ABCD 5 4 33]
2. [DABC 8 11 34]
3. [CDAB 11 16 35]
4. [BCDA 14 23 36]
5. [ABCD 1 4 37]
6. [DABC 4 11 38]
7. [CDAB 7 16 39]
8. [BCDA 10 23 40]
9. [ABCD 13 4 41]
10. [DABC 0 11 42]
11. [CDAB 3 16 43]
12. [BCDA 6 23 44]
13. [ABCD 9 4 45]
14. [DABC 12 11 46]
15. [CDAB 15 16 47]
16. [BCDA 2 23 48]
APLIKASI KRIPTOGRAFI 201
4) Putaran 4: 16 kali operasi dasar dengan g(b, c, d) = I(b, c, d) [lihat TABEL 7.6]
TABEL 7.6 Perincian operasi pada fungsi I(b, c, d)
No. [abcd k s i ]
1. [ABCD 0 6 49]
2. [DABC 7 10 50]
3. [CDAB 14 15 51]
4. [BCDA 5 21 52]
5. [ABCD 12 6 53]
6. [DABC 3 10 54]
7. [CDAB 10 15 55]
8. [BCDA 1 21 56]
9. [ABCD 8 6 57]
10. [DABC 15 10 58]
11. [CDAB 6 15 59]
12. [BCDA 13 21 60]
13. [ABCD 4 6 61]
14. [DABC 11 10 62]
15. [CDAB 2 15 63]
16. [BCDA 9 21 64]
Setelah putaran keempat, a, b, c, dan d ditambahkan ke A, B, C, dan D. Selanjutnya, algoritma
memproses blok data berikutnya (Yq+1). Keluaran akhir dari algoritma MD5 adalah hasil
penyambungan bit di A, B, C, dan D.
Dari uraian di atas, secara umum fungsi hash MD5 dapat ditulis dalam persamaan matema s
berikut:
MD0 = IV (7.5)
MDq + 1 = MDq + fI(Yq + fH(Yq + fG(YQ + fF(Yq + MDq))))
MD = MDL – 1 (7.6)
Keterangan:
IV ini al vector dari penyangga ABCD, yang dilakukan pada proses inisialisasi penyangga
Yq blok pesan berukuran 512-bit ke-q
L jumlah blok pesan
MD nilai akhir message digest

7.1.5 Proses Pemberian Tanda Tangan Digital (Signing)


Pengirim pesan mula-mula menghitung message digest (MD) dari pesan. MD diperoleh de-
ngan mentransformasikan pesan M dengan fungsi hash satu arah H:
MD = H(M) (7.7)

Selanjutnya, MD dienkripsi dengan algoritma kriptografi kunci publik dan kunci privat (SK) si
pengirim. Hasil enkripsi inilah yang dinamakan tanda tangan digital S.
202 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

S = ESK (MD) (7.8)

Kemudian, tanda tangan digital S diletakkan ke pesan M (dengan cara menyambung S).
Keduanya lalu dikirim melalui saluran komunikasi. Dalam hal ini dapat dikatakan bahwa pesan
M sudah ditandatangani oleh pengirim dengan tanda tangan digital S seper tampak pada
Gambar 7.6.

Gambar 7.6 Penggunaan fungsi hash: pengirim (sumber: www.indocisc.com)

Gambar 7.7 mengilustrasikan proses verifikasi di sisi penerima untuk membuk kan keauten kan
tanda tangan. Cara yang digunakan adalah sebagai berikut.
1. Tanda tangan digital S didekripsikan dengan kunci publik (PK) pengirim pesan, menghasilkan
message digest semula (MD) menggunakan Persamaan 7.8.
MD = DPK (S) (7.9)
2. Penerima kemudian mengubah pesan M menjadi MD’ dengan fungsi hash satu arah yang
sama dengan fungsi hash yang digunakan oleh pengirim.
3. Jika MD’ = MD, tanda tangan yang diterima auten k dan berasal dari pengirim yang benar.

Gambar 7.7 Penggunaan fungsi hash: penerima (sumber: www.indocisc.com)


APLIKASI KRIPTOGRAFI 203

7.2 SerƟfikat Digital


Ser fikasi adalah sebuah skema di mana pihak (orang) yang dipercayai seper penguasa
atau pihak yang berwenang mengeluarkan ser fikat untuk pihak lain. Pihak yang dipercayai
ini mengeluarkan kupon (voucher) yang disebut ser fikat yang memiliki sejumlah ar yang
mendalam, misalnya nomor ijazah. Teknologi ser fikasi dikembangkan untuk iden fikasi dan
auten kasi dalam skala besar.
Kegunaan ser fikat digital dapat dijelaskan lebih lanjut pada skenario berikut. Anto hendak
mengirimkan kepada Badu suatu dokumen rahasia. Jika mereka belum pernah bertemu
sebelumnya, tentu Badu harus mengirimkan kunci publiknya kepada Anto agar Anto dapat
melakukan enkripsi sehingga pesannya hanya dapat dibuka oleh Badu. Demikian juga seba-
liknya, Anto harus mengirimkan kepada Badu kunci publiknya agar Badu dapat memeriksa
keaslian tanda tangan Anto pada pesan yang dikirim. Cara ini digunakan agar Anto dapat
memas kan pesan itu sampai ke tujuannya, sedangkan Badu dapat merasa yakin bahwa
pengirim pesan itu adalah Anto.
Masalah yang muncul adalah bagaimana mereka dapat saling bertukar kunci dengan aman
karena bisa saja di tengah jalan, kunci publik milik Anto dan Budi itu digan dengan kunci publik
milik Maman. Jika itu yang terjadi, Maman dengan bebas dapat menyadap dan mengubah
seluruh informasi. Inilah suatu contoh dari man-in-the-middle a ack.
Anto dan Badu harus sama-sama yakin bahwa kunci-kunci publik yang mereka dapatkan
benar-benar auten k. Mereka bisa mendapatkannya dari seseorang yang dipercaya, misalnya
Tari. Se ap anggota jaringan diasumsikan telah memiliki saluran komunikasi pribadi yang
aman dengan Tari. Saluran inilah yang dimanfaatkan untuk mengirim kunci publik Badu ke
Anto (dan sebaliknya). Tari menjadi penjamin keabsahan kunci jika Anto dan Badu sebelumnya
dak pernah bertukar kunci publik. Skenario ini tetap membutuhkan kunci-kunci kriptografi
lagi (baik itu kunci simetrik maupun kunci asimetrik) untuk pengamanan saluran komunikasi
antara Tari dengan Anto atau Badu.
Masalah di atas dapat dipecahkan dengan penggunaan ser fikat digital. Tari dak harus se ap
saat menjadi penukar kunci. Tari cukup menandatangani kunci publik milik se ap orang di
jaringan tersebut. Sebenarnya ser fikat tersebut tak hanya berisi kunci publik, namun juga
berisi informasi pen ng lainnya mengenai ja diri pemilik kunci publik, seper nama, alamat,
pekerjaan, jabatan, perusahaan, dan bahkan hash dari suatu informasi rahasia. Semua orang
memercayai otoritas Tari dalam memberikan tanda tangan sehingga orang-orang dalam
jaringan itu merasa aman menggunakan kunci publik yang telah ditandatangani Tari.
204 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 7.8 Contoh ser fikat digital


(sumber: www.reoci es.com)

Jika Maman berhasil mencuri ser fikat digital yang dipertukarkan antara Anto dan Badu,
serta menggan nya dengan ser fikat digital milik dirinya sendiri, Anto dan Badu dapat segera
melihat bahwa ser fikat digital yang diterimanya bukan “lawan bicara” yang semes nya. Lalu,
bagaimana jika Chandra yang berada di luar jaringan Tari hendak berkomunikasi dengan Anto.
Chandra juga memiliki ser fikat, tetapi dak ditandatangani oleh Tari, melainkan oleh Tata,
seseorang yang dipercaya dalam jaringan tempat Chandra berada. Tari dan Tata adalah otoritas
ser fikat (cer ficate authority), yaitu pihak-pihak yang berwenang memberikan ser fikat.
Namun Anto dak mengenal dan dak memercayai Tata. Masalah ini dapat diselesaikan jika
ada otoritas ser fikat (OS) yang kedudukannya lebih nggi dari Tata dan Tari, misalnya Tania.
Tania memberikan pengesahan kepada Tata dan Tari sehingga ada hierarki ser fikat digital.
Jika berada pada kedudukan hierarki ter nggi, Tania bisa disebut otoritas ser fikat utama
(root cer ficate authority).
Anto memercayai tanda tangan Tari. Namun karena keberadaan Tari sendiri disahkan oleh
Tania, Anto tentu harus mengakui otoritas Tania. Jika Tania memberikan pengesahan kepada
OS lain di bawahnya seper Tata, dengan merunut struktur hierarki percabangan OS, Anto
dapat memeriksa kebenaran ser fikat digital milik Chandra yang disahkan oleh Tata.

Gambar 7.9 Contoh hierarki otoritas ser fikat digital


(sumber: www.reoci es.com)
APLIKASI KRIPTOGRAFI 205
Serangan terhadap sistem yang memiliki pengamanan dengan ser fikat digital sulit dilakukan.
Edi dak akan mendapatkan informasi apa pun, meskipun ia memainkan ulang percakapan
antara Anto dan Chandra. Edi membutuhkan kunci privat untuk bisa membuka pesan-pesan
yang dipertukarkan, padahal kunci privat itu dak ada di dalam ser fikat digital.
Jika ser fikat digital milik Chandra digan dengan ser fikat digital milik Maman, penukaran
itu akan segera diketahui, ser fikat digital itu pas berbeda. Sementara jika Maman dak
menggan ser fikat yang dipertukarkan antara Chandra dan Anto, tetapi mengubah pesan
yang dipertukarkan, akan muncul ke dakcocokan dalam pemeriksaan tanda tangan digital.
Secara teore s keunggulan dari tanda tangan digital adalah kemampuan untuk melakukan
proses auten kasi secara off-line. Pemeriksa cukup memiliki kunci publik dari OS utama untuk
mengetahui sah atau daknya kunci publik dari lawan bicaranya. Selain itu, untuk meningkatkan
keamanan, kunci publik OS utama bisa saja diintegrasikan dalam program aplikasi. Namun
kenyataannya, karena ada kemungkinan ser fikat digital tersebut hilang, tercuri, atau iden tas
pemilik ser fikat berubah (perubahan pada alamat surat elektronik atau nomor KTP, misalnya),
ser fikat digital perlu diperiksa keabsahannya dengan melihat da ar ser fikat terbatalkan
(cer ficate revoca on list) yang disimpan oleh OS.
Ser fikat digital didasarkan pada teknologi kunci publik dan kunci privat. Teknologi ini juga
digunakan untuk melindungi site, misalnya site nuklir. Masing-masing kunci tersebut seper
peralatan enkripsi yang unik. Tidak ada dua kunci yang sama sebab kunci-kunci tersebut dapat
digunakan untuk menentukan siapa pemiliknya.
Kunci selalu bekerja berpasangan, satu disebut kunci privat dan yang lain disebut kunci publik.
Apabila kunci publik mengenkripsi pesan, kunci privat akan mendekripsinya, begitu juga
sebaliknya. Kunci publik didistribusikan secara bebas kepada siapa pun yang ingin menukar
informasi secara aman, sedangkan kunci privat dak pernah didistribusikan dan tetap aman
pada komputer ataupun server apabila ada dalam jaringan.
Ser fikat digital mengotoma skan proses pendistribusian kunci publik dan pertukaran
informasi secara aman. Ke ka kita menginstal ser fikat digital pada komputer atau dalam
server, komputer kita akan memiliki kunci privat. Sementara kunci publik akan bermanfaat
sebagai bagian dari ser fikat digital yang dikirim pada komputer kita. Ke ka komputer lain
ingin mengubah informasi yang ada di komputer kita, komputer lain tersebut akan mengakses
ser fikat digital yang berisi kunci publik yang tersimpan dalam komputer kita. Komputer
lain itu akan menggunakan kunci publik kita untuk memvalidkan iden tas pribadi kita dan
mengenkripsi informasi dengan menggunakan SSL seper terlihat pada Gambar 7.10.
206 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 7.10 Protokol SSL (sumber: www.indocisc.com)

Hanya kunci privat yang dapat mendekripsi informasi sehingga informasi tetap aman dari
perubahan, meskipun informasi itu diakses di internet.

7.3 Keamanan Data Mul media Messaging Service


(MMS) pada Mobile Phone
Kemajuan teknologi telah membuat fungsi teknologi informasi dan komunikasi menjadi
konvergen sehingga kini muncul is lah informa on and communica on technology (ICT).
Internet dan mobile phone memiliki peran pen ng sebagai media untuk konvergensi
mul media saat ini. Mobile phone telah berevolusi menjadi perangkat pintar yang dapat
melakukan berbagai fungsi tambahan.
Sejalan dengan perkembangan tersebut, cara masyarakat melakukan komunikasi pun berubah.
Salah satu contohnya adalah komunikasi dengan menggunakan sistem layanan pengiriman
pesan (messaging service). Layanan pengiriman pesan berkembang dari short message
service (SMS) menjadi extended message service (EMS) dan sekarang mul media messaging
service (MMS). SMS hanya mampu mengirimkan pesan berupa teks, EMS sudah mendukung
pengiriman gambar, sedangkan MMS mendukung pengiriman pesan berupa teks, gambar,
suara, dan video.
Komunikasi melalui media MMS bukanlah komunikasi point-to-point. Pesan yang dikirimkan
melalui media MMS dak langsung sampai pada tujuan, melainkan melalui jaringan MMS
seper terlihat pada Gambar 7.11 sehingga keamanan pesan merupakan hal yang sangat
pen ng. Pengamanan pesan dilakukan dak hanya ke ka pesan akan dikirimkan, tetapi juga
pada saat pesan dikirimkan agar pesan itu tetap asli, dak diubah oleh seseorang. Salah satu
cara untuk mengamankan data adalah dengan menggunakan kriptografi (Mao, 2004).
APLIKASI KRIPTOGRAFI 207

Gambar 7.11 Diagram proses pengiriman MMS

Kriptografi pada mobile phone memunculkan tantangan baru karena keterbatasan sumber daya
komputasi pada perangkat, misalnya kapasitas memori dan media penyimpanan internal yang
kecil, serta kecepatan prosesor yang terbatas. Sementara algoritma kriptografi membutuhkan
sumber daya komputasi yang rela f besar. Problem lainnya adalah keragaman pla orm dan
sistem operasi sehingga diperlukan rancangan yang mampu menjamin kompa bilitas dan
interoperabilitas pada berbagai perangkat.
Keamanan sebuah algoritma kriptografi diukur dari banyaknya kerja yang dibutuhkan untuk
memecahkan ciphertext menjadi plaintext-nya tanpa mengetahui kunci yang digunakan. Kerja
ini dapat diekuivalenkan dengan waktu, memori, uang, dan lain-lain. Semakin banyak kerja
yang diperlukan (waktu pemecahannya semakin lama), semakin kuat algoritma kriptografi
tersebut (algoritma semakin aman untuk menyandikan data).
Pada buku ini akan diberikan contoh implementasi kriptografi pada mobile phone dengan
konsep kriptografi kunci simetrik, yaitu metode super enkripsi menggunakan Vigenere cipher
dan Playfair cipher seper dijelaskan pada Bab V. Kriptografi kunci simetrik sangat menekankan
pada kerahasiaan kunci yang digunakan untuk proses enkripsi dan dekripsi. Oleh karena itu,
sistem ini sering disebut sebagai kriptogafi kunci rahasia. Kriptografi kunci rahasia merupakan
bentuk kriptografi yang lebih tradisional, di mana sebuah kunci tunggal dapat digunakan untuk
mengenkripsi dan mendekripsi pesan. Kriptografi kunci simetrik mengarah pada metode
enkripsi di mana baik pengirim maupun penerima saling memiliki kunci yang sama. Masalah
utama yang dihadapi kriptografi kunci rahasia adalah membuat pengirim dan penerima
menyetujui kunci rahasia tanpa ada orang lain yang mengetahuinya. Hal ini membutuhkan
metode di mana dua pihak dapat berkomunikasi tanpa takut akan disadap.
Untuk menghadapi serangan, kriptografer harus menggunakan kunci yang lebih panjang dan
dak mudah ditebak. Semakin panjang kunci, semakin sulit exhaus ve search-nya, bahkan
dak mungkin dilakukan karena waktu yang dibutuhkan semakin lama. Namun, cara ini
mempunyai kelemahan di mana untuk mengingat kunci yang sangat panjang tentulah dak
208 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

mudah. Contohnya, ukuran kunci Playfair yang digunakan pada contoh ini adalah 16 x 16 piksel
atau 256 piksel warna. Apabila se ap piksel warna diwakili dengan 3 digit angka, panjang kunci
yang harus diingat sepanjang 256 x 3 = 768 digit angka. Hal ini tentu saja sangat menyulitkan
bagi penerima apabila mereka ingin melakukan proses dekripsi.

7.3.1 Pengamanan Kunci yang Digunakan untuk Proses


Enkripsi dan Dekripsi
Keamanan pada kunci yang digunakan dapat diop malkan dengan teknik yang diadopsi dari
konsep steganografi, yaitu metode end of file (EOF). EOF menyisipkan atau menyembunyikan
kunci yang digunakan untuk proses enkripsi dan dekripsi pada citra hasil enkripsi sebelum
dikirimkan. Kelebihan metode EOF adalah kemampuannya untuk menyisipkan kunci yang
sangat besar (atau yang berukuran cukup panjang).
Jika menggunakan konsep EOF, pengirim ataupun penerima pesan cukup mengingat 6 digit
angka yang nan nya digunakan sekaligus menjadi kunci untuk bisa melakukan proses dekripsi.
Penerima harus meng-input-kan 6 digit angka dengan benar sebelum bisa melakukan proses
dekripsi. Upaya peng-input-an kunci pada proses dekripsi hanya diizinkan 3 kali agar aman dari
penyusup. Selain itu, proses peng-input-an kunci sepanjang 6 digit juga dibatasi oleh waktu
yang ditentukan oleh pengirim. Waktu maksimal yang diizinkan adalah 255 de k. Apabila
pemasukannya lebih dari 3 kali atau melebihi waktu yang ditentukan, citra sudah dak dapat
dibuka lagi untuk didekripsi. Jadi, apabila menginginkan informasi itu kembali, kita harus
memintanya lagi kepada pengirim.
Kunci Playfair yang mempunyai konsep pengamanan dibangkitkan dengan ketentuan berikut
(Iswahyudi, Setyaningsih, dan Widyastu , 2012).
1. Kunci Playfair pada posisi baris 16 kolom 16 selalu berisi 3 dan akan berkurang 1 se ap kali
penerima meng-input-kan kunci yang salah pada proses dekripsi. Apabila posisi baris 16
kolom 16 bernilai 0, secara otoma s pada citra pesan sudah dak dapat dilakukan proses
dekripsi.
2. Pada kunci Playfair di posisi baris 16 kolom 15 diisikan waktu maksimal untuk meng-input-
kan kunci secara benar. Waktu maksimal yang dapat diisikan oleh pengirim adalah 255
de k.
3. Kunci Playfair pada posisi baris 16 kolom 13 dan 14 adalah nilai random yang digunakan
sebagai kunci untuk bisa melakukan proses enkripsi. Nilai kunci ini dak boleh sama dengan
nilai yang digunakan pada bu r 1 dan 2. Jadi, misalnya, posisi baris 16 kolom 15 diisi angka
50, maka pada posisi baris 16 kolom 13 dan 14 dak boleh diisikan angka 50 dan 3.
4. Selanjutnya, pada posisi kunci, selain pada posisi bu r 1, 2, dan 3, diisikan nilai angka antara
0–255 di mana semua nilai se ap posisi piksel dak diperbolehkan sama. Dengan kata lain,
se ap posisi piksel akan bernilai unik.
APLIKASI KRIPTOGRAFI 209
TABEL 7.7 merupakan contoh kunci Playfair yang dibangkitkan dengan ketentuan di atas.
Apabila kunci tersebut digunakan untuk melakukan enkripsi, pesan citra yang dikirimkan
dilindungi dengan cara berikut.
1. Penerima hanya diizinkan untuk mencoba memasukkan kunci/sandi paling banyak 3 kali
dalam jangka waktu dak lebih dari 91 de k.
2. Kunci atau sandi yang dirahasiakan adalah 029156.
TABEL 7.7 Contoh kunci Playfair (Iswahyudi et al, 2012)
95 247 158 171 116 214 210 138 23 75 154 46 187 140 39 236
51 2 176 102 97 231 241 121 4 209 14 178 37 16 185 8
56 160 131 147 73 228 74 254 17 249 245 144 243 81 68 15
85 103 222 65 151 133 33 0 83 92 240 111 239 127 248 184
165 220 7 93 24 1 208 6 108 173 143 38 157 161 45 104
180 110 53 227 226 246 197 94 27 130 54 107 212 36 82 20
237 42 99 124 207 203 244 218 252 64 123 10 57 255 66 58
134 211 61 141 55 170 79 120 129 49 70 60 32 105 162 193
50 30 221 106 202 101 86 148 250 119 205 77 253 47 126 215
88 189 200 142 52 71 188 13 48 223 206 168 251 113 135 40
80 213 11 21 183 9 179 132 128 22 139 67 241 137 224 98
217 100 182 114 44 34 232 159 146 28 169 96 199 166 153 230
194 216 163 125 195 59 229 26 152 219 118 5 175 112 25 198
78 172 90 191 181 190 117 18 109 204 201 19 76 192 238 233
72 87 149 196 155 186 234 31 225 174 12 235 35 69 62 122
63 177 136 43 89 145 150 115 167 41 164 84 29 156 91 3

Kunci Playfair kemudian akan disisipkan ke dalam cipher image pada posisi baris terakhir
di salah satu komponen warna pada citra. Sementara untuk menyamakan jumlah baris
dengan komponen warna yang telah mengandung kunci, baris terakhir komponen warna lain
dibangkitkan intensitas warnanya secara random.

7.3.2 Proses Enkripsi dan Dekripsi pada Mobile Phone


Proses enkripsi yang akan diimplementasikan pada mobile phone menggunakan metode
super enkripsi seper telah dijelaskan pada Bab V. Penambahan keamanan pada kunci yang
digunakan dapat dilihat pada Gambar 7.12.
210 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Gambar 7.12 Skema proses enkripsi pada aplikasi mobile phone


(Setyaningsih, Iswahyudi, dan Widyastu , 2013)

Proses enkripsi dilakukan dengan cara berikut.


1. Bangun kunci Playfair dengan aturan yang telah dijelaskan pada sub-subbab 7.3.1.
2. Bangkitkan kunci Vigenere dengan cara yang telah dijelaskan pada sub-subbab 5.3.2.
3. Transformasikan warna untuk memisahkan warna RGB (untuk citra berwarna) sehingga
menjadi 3 buah matriks (Gambar 7.12). Untuk citra grayscale, transformasi warna dak
perlu dilakukan.
4. Enkripsi menggunakan kunci Vigenere untuk masing-masing matriks komponen warna.
Pada hasil enkripsi dengan kunci Vigenere dilakukan enkripsi menggunakan algoritma
Playfair dengan kunci Playfair.
5. Sembunyikan kunci Playfair pada cipher image dengan metode end of file pada komponen
red, green, atau blue tergantung pada hasil nilai piksel kunci Playfair pada posisi baris
16 kolom 15. Apabila nilai intensitasnya di modulo menghasilkan nilai 0, kunci Playfair
disembunyikan pada komponen red; apabila bernilai 1, kunci Playfair disembunyikan pada
komponen green; apabila bernilai 2, kunci Playfair disembunyikan pada komponen blue.
Sementara pada baris terakhir komponen warna yang dak mengandung kunci Playfair juga
ditambahkan suatu nilai random antara 0–255 supaya ke ga komponen warna berukuran
sama. Langkah terakhir adalah mengembalikan nilai RGB dengan transformasi warna balik
sehingga dihasilkan citra baru yang sudah tersandikan seper terlihat pada Gambar 7.12.
Lebih lanjut, Gambar 7.13 memperlihatkan proses dekripsi pada aplikasi mobile phone.
APLIKASI KRIPTOGRAFI 211

Gambar 7.13 Skema proses dekripsi pada aplikasi mobile phone (Setyaningsih et al, 2013)

Proses dekripsi bisa dilakukan dengan langkah-langkah berikut.


1. Ambil citra yang akan didekripsi. Selanjutnya, lakukan proses transformasi warna sehingga
komponen warna RGB dari citra yang telah tersandikan terpisahkan seper pada proses
enkripsi.
2. Input-kan sandi untuk melakukan proses dekripsi. Kemudian, hitung nilai sandi apabila
di-modulo-kan 3 untuk mengetahui apakah kunci Playfair disisipkan pada komponen red,
green, ataukah blue.
3. Ambil komponen warna sesuai dengan hasil nilai perhitungan pada langkah kedua.
Kemudian, lakukan pengecekan pada posisi cipher komponen warna yang mengandung
kunci di posisi m x n dan m x (n-1). Apabila nilai posisi keduanya atau salah satunya bernilai
0, pada cipher image sudah dak dapat dilakukan proses dekripsi. Pengguna harus meminta
ulang pengiriman cipher-nya. Apabila nilai posisi keduanya > 0, lakukan hal berikut.
a. Mencocokkan nilai pada posisi citra m x (n-3) dan m x (n-2) dengan sandi.
b. Apabila dak sama, ulangi langkah ke-3, dan nilai intensitas citra pada posisi m x n
dikurangi 1, sedangkan posisi m x (n-1) dikurangi dengan waktu yang telah digunakan
untuk proses peng-input-an sandi.
c. Apabila sama, lanjutkan ke langkah 4.
4. Ekstrak kunci Playfair pada komponen warna yang mengandung kunci Playfair. Kemudian,
lakukan proses dekripsi dengan metode Playfair seper proses enkripsi untuk se ap matriks
warna. Selanjutnya, pada se ap komponen warna ciphertext hasil dekripsi dengan metode
Playfair dilakukan dekripsi dengan metode Vigenere cipher. Caranya, kurangi ciphertext
hasil dekripsi dengan metode Playfair dengan kunci Vigenere menggunakan konsep
pengurangan modulo 256 untuk semua matriks warna (Iswahyudi et al, 2012). Langkah
terakhir adalah mengembalikan vektor hasil dekripsi sebagai nilai RGB menggunakan
transformasi balik sehingga dihasilkan citra yang sama dengan citra aslinya.
212 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Pengujian aplikasi menggunakan tablet bersistem operasi Android dapat dilihat pada Gambar
7.14 (Setyaningsih et al, 2013).

Gambar 7.14 Ikon pada Samsung Galaxy Tab 2

Proses enkripsi diawali dengan memilih citra yang akan dienkripsi seper terlihat pada Gambar
7.15.

Gambar 7.15 Proses enkripsi

Selanjutnya, input-kan kunci sandi yang berupa bilangan antara 0–9 minimal 4 digit serta waktu
proses yang diizinkan untuk melakukan dekripsi, seper terlihat pada Gambar 7.16.
APLIKASI KRIPTOGRAFI 213

(a) (b)
Gambar 7.16 Peng-input-an (a) kunci dan (b) batas waktu proses kunci yang valid

Hasil pengujian proses enkripsi serta waktu prosesnya ditampilkan pada Gambar 7.17.

Gambar 7.17 Hasil dan waktu proses enkripsi

Analisis waktu proses enkripsi dan dekripsi pada hasil pengujian disajikan pada TABEL 7.8.
TABEL 7.8 Analisis waktu pada hasil pengujian (Setyaningsih et al, 2013)
Size Waktu Proses (ms)
No. Nama File
Plain Image Cipher Image Enkripsi Dekripsi
1. Angsa.jpg 480 x 640 481 x 640 2087 1665
2. Telepon.jpg 480 x 640 481 x 640 2111 1612
3. Gedung Luar.jpg 480 x 640 481 x 640 2003 1646
4. Kamboja.jpg 480 x 640 481 x 640 2075 1695
5. Perahu.jpg 480 x 640 481 x 640 2131 1682
Rata-rata 2081.4 1660
Berdasarkan TABEL 7.8, algoritma yang digunakan pada konsep ini cukup efek f untuk
penyandian data citra warna dan dapat diimplementasikan pada tablet bersistem operasi
Android karena dak membutuhkan waktu proses yang lama.
214 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

7.4 Evaluasi
1. Berikan pendapat Anda mengapa sistem informasi rentan terhadap gangguan keamanan,
kemudian jelaskan bagaimana cara mengatasinya.
2. Sebutkan komponen utama pada tanda tangan digital.
3. Berikan penjelasan secara lengkap apa yang Anda ketahui mengenai tanda tangan digital
dan ser fikat digital.
4. Buatlah sebuah pesan, kemudian dengan menggunakan algoritma MD5, carilah nilai hash
value-nya.
5. Berikan sebuah contoh proses pemberian tanda tangan digital.
GLOSARIUM

Algoritma Euclidean : algoritma untuk mencari nilai pembagi bersama terbesar


(PBB) dari dua buah bilangan bulat
Analisis frekuensi : teknik untuk memecahkan ciphertext berdasarkan
frekuensi kemunculan karakter di dalam pesan
Aritme ka modular : suatu perhitungan matema ka yang berhubungan dengan
hasil sisa pembagian
Array : kumpulan data-data skalar yang dinyatakan dalam bentuk
baris, kolom, dan gabungan keduanya
Asymmetric cryptosystem : jenis kriptografi yang menggunakan kunci yang berbeda
untuk mengenkripsi dan mendekripsi pesan
A ack : usaha untuk membongkar suatu pesan sandi tanpa
mendapatkan kunci dengan cara yang sah
Block cipher : algoritma kriptografi pembagi plaintext yang akan
dikirimkan menggunakan ukuran tertentu (disebut blok)
dengan panjang t
Brute force a ack : serangan terhadap sistem kriptografi dengan cara
mencoba-coba
Cipher : algoritma matema s untuk menyandikan plaintext menjadi
ciphertext
Cipher image : pesan dalam bentuk citra (image) yang telah dikodekan
(disandikan) sehingga siap dikirimkan
Ciphertext : pesan teks yang telah dikodekan (disandikan) sehingga
siap dikirimkan
Cryptanalysis : suatu ilmu dan seni membuka (breaking) ciphertext
menjadi plaintext tanpa mengetahui kunci yang digunakan
Cryptographic protocol : protokol yang menggunakan kriptografi
Cryptographic system : suatu fasilitas atau sebuah algoritma kriptografi yang
(cryptosystem) ditambah dengan semua kemungkinan plaintext,
ciphertext, dan kunci untuk mengonversikan plaintext ke
ciphertext, atau sebaliknya
Dekripsi (decryp on) : proses untuk memperoleh kembali plaintext dari ciphertext
Digital signature : tanda tangan (penanda) yang dibubuhkan pada data digital
Enkripsi (encryp on) : proses untuk menyandikan plaintext menjadi ciphertext
216 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Entropi : ukuran yang menyatakan jumlah informasi di dalam pesan,


biasanya dinyatakan dalam satuan bit
Kriptanalis (cryptanalyst) : orang yang melakukan kriptanalisis
Kriptografer : perancang algoritma kriptografi
Kriptografi : ilmu atau seni yang mempelajari bagaimana membuat
suatu pesan dari pengirim dapat disampaikan kepada
penerima dengan aman
Matriks : sekelompok bilangan yang tersusun dalam segi empat
dua-dimensi
Padding bit : bit yang ditambahkan jika ukuran blok terakhir dak
mencukupi panjang blok
Plain image : pesan berupa citra asli yang ingin dikirimkan dan dijaga
keamanannya
Plaintext : pesan teks asli yang ingin dikirimkan dan dijaga
keamanannya
Privat key : kunci untuk mendekripsi pesan
Public key : kunci untuk mengenkripsi pesan
Skalar : bilangan tunggal
Symmetric cryptosystem : suatu metode enkripsi di mana pengirim dan penerima
memiliki kunci yang sama
Stream cipher : algoritma untuk mengirimkan informasi/data yang
dioperasikan dalam bentuk blok-blok yang lebih kecil (byte
atau bit)
Subs tu on cipher : algoritma kriptografi yang menggan se ap unit plaintext
dengan satu unit ciphertext
Super enkripsi : salah satu kriptografi berbasis karakter yang mengga-
bungkan cipher subs tusi dan cipher transposisi
Vektor : sekelompok bilangan yang tersusun secara satu-dimensi
DAFTAR PUSTAKA

Abrihama, D. 2008. “Keystream Vigenere Cipher: Modifikasi Vigenere Cipher dengan


Pendekatan Keystream Generator”. Bandung: Program Studi Informa ka ITB.
Akram, U. 2012. “Re nal Image Preprocessing: Background and Noise Segmenta on”.
TELKOMNIKA Indonesian Journal of Electrical Engineering, 10(3).
Buchmann, J.A. 2000. Introduc on to Cryptography. New York: Springer-Verlag.
Darwin. 2011. “Studi Stream Cipher A5/2 dan Serangan-serangan terhadap Stream Cipher
A5/2”. h p://informa ka.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/Makalah1/
Makalah1-IF3058-Sem1-2010-2011-003.pdf (April 2013).
Donnie. 2007. “Studi Algoritma KASUMI (A5/3) Block Cipher”. h p://informa ka.stei.itb.
ac.id/~rinaldi.munir/Kriptografi/2006-2007/Makalah1/Makalah1-022.pdf (April 2013).
Gladman, B. 2003. “A Specifica on for Rijndael, the AES Algorithm”.
Hari, W.H. dan S. Mulyana. 2012. “Implementasi RC4 Stream Cipher untuk Keamanan Basis
Data”. Seminar Nasional Aplikasi Teknologi Informasi 2012 (SNATI 2012).
Irfian , A.D. 2007. “Metode Pengamanan Enkripsi RC4 Stream Cipher untuk Aplikasi Pelayanan
Gangguan”. Seminar Nasional Aplikasi Teknologi Informasi 2007 (SNATI 2007), C49–C52.
Ismail, I.A. et al. 2006. “How to Repair the Hill Cipher”. Jurnal of Zhejiang University SCIENSE
A, 7(12): 2022–2030.
Iswahyudi, C. et al. 2012. “Pengamanan Kunci Citra pada Algoritma Super Enkripsi Menggunakan
Metode End of File”. Seminar Nasional Aplikasi Sains dan Teknologi 2012, ISSN: 1979–911X.
Jolfaei, A. dan A. Mirghadri. 2011. “Image Encryp on Using Chaos and Block Cipher”. Computer
and Information Science, 4(1): 172–185.
Mao, W. 2004. Modern Cryptography: Theory & Prac ce. Upper Saddle River: Pren ce Hall.
Munir, R, 2004. ”Algoritma Kriptografi Modern”. Bahan Kuliah. Bandung: Departemen Teknik
Informa ka ITB.
Munir, R. 2006. Kriptografi. Bandung: Informa ka.
NIST. 2001. “Advanced Encryp on Standard (AES)”. h p://csrc.nist.gov/.2001. (April 2013).
218 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Rachman, A.K. 2010. “Perbandingan Mode Chiper Electronic Code Book dan Chiper Block
Chaining dalam Pengamanan Data”. Jurnal Teknologi, Juni 2010; 3(1):84–89.
Rahardjo, B. 2005. Keamanan Sistem Informasi Berbasis Internet. Jakarta: PT INDOCISC.
Rosenthal, J. 2005. Handbook of Cryptography. Zurich: University of Zurich.
Sasongko, J. 2005. “Pengamanan Data Informasi Menggunakan Kriptografi Klasik”. Jurnal
Teknologi Informasi DINAMIK, X(3):160–167.
Schneier, B. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C. Second
Edi on. New York: John Wiley & Sons, Inc.
Seberry, J. dan J. Pieprzyk. 1989. Cryptography: An Introduc on to Computer Security.
Englewood Cliffs: Pren ce Hall.
Setyaningsih, E. 2009. “Penyandian Citra Menggunakan Metode Playfair Cipher”. Jurnal Ilmiah
Nasional Jurnal Teknologi, 2(2): 213–217.
_____. 2009. “Penyandian Citra Menggunakan Metode Poligram Subs tu on Cipher”. Laporan
Peneli an. Yogyakarta: Ins tut Sains & Teknologi AKPRIND.
_____. 2010. “Konsep Superenkripsi untuk Penyandian Citra Warna Menggunakan Kombinasi
Hill Cipher dan Playfair Cipher”. Jurnal Ilmiah Nasional SITRORIKA, 6(1):38–48.
_____. 2010. “Pengembangan Metode Vigenere Cipher untuk Pengamanan Data Citra”.
Laporan Peneli an. Yogyakarta: Ins tut Sains & Teknologi AKPRIND.
Setyaningsih, E. et al. 2012. “Image Encryp on on Mobile Phone Using Super Encryp on
Algorithm”. TELKOMNIKA Indonesian Journal of Electrical Engineering, 10(4):599–608.
_____. 2013. “Op masi Algoritma Super Enkripsi untuk Meningkatkan Pengamanan Data Citra
Digital dalam Pengiriman MMS pada Piran Cerdas”. Jurnal Teknologi TECHNOSCIENTIA,
5(1).
Shannon, C.E. 1949. “Communica on Theory of Secrecy Systems”. Bell System Technical
Journal 28, p. 704.
Sinjaya, A. 2013. “Aplikasi Kriptografi dengan Menggunakan Metoda Advanced Encryp on
Standard”. Laporan Skripsi. Yogyakarta: Program Studi Sistem Komputer IST AKPRIND.
Stallings, W. 1993. Data and Computer Communica on. 4th Edi on. Englewood Cliffs: Pren ce
Hall.
_____. 1995. Network and Internetwork Security. Englewood Cliffs: Pren ce Hall.
S nson, R.D. 1995. Cryptography Theory and Prac ce. New York: Chapman & Hall/CRC.
_____. 2006. Cryptography Theory and Prac ce. Third Edi on. New York: Chapman & Hall/
CRC.
DAFTAR PUSTAKA 219
Suhartana, I.K.G. 2009. “Pengamanan Image True Color 24 Bit Menggunakan Algoritma
Vigenere Cipher dengan Penggunaan Kunci Bersama”. Ejurnal Universitas Udayana Bali,
2(1).
Wahana Komputer. 2003. Memahami Model Enkripsi dan Sekuri Data. Yogyakarta: Penerbit
ANDI.
Wibowo dan A. Wihartantyo. 2004. Advanced Encryp on Standard, Algoritma Rijndael.
Bandung: Ins tut Teknologi Bandung.
Younes, M.A.B. dan A. Jantan. 2008. “Image Encryp on Using Block-Based Transforma on
Algorithm. IAENG Interna onal Journal of Computer Science, 35(1).
220 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
INDEX

A cipher subs tusi, 72, 77


A5, 132 ciphertext, 8
acous c eavesdropping, 20 ciphertext-only a ack, 22
ac ve a ack, 20 cipher transposisi, 106
ac ve cheater, 29 columnar transposi on cipher, 109
adap ve-chosen-plaintext a ack, 18, 23 command history, 32
AddRoundKey, 172 command window, 32
AES, 15, 168 computa onally secure, 18
algoritme Chinese remainder, 60 confiden ality, 2
algoritme Euclidean, 57 confusion, 145
algoritme Rijndael, 168 control flow, 39
analisis frekuensi, 6 cryptanalysis a ack, 18
analisis histogram, 66 cryptanalyst, 2
analy cal a ack, 22 cryptography, 2
aritme ka modular, 55 cryptology, 2
array, 34 cryptosystem, 7, 8
asymmetric cryptosystem, 12
auten kasi, 3 D
authen ca on, 3 data integrity, 2
axes, 50 decryp on, 8
dekripsi, 8, 10
B DES, 15, 153
Beaufort cipher, 92 diffusion, 145
bilangan bulat, 55 digital signature, 189
block cipher, 14, 144 disk cipher, 5
brute force a ack, 12, 21 disp, 38
bujur sangkar Vigenere cipher, 86
E
C edit text, 46
Caesar wheel, 5 ekspresi Boolean, 40
cheater, 29 electromagne c eavesdropping, 20
chea ng, 26 electronic code book, 146
checkbox, 47 encryp on, 8
chosen-ciphertext a ack, 24 end of file (EOF), 208
chosen-key a ack, 24 enkripsi, 8, 9
cipher, 9 entropi, 65
cipher abjad-tunggal, 72 Euler to ent func on, 63
cipher aliran, 123 exhaus ve a ack, 21
cipher block chaining, 148 exhaus ve key search, 21
cipher blok, 14, 144
F
cipher feedback, 151
cipher homofonik, 82 faktor pembagi, 56
cipher polialfabe k, 83 fast exponen a on, 62
222 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

file script, 37 L
for, 39 listbox, 48
format citra digital, 51
fprin , 39
fungsi hash, 194
M
fungsi input, 39 man-in-the-middle a ack, 20, 21
fungsi M-File, 41 MATLAB, 31
Fungsi output, 38 matriks, 34
MD5, 196
G message authen ca on codes, 12
message digest, 195, 201
gcd, 56 metode zig-zag, 107
general equa on, 62 M-File, 37
mul media messaging service, 206
H
hash func on, 190 N
hieroglyphcs, 3 nonrepudia on, 3
Hill cipher, 100, 112
homofon, 82
HTTP, 26
O
operator aritme ka, 33
I operator logika, 34
operator relasional, 34
IDEA, 15 output feedback, 152
if, else, elseif, 40
imread, 51
ini al value, 133
P
integritas data, 2 passive a ack, 19
inverse AddRoundKey, 175 passive cheater, 29
invers modulo, 59 PBB, 56
InvMixColumns, 174 pembagi bersama terbesar, 56
InvShi Rows, 173 pengolahan citra, 50
InvSubBytes, 174 plaintext, 8
playfair Cipher, 94
K polialfabe k, 83
popup menu, 49
Kasiski, 91 prinsip Kerckhoff, 19
KASUMI, 135 private key, 16
kekongruenan, 58 public key, 16
kerahasiaan, 2 public key cryptosystem, 16
key distribu on problem, 14 public key generator, 190
key management problem, 14 pushbu on, 45
keystream vigenere cipher, 91
known-plaintext a ack, 22
korelasi, 64
R
kriptanalis, 2 radiobu on, 46
kriptografer, 2 RC4, 126
kriptografi, 2 rela f prima, 58
kriptografi klasik, 71 replay a ack, 25
kriptografi kunci asimetrik, 16, 180 ROT13, 76
kriptografi Kunci Simetrik, 123 RSA, 17, 181
kriptografi modern, 119
kriptologi, 2 S
kriptosistem, 9 scytale, 4
kualitas enkripsi, 67 secret-key cryptography, 12
serangan ak f, 20
serangan pasif, 19
INDEKS 223
ser fikat digital, 203
simple subs tu on, 72
sistem kriptografi, 7
skalar, 34
slider, 48
sniffing, 24
spoofing, 26
SSL, 27
sta c text, 45
steganografi, 1
stream cipher, 123
subs tu on cipher, 77
super enkripsi, 112
switch case, 41
symmetric cryptosystem, 12

T
tanda tangan digital, 189
TCP/IP, 26
teorema Chinese remainder, 60
teorema Fermat, 64
teori bilangan, 55
toggle bu on, 46
transformasi MixColumns, 171
transformasi Shi Rows, 171
transformasi SubBytes, 170
transposi on cipher, 71

U
uicontrol, 43
uncondi onally secure, 19

V
variabel, 33
vektor, 34
verifica on func on, 190
vigenere cipher, 85

W
watermarking, 1
while, 40
wiretapping, 20
workspace, 32
224 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
TENTANG PENULIS

Emy Setyaningsih lahir di Semarang, 30 Oktober 1972 dari


pasangan suami-istri Soeleman Hadi Siswoyo dan Rubiyah. Putri
bungsu dari lima bersaudara ini mendapatkan gelar Sarjana
Sains di Program Studi Ilmu Komputer, Ins tut Sains & Teknologi
AKPRIND Yogyakarta tahun 1996.
Sejak tahun 1997 sampai dengan sekarang mengabdikan diri
sebagai dosen tetap pada Program Studi Sistem Komputer,
Fakultas Sains Terapan, Ins tut Sains & Teknologi AKPRIND
Yogyakarta dan mendapatkan amanah untuk mengelola
Laboratorium Komputer sebagai Kepala Laboratorium
sampai dengan tahun 2002. Penulis ak f mengajar mata kuliah Pemrograman Komputer,
Pengolahan Citra, Computer Vision, Pengenalan Pola, dan Kriptografi. Pada tahun 2002 penulis
melanjutkan pendidikan ke Program Pascasarjana Ilmu Komputer, Universitas Gadjah Mada
dan menyelesaikan studi pada bulan Juli 2004 dengan gelar Magister Komputer (M.Kom.).
Sebagai seorang akademisi, berbagai pengalaman peneli an telah dilakukan, di antaranya
peneli an pada bidang keamanan data citra, kompresi data, serta alat pemantau seper alat
pemantau deteksi dini gempa bumi serta alat pemantau kereta api. Buku ini merupakan
rangkuman dari pengalaman peneli an yang penulis lakukan selama empat tahun terakhir,
khususnya di bidang keamanan data citra.
Penulis bisa dihubungi melalui e-mail emypurnomo@akprind.ac.id.
226 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB
M-FUNCTION

function cr=korrelation(citra,plain)
[bc,kc,sc]=size(citra);
[bp,kp,sp]=size(plain);
if (bc==bp) & (kc==kp)& (sc==sp)
if sc==1
cr=Hitung_korrelation(citra,plain,bc,kc);
else
citrar=citra(:,:,1);
plainr=plain(:,:,1);
crr=Hitung_korrelation(citrar,plainr,bc,kc);
citrag=citra(:,:,2);
plaing=plain(:,:,2);
crg=Hitung_korrelation(citrag,plaing,bc,kc);
citrab=citra(:,:,3);
plainb=plain(:,:,3);
crb=Hitung_korrelation(citrab,plainb,bc,kc);
cr=(crr+crg+crb)/3;
end;
end;

function cr=Hitung_korrelation(citra1,citra2,b1,k1);
xj=0;yj=0;xy=0;x2=0;y2=0;
for i=1:b1
for j=1:k1
xy=xy+double(citra1(i,j))*double(citra2(i,j));
xj=xj+double(citra1(i,j));
yj=yj+double(citra2(i,j));
x2=x2+double(citra1(i,j)^2);
y2=y2+double(citra2(i,j)^2);
end;
end;
cr=(b1*k1*xy-xj*yj)/sqrt((b1*k1*x2-xj^2)*(b1*k1*y2-yj^2));
%-------------------------------------------------------------
228 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

function histogram(plain,cipher);
red_p=plain(:,:,1);
green_p=plain(:,:,2);
blue_p=plain(:,:,3);

red_c=cipher(:,:,1);
green_c=cipher(:,:,2);
blue_c=cipher(:,:,3);

subplot(3,2,1), imhist(red_p), title(‘Histogram Plain Image Kanal


Merah’);
subplot(3,2,2), imhist(red_c), title(‘Histogram Cipher Image Kanal
Merah’);
subplot(3,2,3), imhist(green_p), title(‘Histogram Cipher Image Kanal
Green’);
subplot(3,2,4), imhist(green_c), title(‘Histogram Cipher Image Kanal
Green’);
subplot(3,2,3), imhist(green_p), title(‘Histogram Plain Image Kanal
Green’);
subplot(3,2,5), imhist(blue_p), title(‘Histogram Plain Image Kanal
Blue’);
subplot(3,2,6), imhist(blue_c), title(‘Histogram Cipher Image Kanal
Blue’);
%-------------------------------------------------------------

function EQ=Kualitas_enkripsi(citra1,citra2)
[b1,k1,s1]=size(citra1);
[b2,k2,s2]=size(citra2);
if s1==1
hn1=jumlahpiksel(citra1);
hn2=jumlahpiksel(citra2);
jum=sum(abs(hn1-hn2));
EQ=jum/256;
else
cr1=citra1(:,:,1);
cr2=citra2(:,:,1);
hnr1=jumlahpiksel(cr1);
hnr2=jumlahpiksel(cr2);
jum=sum(abs(hnr1-hnr2));
EQr=jum/256;
cg1=citra1(:,:,2);
LAMPIRAN 229
cg2=citra2(:,:,2);
hng1=jumlahpiksel(cg1);
hng2=jumlahpiksel(cg2);
jum=sum(abs(hng1-hng2));
EQg=jum/256;

cb1=citra1(:,:,3);
cb2=citra2(:,:,3);
hnb1=jumlahpiksel(cb1);
hnb2=jumlahpiksel(cb2);
jum=sum(abs(hnb1-hnb2));
EQb=jum/256;
EQ = (EQr+EQg+EQb)/3;
end;
% - - - - - - - - ----------------- ---------------------------

function enkripcaesar(plainteks,kunci)
p=double(plainteks);
c=p+kunci;
cc=char(c);
fprintf(‘Plainteks : %s \n’,plainteks);
fprintf(‘Cipherteks: %s \n’,cc);

function dekripcaesar(cipher,kunci)
c=double(cipher);
p=c-kunci;
pp=char(p);
fprintf(‘Cipherteks: %s \n’,cipher);
fprintf(‘Plainteks : %s \n’,pp);
%-------------------------------------------------------------

function substitusi
alfabet=’A’:’Z’;
plaintek = input(‘Plaintext : ‘);
plaintek=upper(plaintek);
kunci = input(‘Kunci : ‘);
kunci=upper(kunci);
kk=kuncisubstitusi(kunci);
nn=size(plaintek,2);
cipher=[];
230 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

for i=1:nn
if plaintek(i)~=’ ‘
c=find(alfabet==plaintek(i));
cipher=[cipher kk(c)];
else
cipher=[cipher ‘ ‘];
end;
end;
fprintf(‘Cipherteks: %s \n’,cipher);

function dekrip_substitusi
alfabet=’A’:’Z’;
cipher = input(‘Ciphertext : ‘);
cipher=upper(cipher);
kunci= input(‘Kunci : ‘);
kunci=upper(kunci);
kk=kuncisubstitusi(kunci);
nn=size(cipher,2);
plaintek=[];
for i=1:nn
if cipher(i)~=’ ‘
c=find(kk==cipher(i));
plaintek=[plaintek alfabet(c)];
else
plaintek=[plaintek ‘ ‘];
end;
end;
fprintf(‘Plainteks: %s \n’,plaintek);
%-------------------------------------------------------------

function enkrip_polyalpabetic
alfabet=’A’:’Z’;
plaintek = input(‘Plaintext : ‘);
kunci1 = input(‘Kunci ke-1 : ‘);
kunci2 = input(‘Kunci ke-2 : ‘);
plaintek = upper(plaintek);
kunci1 = upper(kunci1);
kunci2 = upper(kunci2);
kk1=kuncisubstitusi(kunci1);
kk2=kuncisubstitusi(kunci2);
nn=size(plaintek,2);
LAMPIRAN 231
cipher=[];
for i=1:2:nn
if plaintek(i)~=’ ‘
c=find(alfabet==plaintek(i));
cipher=[cipher kk1(c)];
else
cipher=[cipher ‘ ‘];
end;
if plaintek(i+1)~=’ ‘
c=find(alfabet==plaintek(i+1));
cipher=[cipher kk2(c)];
else
cipher=[cipher ‘ ‘];
end;
end;
fprintf(‘Cipherteks: %s \n’,cipher);

function dekrip_polyalpabetic
alfabet=’A’:’Z’;
cipher = input(‘Ciphertext : ‘);
kunci1 = input(‘Kunci ke-1 : ‘);
kunci2 = input(‘Kunci ke-2 : ‘);
cipher = upper(cipher);
kunci1 = upper(kunci1);
kunci2 = upper(kunci2);
kk1=kuncisubstitusi(kunci1);
kk2=kuncisubstitusi(kunci2);
nn=size(cipher,2);
plaintek=[];
for i=1:2:nn
if cipher(i)~=’ ‘
c=find(kk1==cipher(i));
plaintek=[plaintek alfabet(c)];
else
plaintek=[plaintek ‘ ‘];
end;
if cipher(i+1)~=’ ‘
c=find(kk2==cipher(i+1));
plaintek=[plaintek alfabet(c)];
else
232 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

plaintek=[plaintek ‘ ‘];
end;
end;
fprintf(‘Plainteks: %s \n’,plaintek);
%-------------------------------------------------------------

function enkrip_vigenere
plaintek = input(‘Plaintext : ‘);
kunci = input(‘Kunci : ‘);
plaintek= upper(plaintek);
kk = upper(kunci);
nn=size(plaintek,2);
n=size(kunci,2);
cipher=[];
i=1;
while i<=nn
j=1;
while j<=n
if plaintek(i)==’ ‘
cipher=[cipher ‘ ‘];
else
kn=double(kk(j)-65);
p=double(plaintek(i)-65);
cip=mod(p+kn,26);
cipher=[cipher char(cip+65)];
j=j+1;
end;
i=i+1;
end;
end;
fprintf(‘Cipherteks: %s \n’,cipher);

function dekripsi_vigenere
cipher = input(‘Ciphertext : ‘);
kunci = input(‘Kunci : ‘);
cipher = upper(cipher);
kk = upper(kunci);
nn=size(cipher,2);
n=size(kunci,2);
plaintek=[];
i=1;
LAMPIRAN 233
while i<=nn
j=1;
while j<=n
if cipher(i)==’ ‘
plaintek=[plaintek ‘ ‘];
else
kn=double(kk(j)-65);
p=double(cipher(i)-65);
cip=mod(p-kn,26);
plaintek=[plaintek char(cip+65)];
j=j+1;
end;
i=i+1;
end;
end;
fprintf(‘Plainteks: %s \n’,plaintek);
%-------------------------------------------------------------

function enkripcitra_vigenere
plaintek = imread(‘D:\Gambar\Gambar 256\peppers.bmp’);
kunci = input(‘Kunci : ‘);
r=plaintek(:,:,1);
g=plaintek(:,:,2);
b=plaintek(:,:,3);
[br,kl]=size(plaintek);
n=size(kunci,2);
jml=fix((br*kl)/n);
sisa=(br*kl)-(jml*n);
kk=[];
for i=1:jml
kk=[kk kunci];
end;
kk=[kk kunci(1:sisa)];
cr=mod(double(r)+kk,256);
cg=mod(double(g)+kk,256);
cb=mod(double(b)+kk,256);

cipher(:,:,1)=cr;
cipher(:,:,2)=cg;
cipher(:,:,3)=cb;
subplot(1,2,1), imshow(plaintek), title(‘Plaintek Image’);
234 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

subplot(1,2,2), imshow(cipher), title(‘Cipher Image’);


%------------------------------------------------------

function playspasi(x,y)
x=upper(x);
n=size(x,2);
yy=y(:); %menjadikan matrik kunci menjadi 1kolom
yy=yy.’ ; %matrik kunci diubah menjadi matrik baris
alpha=char(‘A’:’Z’);%agar dpt dilihat character apa yg tidak
notalpha=setdiff(alpha,upper(yy)); %terdapat pada matrik kunci
huruf=0;
data=[];
for i=1:n %proses untuk menghilangkan spasi
if x(i)~=’ ‘ %apabila input data mengandung spasi
huruf=huruf+1;
data=[data x(i)];
end;
end;
if mod(huruf,2)~=0 %apabila jumlah input data tidak genap
data=[data ‘X’]; % data inputan ditambahkan character ‘X’
huruf=huruf+1;
end;
i=1;
k=[];
while i<=huruf
m1=data(i);
m2=data(i+1);
[r1,c1]=find(y==m1); %mencari posisi m1 pada matrik kunci
[r2,c2]=find(y==m2); %mencari posisi m2 pada matrik kunci
if m1==m2
k=[k m1 ‘X’ m2];
elseif m1==notalpha || m2==notalpha %jika m1 or m2 tdk
k=[k m1 m2]; %ada pd matrik kunci
elseif (r1==r2) %jika m1 dan m2 pd baris yg sama
if (c1+1)>5
k=[k y(r1,1)];
else
k=[k y(r1,c1+1)];
end;
if (c2+1)>5
k=[k y(r2,1)];
LAMPIRAN 235
else
k=[k y(r2,c2+1)];
end;
elseif c1==c2 %jika m1 dan m2 pd kolom yg sama
if (r1+1)>5
k=[k y(1,c1)];
else
k=[k y(r1+1,c1)];
end;
if (r2+1)>5
k=[k y(1,c2)];
else
k=[k y(r2+1,c2)];
end;
elseif (r1~=r2) && (c1~=c2) %jika m1& m2 tdk pd kolom
% yg sama
k=[k y(r1,c2)];
k=[k y(r2,c1)];
end;
i=i+2;
end;
disp(‘PLAINTEXT : ‘)
disp(x)
disp(‘CIPHERTEXT : ‘)
disp(k)
%-------------------------------------------------------------

function deplayfair(x,y)
function deplayfair(x,y)
data=upper(x);
n=size(data,2);
yy=y(:);
yy=yy.’;
alpha=char(‘A’:’Z’);
notalpha=setdiff(alpha,upper(yy));
i=1;
k=[];
while i<=n
m1=data(i);
m2=data(i+1);
if (m2==’X’)&& ((i+2)<=n)
236 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

if m1==data(i+2)
i=i+1;
m2=data(i+1);
end;
end;
[r1,c1]=find(y==m1);
[r2,c2]=find(y==m2);
if m1==m2
k=[k m1 m2];
elseif m1==notalpha || m2==notalpha
k=[k m1 m2];
elseif (r1==r2)
if (c1-1)<1
k=[k y(r1,5)];
else
k=[k y(r1,c1-1)];
end;
if (c2-1)<1
k=[k y(r2,5)];
else
k=[k y(r2,c2-1)];
end;
elseif c1==c2
if (r1-1)<1
k=[k y(5,c1)];
else
k=[k y(r1-1,c1)];
end;
if (r2-1)<1
k=[k y(5,c2)];
else
k=[k y(r2-1,c2)];
end;
elseif (r1~=r2) && (c1~=c2)
k=[k y(r1,c2)];
k=[k y(r2,c1)];
end;
i=i+2;
end;
m=size(k,2);
LAMPIRAN 237
if k(m)==’X’
k(:,m)=[]
end;
disp(‘CIPHERTEXT : ‘)
disp(x)
disp(‘PLAINTEXT : ‘)
disp(k)
%-------------------------------------------------------------

function hillspasi(x,k)
[r,c]=size(k);
if r~=c %jika jml baris tdk sama dgn jml kolom
disp(‘KUNCI HARUS MATRIK BUJUR SANGKAR’)
else
data=upper(x);
if ismember(‘ ‘,data)==1 %mencek apakah inputan mengandung spasi
spasi=find(data==’ ‘);
km=size(spasi,2);
else
spasi=0;
end;
n=size(data,2);
xx=[];
a=0;
for i=1:n %menghilangkan spasi pd input bila ada
if data(i)~=’ ‘
a=a+1;
xx=[xx data(i)];
end;
end;
s=mod(a,r);
if s~=0 %bila jumlah karakter pd input tdk habis
ss=r-s; %dibagi dengan ordo matrik kunci, maka
sss=[]; %ditambahkan character ‘X’ sebanyak
for i=1:ss %kekurangannya
sss=[sss ‘X’];
end;
xx=[xx sss];
a=a+ss;
else
ss=0;
238 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

end;
i=1;
h=[];
while i<=a
m=[];
for j=i:(i-1+r)
m=[m xx(j)];
end;
m=double(m)-65;
c=mod(k*m’,26);
c=(c+65)’;
h=[h char(c)];
i=i+r;
end;
if spasi~=0 %proses utk menampilkan hasil cipher
hx=[];j=1;kk=0; %beserta spasi seperti input data asli
sj=spasi(j);
for i=1:n+ss
if i==sj
hx=[hx ‘ ‘];
j=j+1;
if j<=km
sj=spasi(j);
end;
else
kk=kk+1;
if kk<=a
d=h(kk);
hx=[hx d];
end;
end;
end;
else
hx=h;
end;
hh=[]; %proses utk menghilangkan karakter
for i=1:n %tambahannya
hh=[hh hx(i)];
end;
disp(‘CIPHER :’)
LAMPIRAN 239
disp(‘~~~~~~~~~’)
disp(hx)
if ~isequal(hx,hh) %bila tidak terdapat karakter tambahan
disp(‘ ‘) %perintah ini tidak dikerjakan
disp(‘CIPHER DENGAN MENGHILANGKAN KARAKTER TAMBAHAN :’)
disp(‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’)
disp(hh)
end;
end;
%-------------------------------------------------------------

function inves=invesmodulo(a,n)
%fungsi utk mencari invers modulonya
g(1)=n;
g(2)=a;
u(1)=1;
u(2)=0;
v(1)=0;
v(2)=1;
i=2;
while g(i)~=0
y=fix(g(i-1)/g(i));
g(i+1)=g(i-1)-y*g(i);
u(i+1)=u(i-1)-y*u(i);
v(i+1)=v(i-1)-y*v(i);
i=i+1;
end;
x=v(i-1);
if x >= 0
inves=x;
else
inves=x+n;
end;

function kij=adj(k)

%fungsi utk mencari matrik adjoin dari matrik kunci


c=size(k,2);
for i=1:c
for j=1:c
a=k;
240 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

a(:,j)=[];
a(i,:)=[];
kij(j,i)=(-1)^(i+j)*det(a);
end;
end;

function dehillcipher(x,k)
[r,c]=size(k);
if r~=c
disp(‘KUNCI HARUS MATRIK BUJUR SANGKAR’)
else
y1=det(k);
y2=invesmodulo(y1,26);
if mod(y1*y2,26)~=1 %pengecekan apakah matrik kunci bisa digunakan
disp(‘MATRIK TIDAK DAPAT DIJADIKAN KUNCI’)
else
data=upper(x);
if ismember(‘ ‘,data)==1
spasi=find(data==’ ‘);
km=size(spasi,2);
else
spasi=0;
end;
n=size(data,2);
xx=[];
a=0;
for i=1:n
if data(i)~=’ ‘
a=a+1;
xx=[xx data(i)];
end;
end;
s=mod(a,r);
if s~=0
ss=r-s;
else
ss=0;
end;
i=1;
h=[];
LAMPIRAN 241
while i<=a
m=[];
for j=i:(i-1+r)
m=[m xx(j)];
end;
m=double(m)-65;
ki=adj(k);
kinv=y2*ki;
c=mod(kinv*m’,26); % proses decipher
c=(c+65)’;
h=[h char(c)];
i=i+r;
end;
hx=[];j=1;kk=0;
if spasi~=0
sj=spasi(j);
for i=1:n
if i==sj
hx=[hx ‘ ‘];
j=j+1;
if j<=km
sj=spasi(j);
end;
else
kk=kk+1;
if kk<=a
d=h(kk);
hx=[hx d];
end;
end;
end;
else
hx=h;
end;
hh=hx;
m=size(hh,2);
while hh(m)==’X’
hh(:,m)=[];
m=m-1;
end;
242 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

disp(‘PLAINTEXT :’)
disp(‘~~~~~~~~~~~~’)
disp(hx)
if ~isequal(hx,hh)
disp(‘ ‘)
disp(‘PLAINTEXTDENGAN MENGHILANGKAN KARAKTER TAMBAHAN :’)
disp(‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’)
disp(hh)
end;
end;
end;
disp(‘PLAINTEXT :’)
disp(‘~~~~~~~~~~~~’)
disp(hx)
if ~isequal(hx,hh)
disp(‘ ‘)
disp(‘PLAINTEXT DENGAN MENGHILANGKAN KARAKTER TAMBAHAN :’)
disp(‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’)
disp(hh)
end;
%-------------------------------------------------------------

Fungsi enchiper diberi nama enkripsi.m


function c=enkripsi(x,baris)
n=size(x,2);
jeda1=2*baris-2;
jeda2=0;
c=[];
for i=1:baris
k=i;
c=[c x(k)];
while k<=n
k=k+jeda1;
if k<=n & jeda1~=0
c=[c x(k)];
end
k=k+jeda2;
if k<=n & jeda2~=0
c=[c x(k)];
end
end
LAMPIRAN 243
jeda1=jeda1-2;
jeda2=jeda2+2;
end
%-------------------------------------------------------------

Fungsi dechiper diberi nama dekrip.m


function c=dekrip(x,baris)
n=size(x,2);
jeda1=2*baris-2;
jeda2=0;
pos=0;
for i=1:baris
k=i;
pos=pos+1;
deciper(k)=[x(pos)];
while k<=n
k=k+jeda1;
if k<=n & jeda1~=0
pos=pos+1;
deciper(k)=[x(pos)];
end
k=k+jeda2;
if k<=n & jeda2~=0
pos=pos+1;
deciper(k)=[x(pos)];
end
end
jeda1=jeda1-2;
jeda2=jeda2+2;
end

c=[];
for i=1:n
c=[c deciper(i)];
end
%-------------------------------------------------------------

Fungsi enchiper diberi nama enkripsi.m


function c=enkripsi(x,permutasi)
k=size(permutasi,2);
n=size(x,2);
244 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

y=mod(n,k);
if y==0
b=n/k;
else
b=((n-y)/k)+1;
end
index=1;
for i=1:b
for j=1:k
if index>n
ciper(i,j)=[‘ ‘];
else
ciper(i,j)=[x(index)];
end
index=index+1;
end
end
cb=1:1:b;
ciperp=ciper(cb,permutasi);
d=ciperp(:);
c=d’;
%-------------------------------------------------------------

Fungsi dechiper diberi nama dekrip.m


function c=dekrip(x,permutasi)
k=size(permutasi,2);
n=size(x,2);
y=mod(n,k);
if y==0
b=n/k;
else
b=((n-y)/k)+1;
end
index=1;
for i=1:k
for j=1:b
deciper(i,j)=[x(index)];
index=index+1;
end
end
LAMPIRAN 245
for i=1:k
j=1;
while permutasi(j)~=i
j=j+1;
end
for l=1:b
deciperp(i,l)=deciper(j,l);
end
end
deciperk=deciperp(:);
c=deciperk’;
%-------------------------------------------------------------

function cipher=enkrip_xor(p,k)
p=dec2bin(double(p));
k=dec2bin(double(k));
nb=size(p,2);
nk=size(k,2);
if nb<nk
sisa=nk-nb;
plain=[];
for i=1:sisa
plain=[plain ‘0’];
end;
plain=[plain p];
kunci=k;
elseif nk<nb
sisa=nb-nk;
kunci=[];
for i=1:sisa
kunci=[kunci ‘0’];
end;
kunci=[kunci k];
plain=p;
else
plain=p;
kunci=k;
end;
cip=[];
for j=1:size(plain,2)
if plain(j)==kunci(j)
246 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

cip=[cip ‘0’];
else
cip=[cip ‘1’];
end;
end;
cipher=bin2dec(cip);
cipher=char(cipher);
LAMPIRAN 247
Mfile untuk disain aplikasi pada gambar 3.11
a. Untuk Komponen edit text1
function edit1_Callback(hObject, eventdata, handles)
A=str2num(get(handles.edit1,’String’));
handles.A=A;
guidata(hObject,handles);

b. Untuk Komponen edit text2


function edit2_Callback(hObject, eventdata, handles)
B=str2num(get(handles.edit2,’String’));
handles.B=B;
guidata(hObject,handles);

c. Untuk Komponen radiobuƩon1


function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton2,’Value’,0);
set(handles.radiobutton3,’Value’,0);
rd = 1;
handles.rd=rd;
guidata(hObject,handles);

d. Untuk Komponen radiobuƩon2


function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,’Value’,0);
set(handles.radiobutton3,’Value’,0);
rd = 2;
handles.rd=rd;
guidata(hObject,handles);

e. Untuk Komponen radiobuƩon3


function radiobutton3_Callback(hObject, eventdata, handles)
set(handles.radiobutton2,’Value’,0);
set(handles.radiobutton1,’Value’,0);
rd = 3;
handles.rd=rd;
guidata(hObject,handles);

f. Untuk Komponen pushbuƩon1


function pushbutton1_Callback(hObject, eventdata, handles)
A= handles.A;
B= handles.B;
rd=handles.rd;
if rd == 1
hasil = A + B;
elseif rd == 2
248 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

hasil = A - B;
else
hasil = A * B;
end;
set(handles.text5,’String’,hasil);

Mfile untuk disain aplikasi pada Gambar 3.12


a. Untuk Komponen check box1
function checkbox1_Callback(hObject, eventdata, handles)
cb1 = get(handles.checkbox1,’Value’);
if cb1 == 1
set(handles.text1,’String’, ‘Dipilih’);
else
set(handles.text1,’String’, ‘Tidak Dipilih’);
end;

b. Untuk Komponen check box2


function checkbox2_Callback(hObject, eventdata, handles)
cb2 = get(handles.checkbox2,’Value’);
if cb2 == 1
set(handles.text2,’String’, ‘Dipilih’);
else
set(handles.text2,’String’, ‘Tidak Dipilih’);
end;

c. Untuk Komponen check box3


function checkbox3_Callback(hObject, eventdata, handles)
cb3 = get(handles.checkbox3,’Value’);
if cb3 == 1
set(handles.text3,’String’, ‘Dipilih’);
else
set(handles.text3,’String’, ‘Tidak Dipilih’);
end;

Mfile untuk disain aplikasi pada gambar 3.14


function slider1_Callback(hObject, eventdata, handles)
nilai_slider = round(get(handles.slider1,’Value’));
handles.nilai_slider=nilai_slider;
guidata(hObject,handles);
set(handles.edit1,’String’,handles.nilai_slider);

Mfile untuk disain aplikasi pada gambar 3.15


function listbox1_Callback(hObject, eventdata, handles)
LAMPIRAN 249
indeks = get(handles.listbox1,’Value’);
isi = get(handles.listbox1,’String’);
tampil = isi(indeks);
set(handles.edit1,’String’,tampil);
250 KRIPTOGRAFI & IMPLEMENTASINYA MENGGUNAKAN MATLAB

Anda mungkin juga menyukai