Perancangan Perangkat Lunak Pengenkripsian Citra *.BMP, *.GIF, dan *.JPG dengan Metode Hill

(1)

PERANCANGAN PERANGKAT LUNAK PENGENKRIPSIAN

CITRA *.BMP, *.GIF DAN *.JPG

DENGAN METODE HILL

SKRIPSI

HENDRY YUANDI

041401061

DEPARTEMEN S-1 ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2008


(2)

PERANCANGAN PERANGKAT LUNAK PENGENKRIPSIAN CITRA *.BMP, *.GIF DAN *.JPG DENGAN METODE HILL

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

Hendry Yuandi 041401061

DEPARTEMEN S-1 ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2008


(3)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpah kurnia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.

Ucapan terima kasih penulis sampaikan kepada Ibu Dra.Esther Nababan,M.Sc dan Bapak Syahriol Sitorus, S.Si, MIT selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada penulis untuk menyempurnakan kajian ini. Panduan ringkas dan padat dan profesional telah diberikan kepada penulis agar penulis dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Program Studi S-1 Ilmu Komputer FMIPA USU Bapak Prof. Dr. Muhammad Zarlis dan Bapak Syahriol Sitorus, S.Si,MIT., Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen dan pegawai pada Program Studi S-1 Ilmu Komputer FMIPA USU, rekan-rekan mahasiswa Ilmu Komputer serta semua pihak yang telah membantu dan memberi masukan kepada penulis.

Akhirnya, tidak terlupakan kepada bapak, ibu dan semua sanak-keluarga yang selama ini memberikan bantuan dan dorongan yang diperlukan. Semoga Tuhan Yang Maha Esa akan membalasnya.


(4)

PERNYATAAN

PERANCANGAN PERANGKAT LUNAK PENGENKRIPSIAN CITRA *.BMP, *.GIF DAN *.JPG DENGAN

METODE HILL

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Desember 2008

Hendry Yuandi NIM. 041401061


(5)

THE DESIGN OF *.BMP, *.GIF, AND *.JPG IMAGE

ENCRYPTION SOFTWARE WITH HILL METHOD

ABSTRACT

Nowadays, image file as one of the digital data form, are used to save photo, image, or design in digital format. If those file weren’t protected while were sent through an open network like the internet, it might possible that those files can fall into the wrong hand. One of the ways to prevent it is by encrypting those files into a randomized image file,hence if those files fell into the wrong hand, they could not be used. One of the methods that we can use to encrypt those files is by using Hill Cipher. Hill Cipher is actually used to encrypt text file, but by changing the calculation of the RBG (Red Green Blue) amount of the image, then Hill Cipher can be used to encrypt the image file. Hill Cipher uses square matrix as the key of the encryption. By choosing the right matrix, Hill Cipher can be used for encryption because it only needs common matrix operation so that the process is quite fast. The goal of this writing is to create and design a software that can encrypt image file with Hill Cipher. The key that can be used including square matrix with ordo 2x2, 3x3. The result file of the encryption can be printed and saved again in *.BMP format. This writing also includes a test to the photo file image and cartoon file image so that can be known which image file that can be encrypted with hill Cipher.


(6)

ABSTRAK

File citra sebagai salah satu bentuk data digital saat ini banyak dipakai untuk menyimpan photo, gambar, ataupun hasil karya dalam format digital. Bila file-file tersebut tidak diamankan sewaktu dikirimkan ke jaringan terbuka seperti Internet, dikuatirkan file tersebut dapat jatuh ke pihak yang tidak diinginkan. Salah satu caranya adalah menyandikan citra tersebut sehingga bentuk citra menjadi teracak. Dan bila jatuh ke tangan yang tidak diinginkan, citra tersebut juga tidak bisa digunakan. Salah satu metode penyandian untuk tujuan di atas adalah menggunakan teknik penyandian dengan Hill Cipher. Hill Cipher sebenarnya merupakan salah satu teknik penyandian teks, tetapi dengan melakukan perubahan perhitungan pada nilai RGB (Red Green Blue) citra maka Hill Cipher juga dapat dipakai untuk menyandikan citra. Hill Cipher menggunakan matriks persegi sebagai kunci dalam proses penyandiannya. Dengan pemilihan matriks kunci yang baik, Hill Cipher dapat dipakai untuk penyandian karena hanya melibatkan operasi matriks biasa sehingga prosesnya relatif cepat.Hasil dari tulisan ini adalah perancangan dan pembuatan suatu perangkat lunak yang dapat melakukan penyandian citra dengan Hill Cipher. Matriks kunci yang dapat dipakai mencakup matriks persegi dengan ordo 2 × 2, 3 × 3. File citra hasil penyandian ini dapat dicetak dan disimpan kembali dalam format bitmap. Pada tulisan ini juga dilakukan pengujian pada file citra jenis photo dan jenis kartun agar diketahui jenis citra apa yang mampu disandikan dengan Hill Cipher.


(7)

DAFTAR ISI

HALAMAN JUDUL ... i

HALAMAN PERSETUJUAN ... ii

PERNYATAAN ... iii

PENGHARGAAN ... iv

ABSTRAK ... v

ABSTRACT ... vi

DAFTAR ISI ... vii

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... x

BAB I PENDAHULUAN... 1

1.1 Latar Belakang Masalah ... 1

1.2 Perumusan Masalah ... 3

1.3 Diagram Konsepsi ... 3

1.4 Batasan Masalah ... 4

1.5 Tujuan Penulisan ... 5

1.6 Metodologi Penelitian ... 5

1.7 Sistematika Penulisan ... 6

BAB II LANDASAN TEORI ... 7

2.1 Definisi Matriks ... 7

2.1.1 Pengertian Ordo Suatu Matriks ... 7

2.1.2 Operasi Pada Matriks ... 8

2.2 Pengertian Citra ... 10

2.2.1 Mode Warna ... 11

2.2.2 Penyimpanan Citra ... 11

2.2.2.1 Format File Citra BMP ... 12

2.2.2.2 Format File Citra GIF ... 14

2.2.2.3 Format File Citra JPEG... 17

2.3 Pengertian Kriptografi ... 18

2.3.1 Jenis-Jenis Pengamanan Data ... 20

2.3.1.1 Pengkodean Dan Buku Kode ... 21

2.3.1.2 Steganografi ... 22

2.3.1.3 Ciphers ... 23

2.4 Hill Cipher... 27

2.4.1 Pengenkripsian Hill Cipher ... 29

2.4.2 Pendekripsian Hill Cipher ... 31

2.4.3 Memecahkan Hill Cipher ... 34

2.4.4 Kriptanalisis Hill Cipher ... 34

2.4.5 Dasar Matematika Penyandian Citra pada Hill Cipher ... 35

2.4.6 Algoritma Enkripsi dan Dekripsi Hill Cipher ... 36

BAB III PEMBAHASAN DAN PERANCANGAN ... 37

3.1 Pembahasan ... 37

3.1.1 Cara Kerja Hill Cipher Pada Penyandian Citra ... 37

3.1.2 Contoh Perhitungan... 44


(8)

3.1.4 Perhitungan Penyandian dengan Matriks 3 × 3 ... 49

3.2 Perancangan ... 54

3.2.1 Perancangan Form ... 54

3.2.2 Perancangan Class Module... 58

3.2.3 Perancangan Module ... 59

BAB IV ALGORITMA DAN IMPLEMENTASI ... 61

4.1 Algoritma ... 61

4.1.1 Algoritma Menghitung Determinan Matriks 2 × 2 ... 61

4.1.2 Algoritma Menghitung Determinan Matriks 3 × 3 ... 61

4.1.3 Algoritma Perkalian Matriks ... 61

4.1.4 Algoritma Invers Matriks ... 62

4.1.5 Algoritma Enkripsi Hill Cipher ... 63

4.1.6 Algoritma Dekripsi Hill Cipher ... 66

4.2 Implementasi Sistem... 69

4.2.1 Spesifikasi Perangkat Keras dan Perangkat Lunak ... 69

4.2.2 Cara Instalasi ... 69

4.2.3 Cara Penggunaan Program ... 70

4.2.4 Pengujian ... 73

BAB V KESIMPULAN DAN SARAN... 87

5.1 Kesimpulan ... 87

5.2 Saran ... 87


(9)

DAFTAR TABEL

Tabel 2.1 Format File BMP ... 13 Tabel 2.2 Format File GIF ... 14 Tabel 2.3 Format File JPEG ... 17


(10)

DAFTAR GAMBAR

Gambar 2.1 Citra Analog ... 10

Gambar 2.2 Citra Digital... 11

Gambar 2.3 Beberapa Teknik Enkripsi Sederhana... 19

Gambar 2.4 Ilustrasi Proses Enciphering Hill Cipher ... 29

Gambar 2.5 Ilustrasi Proses Deciphering Hill Cipher ... 31

Gambar 3.1 Ilustrasi Nilai RGB pada Piksel ... 38

Gambar 3.2 Representasi Nilai Piksel Untuk Matriks 2 × 2 ... 39

Gambar 3.3 Representasi Nilai Piksel Untuk Matriks 3 × 3 ... 39

Gambar 3.4 Representasi Nilai Piksel Untuk Matrikx 4 × 4 ... 40

Gambar 3.5 Diagram Alir Enkripsi atau Penyandian Citra ... 41

Gambar 3.6 Diagram Alir Dekripsi atau Penyandian Balik Citra ... 43

Gambar 3.7 Perancangan Form Splash ... 55

Gambar 3.8 Perancangan Form Utama ... 56

Gambar 3.9 Perancangan Form Konfirmasi ... 57

Gambar 4.1 Tampilan Splash Screen ... 70

Gambar 4.2 Tampilan Form Utama untuk Input Matriks Kunci 2 × 2... 71

Gambar 4.3 Tampilan Form Utama untuk Input Matriks Kunci 3 × 3... 72

Gambar 4.4 Tampilan Form Konfirmasi ... 73

Gambar 4.5 Citra Asli Dengan Variasi Nilai RGB yang Tinggi ... 73

Gambar 4.6 Hasil Proses Citra Photo dengan Matriks 2 × 2: 2 1 5 3       Iterasi Pertama ... 74

Gambar 4.7 Hasil Proses Citra Photo dengan Matriks 2 × 2: 2 1 5 3       Iterasi Kedua ... 74

Gambar 4.8 Hasil Proses Citra Photo dengan Matriks 2 × 2: 2 1 5 3       Iterasi Ketiga ... 75


(11)

Gambar 4.9 Hasil Proses Citra Photo dengan Matriks 2 × 2: 19 5 12 23

 

 

 

pada Iterasi Pertama ... 75 Gambar 4.10 Hasil Proses Citra Photo dengan Matriks 2 × 2: 19 5

12 23

 

 

 

pada Iterasi Kedua ... 76 Gambar 4.11 Hasil Proses Citra Photo dengan Matriks 2 × 2: 19 5

12 23

 

 

 

pada Iterasi Ketiga ... 76 Gambar 4.12 Hasil Proses Citra Photo dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

          Iterasi

Pertama ... 77 Gambar 4.13 Hasil Proses Citra Photo dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

          Iterasi

Kedua ... 78 Gambar 4.14 Hasil Proses Citra Photo dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

         

Iterasi Ketiga ... 78 Gambar 4.15 Citra Asli Jenis Kartun ... 79 Gambar 4.16 Hasil Proses Citra Kartun dengan Matriks 2 × 2: 2 1

5 3

 

 

 

Iterasi Pertama ... 79 Gambar 4.17 Hasil Proses Citra Kartun dengan Matriks 2 × 2: 2 1

5 3

 

 

 

Iterasi Kedua ... 79 Gambar 4.18 Hasil Proses Citra Kartun dengan Matriks 2 × 2: 2 1

5 3

 

 

 


(12)

Gambar 4.19 Hasil Proses Citra Kartun dengan Matriks 2 × 2: 19 5 12 23

 

 

 

Iterasi Pertama ... 80 Gambar 4.20 Hasil Proses Citra Kartun dengan Matriks 2 × 2: 19 5

12 23

 

 

 

Iterasi Kedua ... 80 Gambar 4.21 Hasil Proses Citra Kartun dengan Matriks Kedua 2 × 2: 19 5

12 23

 

 

  Iterasi Ketiga ... 81 Gambar 4.22 Hasil Proses Citra Kartun dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

 

 

 

 

 

Iterasi Pertama ... 81 Gambar 4.23 Hasil Proses Citra Kartun dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

 

 

 

 

 

Iterasi Kedua ... 81 Gambar 4.24 Hasil Proses Citra Kartun dengan Matriks 3 × 3:

1 1 1 0 1 1 1 0 1

 

 

 

 

 

Iterasi Ketiga ... 82 Gambar 4.25 Citra Asli Jenis Kartun Kualitas Photo ... 82 Gambar 4.26 Hasil Proses Citra Kartun Kualitas Photo dengan Matriks 2 x 2 :

2 1 5 3

 

 

 Iterasi Pertama... 83 Gambar 4.27 Hasil Proses Citra Kartun Kualitas Photo dengan Matriks 2 x 2 :

2 1 5 3

 

 

 Iterasi Kedua ... 83 Gambar 4.28 Hasil Proses Citra Kartun Kualitas Photo dengan Matriks 2 x 2 :

2 1 5 3

 

 


(13)

Gambar 4.29 Citra Hasil Dekripsi Balik dengan Matriks Kunci 2 × 2, dan 3 × 3 2 1

5 3

 

 

 dan

1 1 1 0 1 1 1 0 1

 

 

 

 

 

... 85

Gambar 4.30 Citra Hasil Dekripsi Balik dengan Matriks Kunci 2 × 2 : 19 5

12 23

 

 


(14)

THE DESIGN OF *.BMP, *.GIF, AND *.JPG IMAGE

ENCRYPTION SOFTWARE WITH HILL METHOD

ABSTRACT

Nowadays, image file as one of the digital data form, are used to save photo, image, or design in digital format. If those file weren’t protected while were sent through an open network like the internet, it might possible that those files can fall into the wrong hand. One of the ways to prevent it is by encrypting those files into a randomized image file,hence if those files fell into the wrong hand, they could not be used. One of the methods that we can use to encrypt those files is by using Hill Cipher. Hill Cipher is actually used to encrypt text file, but by changing the calculation of the RBG (Red Green Blue) amount of the image, then Hill Cipher can be used to encrypt the image file. Hill Cipher uses square matrix as the key of the encryption. By choosing the right matrix, Hill Cipher can be used for encryption because it only needs common matrix operation so that the process is quite fast. The goal of this writing is to create and design a software that can encrypt image file with Hill Cipher. The key that can be used including square matrix with ordo 2x2, 3x3. The result file of the encryption can be printed and saved again in *.BMP format. This writing also includes a test to the photo file image and cartoon file image so that can be known which image file that can be encrypted with hill Cipher.


(15)

ABSTRAK

File citra sebagai salah satu bentuk data digital saat ini banyak dipakai untuk menyimpan photo, gambar, ataupun hasil karya dalam format digital. Bila file-file tersebut tidak diamankan sewaktu dikirimkan ke jaringan terbuka seperti Internet, dikuatirkan file tersebut dapat jatuh ke pihak yang tidak diinginkan. Salah satu caranya adalah menyandikan citra tersebut sehingga bentuk citra menjadi teracak. Dan bila jatuh ke tangan yang tidak diinginkan, citra tersebut juga tidak bisa digunakan. Salah satu metode penyandian untuk tujuan di atas adalah menggunakan teknik penyandian dengan Hill Cipher. Hill Cipher sebenarnya merupakan salah satu teknik penyandian teks, tetapi dengan melakukan perubahan perhitungan pada nilai RGB (Red Green Blue) citra maka Hill Cipher juga dapat dipakai untuk menyandikan citra. Hill Cipher menggunakan matriks persegi sebagai kunci dalam proses penyandiannya. Dengan pemilihan matriks kunci yang baik, Hill Cipher dapat dipakai untuk penyandian karena hanya melibatkan operasi matriks biasa sehingga prosesnya relatif cepat.Hasil dari tulisan ini adalah perancangan dan pembuatan suatu perangkat lunak yang dapat melakukan penyandian citra dengan Hill Cipher. Matriks kunci yang dapat dipakai mencakup matriks persegi dengan ordo 2 × 2, 3 × 3. File citra hasil penyandian ini dapat dicetak dan disimpan kembali dalam format bitmap. Pada tulisan ini juga dilakukan pengujian pada file citra jenis photo dan jenis kartun agar diketahui jenis citra apa yang mampu disandikan dengan Hill Cipher.


(16)

BAB I

PENDAHULUAN

1.1 Latar Belakang

File citra sebagai salah satu bentuk data digital saat ini banyak dipakai untuk menyimpan photo, gambar, ataupun hasil karya dalam format digital. Bila file-file tersebut tidak diamankan sewaktu dikirimkan ke jaringan terbuka seperti Internet, dikuatirkan file tersebut dapat jatuh ke pihak yang tidak diinginkan, yang kemudian disalahgunakan untuk hal – hal bersifat negatif. Perkembangan teknologi komputer yang semakin canggih serta terbuka jaringan yang menghubungkan satu komputer dengan komputer lain memungkinkan pertukaran data tidak mengenal waktu dan tempat lagi. Sisi buruk dari ini adalah data yang penting dapat dengan mudah jatuh ke tangan orang yang tidak bertanggung jawab. Misalkan si A ingin mengirimkan suatu file citra rahasia kepada temannya si B dan agar file tersebut tidak jatuh ke tangan si C maka baik A dan B harus memikirkan suatu cara untuk menyandikan file tersebut dan hanya A dan B yang dapat mengembalikan citra yang disandikan tersebut.

Salah satu cara untuk mengatasi hal tersebut adalah menyandikan citra tersebut sehingga bentuk citra menjadi teracak. Dan apabila jatuh ke tangan yang tidak diinginkan, citra tersebut juga tidak dapat digunakan.

Salah satu metode penyandian untuk tujuan di atas adalah menggunakan teknik penyandian dengan metode Hill Cipher. Hill Cipher sebenarnya merupakan salah satu teknik penyandian teks, tetapi dengan melakukan perubahan perhitungan pada nilai RGB (Red Green Blue) citra maka Hill Cipher juga dapat dipakai untuk menyandikan citra. Hill Cipher menggunakan matriks persegi sebagai kunci dalam proses penyandiannya. Dengan pemilihan matriks kunci yang baik, Hill Cipher dapat dipakai untuk penyandian karena hanya melibatkan operasi matriks biasa sehingga prosesnya relatif cepat.

Kriptografi adalah seni dan ilmu pengetahuan untuk memproteksi pengiriman data dengan mengubahnya menjadi kode tertentu dan hanya ditujukan untuk orang yang hanya memiliki sebuah kunci untuk mengubah kode itu kembali. Kriptografi mencakup dua buah proses yaitu melakukan enkripsi pada tulisan atau pesan yang


(17)

bersifat rahasia ataupun melakukan proses kebalikannya yaitu dekripsi pesan rahasia (kode atau cipher) dengan menggunakan kunci. Hasil pesan atau data yang diacak atau dikenal sebagai ciphertext atau kriptogram. Proses enkripsi biasanya melibatkan sebuah algoritma dan sebuah kunci. Algoritma enkripsi adalah suatu metode pengacakan yang merupakan suatu program komputer dalam bentuk kumpulan-kumpulan perintah. Data yang akan dienkripsi dapat berupa pesan broadcast ataupun data digital.

Aspek keamanan kriptografi menyangkut beberapa hal berikut ini :

1. Authentication. Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat berpura-pura sebagai orang lain.

2. Integrity. Penerima harus dapat memeriksa apakah pesan telah dimodifikasi di tengah jalan atau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan ke dalam pesan, mengurangi atau mengubah pesan selama data berada di perjalanan.

3. Non Repudiation. Pengirim seharusnya tidak dapat mengelak bahwa dialah pengirim pesan yang sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak bahwa dialah pengirim e-mail yang sesungguhnya.

4. Authority. Informasi yang berada pada sistem jaringan seharusnya hanya dapat dimodifikasi oleh pihak yang berwenang. Modifikasi yang tidak diinginkan, dapat berupa penulisan tambahan pesan, pengubahan isi, pengubahan status, penghapusan, pembuatan pesan baru, pemalsuan, atau menyalin pesan untuk digunakan kemudian oleh penyerang.

Hasil dari tulisan ini adalah perancangan dan pembuatan suatu perangkat lunak yang dapat melakukan penyandian citra dengan Hill Cipher. Matriks kunci yang dapat dipakai mencakup matriks persegi dengan ordo 2 × 2, 3 × 3. File citra hasil penyandian ini dapat dicetak dan disimpan kembali dalam format bitmap. Pada tulisan ini juga dilakukan pengujian pada file citra jenis photo dan jenis kartun agar diketahui jenis citra apa yang mampu disandikan dengan Hill Cipher.

Dewasa ini banyak aplikasi yang memungkinkan kita untuk menerapkan prinsip metose Hill Cipher. Namun pada percobaan kali ini penulis akan menggunakan Micosoft Visual Basic 6.0 untuk menerapkan prinsip penyandian citra dengan metode Hill Cipher. Citra dapat dienkripsikan jika matriks kunci mempunyai


(18)

invers. Citra yang telah dienkripsi juga dapat dideskripsi kembali ke bentuk semula dengan menggunakan matriks yang nilai determinannya bernilai 1.

1.2 Perumusan Masalah

Berdasarkan latar belakang dari pemilihan judul tugas akhir di atas, maka beberapa permasalahan yang menjadi titik utama pembahasan, di antaranya adalah sebagai berikut :

1. Bagaimana mengimplementasikan metode Hill Cipher yang biasanya dipakai untuk menyandikan teks untuk dipakai menyandikan citra.

2. Bagaimana cara kerja Hill Cipher dalam menyandikan citra.

3. Bagaimana merahasiakan informasi berupa citra yang hendak dikirimkan kepada orang lain supaya tidak dimanfaatkan oleh pihak ketiga yang tidak berkepentingan.

1.3 Diagram Konsepsi

Dari gambar 1.1, kita dapat melihat proses pengenkripsian citra, mula – mula harus ditentukan terlebih dahulu matriks kunci yang akan digunakan. Citra ditransformasikan ke dalam bentuk nilai – nilai warna pixelnya, kemudian disusun dalam bentuk matriks. Kalikan matriks kunci dengan matriks pixel citra. Hasilnya ditransformasikan kembali ke bentuk pixel. Dengan demikian diperoleh citra yang telah dienkripsi.


(19)

Gambar 1.1 Proses Enkripsi

1.4 Batasan Masalah

Agar pembahasan tidak menyimpang dari tujuan, maka penulis memberikan batasan – batasan masalah sebagai berikut :

1. Format file citra yang digunakan adalah format file yang umum seperti *.BMP, *.GIF dan *.JPG.

2. File citra hasil hanya dapat disimpan dalam format bitmap (*.BMP). 3. Format warna yang digunakan adalah RGB (Red,Green,Blue).

4. Sebagai kunci akan dipakai sebuah matriks persegi dengan dimensi 2 × 2 dan 3 × 3, dengan elemen berupa bilangan bulat.

5. Citra dapat disandikan jika pilihan matriks kunci mempunyai invers.

6. Untuk melakukan proses dekripsi balik maka nilai determinan yang dimasukkan harus bernilai 1.

7. Untuk perancangan perangkat lunak tersebut digunakan bahasa pemrograman Microsoft Visual Basic 6.0.

8. Perangkat lunak pengenkripsian citra ini dijalankan menggunakan sistem operasi Windows XP.

9. Kunci yang digunakan untuk setiap iterasi adalah sama. Citra awal

Transformasi ke Bentuk Nilai Input Matriks

Kunci

Susun Hasil dalam Bentuk

Matriks

Perkalian Matriks Kunci dengan Matriks

Pixel Transformasi

ke Bentuk Pixel Citra yang telah


(20)

1.5 Tujuan Penulisan

Tujuan yang ingin dicapai pada penulisan tugas akhir ini adalah untuk memahami bagaimana teknik pengenkripsian citra dengan menggunakan metode Hill Cipher, serta bagaimana teknik pendeskrisian kembali ke citra awal dengan metode yang sama.

1.6 Metodologi Penelitian

Dalam penelitian dan perancangan aplikasi enkripsi citra dengan metode Hill cipher ini penulis melakukan tahapan-tahapan sebagai berikut:

1. Pengumpulan Data

Pengumpulan data yang dilakukan oleh penulis dalam penelitian kepustakaan dimana penulis mengambil bahan dan sumber-sumber yang berkaitan dengan topik yang dibahas dengan mencari di buku-buku dan website-website yang ada di Internet.

2. Analisis Masalah

Pada tahap ini dilakukan analisis terhadap cara kerja metode Hillcipher. 3. Perancangan Sistem

Dalam tahap ini, data – data yang telah dianalisis diubah ke bentuk yang lebih mudah dimengerti oleh penulis.

4. Pembuatan Aplikasi

Pada tahap ini penulis akan membuat proses pengenkripsian citra dengan metode Hill menggunakan perangkat lunak Visual basic 6.0.

5. Pengujian Dan Analisis Hasil

Pada tahap ini program yang telah dibuat akan diuji untuk mencari kesalahan pada program.

6. Pembuatan Laporan

Dalam tahap ini penulis akan menyusun laporan hasil tugas akhir dengan disertai kesimpulan akhir.


(21)

1.7 Sistematika Penulisan

Untuk memudahkan cara mempelajari dan menganalisa, penulis menguraikan isi penulisan ke dalam 5 bab, di mana tiap – tiap bab saling berhubungan satu sama lain. Adapun Bab – bab tersebut adalah :

BAB I: Pendahuluan

Berisi tentang latar belakang, identifikasi masalah, tujuan dan manfaat penulisan, pembatasan masalah dan sistematika penulisan

BAB II: Landasan Teori

Berisi tentang teori-teori yang digunakan dalam menunjang penyusunan tugas akhir ini, meliputi teori mengenai citra, kriptografi, dan metode Hill Cipher.

BAB III: Pembahasan Dan Perancangan

Berisi tentang pembahasan cara kerja metode Hill Cipher dalam menyandikan citra beserta perancangan perangkat lunak pengenkripsian citra.

BAB IV: Algoritma Dan Implementasi

Berisi tentang pengimplementasian dari perangkat lunak pengenkripsian citra beserta pengujian terhadap perangkat lunak yang dibuat.

BAB V: Kesimpulan dan Saran

Berisi tentang kesimpulan dan saran yang penulis berikan berkaitan dengan topik yang dibahas.


(22)

BAB II

LANDASAN TEORI

2.1 Definisi Matriks

Matriks adalah susunan sekelompok bilangan dalam bentuk persegi atau persegi panjang yang diatur menurut baris dan kolom.

Matriks yang mempunyai m baris dan n kolom disebut matriks m × n (yaitu ‘m kali n’) atau matriks berordo m × n.

Suatu matriks ditunjukkan dengan menuliskan elemennya diantara kurung besar, misalnya 5 7 2

6 3 8

 

 

 adalah matriks 2 × 3, yaitu matriks ‘2 kali 3’, dengan 5, 7, 2, 6, 3, 8 adalah elemen-elemennya.

Perhatikan bahwa dalam menyatakan matriks, yang pertama disebutkan adalah banyaknya baris dan yang kedua adalah banyaknya kolom.

Matriks merupakan susunan sekumpulan bilangan; tidak ada hubungan aritmatik antar elemen-elemennya. Matriks berbeda dengan determinan, karena tidak ada harga numeris suatu matriks yang diperoleh dari perkalian antar elemennya. Juga, pada umumnya baris dan kolom tidak dapat dipertukarkan seperti dalam determinan.1

11 12 9 10

 

 

 

2.1.1 Pengertian Ordo Suatu Matriks

Untuk memahami pengertian ordo atau jenis sebuah matriks perhatikan contoh berikut ini: A = . Banyak baris 2 dan banyak kolom 2, dikatakan matriks A berordo atau berjenis 2 × 2 (dibaca: 2 kali 2). Matriks A yang berordo 2 × 2 ini dituliskan sebagai: A2×2. Angka 2 × 2 ditulis agak ke bawah sebagai subskrip.

Banyak elemen matriks A sama dengan 4 = 2 × 2, yaitu merupakan perkalian antara banyak baris dengan banyak kolom dari matriks A.


(23)

2.1.2 Operasi Pada Matriks

Terdapat beberapa operasi aritmatika pada matriks seperti:

1. Perkalian Matriks. Perkalian matriks A dengan matriks B (ditulis A • B) ada hasilnya, jika banyak kolom matriks A (matriks yang kiri) sama dengan banyak baris matriks B (matriks yang kanan). Mengalikan tiap elemen pada baris matriks sebelah kiri dengan kolom matriks sebelah kanan, lalu hasilnya dijumlahkan.

A • B = a b c d       p q       = ap bq cp dq +    +   

2. Invers matriks. Jika A dan B masing-masing adalah matriks persegi dan mempunyai ordo yang sama, serta berlaku hubungan: A • B = B • A = I Maka B adalah invers A dan A adalah invers B (A dan B saling invers) Jika matriks A = a b

c d

 

 

  dengan det A = (ad − bc) maka invers dari matriks A ditentukan oleh: A−1 1 d b

c a ad bc −     −

= dengan syarat bahwa: det A = (ad − bc) ≠ 0

Sedangkan untuk perhitungan invers dari matriks berukuran 3 × 3 adalah sebagai berikut:

Untuk itu maka langkah pertama adalah mencari nilai determinan untuk matriks 3 × 3 di atas terlebih dahulu dengan menggunakan aturan Sarrus.

Det K =

11 12 13 21 22 23 31 32 33 K K K K K K K K K

 

 

 

 

 

= (K11 * K22 * K33) + (K12 * K23 * K31) + (K13 *

K21 * K32) − (K31 * K22 * K13) − (K32 * K23 *

K11) − (K33 * K21 * K12)

Untuk matriks 4 x 4 maka perhitungannya adalah:

Det K =

11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44

K K K K

K K K K

K K K K

K K K K

             


(24)

Det K = (K11 * Determinan3x3 (K22, K23, K24, K32, K33, K34, K42, K43, K44))

– (K12 * Determinan3x3 (K21, K23, K24, K31, K33, K34, K41, K43, K44))

+ (K13 * Determinan3x3 (K21, K22, K24, K31, K32, K34, K41, K42, K44)) -

(K14 * Determinan3x3 (K21, K22, K23, K31, K32, K33, K41, K42, K43))

Jika elemen-elemen pada baris ke-i dan kolom ke-j dari matriks A itu dihapuskan maka akan diperoleh matriks persegi berordo 2. Determinan dari matriks persegi berordo 2 itu disebut minor dari determinan matriks A, dilambangkan dengan |Mij|. Minor dari determinan matriks A sering disebut sebagai minor aij. Sebagai

contoh jika baris pertama dan kolom pertama dari matriks A dihapuskan:

11 12 13

21 22 23

31 32 33

a

a

a

a

a

a

a

a

a

Baris yang dihapuskan

Kolom yang dihapuskan

Sehingga 22 23 32 33

a a

a a

 

 

  sehingga minornya | M11 | =

22 23 32 33

a a

a a dan M11 disebut dengan minor a11.

Jika | Mij | adalah minor aij dari matriks A, maka bentuk (−1)i+j

ij ij

α = −( 1) | M |i j+

| Mij | disebut

kofaktor dari aij. Kofaktor dari aij dilambangkan dengan αij. Jadi, kofaktor aij dapat

ditentukan dengan rumus: . Sebagai contoh: Kofaktor dari a11 adalah α11 = (−1)1+1 |M11| = + |M11|

Kofaktor dari a12 adalah α12 = (−1)1+2 |M12| = − |M12|

Kofaktor dari a13 adalah α13 = (−1)1+3 |M13| = + |M13|

Kofaktor dari a21 adalah α21 = (−1)2+1 |M21| = − |M21|

Kofaktor dari a22 adalah α22 = (−1)2+2 |M22| = + |M22|

Kofaktor dari a23 adalah α23 = (−1)2+3 |M23| = − |M23|

Kofaktor dari a31 adalah α31 = (−1)3+1 |M31| = + |M31|

Kofaktor dari a32 adalah α32 = (−1)3+2 |M32| = − |M32|


(25)

Sedangkan untuk adjoin misalkan A adalah matriks persegi berordo 3 dalam bentuk:

11 12 13 21 22 23 31 32 33 A=

a a a

a a a

a a a

 

 

 

 

 

dengan αij adalah kofaktor dari aij maka adjoin matriks

A (disingkat: adj A) ditentukan oleh: adj A =

11 21 31 12 22 32 13 23 33

α α α

α α α

α α α

 

 

 

 

 

Untuk mencari invers dari matriks ini maka digunakan persamaan berikut K−1 1

detK adj K

= .2

2.2 Pengertian Citra

Citra adalah representasi atau deskripsi tentang suatu objek. Citra juga dapat diartikan sebagai objek pada bidang dua dimensi. Citra dapat direpresentasikan ke dalam citra analog dan citra digital. Citra analog dihasilkan dari sistem optik, misalnya mata manusia, kamera, sedangkan citra digital dihasilkan dari hasil digitisasi citra analog. Gambar 2.1 merupakan contoh citra analog.

Gambar 2.1 Citra Analog

Citra digital adalah representasi numerik dari objek-objek. Citra digital dibentuk oleh sekumpulan angka dalam array dua dimensi. Tiap angka menggambarkan warna dari tiap titik dalam gambar sesuai dengan mode warna yang digunakan. Titik-titik ini disebut pixel yang merupakan singkatan dari picture element (elemen gambar). Gambar 2.2 menunjukkan citra digital.


(26)

Citra Digital

Pixel

8-bit

8-bit 8-bit

R G B

Pixel Citra 24-bit

Gambar 2.2 Citra Digital

Gambar di atas menunjukkan citra digital yang menggunakan 24-bit warna tiap pixel-nya. 24-bit warna dibagi ke dalam tiga bagian sebesar 8-bit, tiap bagian merupakan representasi intensitas warna dasar yaitu merah, hijau, dan biru (RGB).3

5. CMYK Mode, menampilkan citra dalam kombinasi empat warna dasar (cyan, magenta, yellow dan black), tiap warna memiliki intensitas 0-255 (8-bit)

2.2.1 Mode Warna

Menampilkan sebuah citra pada layar monitor diperlukan lebih informasi mengenai letak dari pixel-pixel pembentuk citra. Untuk memperoleh gambaran yang tepat dibutuhkan juga informasi tentang warna-warna yang dipakai untuk menggambarkan sebuah citra digital. Beberapa mode warna yang sering digunakan:

1. Bitmap Mode, memerlukan 1-bit data untuk menampilkan warna dan warna yang dapat ditampilkan hanya warna hitam dan putih (monokrom)

2. Indexed Color Mode, mengurutkan warna dalam jangkauan 0-255 (8-bit) 3. Grayscale Mode, menampilkan citra dalam 256 tingkat keabuan

4. RGB Mode, menampilkan citra dalam kombinasi tiga warna dasar (red, green, dan blue), tiap warna dasar memiliki intensitas warna 0-255 (8-bit)

4

Menyimpan citra ke dalam media penyimpanan dalam bentuk digital memiliki bentuk yang beragam. Ada dua cara penyimpanan yang biasa dilakukan oleh 2.2.2 Penyimpanan Citra

3

A. Munir, Pengantar Pengolahan Citra, hal 10

4

Paul Bourke, Bicubic Interpolation for Image Scaling, http:// astronomy.swin.edu.au/~pbourke/bitmap/


(27)

perangkat lunak yaitu bitmap dan vector. Dalam hal ini sering juga digunakan istilah program paint dan program draw.

Program paint atau program berbasis bitmap menyimpan citra sebagaimana ditampilkan di layar yaitu sebagai array dari pixel-pixel. Perubahan yang dilakukan pada citra dengan menggunakan program ini akan mengubah langsung tiap titik atau pixel pada citra. Kelebihan cara ini adalah kemudahannya untuk menampilkan gambar secara rinci dengan pola-pola yang kompleks atau gambar fotorealistik, yang tidak dapat dengan mudah direpresentasikan sebagai model matematika.

Program draw atau program berbasis vector menyimpan citra sebagai model matematika, dan setiap elemen citra disimpan secara terpisah. Perubahan yang dilakukan pada citra menggunakan program ini akan mengubah deskripsi matematika yang menyusun gambar dan program menghitung perubahan yang perlu pada warna-warna pixel secara tidak langsung. Kelebihan cara ini adalah kemampuannya untuk menciptakan gambar dalam resolusi yang berbeda tanpa kehilangan mutu gambar yang berarti.

2.2.2.1 Format File Citra BMP

Format file BMP merupakan format standar sistem operasi Windows dan IBM OS/2. Format ini mendukung mode warna dari Bitmap Mode hingga RGB Mode.

BMP mudah dibuka dan disimpan, tetapi ada beberapa aturan khusus yang harus dicermati, diantaranya:

1. Format file ini menyimpan datanya secara terbalik, yaitu dari bawah ke atas 2. Citra dengan resolusi warna 8-bit, lebar citra harus merupakan kelipatan dari

4, bila tidak maka pada saat penyimpanan akan ditambahkan beberapa byte pada data hingga merupakan kelipatan dari 4.

3. Citra dengan resolusi warna 24-bit, urutan penyimpanan tiga warna dasar adalah biru, hijau, merah (B, G, R). Lebar citra dikalikan dengan 3 harus merupakan kelipatan dari 4, bila tidak maka pada saat penyimpanan akan ditambahkan beberapa byte pada data hingga merupakan kelipatan dari 4. 4. BMP mendukung pemampatan run length encoding (RLE)


(28)

Tabel 2.1 Format File BMP5

Name Size Description

Header 14 bytes

Signature 2 bytes ‘BM’

File Size 4 bytes File Size in bytes Reserved 4 bytes Unused (= 0)

Data Offset 4 bytes File Offset to Raster Info Header

40 bytes WindowsStructure: BITMAPINFOHEADER Size 4 bytes Size of Info Header = 40 Width 4 bytes Bitmap Width

Height 4 bytes Bitmap Height

Planes 2 bytes Number of planes ( = 1) BitCount 2 bytes Bits per Pixel

1 = monocrome palette, NumColors = 1 4 = 4 bit palletized, NumColors = 16 8 = 8 bit palletized, NumColors = 256 16 = 16 bit RGB, NumColors = 65536 24 = 24 bit RGB, NumColors = 16 M Compression 4 bytes Types of Compression

0 = BI_RGB (no compression) 1 = BI_RLE8 (8 bit RLE encoding) 2 = BI_RLE4 (4 bit RLE encoding) ImageSize 4 bytes (compressed) Size of Image

It is valid to set this = 0 if compressed = 0

XpixelsPerM 4 bytes Horizontal Resolution: Pixels/meter YpixelsPerM 4 bytes Vertical Resolution: Pixels/meter ColorsUsed 4 bytes Number of actually used colors ColorImportant 4 bytes Number of important colors = 0 all

Color Table 4 * NumColors Present only if info. BitsPerPixel ≤ 8


(29)

(bytes) Color should be ordered by importance Red 1 byte Red Intensity

Green 1 byte Green Intensity Blue 1 byte Blue Intensity Reserved 1 byte Unused ( = 0) Repeated NumColors Times

Raster Data Info.ImageSize (bytes)

The Pixel Data

2.2.2.2 Format File Citra GIF

Format file GIF ( Graphics Interchange Format) merupakan hasil rancangan CompuServe Incorporated. Format ini dirancang untuk memudahkan pertukaran citra bitmap antarkomputer. GIF hanya mendukung resolusi warna sampai 256 warna (8-bit).

Format file GIF memiliki dua versi yaitu GIF 87a dan GIF89a. Versi GIF89a diperkenalkan pada bulan Juli 1989 merupakan perbaikan dari versi GIF87a. Pada GIF89a ditambahkan kemampuan untuk menampilkan citra dengan latar belakang transparan ( background transparency), penyimpanan data citra secara interlaced dan kemampuan untuk menampilkan citra animasi.

GIF menggunakan variable-length code yang merupakan modifikasi dari algoritma LZW (Lemple-Ziv Wetch) untuk memampatkan data citra. Teknik pemampatan data ini mampu menghasilkan pemampatan yang baik dan merupakan teknik pemampatan yang mampu mengembalikan data sama persis dengan aslinya (lossless data comperssion).

Format lengkap file citra GIF dapat dilihat pada Tabel 2.2 berikut ini. Tabel 2.2 Format File GIF6

Name Size Description

Signature 6 bytes ‘GIF87a’ or ‘GIF89a’

Global Descriptor 7 bytes Always present


(30)

Width 2 bytes Width in pixels Height 2 bytes Height in pixels

Flags 1 bytes Global descriptor flags

Global Color Map Bit 7

=1 if Global ColorMap exists (should be true in almost all cases)

=0 if default map is used. Or if every image has a Local Color Map

Color Resolution Bits

Bit 6-4 +1 = significant bits per color in Global Color Map

Reserved Bit 3 = 0

Pixel Bits Bit 2-0 +1 = Color Depth, Number of Global Colors := 2colordepth

Background Color 1 byte Background color number (from Global Color Map or default map)

Aspect Ratio 1 byte Usually =0

Global Color Map

Number of Global Colors * 3

Global color table, present only when Global Descriptor Flags Global Color Map =1

Red 1 byte Red intensity of color (not necessarily 8 significant bits)

Green 1 byte Green intensity of color (not necessarily 8 significant bits)

Blue 1 byte Blue intensity of color (not necessarily 8 significant bits)

Repeated Number Of Global Colors Times Extension Blocks Cannot be pre

calculated

Optional, may be repeated any number of times. Read first byte to check its precense Header 1 byte = $21

Function Code 1 byte There is a list of known function codes Length 1 byte >0 !

Data Length bytes Interpretation of this data depends on its function code


(31)

Repeated any number of times. Read first byte to check for terminator Terminator 1 byte = 0

Local Descriptor 10 bytes Local descriptor, always present Header 1 bytes =$2C

Pos X 2 bytes Horizontal position of image in global image

Pos Y 2 bytes Vertical position of image in global image Width 2 bytes Width of image

Height 2 bytes Height of image Flags 1 bytes Local descriptor Flags

Local Color Map

Bit 7 =1 if Local Color Map exists

=0 if Global Color Map (or default map) is used

Interlaced Image Bit 6 =1 Interlaced! =0 Non Interlaced Sorted Bit 5 Usually =0

Reserved Bit 4-3 =0

Pixel Bits Bit 2-0 -1= Color Depth,

Number of Local Colors := 2color depth

Local Color Map Number of Local Color * 3

Local color table, present only when local Descriptor Flags. Local Color Map =1 Red 1 byte Red intensity of color

Green 1 byte Green intensity of color Blue 1 byte Blue intensity of color Repeated number of Local Color times

Rasted DataBlock Cannot be pre calculated

Always present

Initial Code Size 1 byte Usually = Color Depth, except for balck & white, where it is 2!

Length 1 byte >0

Data Length bytes The pixel data bit stream. See decompression and compression schemes


(32)

Repeated any number of times, read first byte to check for terminator Terminator 1 byte =0!

Extension Blocks Cannot be pre calculated

Optional. Read first byte to check its presence

Format is identical to the Extension Block above

Terminator 1 byte =$3B

2.2.3.3 Format File Citra JPEG

Format file Joint Photographic Experts Group (JPEG) atau yang biasa disingkat JPG meningkat pesat penggunaannya. Format ini terkenal karena ukurannya yang mini dibandingkan dengan format-format lainnya.

JPEG mendukung mode warna RGB, CMYK dan Grayscale, tetapi tidak mampu menampilkan citra dengan latar belakang transparan.

Format JPEG menterjemahkan informasi tersebut menjadi komponen luminance (komponen cahaya) dan dua komponen chromatic (komponen perubahan warna dari hijau ke merah dan dari biru ke kuning). Untuk kompresinya format file citra ini menggunakan kompresi JPEG.

Format lengkap dari JPEG dapat dilihat pada Tabel 2.4 berikut ini. Tabel 2.3 Format File JPEG7

Name Size Description

SOI marker 2 bytes (FF D8) APP0 marker 2 bytes (FF E0) Length 2 bytes

Identifer 5 bytes (“JFIF” or “JFXX”) + terminator (00) Version 2 bytes Ex. (01 02) → ver.1.02

Units 1 byte Units for the X and Y densities,

units =0: no units , S and Y specify the pixel aspect ratio

Units = 1: X and Y are dots per inch


(33)

Units =2: X and Y are dots per cm Xdensity 2 bytes Horizontal pixel density

Ydensity 2 bytes Vertical pixel density

Xthumbnail 1 byte Thumbnail horizontal pixel count Ythumbnail 1 byte Thumbnail vertical pixel count

(RGB)n 3n bytes Packed (24-bit) RGB values for the thumbnail pixels,

n = Xthumbnail * Y thumbnail Data x bytes

EOI marker 2 bytes (FF D9)

2.3 Pengertian Kriptografi

Kriptografi adalah seni dan ilmu pengetahuan untuk memproteksi pengiriman data dengan mengubahnya menjadi kode tertentu dan hanya ditujukan untuk orang yang hanya memiliki sebuah kunci untuk mengubah kode itu kembali. Kata kriptografi berasal dari bahasa Yunani, “kryptos” yang berarti rahasia, dan “graphos” yang berarti menulis. Kriptografi mencakup dua buah proses yaitu melakukan enkripsi pada tulisan atau pesan yang bersifat rahasia ataupun melakukan proses kebalikannya yaitu dekripsi pesan rahasia (kode atau cipher) dengan menggunakan kunci. Hasil pesan atau data yang diacak atau dikenal sebagai ciphertext atau kriptogram. Proses enkripsi biasanya melibatkan sebuah algoritma dan sebuah kunci. Algoritma enkripsi adalah suatu metode pengacakan yang merupakan suatu program komputer dalam bentuk kumpulan-kumpulan perintah. Data yang akan dienkripsi dapat berupa pesan broadcast ataupun data digital.

Pesan rahasia dapat disembunyikan atau disamarkan dengan berbagai cara. Enkripsi atau pengkodean, suatu pesan berarti mengubah pesan tersebut dari bentuk yang dapat dibaca dan dimengerti oleh setiap orang menjadi sekumpulan simbol atau kode yang hanya diketahui oleh beberapa orang. Cara menyembunyikan pesan seperti ini adalah bentuk kriptografi yang sederhana, karena pesan yang ditulis secara normal hanya disembunyikan dengan teknik yang sederhana. Meskipun pesan tersebut agak sulit untuk dipecahkan cara ini mudah diterapkan karena kata-kata dan


(34)

simbol telah ditetapkan atau dibuat terlebih dahulu. Alasan kode-kode tersebut sulit untuk dipecahkan adalah tidak ada suatu cara untuk memecahkan kode-kode tersebut secara logis. Gambar 2.3 di bawah ini merupakan beberapa teknik dalam menyembunyikan pesan. Teknik-teknik tersebut merupakan teknik yang sederhana dan mudah diterapkan.

Gambar 2.3 Beberapa Teknik Enkripsi Sederhana

Pada gambar di atas terlihat teknik pertama dengan menuliskan pesan rahasia dengan menggunakan tinta khusus seperti tinta dari asam dari jeruk. Pesan dapat dibaca jika menggunakan lilin yang diterangi pada bagian tersebut.

Pada teknik substitusi cipher, pesan secara lengkap ditulis kembali. Kumpulan dari huruf-huruf baru diatur secara alphabet (kanan atas) atau berdasarkan pada nilai numerik dari huruf. Cara mudah dipecahkan karena terjadi pengulangan huruf.8

Dalam pengertian luasnya, kriptografi juga mencakup penggunaan untuk menyembunyikan pesan, cipher, dan kode-kode. Penyembunyian pesan, seperti ini menyembunyikan teks asli seperti ditulis dengan tinta yang tidak dapat terlihat, tingkat keberhasilan bergantung pada apakah tinta yang tidak terlihat ini dicurigai atau tidak. Sekali ditemukan, maka biasanya sudah sangat mudah untuk dipecahkan. Penggunaan kode, berupa kata-kata, angka-angka, atau simbol yang mewakili huruf


(35)

atau frase, biasanya tidak mungkin untuk dibaca tanpa adanya kunci dari buku kode. Kriptografi juga mencakup penggunaan komputer sebagai alat untuk memproses enkripsi dan melindungi transmisi data dan pesan.

Saat ini kebanyakan sistem komunikasi meninggalkan beberapa data dan informasi yang direkam atau disimpan. Sebagai contoh, komunikasi melalui saluran telepon, termasuk faksimile dan pesan melalui e-mail, menghasilkan suatu rekaman dari nomor telepon yang dipanggil pada saat panggilan dilakukan. Transaksi finansial, data medis, pilihan pada jenis film-film yang disewa, dan bahkan pilihan atas menu makanan yang dipesan sewaktu melakukan jamuan pada restoran mungkin dapat dilakukan pelacakan pada kartu kredit penerima atau untuk rekaman bagi pihak asuransi. Setiap waktu seorang menggunakan telepon atau kartu kredit, perusahaan telepon atau institusi finansial menyimpan suatu rekord atas nomor yang dipanggil atau jumlah transaksi, lokasi dan tanggal. Pada masa yang akan datang, jaringan telepon menjadi sistem digital, bahkan percakapan biasa dapat direkam dan disimpan. Semua data yang disimpan tersebut mungkin akan dilakukan proses pengiriman dari satu tempat ke tempat lain bagi pihak yang membutuhkan. Untuk menghindari data tersebut jatuh ke tangan yang tidak berkepentingan maka biasanya data tersebut akan dilakukan proses enkripsi untuk menjamin kerahasiaan data itu sendiri.

Kriptografi sangat penting tidak hanya sebagai privasi saja. Kriptografi melindung sistem perbankan dunia dengan baik. Banyak bank dan institusi finansial melakukan transaksi bisnis pada jaringan yang terbuka, seperti Internet. Tanpa adanya kemampuan untuk memproteksi transaksi bank dan komunikasi, para kriminal dapat mengganggu atau menyadap transaksi tersebut dan mencuri uang tanpa dapat dilacak.

2.3.1 Jenis-Jenis Pengamanan Data

Ada beberapa jenis pengamanan data, termasuk pengkodean, steganografi (menulis secara tersembunyi dan rahasia), dan cipher. Pengkodean berdasarkan buku kode. Steganografi adalah cara lain untuk menyembunyikan atau menyamarkan tulisan. Cipher mencakup penggunaan komputer untuk menghasilkan cipher (teks yang telah diacak) dan ini dihasilkan dengan menggunakan metode enkripsi. Jenis-jenis cipher


(36)

yang berbeda tergantung pada huruf alphabet, numerik, metode pengacakan dan penggunaan komputer.9

Jika pesan yang dikodekan tersebut jatuh ke tangan musuh, musuh hanya dapat mengetahui bahwa itu pada pesan yang dikodekan, tanpa buku kode musuh tidak mempunyai cara untuk mendekripsi pesan tersebut. Buku kode mempunyai beberapa kelemahan. Sebagai contoh, jika pesan yang dikodekan tersebut jatuh ke 2.3.1.1 Pengkodean Dan Buku Kode

Sebuah kode yang dikonstruksi atau disusun dengan baik dapat mewakili frase dan kalimat secara keseluruhan dengan simbol tertentu, seperti grup dengan lima huruf, sering dipakai karena lebih ekonomis daripada kerahasiaannya. Kode yang disusun dengan baik dapat memberikan tingkat sekuritas yang tinggi, tetapi kesulitan dalam mencetak dan mendistribusi buku kode (buku yang berisi simbol-simbol atau kode) dengan kondisi yang secara mutlak rahasia membatasi orang untuk menggunakannya kecuali buku kode tersebut dapat terjaga secara efektif. Sebagai tambahan, semakin banyak buku kode yang dipakai, maka tingkat keamanan semakin berkurang.

Bayangkan sebuah buku kode yang terdiri atas dua kolom. Pada kolom pertama terdiri atas sekumpulan daftar dari kata yang dipakai oleh komandan militer yang mungkin perlu dan dipakai dalam berkomunikasi. Sebagai contoh, daftar tersebut terdiri dari semua kemungkinan area geografis dari suatu daerah, semua kemungkinan waktu, dan semua istilah militer. Pada kolom berikutnya adalah sekumpulan dari daftar yang terdiri atas kata-kata biasa. Untuk membentuk sebuah pesan yang dikodekan, encoder (orang yang menerjemahkan bentuk pesan asli ke bentuk kode atau simbol) menuliskan semua pesan yang asli. Kemudian menggantikannya dengan kata yang tercantum pada buku kode dengan mencocokkan pada kolom kedua untuk kata-kata dalam pesan dan menggunakan kata baru untuk menggantikannya. Sebagai contoh misalkan terdapat pesan “Serang Vladivostok pada waktu subuh” dan buku kode terdiri atas pasangan untuk kata-kata tersebut: serang = beruang, Vladivostok = bola, pada = kalender, waktu = pintu, dan subuh = jeruk. Maka bentuk pesan yang dikodekan menjadi: Beruang bola kalender pintu jeruk.


(37)

tangan musuh dan hari berikutnya Vladivostok diserang pada waktu subuh, musuh dapat menghubungkan peristiwa tersebut dengan pesan yang dikodekan ini. Jika pesan yang lain terdiri atas kata “bola” berhasil didapatkan, maka pada hari berikutnya, jika terjadi sesuatu hal di Vladivostok, musuh dapat mengasumsikan bahwa bola = Vladivostok dalam buku kode. Dengan bertambahnya waktu, musuh dapat menempatkan lebih banyak pasangan kata yang ada pada kode buku, dan bahkan suatu saat dapat memecahkan pesan. Untuk alasan ini, salah satu caranya adalah sering mengganti pasangan kata dalam buku kode.10

Steganografi atau tulisan rahasia, kelihatannya telah dikembangkan sejak adanya tulisan. Bahkan pada masa Mesir kuno, dimana tulisan merupakan suatu misteri bagi rata-rata orang, dua bentuk yang jelas dari tulisan dipakai. Tulisan sakral atau hieratik dipakai sebagai komunikasi rahasia oleh para kaum paderi, dan tulisan demotik dipakai oleh masyarakat biasa. Yunani dan Romawi kuno, begitu juga dengan peradaban yang lain berkembang dalam waktu yang sama, menggunakan bentuk steganografi. Penemuan sistem menulis singkat (steno) yang pertama mungkin ditujukan untuk tulisan rahasia. Steno berkembang dan dipakai secara luas pada masa Romawi kuno dengan Tironian notes, suatu sistem yang ditemukan oleh Marcus Tullius Tiro pada tahun 63 sebelum masehi.

2.3.1.2 Steganografi

Steganografi adalah suatu metode untuk menyembunyikan keberadaan dari pesan dengan menggunakan alat seperti tinta yang tidak terlihat, tulisan mikroskopik, atau menyembunyikan kode kata dalam kalimat dari suatu pesan (seperti membuat hilang kata kelima dalam suatu teks yang merupakan bagian dari pesan). Kriptografi dapat mengaplikasikan steganografi pada komunikasi elektronik. Aplikasi ini disebut dengan sekuritas transmisi.

11

10

Ibid, Microsoft Encarta Encyclopedia 2005 Premium Edition


(38)

2.3.1.3 Ciphers

Cipher populer karena mudah dalam pemakaiannya. Ada dua jenis cipher secara umum. Cipher substitusi memerlukan satu cipher alphabet untuk menggantikan plaintext dengan huruf atau simbol yang lain. Cipher transposisi menggunakan pergeseran huruf dalam satu kata untuk membuat kata tersebut tidak mempunyai arti.

Cipher adalah kode rahasia yang dipakai untuk enkripsi pesan berupa plaintext. Cipher dengan variasi tipe telah ditemukan, tetapi semuanya kebanyakan berupa cipher substitusi atau cipher transposisi. Cipher komputer adalah cipher yang dipakai pada pesan digital. Cipher komputer berbeda dari cipher substitusi atau transposisi biasa dimana pada cipher komputer memakai aplikasi komputer untuk melakukan enkripsi data. Istilah kriptografi kadang-kadang dibatasi pada penggunaan cipher atau metode yang dilibatkan untuk menggantikan huruf yang lain atau simbol pada huruf asli dari pesan.

Salah satu contoh bentuk dari pesan cipher adalah pada masa perang dunia pertama, yaitu yang dikenal sebagai Zimmermann Telegram (Telegram Zimmermann). Sebelum Amerika Serikat memasuki Perang Dunia I, pemerintah Jerman mencoba untuk menghasut perang antara Amerika Serikat dan Meksiko. Pada tanggal 19 Januari 1917, sekretaris luar negeri Jerman, Arthur Zimmermann, mengirimkan sebuah telegram yang telah di-encode pada perwakilan diplomatiknya di Meksiko, meminta mereka untuk menyetujui aliansi rahasia dengan pemerintah Meksiko. Tetapi inteligen Inggris berhasil mencegat dan dengan cepat men-decode pesan tersebut, dan mengirimkannya pada Presiden Woodrow Wilson. Protes keras dari publik Amerika menyebabkan deklarasi perang oleh Amerika melawan Jerman. Telegram yang di-encode, seperti terlihat pada di bawah ini dan teks yang berhasil di-decipher.

German Legation Jan. 19,1917 via Galveston

MEXICO CITY

130 13042 13401 8501 115 3528 416 17214 6491 11310 18147 18222 21560 10247 11518 23677 13605 3494 14936 98092 5905 11311 10392 10371 0302 21290 5161 39695


(39)

23571 17504 11269 18276 18101 0317 0228 17694 4473 22284 22200 19452 21589 67893 5569 13918 8958 12137 1333 4725 4458 5905 17166 13851 4458 17149 14471 6706 13850 12224 6929 14991 7382 15857 67893 14218 36477 5870 17553 67893 5870 5454 16102 15217 22801 17138 21001 17388 7446 23638 18222 6719 14331 15021 23845 3156 23552 22096 21604 4797 9497 22464 20855 4377 23610 18140 22260 5905 13347 20420 39689 13732 20667 6929 5275 18507 52262 1340 22049 13339 11265 22295 10439 14814 4178 6992 8784 7632 7357 6926 52262 11267 21100 21272 9346 9559 22464 15874 18502 18500 15857 2188 5376 7381 98092 16127 13486 9350 9220 76036 14219 5144 2831 17920 11347 17142 11264 7667 7762 15099 9110 10482 97556 3569 3670

BERNSTORFF.

Charge German Embassy.

TELEGRAM RECEIVED.

FROM 2nd from London # 5747.

“We intend to begin on the first of February unrestricted submarine warfare. We shall endeavor in spite of this to keep the United States of America neutral. In the event of this not succeeding, we make Mexico a proposal of alliance on the following basis: make war together, make peace together, generous financial support and an understanding on our part that Mexico is to reconquer the lost territory in Texas, New Mexico, and Arizona. The settlement in detail is left to you. You will inform the President of the above most secretly as soon as the outbreak of war with the United States of America is certain and add the suggestion that he should, on his own initiative, invite Japan to immediate adherence and at the same time mediate between Japan and ourselves. Please call the President's attention to the fact that the ruthless employment of our submarines now offers the prospect of compelling England in a few months to make peace.” Signed, ZIMMERMANN.12


(40)

A. Substitution Ciphers

Pada cipher substitusi sederhana, sejumlah huruf atau simbol digantikan pada tiap huruf. Huruf-huruf yang disubstitusi pada urutan normal, biasanya dengan pembagian normal untuk tiap kata. Cipher seperti ini dapat dikenali dengan kemunculan dari sekumpulan huruf normal yang berulang-ulang ditempatkan pada huruf yang salah. Jenis cipher ini dapat dipecahkan dengan menggunakan analisis yang berulang-ulang dan memperhatikan karakteristik pada sejumlah huruf, seperti kecenderungan bentuk ganda, kata umum seperti awalan dan akhiran, huruf pertama dan terakhir pada kata, dan kombinasi yang umum, seperti “qu”, “th”, “er”, dan “re”. Cipher substitusi dipakai dengan menyusun kembali huruf-huruf dalam alphabet. Sebagai contoh, suatu cipher yang ditemukan pada masa lalu oleh Julius Caesar. Cipher tersebut didapat dengan menggeser (shift) semua huruf dalam alphabet dengan tiga tempat. Jadi, ketika huruf diperlukan, huruf “a” yang ingin dipakai maka ditulis dengan huruf “d”, dan huruf “b” ditulis dengan huruf “e”. Huruf-huruf tersebut bersambung kembali pada awal huruf jika sampai pada akhir dari alphabet. Jadi, jika seseorang ingin melakukan cipher huruf “z”, maka huruf tersebut ditulis sebagai huruf “c”. Begitu juga dengan huruf “y” ditulis sebagai huruf “b”. Cipher secara keseluruhan dinyatakan dalam dua baris huruf. Baris-baris ini disebut dengan lookup table.

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

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

Ketika seseorang ingin mengenkripsi sebuah kata, dia harus melihat pada huruf asli pada baris atas dan menggunakan huruf ciphertext yang berkorespondensi pada baris bawah. Jadi sebagai contoh, kata “HELLO” akan dituliskan sebagai “KHOOR”. Untuk melakukan dekripsi pada kata yang dikodekan, seseorang harus mencari pada huruf pada baris atas dan menuliskan kembali berdasarkan pada huruf yang koresponden pada baris atas. Jadi, kata “KHOOR” didekripsi balik menjadi “HELLO”

Cipher substitusi di atas mudah untuk diingat dan juga mudah dipecahkan. Untuk membuat cipher substitusi lebih kompleks, beberapa substitusi (multiple- substitution) dan kadang-kadang angka juga ditambahkan pada cipher.


(41)

Pada multiple-substitution atau polyalphabetic cipher, sebuah kata kunci atau angka ditambahkan. Huruf pada pesan pertama boleh dienkripsi dengan menambahkannya dengan nilai numerik dari huruf pertama dari kata kunci; huruf kedua dari pesan juga dilakukan proses yang sama, menggunakan kata kunci pada huruf kedua, dan seterusnya, perulangan kata kunci sering dan perlu untuk mengenkripsi seluruh pesan. Ketika menambahkan pada angka numerik dari huruf dari kata kunci pada huruf di pesan, dimulai dengan menghitung dengan huruf pada pesan. Jadi, untuk melakukan enkripsi pada kata “TODAY” dengan kata kunci “DIG”, huruf “T” menjadi “W”, karena “D” merupakan huruf keempat dari alphabet; “O” menjadi “W”, karena “I” adalah huruf kesembilan dari alphabet; dan “D” menjadi “J”, karena “G” adalah huruf ketujuh dari alphabet. Sisa dari huruf tersebut di-encode dengan cara yang sama, dan kata “TODAY” dikodekan menjadi “WWJDG”.

Dengan memakai kombinasi dari jenis cipher dasar tersebut, cipher dapat dibentuk hingga beberapa tingkat kompleksitas. Kata kunci bagaimana pun juga harus mudah diingat atau dipergunakan, tanpa kata kunci tersebut cipher tidak mungkin dibalik menjadi pesan asli. Dengan sedikit waktu, kebanyakan cipher dapat dipecahkan jika kata kunci mereka diketahui, tetapi untuk tujuan khusus yang memerlukan kompleksitas yang tinggi maka semakin tinggi juga tingkat keamanannya. Perintah-perintah dalam militer harus dijaga secara rahasia untuk beberapa jam saja, sebagai contoh dapat dienkripsi dalam bentuk cipher.

B. Transposition Cipher

Pada cipher transposisi, urutan huruf pada plaintext diganti untuk diturunkan menjadi ciphertext. Pesan biasanya ditulis tanpa adanya pembagian kata dalam baris huruf yang disusun dalam bentuk blok persegi panjang. Huruf-huruf kemudian ditranspos dalam urutan yang telah diatur, seperti dalam bentuk vertikal, diagonal, atau spiral, atau dengan bentuk yang lebih kompleks, seperti knight’s tour, yang berdasarkan arah perpindahan biji knight pada catur. Pengaturan huruf-huruf dalam pesan yang dienkripsi bergantung pada ukuran dari kode blok pada kata yang dipakai dan pada rute yang diikuti dengan huruf-huruf yang ditransisi.


(42)

Suatu cipher pada tiap pasang huruf dipertukarkan sebagai contoh dalam cipher transposisi. Dalam kasus ini, sebagai contoh, cipher teks dari kata “elephant” menjadi “lepeahtn”. Huruf pertama dan kedua akan dipertukarkan, dan huruf ketiga dan keempat juga dipertukarkan, dan seterusnya. Cipher transposisi dapat dikombinasikan dengan cipher substitusi untuk menghasilkan suatu pesan yang dikodekan agar lebih kompleks.13

Sejak kekaisaran Romawi, kriptosistem yang lebih rumit dikembangkan oleh orang seperti oleh ahli Matematika Italia Leon Battista Alberti (lahir pada tahun 1404), Matematikawan Jerman Johannes Trithernius (lahir pada tahun 1492), seorang kriptographer dan diplomat Perancis Blaise de Vigenére (1523−1596), Lester S. Hill, yang menemukan Hill Cipher (Hill Cipher) pada tahun 1929. Hill Cipher merupakan jenis lain dari polygraphic cipher. Sandi ini mengenkripsi suatu string huruf menjadi bentuk string yang lain dengan panjang yang sama. Teknik Hill Cipher dikembangkan oleh Lester S. Hill pada Hunter College dan dipublikasikan pada Americian Mathematical Monthly, Volume 36, Issue 6 (Juni−Juli, 1929) halaman 306 − 312. Hill Cipher menggunakan matriks untuk mentransformasi string berupa blok huruf.

2.4 Hill Cipher

14

Hill Cipher berdasarkan pada aljabar linier dan seperti sandi Vigenére, Hill Cipher merupakan block cipher. Sandi ini dapat dipecahkan dengan known-plaintext attacks tetapi tahan melawan ciphertext-only attack. Cara kerja sandi ini berdasarkan atas perkalian matriks dengan menggnakan sebuah kunci K.

Penjelasan mengenai Hill Cipher ini dapat diuraikan sebagai berikut:

Misalkan m adalah bilangan bulat positif dan P = C = (Z26)m dan misalkan K

= { m × m merupakan matriks yang nilai elemennya terdiri dari Z26}, maka untuk

suatu kunci K, dapat didefinisikan sebagai eK(x) = K x Mod 26 dan dK(y) = K−1

13

y Mod 26 dimana semua operasi dilakukan dalam matriks Z26.

14

Paal Schiefloe, Cryptography:Hill-ciphers an application of Linear Algebra,


(43)

Karena K−1

C = K . P (mod 26)

Dekripsi memerlukan kunci K yang bersifat invertible. Contohnya K . K dengan mudah dapat dihitung dari K, maka Hill Cipher merupakan suatu kriptosistem asimetrik. Hill Cipher juga merupakan blok cipher linier umum. Suatu blok cipher linier dapat dengan mudah dipecahkan yang dikenal cara known-plaintext attacks. Maka bagi penyerang yang mengetahui beberapa contoh plaintext dengan enkripsi yang berhubungan, tidaklah sulit baginya untuk mencari kunci yang dipakai untuk mengenkripsi plaintext tersebut. Bahkan enkripsi dengan teks yang tidak diketahui dapat didekripsi tanpa harus memerlukan usaha yang sulit. Metode dari perhitungan frekuensi sering dipakai untuk usaha ini. Metode ini mengeksplorasi perulangan (redundancy) dari bahasa alami yang dipakai sebagai plaintext pada pesan.

Sebagai contoh, pada banyak bahasa huruf “E” sering muncul dengan persentasi dalam bahasa Inggris mencapai 12,31%, 15,87% untuk bahasa Perancis, dan bahkan 18,46% dalam bahasa Jerman.

Penjelasan cara kerja dari Hill Cipher dapat disederhanakan dengan cara seperti ini. Misalkan K merupakan sebuah matriks kunci m × m yang merupakan representasi dari suatu persamaan linier. Ciphertext (C) dan plaintext p merupakan matriks m × 1. Maka didapat persamaan untuk menghasilkan ciphertext sebagai berikut:

−1

(mod 26) = I dimana I merupakan matriks identitas.

Karena C = K . P Mod 26 maka K = C . P−1 Mod 26

Tidak semua plaintext bersifat invertible (dapat dibalik kembali). Sandi Caesar, Hill Cipher, dan sandi Playfair semua bekerja dengan sebuah alphabet tunggal saat disubstitusi.

1 11 12 13 1

2 21 22 23 2

3 31 32 33 3

mod 26

C

k

k

k

P

C

k

k

k

P

C

k

k

k

P

 

 

 

=

 

 

 

 

 


(44)

2.4.1 Pengenkripsian Hill Cipher

Langkah-langkah untuk proses enkripsi plaintext dengan Hill Cipher adalah sebagai berikut:

1. Pilih suatu matriks kunci K yang berupa matriks bujur sangkar yang dipakai sebagai kunci.

2. Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai (A = 1; B = 2; … Z = 26)

3. Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor P yang panjangnya sama dengan ukuran matriks K.

4. Hitung C = K . P (mod 26) untuk tiap vektor P.

5. Kembalikan tiap angka dalam vektor sandi C ke huruf yang sesuai untuk mendapatkan teks sandi.

Plaintext Transformasi ke Bentuk Nilai Input Matriks

Kunci K

Susun Hasil dalam Bentuk

Matriks P

C = K . P (Mod 26) Transformasi ke

Bentuk Huruf Ciphertext

Gambar 2.4 Ilustrasi Proses Enciphering Hill Cipher

Bagian ini akan menjelaskan enkripsi dengan Hill Cipher dengan memberikan contoh. Hill Cipher menggunakan matriks untuk mentransformasikan string plaintext menjadi ciphertext.

Untuk mentransformasikan plaintext maka pertama sekali semua huruf alphabet dinyatakan dalam nilai seperti berikut:

A B C D E F G H I H K L M

1 2 3 4 5 6 7 8 9 10 11 12 13

N O P Q R S T U V W X Y Z


(45)

Misalkan terdapat pesan berikut yang akan dienkripsi dengan Hill Cipher:

Herbert Yardley wrote The American Black Chamber.

Selanjutnya adalah membagi pesan tersebut menjadi bentuk pasangan yang terdiri atas dua huruf (digraph)

he rb er ty ar dl ey wr ot et he am er ic an bl ac kc ha mb er

Jika pesan tidak terdiri atas jumlah huruf dalam nilai genap, maka harus ditambahkan sebuah karakter null pada akhir pesan.

Setelah itu tiap pasangan dikonversi ke bentuk nilai berdasarkan ekivalen dari huruf pada tabel di atas.

8 5 18 2 5 18 20 25 1 18 4 12 5 25

23 18 15 20 5 20 8 5 1 13 5 18 9 3

1 14 2 12 1 3 11 3 8 1 13 2 5 18

Tiap pasangan string di atas akan di-encipher dengan menggunakan matriks kunci 2 × 2

3

7

5 12

.

Lakukan encipher pada pasangan pertama dan dinyatakan sebagai vektor kolom (h(8) e (5)), kemudian dikalikan dengan matriks kunci.

3

7

8

59

5 12 5

100

   

=

   

   

Hasil yang didapat perlu dimodulokan dengan bilangan 26 karena jumlah maksimum alphabet sebanyak 26 buah.

59

100

mod 26

7

mod 26

22

 

≡  

 


(46)

Didapat ciphertext G(7) V(22)

Untuk pasangan berikutnya r (18) b (2)

3

7

18

5 12

2

  

  

  

mod 26

16

mod 26

10

 

≡  

 

dan hasil 16 berkorespondensi dengan P dan 10 berkorespondensi dengan J. Lakukan cara di atas untuk setiap pasangan huruf sehingga diperoleh.15

2.4.2 Pendekripsian Hill Cipher

GVPJKGAJYMRHHMMSCCYEGVPEKGVCWQLXXOBMEZAKKG

Algoritma proses pendekripsian Hill Cipher dapat diuraikan dalam bentuk langkah-langkah sebagai berikut:

1. Hitung matriks K−1 (mod 26) sebagai kunci pembuka. K−1

2. Lakukan langkah-langkah 2−5 pada enkripsi dengan mengganti:

ada jika FPB ((det(K), 26) = 1.

(i) Matriks K dengan matriks K−1

(ii) Blok vektor teks asli P dengan blok vektor sandi C dan sebaliknya. .

Ciphertext Transformasi ke Bentuk Nilai Hitung K-1

Susun Hasil dalam Bentuk

Matriks C

P = K-1 . C (Mod 26)

Transformasi ke Bentuk Huruf Plaintext

Gambar 2.5 Ilustrasi Proses Deciphering Hill Cipher


(47)

Sebagai contoh untuk memgembalikan hasil yang didapat di atas maka hal yang harus dilakukan adalah menghitung invers dari matriks kunci di atas.

Untuk membentuk plaintext menjadi ciphertext pada contoh di atas dilakukan dengan:

3

7

8

5 12 5

  

  

  

mod 26

7

mod 26

22

 

≡  

 

Untuk membalikkan persamaan di atas maka perlu dicari nilai invers dari matriks kunci.

3

7

8

5 12 5

  

  

  

mod 26

7

mod 26

22

 

≡  

 

Jika akan dicari matriks

? ?

? ?

maka:

Dengan persamaan ini untuk mendapatkan

8

5

 

 

 

Matriks yang akan dicari disebut dengan invers dari

3

7

5 12

dan

dinyatakan dengan 1

3

7

5 12

.

Untuk mencari nilai invers dari suatu matriks maka dapat dengan mudah menggunakan cara seperti ini.


(48)

1

d

b

a

b

ad

bc

ad

bc

c

d

c

a

ad

bc

ad

bc

= 

.

Produk dari 1

1 0

0 1

d

b

a

b

a

b

ad

bc

ad

bc

a

b

c

d

c

d

c

a

c

d

ad

bc

ad

bc

 

 

=

=

 

 

 

 

yang mana hasil terakhir tersebut disebut dengan matriks identitas karena efek perkalian matriks identitas dengan suatu matriks akan menghasilkan matriks itu sendiri. Ini sama halnya dengan mengkalikan sebuah bilangan real dengan 1.

Perhatikan bahwa agar dapat dibagi oleh ad – bc, maka harus terdapat sebuah invers perkalian untuk ad − bc yang merupakan salah satu dari 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, atau 25. Jika tidak maka proses enciphering tidak dapat dibalik.

Pada matriks

a

b

c

d

nilai ad−bc disebut dengan determinan dari

a

b

c

d

.

Perhatikan bahwa ini merupakan hasil perkalian antara nilai kiri atas dengan kanan bawah secara diagonal dikurangi dengan perkalian antara nilai kiri bawah dengan nilai kanan atas secara diagonal. Nilai determinan tersebut harus berupa nilai 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, atau 25 modulo 26.

Jadi determinan dari

3

7

5 12

adalah 3 12 5 7 1 1mod 26× − × = ≡ .

Jadi invers dari

3

7

5 12

adalah

1

3

7

12

7

5 12

5

3

=

mod 26

mod 26

12 19

21 3

≡ 


(49)

Sebagai catatan matriks 3 × 3 dapat dipakai untuk mengenkripsi trigraph. Dan matriks 4 × 4 dapat dipakai untuk meng-encipher string yang terdiri dari empat huruf dan seterusnya.16

2.4.3 Memecahkan Hill Cipher

Seperti diketahui Hill Cipher dapat dipecahkan dengan cara known plaintext attacks. Berikut ini merupakan penjelasan dari cara memecahkan Hill Cipher.

Misalkan 5 15 , K 8 2 , K 0 10

17 16 3 5 24 20

K

      =       =    =              Dari dua pasangan pertama didapat: 5 8 15 2

17 3 16 5

K

  = 

   

Perhitungan invers dari:

1

5 8 9 2

17 3 1 15

  = 

   

   

Perhitungan matriks kunci: 15 2 9 2 7 8 16 5 1 15 19 3

K

   = 

    

=

Lakukan pengecakan kunci K dengan pasangan ketiga: 7 8 0 10 19 3 24 20     

=           Jika hasilnya sama maka matriks kuncinya adalah 7 8

19 3

 

 

 .

2.4.4 Kriptanalisis Hill Cipher

Kriptanalisis dari 2 × 2 matriks Hill Cipher berdasarkan analisis dari frekuensi digraph. Hanya terdapat 26 frekuensi pada karakter tunggal, tetapi terdapat 26 × 26 = 262 = 676 frekuensi digraph yang harus diperhitungkan. Untuk matriks 3 × 3 maka terdapat trigraph dan terdapat kemungkinan 263 = 17.576 trigraph untuk dianalisis. Matriks 4 × 4 dipakai untuk meng-encipher string empat huruf; terdapat 264 = 456.976 kemungkinan untuk string empat huruf ini. Matriks 5 × 5 dipakai untuk meng-encipher string lima huruf, terdapat 265

16 Ibid, Chris Christensen.


(50)

seterusnya. Beberapa sistem kriptografi modern dapat meng-encipher lebih satu pesan panjang dalam satu blok.

Para ahli matematika mengenal matriks. Matriks sering dipakai untuk aplikasi matematika. Dari contoh memecahkan Hill Cipher di atas dengan matriks kunci 2 × 2 dapat dengan mudah dipecahkan. Secara umum, mengetahui n plain-ciphertext digraph yang saling berkorespondensi maka Hill Cipher dengan kunci n × n dapat dipecahkan.17

2.4.5 Dasar Matematika Penyandian Citra pada Hill Cipher

Penyandian dengan Hill Cipher pada citra seperti halnya dengan teks juga menggunakan matriks dimana ketentuannya menggunakan matriks bujur sangkar. Matriks bujur sangkar adalah matriks dengan jumlah baris = jumlah kolom. Matriks bujur sangkar disebut matriks identitas (I) jika semua elemen diagonal utamanya sama dengan satu dan elemen lainnya sama dengan nol. Invers suatu matriks A adalah matriks B sedemikian hingga A . B = I. Invers matriks A ada jika determinan (A) ≠ 0.

Misal a dan b adalah bilangan-bilangan bulat. Bilangan bulat c disebut faktor persekutuan a dan b jika c|a dan c|b.

Bilangan bulat tak negatif d disebut faktor persekutuan terbesar (FPB) a dan b jika d adalah faktor persekutuan a dan b dan untuk setiap c, jika c|a dan c|b maka d|c.18

Misalkan n adalah bilangan bulat positif, a dan b adalah bilangan-bilangan bulat, a dikatakan kongruen terhadap b modulo n (ditulis a ≡ b (mod n)) jika (a − b)|n. Bilangan-bilangan bulat modulo n (simbol Zn) adalah himpunan

bilangan-Sebagai contoh, faktor persekutuan 12 dan 18 adalah {±1, ±2, ±3, ±6}, dan FPB(12,18) = 6.

Dua buah bilangan bulat a dan b dikatakan relatif prima jika FPB (a, b) = 1. Syarat ini tidak mengharuskan a dan b merupakan bilangan prima. Sebagai contoh, FPB (9,26) = 1 sehingga 9 dan 26 merupakan bilangan-bilangan yang relatif prima, meskipun masing-masing bilangannya bukan bilangan prima.

17

http://www.prenhall.com/divisions/esm/app/ph-linear/kolman/html/proj6.html


(1)

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic(1, 1) = R MatrixPic(1, 2) = G MatrixPic(1, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 1) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic(2, 1) = R MatrixPic(2, 2) = G MatrixPic(2, 3) = B

'Kalikan Matrik Kunci dgn Matrix Hasil Enkstrasi Pixel Citra Call MatrixMUL(MatrixKey(), MatrixPic(), MatrixHill())

'Set Pixel Kembali

SetPixel picDest.hdc, i, j, RGB(MatrixHill(1, 1) Mod 256, MatrixHill(1, 2) Mod 256, MatrixHill(1, 3) Mod 256)

SetPixel picDest.hdc, i, j + 1, RGB(MatrixHill(2, 1) Mod 256, MatrixHill(2, 2) Mod 256, MatrixHill(2, 3) Mod 256)

Next j

CurrentPercent = Int(((i + 1) / picSource.ScaleWidth) * 100) RaiseEvent Progress(CurrentPercent)

Next i

picDest.Refresh End If

If MatrixSize = 3 Then

For i = 0 To (picSource.ScaleWidth - 1)

For j = 0 To (picSource.ScaleHeight - 1) Step 3

MatrixHill2(1, 1) = Empty MatrixHill2(1, 2) = Empty MatrixHill2(1, 3) = Empty MatrixHill2(2, 1) = Empty MatrixHill2(2, 2) = Empty MatrixHill2(2, 3) = Empty MatrixHill2(3, 1) = Empty MatrixHill2(3, 2) = Empty MatrixHill2(3, 3) = Empty

'GetPixel i, j

PixelColor = GetPixel(picSource.hdc, i, j) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(1, 1) = R


(2)

MatrixPic2(1, 2) = G MatrixPic2(1, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 1) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(2, 1) = R MatrixPic2(2, 2) = G MatrixPic2(2, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 2) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(3, 1) = R MatrixPic2(3, 2) = G MatrixPic2(3, 3) = B

'Kalikan Matrik Kunci dgn Matrix Hasil Enkstrasi Pixel Citra Call MatrixMUL(MatrixKey(), MatrixPic2(), MatrixHill2())

'Set Pixel Kembali

SetPixel picDest.hdc, i, j, RGB(MatrixHill2(1, 1) Mod 256, MatrixHill2(1, 2) Mod 256, MatrixHill2(1, 3) Mod 256)

SetPixel picDest.hdc, i, j + 1, RGB(MatrixHill2(2, 1) Mod 256, MatrixHill2(2, 2) Mod 256, MatrixHill2(2, 3) Mod 256)

SetPixel picDest.hdc, i, j + 2, RGB(MatrixHill2(3, 1) Mod 256, MatrixHill2(3, 2) Mod 256, MatrixHill2(3, 3) Mod 256)

Next j

CurrentPercent = Int(((i + 1) / picSource.ScaleWidth) * 100) RaiseEvent Progress(CurrentPercent)

Next i

picDest.Refresh End If

EnHill = True Exit Function ErrEncrypt: EnHill = False End Function

Public Function DeHill(picSource As PictureBox, picDest As PictureBox, MatrixKey(), MatrixSize As Byte) As Boolean

Dim i As Long Dim j As Long Dim k As Long Dim l As Long Dim R As Long


(3)

Dim G As Long Dim B As Long Dim Dump As Long Dim PixelColor As Long Dim MatrixPic(1 To 2, 1 To 3) Dim MatrixHill(1 To 2, 1 To 3) Dim MatrixPic2(1 To 3, 1 To 3) Dim MatrixHill2(1 To 3, 1 To 3) Dim CurrentPercent As Long Static AlreadyInvers As Boolean

On Error Resume Next 'GoTo ErrDecrypt

'Cari Invers Matriks kunci If AlreadyInvers = False Then

Call MatrixINV(MatrixKey()) AlreadyInvers = True End If

If MatrixSize = 2 Then

For i = 0 To picSource.ScaleWidth - 1

For j = 0 To (picSource.ScaleHeight - 1) Step 2

MatrixHill(1, 1) = Empty MatrixHill(1, 2) = Empty MatrixHill(1, 3) = Empty MatrixHill(2, 1) = Empty MatrixHill(2, 2) = Empty MatrixHill(2, 3) = Empty

'GetPixel i, j

PixelColor = GetPixel(picSource.hdc, i, j) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic(1, 1) = R MatrixPic(1, 2) = G MatrixPic(1, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 1) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic(2, 1) = R MatrixPic(2, 2) = G MatrixPic(2, 3) = B


(4)

Call MatrixMUL(MatrixKey(), MatrixPic(), MatrixHill())

'Reset Nilai kembali For k = 1 To 2 For l = 1 To 3

Dump = MatrixHill(k, l) If Dump < 0 Then While Dump < 0

Dump = Dump + 256 Wend

ElseIf Dump >= 0 Then Dump = Dump Mod 256 End If

MatrixHill(k, l) = Dump Next l

Next k

'Set Pixel Kembali

SetPixel picDest.hdc, i, j, RGB(MatrixHill(1, 1), MatrixHill(1, 2), MatrixHill(1, 3))

SetPixel picDest.hdc, i, j + 1, RGB(MatrixHill(2, 1), MatrixHill(2, 2), MatrixHill(2, 3))

Next j

CurrentPercent = Int(((i + 1) / picSource.ScaleWidth) * 100) RaiseEvent Progress(CurrentPercent)

Next i

picDest.Refresh End If

If MatrixSize = 3 Then

For i = 0 To picSource.ScaleWidth - 1

For j = 0 To (picSource.ScaleHeight - 1) Step 3

MatrixHill2(1, 1) = Empty MatrixHill2(1, 2) = Empty MatrixHill2(1, 3) = Empty MatrixHill2(2, 1) = Empty MatrixHill2(2, 2) = Empty MatrixHill2(2, 3) = Empty MatrixHill2(3, 1) = Empty MatrixHill2(3, 2) = Empty MatrixHill2(3, 3) = Empty

'GetPixel i, j

PixelColor = GetPixel(picSource.hdc, i, j) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(1, 1) = R


(5)

MatrixPic2(1, 2) = G MatrixPic2(1, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 1) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(2, 1) = R MatrixPic2(2, 2) = G MatrixPic2(2, 3) = B

PixelColor = GetPixel(picSource.hdc, i, j + 2) R = PixelColor Mod 256

G = (PixelColor \ 256) Mod 256 B = PixelColor \ 256 \ 256 MatrixPic2(3, 1) = R MatrixPic2(3, 2) = G MatrixPic2(3, 3) = B

'Kalikan Matrik Kunci dgn Matrix Hasil Ekstrasi Pixel Citra Call MatrixMUL(MatrixKey(), MatrixPic2(), MatrixHill2())

'Reset Nilai kembali For k = 1 To 3 For l = 1 To 3

Dump = MatrixHill2(k, l) If Dump < 0 Then

While Dump < 0

Dump = Dump + 256 Wend

ElseIf Dump >= 0 Then Dump = Dump Mod 256 End If

MatrixHill2(k, l) = Dump Next l

Next k

'Set Pixel Kembali

SetPixel picDest.hdc, i, j, RGB(MatrixHill2(1, 1), MatrixHill2(1, 2), MatrixHill2(1, 3))

SetPixel picDest.hdc, i, j + 1, RGB(MatrixHill2(2, 1), MatrixHill2(2, 2), MatrixHill2(2, 3))

SetPixel picDest.hdc, i, j + 2, RGB(MatrixHill2(3, 1), MatrixHill2(3, 2), MatrixHill2(3, 3))

Next j

CurrentPercent = Int(((i + 1) / picSource.ScaleWidth) * 100) RaiseEvent Progress(CurrentPercent)

Next i


(6)

End If

DeHill = True Exit Function ErrDecrypt: DeHill = False End Function