Pengembangan Algoritma Block Chiper RC6 Pada Citra Digital

(1)

TESIS

MARDIANA

117038048

PROGRAM MAGISTER (S2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

TESIS

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah

Magister Teknik Informatika

MARDIANA

117038048

PROGRAM MAGISTER (S2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN


(3)

PERSETUJUAN

Judul : Pengembangan Algoritma Block Chiper RC6 Pada Citra Digital

Katagori : Tesis Nama : Mardiana Nomor Induk Mahasiswa : 117038048

Program Studi : S2 Teknik Informatika

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dr. Marwan Ramli, M.Si Prof. Dr. Muhammad Zarlis

Diketahui/disetujui oleh

Program Studi S2 Teknik Informatika Ketua,

Prof. Dr. Muhammad Zarlis NIP. 19570701 198601 1 003


(4)

PENGEMBANGAN ALGORITMA BLOCK CIPHER RC6 PADA CITRA DIGITAL

TESIS

Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan masing – masing telah disebutkan sumbernya.

Medan, 26 Juli 2013

Mardiana 117038048


(5)

AKADEMIS

Sebagai Sivitas akademika Universitas Sumatera Utara, saya bertanda tangan di bawah ini:

Nama : Mardiana NIM : 117038048

Program Studi : Teknik Informatika Jenis Karya Ilmiah : Tesis

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalty Free Right) atas tesis saya yang berjudul:

PENGEMBANGAN ALGORITMA BLOCK CIPHER RC6 PADA CITRA DIGITAL

Dengan Hak Bebas Royalti Non-Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk database, merawat dan mempublikasikan tesis saya tanpa meminta izin dari saya selama tetap mencamtumkan nama saya sebagai penulis dan sebagai pemegang atau sebagai pemilik hak cipta.

Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 26 Juli 2013

Mardiana


(6)

Telah diuji pada Tanggal : 11 Juli 2013

PANITIA PENGUJI TESIS

Ketua : Prof. Dr. Muhammad Zarlis Anggota : 1. Dr. Marwan Ramli, M.Si

2. Prof. Dr. Herman Mawengkang 3. Prof. Dr. Tulus


(7)

vi

RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap : Mardiana

Tempat dan Tanggal Lahir : Medan, 15 November 1983 Alamat Rumah : Jl. Vanily 12 No.44

E_Mail : Mardiana_com@yahoo.com Instansi Tempat Bekerja : Sekolah Tinggi Teknik Harapan Alamat Kantor : Jl. Hm. Joni No. 70 C Medan

DATA PENDIDIKAN

SD : SD Negeri 14, T. Balai TAMAT: 1996 SLTP : Madrasah Tsanawiyah Negeri, T. Balai TAMAT: 1999 SLTA : Madrasah Aliyah Negeri, T. Balai TAMAT: 2002 D3 : Politeknik Negeri Medan TAMAT: 2005 S1 : Sekolah Tinggi Teknik Harapan, Medan TAMAT: 2010 S2 : Teknik Informatika USU TAMAT: 2013


(8)

KATA PENGANTAR

Assalamu’alaikum Warahmatullahi Wabarakatu

Segala puji bagi Allah SWT, yang telah memberikan dua nikmat yang cukup besar kepada kita, yaitu nikmat iman dan nikmat islam. Sehingga dengan kedua nikmat tersebut yang telah diberikan kepada kita, berarti telah diberikan hidayah dan petunjuk-Nya.

Shalawat beriring salam kepada Nabi Muhammad s.a.w. sebagai utusan Allah yang terakhir yang diutuskan Allah diakhir zaman untuk menyeru kepada seluruh manusia agar beriman dan bertakwa kepada Nya.

Selanjutnya kata penghormatan yang utama kepada Bapak Rektor Universitas Sumatera Utara, Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc (CTM), Sp.A(K) atas kesempatan yang telah diberikan kepada penulis untuk menyelesaikan Studi Program Magister (S2) Teknik Informatika.

Kepada ketua Program Studi Magister (S2) Teknik Informatika Fakultas Ilmu Komputer dan Teknologi Informasi (Fasilkom) Prof. Dr. Muhammad Zarlis dan Sekretaris Program Studi Magister (S2) Teknik Informatika M. Andri Budiman, S.T, M.Comp, M.E.M, beserta seluruh Staff Pengajar pada Program Studi Magister (S2) Teknik Informatika pada Fakultas Ilmu Komputer dan Teknologi Informasi (Fasilkom) Universitas Sumatera Utara, yang selama ini telah banyak memberikan ilmu dan membimbing penulis sehingga penulis dapat meyelesaikan studi tepat waktu. Terimakasih yang tak terhingga dan penghargaan setinggi – tingginya saya ucapkan kepada Prof. Dr. Muhammad Zarlis sebagai pembimbing utama dan kepada Dr. Marwan Ramli, M.Si Sebagai pembimbing Anggota, yang selama ini telah membimbing penulis dalam menyelesaikan tesis dari awal sampai akhir dengan penuh kesabaran, memotifasi serta mengarahkan penulis untuk menyelesaikan tesis dengan baik.


(9)

Terima kasih saya ucapkan kepada pembanding, Prof. Dr. Herman Mawengkang, Prof. Dr. Tulus dan Dr. Zakarias Situmorang, yang selama ini juga dalam penyelesaian tesis ini, telah banyak memberikan masukan, arahan – arahan yang sangat baik untuk kesempurnaan tesis penulis. Dan selanjutnya kepada staff Fasilkom yang selama ini membantu penyelesaian tesis dari penulis, berupa pelayanan akademik yang cukup baik dalam mendukung perlengkapan setiap tesis penulis. Sehingga dengan kebaikan tersebut yang diberikan kepada penulis mendapat balasan yang lebih baik dari Allah SWT.

Terima kasih kepada ayahanda tercinta Erizal dan Ibunda (alm) Zainab, yang selama ini telah mendidik Penulis dan membimbing Penulis dari semenjak kecil sampai dewasa. Sehingga dengan motivasi, nasehat selalu kepada Penulis semenjak menimba ilmu di Fasilkom pada Program studi Magister (S2) Teknik Informatika sampai menyelesaikan Tesis, semua itu tidak akan pernah Penulis selesaikan dengan baik dan waktu yang tepat, melainkan dengan do’a dari ayahanda dan Ibunda tercinta serta dengan izin dari Allah yang Maha Kuasa. Semua ini adinda lakukan untuk menjadi yang terbaik dan bisa membanggakan ayah dan Ibu serta menjadi pendidik yang bisa memberikan ilmu kepada yang membutuhkan. Selanjutnya ucapan terimakasih kepada Roma Rezeki sebagai abangda yang tercinta, yang selama ini juga selalu mendoakan dalam menyelesaikan tesis.

Dalam menyelesaikan tesis ini, penulis juga memperoleh banyak bantuan dari berbagai pihak, untuk itu penulis mengucapkan terima kasih sebesar-besarnya kepada :

1. Bapak Ir. H. M. Zulfin, MT. Selaku Ketua Sekolah Tinggi Teknik Harapan Medan.

2. Bapak Prof. Dr. Tulus Selaku Ketua Program Studi Teknik Informatika, yang selalu memotifasi penulis untuk menyelesaikan studi dengan waktu yang tepat. 3. Bapak Syawaluddin Nasution, ST, MT Selaku PUKET I STTHarapan Medan. 4. Ibu Ummul Khair, M. Kom Selaku Sekjur Program Studi Teknik Informatika. 5. Bapak Ari Usman, ST., Risko Liza, ST., Tommy, ST., T. Diansyah, ST., M. Kom,

Ade Zulkarnain, ST., M. Kom, Sayuti, ST., M. Kom, Nurwulan, ST, Rismayanti, ST., Andi Sunawar, Sabaruddin dan kawan – kawan yang tidak bisa disebutkan satu persatu di Sekolah Tinggi Teknik Harapan yang juga selalu memberikan dukungan dan semangat.


(10)

6. Ibu Alfira Rosma, SH, S.Pd. Selaku Kepala Sekolah SMP Siti Hajar.

7. Ria Puspa Sari Harahap, S.Pd Selaku Wakil Kepala Sekolah SMP Siti Hajar dan sekaligus sebagai sahabat yang selalu memotifasi penulis untuk menyelesaikan studi dengan waktu yang tepat.

8. Rahmad Martuah, S.Sn, M.Pd Selaku Kepala Sekolah SD Swasta Siti Hajar. 9. Habebties, Fikri Widiastuty dan kawan – kawan di Sekolah Siti Hajar yang juga

selalu memberikan dukungan dan semangat.

10.Mardian, S.Kom., Widya Sari Akriyani, S.Si., Dek Inezs, Bang Jawaher, bu’ Siti, Bang Arie Satya, Bang Sugi, Kak Ertina, Fahmi, Andi Marwan dan kawan-kawan sekelas di KOM A, KOM B, dan KOM C.

11.Kak Vebby, Kak Nurma, Kak Atun, Kak Masyita, dilla, Nisa, Fera, dan Sahabat-sahabat seperjuangan.

Semoga kebaikan dari Bapak, Ibu dan kawan – kawan sekalian semua diberikan balasan yang lebih baik dari Allah SWT.

Akhir kata penulis berharap semoga Tesis ini bermanfaat bagi semua pembaca. Medan, Juli 2013

Penulis,


(11)

ABSTRAK

RC6 merupakan metode chipper blok yang menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 32bit. Dengan kata lain setiap blok akan menyimpan empat karakter. Pada citra digital tiap pixel terdiri dari tiga komponen yaitu R, G, dan B. Jika tiga komponen tersebut digabungkan dalam sebuah blok maka blok tersebut akan memiliki data dengan ukuran 24bit atau tiga karakter. Secara default kekurangan bit pada tiap blok akan diisi oleh bit dari pixel berikutnya sehingga tiap blok akan memiliki ukuran yang sesuai yaitu 32bit. Permasalahan yang terjadi adalah jika jumlah pixel tidak sesuai dengan pembagian blok sehingga diperlukan adanya padding atau penambahan bit 0 pada blok register, jika padding terjadi maka ukuran data hasil enkripsi akan berubah yang berpengaruh pada ukuran citra yang akan berubah dan akan menjadi sulit sekali dalam penyusunan kembali data hasil enkripsi kedalam bentuk citra. Pengembangan yang digunakan RC6M pada konstanta Pw dan Qw yang semula berukuran 32bit menjadi 24bit maka terjadi pengurangan sebesar 8 bit, sehingga konstanta yang digunakan berukuran 24 bit dalam proses pembangkitan kunci.


(12)

RC6 block cipher ALGORITHM DEVELOPMENT OF DIGITAL IMAGE

ABSTRACT

RC6 is a block cipher method that uses a register block to block four of each size for 32bit. In other words, each block will keep the four characters. In the digital image of each pixel consists of three components, namely R, G, and B. If the three components are combined in a block then the block will have data with 24bit or three characters. By default shortage of bits in each block will be filled by the next bit of the pixel so that each block will have the appropriate size is 32bit. The problem that happens is if the number of pixels is not in accordance with the division so it is necessary to block or adding padding bit 0 in register block, if padding occurs then the encrypted data size will change that affects the size of the image will change and will be hard pressed in preparing the return Data encryption results in the form of images. RC6M used changes in constants Pw and Qw are initially sized 32bit to be 24bit then there is a reduction of 8 bits, so the constants used are 24 bits in the key generation process.


(13)

Halaman

HALAMAN JUDUL i

PERSETUJUAN ii

PERNYATAAN ORISINALITAS iii

PERSETUJUAN PUBLIKASI iv

PANITIA PENGUJI v

RIWAYAT HIDUP vi

KATA PENGANTAR vii

ABSTRAK x

ABSTRACT xi

DAFTAR ISI xii

DAFTAR GAMBAR xiv

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Rumusan Masalah 5

1.3 Tujuan Penelitian 5

1.4 Ruang Lingkup Penelitian 5

BAB 2 TINJAUAN PUSTAKA

2.1 Kriptografi 6

2.1.1 Algoritma Kriptografi 7 2.1.2 Algoritma RC (Ron’s Code) 8 2.1.3 Algoritma Block Cipher RC 2 9 2.1.4 Algoritma Stream Cipher RC 4 10 2.1.5 Algoritma Block Cipher RC 6 12


(14)

3.1 Pendahuluan 16 3.2 Rancangan Penelitian 18 3.2.1 Pengembangan RC5  RC6 20 3.2.2 Modifikasi RC6 Pada Citra Digital 22

BAB 4 HASIL DAN PEMBAHASAN

4.1 Hasil 26

4.2 RC6 Standart Pada Citra Greyscale dengan RC6 Standart

pada citra RGB 26

4.2.1 RC6 Standart Pada Citra Greyscale 27 4.2.2 RC6 Standart pada citra RGB 28

4.3 Algoritma RC6 M 32

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 37

5.2 Saran 38


(15)

Gambar 2.1 Proses Enkripsi-Deskripsi Kunci Simetris 7 Gambar 2.2 Proses Enkripsi-Deskripsi Kunci Asimetris 8 Gambar 2.3 Mix Transpormation dari RC2 9

Gambar 2.4 Proses Enkripsi 13

Gambar 3.1 Representasi Citra dalam RGB 16

Gambar 3.2 Citra Analog 17

Gambar 3.3 Citra Digital 18

Gambar 3.4 Perbandingan Operasi Algoritma RC5 dan RC6 21 Gambar 3.5 Diagram Alir Proses Enkripsi Citra 24 Gambar 3.6 Diagram Alir Proses Dekripsi Citra 25 Gambar 4.1 Citra Asli Greyscale 27

Gambar 4.2 Citra Asli RGB 28

Gambar 4.3 Hasil Citra Enkripsi 29 Gambar 4.4 Hasil Citra Dekripsi 29

Gambar 4.5 Citra Asli 30

Gambar 4.6 Hasil Citra Enkripsi 31 Gambar 4.7 Hasil Citra Dekripsi 31

Gambar 4.8 Tampilan Program 34

Gambar 4.9 Citra asli format JPG 35 Gambar 4.10 Citra Hasil Enkripsi Format JPG 35 Gambar 4.11 Citra Hasil Dekripsi Format JPG 36


(16)

ABSTRAK

RC6 merupakan metode chipper blok yang menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 32bit. Dengan kata lain setiap blok akan menyimpan empat karakter. Pada citra digital tiap pixel terdiri dari tiga komponen yaitu R, G, dan B. Jika tiga komponen tersebut digabungkan dalam sebuah blok maka blok tersebut akan memiliki data dengan ukuran 24bit atau tiga karakter. Secara default kekurangan bit pada tiap blok akan diisi oleh bit dari pixel berikutnya sehingga tiap blok akan memiliki ukuran yang sesuai yaitu 32bit. Permasalahan yang terjadi adalah jika jumlah pixel tidak sesuai dengan pembagian blok sehingga diperlukan adanya padding atau penambahan bit 0 pada blok register, jika padding terjadi maka ukuran data hasil enkripsi akan berubah yang berpengaruh pada ukuran citra yang akan berubah dan akan menjadi sulit sekali dalam penyusunan kembali data hasil enkripsi kedalam bentuk citra. Pengembangan yang digunakan RC6M pada konstanta Pw dan Qw yang semula berukuran 32bit menjadi 24bit maka terjadi pengurangan sebesar 8 bit, sehingga konstanta yang digunakan berukuran 24 bit dalam proses pembangkitan kunci.


(17)

RC6 block cipher ALGORITHM DEVELOPMENT OF DIGITAL IMAGE

ABSTRACT

RC6 is a block cipher method that uses a register block to block four of each size for 32bit. In other words, each block will keep the four characters. In the digital image of each pixel consists of three components, namely R, G, and B. If the three components are combined in a block then the block will have data with 24bit or three characters. By default shortage of bits in each block will be filled by the next bit of the pixel so that each block will have the appropriate size is 32bit. The problem that happens is if the number of pixels is not in accordance with the division so it is necessary to block or adding padding bit 0 in register block, if padding occurs then the encrypted data size will change that affects the size of the image will change and will be hard pressed in preparing the return Data encryption results in the form of images. RC6M used changes in constants Pw and Qw are initially sized 32bit to be 24bit then there is a reduction of 8 bits, so the constants used are 24 bits in the key generation process.


(18)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Dewasa ini keamanan data dirasakan semakin penting, Keamanan pengiriman informasi melalui komputer menjadi bagian yang tidak terpisahkan dalam kehidupan sehari-hari. Seiring dengan peningkatan kepentingannya, banyak metode-metode yang ditemukan maupun diperluas penggunaannya. Diantara metode-metode tersebut terdapat metode yang hanya membutuhkan operasi matematika yang sederhana, tetapi juga terdapat metode yang melibatkan teori yang rumit dan sulit implementasinya. Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Scheiner, 1996 dalam bukunya "Applied Cryptography", kriptografi adalah ilmu pengetahuan dan seni menjaga message-message agar tetap aman (secure).

Saat ini telah banyak beredar program khusus proteksi data baik freeware, shareware, maupun komersial yang sangat baik. Pada umumnya program tersebut tidak hanya menyediakan satu metoda saja, tetapi beberapa jenis sehingga kita dapat memilih yang menurut kita paling aman. Salah satu metode enkripsi adalah publickey Criptography. Sampai saat ini penulis memperhatikan telah banyak program proteksi data yang telah diterbitkan pada majalah Mikrodata ataupun Antivirus, tetapi jarang sekali yang cukup baik sehingga dapat dipercaya untuk melindungi data yang cukup penting dan masih memiliki beberapa kelemahan.

Salah satu metode kriptografi yang terkenal adalah RC6 (Ron’s Code 6) yang merupakan yang sederhana dan cepat sehingga mudah diaplikasikan untuk pengamanan data. ini biasanya dipakai untuk mengacak plain teks. Implementasi baru RC6 dapat dipakai untuk melakukan pengacakan terhadap citra. Sehingga citra asli


(19)

setelah diacak dengan block chipper ini menjadi citra yang tidak beraturan lagi. Citra tersebut setelah diacak dapat dikirim kepada orang yang berhak lewat jaringan terbuka seperti Internet. Ini bertujuan agar citra tidak dapat dibuka dan jatuh ketangan pihak yang tidak berkepentingan.

RC6 memiliki struktur yang sederhana dan deskripsi relatif terhadap cipher blok yang lainnya. RC6 adalah salah satu finalis untuk Advanced Encryption Standard. Ini terdiri dari dua jaringan Feistel Data yang dicampur melalui data yang rotasi tergantung. Operasi dalam satu putaran RC6 adalah sebagai berikut: aplikasi dua mengkuadratkan fungsi f (x) (2x + 1) mod 232, dua rotasi 32-bit tetap, dua data tergantung rotasi 32-bit, dua eksklusif-ORS dan dua penambahan modulo 232. Sebuah versi dari RC6 yang lebih akurat ditetapkan sebagai RC6-w/r/b dimana kata ukuran adalah w bit, enkripsi terdiri dari sejumlah non-negatif putaran r, dan b menunjukkan panjang kunci enkripsi dalam byte. RC6 adalah perpanjangan evolusi dari RC5 cipher blok, yang menerima banyak perhatian karena desainnya yang bahkan sederhana daripada RC6 dimana RC5 bekerja pada dua 32-bit kata, RC6 diperluas ke operasi pada empat kata 32-bit. Struktur sederhana relatif RC5 telah memungkinkan untuk beberapa mudah analisis dan namun tampaknya bahwa 16 putaran RC5 masih menolak semua serangan yang dikenal dengan baik. Desain RC6 lebih kompleks dari pada RC5 dan akibatnya analisis cipher mendapat lebih terlibat. Pada bagian ini, untuk mengevaluasi efisiensi RC6 blok cipher untuk aplikasi ke gambar digital. Jadi, RC6 blok cipher diterapkan beberapa gambar digital. Sebelum enkripsi / dekripsi, kita terlebih dahulu harus mengekstrak header image agar gambar bemeasurement. Citra yang digunakan adalah skala gambar abu-abu - Lena dan cman, masing-masing ukuran 256 x 256, skala abu-abu (0-255) sebagai gambar asli (plain images) dan menggunakan RC6-32/20/16 ( H.E.H. Ahmed, H.M. Kalash&O.S. Farag Allah 2007). RC6 algoritma memiliki struktur Feistel dimodifikasi dan disajikan secara simbolis sebagai RC6-w/r/b. w berarti 32 bit sebagai ukuran kata, r menunjukkan jumlah putaran. Jika ukuran blok adalah 128 bit, maka r, jumlah, adalah 20. b berarti 16 byte sebagai jumlah kunci. (Kim, G.-H., Kim, J.-N., & Cho, G.-Y. 2009).

Algoritma RC6 merupakan salah satu kandidat Advanced Encryption Standard (AES) yang diajukan oleh RSA Laboratoriest kepada NIST. Dirancang oleh


(20)

Ronald L Rivest, M.J.B. Robshaw, R. Sidney dan Y.L. Yin, algoritma ini merupakan pengembangan dari algoritma sebelumnya yaitu RC5 dan telah memenuhi semua kriteria yang diajukan oleh NIST. Algoritma RC6 adalah versi yang dilengkapi dengan beberapa parameter, sehingga dituliskan sebagai RC6-w/r/b, dimana parameter w merupakan ukuran kata dalam satuan bit, r adalah bilangan bulat bukan negatif yang menunjukan banyaknya iterasi selam proses enkripsi, dan b menunjukan ukuran kunci enkripsi dalam byte. Ketika algoritma ini masuk sebagai kandidat AES, maka ditetapkan nilai parameter w = 32, r = 20 dan b bervariasi antara 16, 24, dan 32 byte. RC6-w/r/b memecah block 128 bit menjadi 4 buah block 32 bit, dan mengikuti enam aturan operasi dasar sebagai berikut :

A + B Operasi penjumlahan bilangan integer. A – B Operasi pengurangan bilangan integer. A ⊕B Operasi exclusive-OR (XOR)

A x B Operasi perkalian bilangan integer.

A<<<B A dirotasikan ke kiri sebanyak variabel kedua (B) A>>>B A dirotasikan ke kanan sebanyak variabel kedua (B)

Dari hasil studi analisis dan implementasi algoritma RC6 untuk enkripsi dan dekripsi data dapat diambil beberapa kesimpulan, yaitu RC6 adalah algoritma enkripsi dengan model private key/kunci pribadi yang mempunyai key dekripsi sama dengan key enkripsi, Algoritma RC6 merupakan block cipher dengan ukuran block hingga128 bit dan parameter yaitu RC6-w/r/b dengan nilai w=32 sebagai ukuran kata dalam bit, r=20 sebagai banyaknya iterasi/round dan b ukuran kunci yang bervariasi antara 16, 24 dan 32 byte, Algoritma RC6 terdiri dari 3 bagian yaitu key setup, whitening dan ciphering, Waktu proses enkripsi dan deskripsi tergantung pada besarnya file yang akan dienkripsi/dekripsi. Hal ini disebabkan oleh efek cache dan efek penanganan file (file handling) oleh sistem operasi. Ukuran file pada proses enkripsi/dekripsi mengalami sedikit perubahan, hal ini dikarenakan terjadinya proses padding. Dengan menggunakan panjang kunci yang berbeda pada proses enkripsi yang dilakukan pada file yang sama, waktu proses


(21)

tidak mengalami perubahan yang besar. Dibandingkan dengan algoritma RC4 dan Blowfish, maka algoritma RC6 merupakan algoritma enkripsi yang lebih sederhana, cepat dan aman (Yudi Prayudi & Idham Halik, 2005).

RC6 merupakan metode enkripsi baru yang menggunakan mode blok yang dasar operasinya merupakan pengembangan dari metode RC5. Perancangan metode RC6 didasari oleh pertimbangan dari metode RC5 adalah kandidat yang sangat potensial untuk ditetapkan sebagai AES (Advanced Encryption Standart). Untuk memenuhi persyaratan dan kebutuhan yang ditentukan oleh AES, maka metode RC5 dikembangkan menjadi RC6 untuk meningkatkan kemanan dan performa serta memenuhi persyaratan kebutuhan dari AES (Ronald L. Rivest, 1998).

Salah satu kebutuhan AES, sebuah metode enkripsi harus dapat menangani blok input/output dengan ukuran 128bit. Dikarenakan RC5 menggunakan dua buah blok register dalam operasi nya, maka tiap register akan memiliki ukuran 64bit. Namun arsitektur dan bahasa yang dispesifikasikan belum mendukung operasi 64bit dengan efektif dan efisien, oleh karena itulah RC5 kemudian dikembangkan menggunakan empat buah blok yang masing-masing memiliki ukuran 32bit yang kemudian muncullah metode RC6 (Ronald L. Rivest, 1998).

Dari hasil analisis diatas RC6 merupakan metode chipper blok yang menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 32bit. Dengan kata lain setiap blok akan menyimpan empat karakter. Pada citra digital tiap pixel terdiri dari tiga komponen yaitu R, G, dan B. Jika tiga komponen tersebut digabungkan dalam sebuah blok maka blok tersebut akan memiliki data dengan ukuran 24bit atau tiga karakter. Secara default kekurangan bit pada tiap blok akan diisi oleh bit dari pixel berikut nya sehingga tiap blok akan memiliki ukuran yang sesuai yaitu 32bit. Permasalahan yang terjadi adalah jika jumlah pixel tidak sesuai dengan pembagian blok sehingga diperlukan adanya padding, jika padding terjadi maka ukuran data hasil enkripsi akan berubah yang berpengaruh pada ukuran citra yang akan berubah dan akan menjadi sulit sekali dalam penyusunan kembali data hasil enkripsi ke dalam bentuk citra. Untuk mengatasi permasalahan tersebut maka diusulkan modifikasi algoritma RC6 dengan spesifikasi sebagai berikut :


(22)

2. Nilai konstanta p dan q untuk expansi kunci: P24 = b7e151

Q24 = 9e3779

1.2.Rumusan Masalah

Sesuai dengan latar belakang sebelumnya, maka yang menjadi masalah yang akan dikerjakan dan diselesaikan adalah:

1. Pada citra digital tiap pixel terdiri dari tiga komponen yaitu R, G, dan B. Secara default kekurangan bit pada tiap blok akan diisi oleh bit dari pixel berikut nya sehingga tiap blok akan memiliki ukuran yang sesuai yaitu 32bit. 2. Apabila jumlah pixel tidak sesuai dengan pembagian blok sehingga terjadi

padding. Akibatnya ukuran data hasil enkripsi akan berubah. Hal ini berpengaruh terhadap ukuran citra yang akan berubah dan akan menjadi sulit sekali dalam penyusunan kembali data hasil enkripsi ke dalam bentuk citra.

1.3.Tujuan Penelitian

Tujuan dari penelitian ini adalah untuk mengembangkan bagian kelemahan RC6 pada ukuran file image agar tidak terjadi perubahan ukuran file di file image atau padding dan menambah pengetahuan lebih lanjut mengenai cara kerja kriptografi RC6 yang sudah dikembangkan dan aplikasinya dalam mengacak file citra dengan menyandikan bagian RGB dari citra tersebut.

Manfaat dari penelitian ini agar tulisan ini dapat berfungsi sebagai literature kriptografi RC6 sedangkan implementasinya berupa program alternatif yang dapat digunakan untuk menyandikan citra sehingga saat citra akan dikirim tidak dapat digunakan oleh pihak yang tidak berkepentingan.

1.4. Ruang Lingkup Penelitian

Dalam penelitian ini, penulis melakukan studi pustaka dengan membahas suatu topik yang berhubungan dengan Algoritma RC6, pengolahan citra dan kriptografi.


(23)

BAB 2

TINJAUAN PUSTAKA

2.1 Kriptografi

Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman. Para pelaku atau praktisi kriptografi disebut crytograpers. Sebuah algoritma kriptografik (cryptographic algorithm) disebut chipper, merupakan persamaan matematik yang digunakan untuk proses enskripsi dan deskripsi. Biasanya kedua persamaan matematik (untuk enskripsi dan deskripsi) tersebut memiliki hubungan matematis yang cukup erat. Proses yang dilakukan untuk mengamankan sebuah pesan (yang disebut plaintext) menjadi pesan yang tersembunyi (disebut Chipertext) adalah enskripsi (encryption).

Chipertext adalah pesan yang sudah dapat dibaca dengan mudah. Menurut ISO (International Standart Organization) 7498-2, terminology yang lebih tepat digunakan

adalah “ enchiper”. Proses sebaliknya, untuk mengubah chipertetx menjadi plaintext, disebut deskripsi (decryption). Menurut ISO 7498-2, terminology yang lebih tepat untuk proses ini adalah “dechiper”.

Untuk mengenkripsi dan mendeskripsi data. Kriptografi menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendeskripsi data. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendeskripsi data.

Algoritma kriptografi modern tidak lagi mengandalkan keamanannya pada kerahasiaan algoritma tetapi kerahasiaan kunci. Plaintext yang sama bila disandikan dengan kunci yang berbeda akan menghasilkan ciphertext yang berbeda pula. Dengan demikian algoritma kriptografi dapat bersifat umum dan boleh diketahui oleh siapa saja, akan tetapi tanpa pengetahuan tentang kunci, data tersandi tetap saja tidak dapat


(24)

terpecahkan. Sistem kriptografi atau cryptosystem adalah sebuah algoritma kriptografi ditambah semua kemungkinan plaintext, chipertext dan kunci.

2.1.1. Algoritma Kriptografi

Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan atas dua golongan, yaitu:

a. Kunci Simetris

Kunci Simetris adalah jenis kriptografi yang paling umum digunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Siapapun yang memiliki kunci tersebut termasuk pihak-pihak yang tidak diinginkan dapat membuat dan membongkar rahasia ciphertext. Contoh algoritma kunci simetris yang terkenal adalah DES (Data Encryption Standard).

Proses enkripsideskripsi algoritma kriptografi kunci simetris dapat dilihat pada gambar 2.1 dibawah ini:

Gambar 2.1 Proses Enkripsi – Deskripsi kunci simetris

Algoritma kriptografi simetris dibagi menjadi 2 bagian kategori yaitu algoritma aliran (Stream chippers) dan algoritma blok (Blok Ciphers). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu Byte data. Sedangkan algoritma blok memproses data secara blok, dimana beberapa karakter / data digabungkan menjadi satu blok menhasilkan keluaran satu blok juga. Contoh- contoh algoritma stream : RC 4, DSI, DS2, Helix, PC1, A2, SEAL, SNOW, VMPC, ORYX, dan lain –lain.

Encryption Decryption plaintext

Original Plaintext chipertext


(25)

Sedangkan contoh – contoh algoritma block cipher diantaranya : Lucifer, DES, Triple DES, NewDES, TEA, XTEA, RC2, RC5, RC6, LOK189/91/97, MARS, Twofish, Blowfish, GOST, 3-way, CAST, FEAL, IDEA, MISTY, DEAL, dan lain – lain.

b. Kunci Asimetris

Kunci Asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enskripsi dan yang satu lagi untuk deskripsi. Semua orang yang mendapatkan kunci public dapat menggunakannya untuk menenkripsikan suatu pesan, data ataupun informasi, sedangkan hanya satu orang saja yang memiliki rahasia tertentu dalam hal ini kunci private untuk melakukan pembongkaran terhadap sandi yang dikirim untuk penerimanya. Contoh algoritma terkenal yang menggunakan kunci simetris adalah RSA. Proses enkripsi-deskripsi algoritma kunci asimetris dapat dilihat pada Gambar 2.2.

Gambar 2.2 Proses Enkripsi-Deskripsi Kunci Asimetris

Pada algorithm public key ini, semua orang dapat mengenkripsi data dengan memakai public key penerima yang telah diketahui secara umum. Akan tetapi data yang telah terenkripsi tersebut hanya dapat didekripsi dengan menggunakan private key yang hanya dapat diketahui oleh penerima.

Contoh-contoh algoritma asimetris ini adalah RSA, EI Gamal, Diffie Hellman, DSA, dan lain-lain.

2.1.2. Algoritma RC (Ron’s Code)

RC merupakan singkatan dari Ron’s Code ataupun Rivest Cipher. Yang termasuk ke dalam keluarga algoritma RC ini mencakup RC2, RC4, RC5, dan RC6. Khusus RC1 dan RC3 tidak pernah dipublikasikan dan tidak terdapat informasi mengenai kedua

Encryption Decryption

plaintext Original Plaintext chipertext Encryption key Descrytion key


(26)

algoritma tersebut. RC2, RC5, dan RC6 termasuk ke dalam block cipher sedangkan RC4 termasuk algoritma stream chiper.

2.1.3. Algoritma Block Cipher RC2

RC2 merupakan blok cipher didesain oleh Ron Rivest pada tahun 1987. Pengembangan RC2 disponsori oleh Lotus yang sedang mencari suatu cipher tertentu setelah evaluasi oleh NSA untuk diekspor sebagai bagian dari software Lotus Notes. Setelah negosiasi lanjut, cipher ini disetujui dan diekspor pada tahun 1989. Seperti diketahui pembatasan kunci untik ekspor kriptografi oleh pemerintah AS hanya sebesar 40 bit saja. Semua ini termuat dalam export regulation for cryptography. Detail dari algoritma ini dijaga kerahasiaannya dan sebagai property dari RSA Security. Tetapi pada tanggal 29 Januari 1996, source code atau kode sumber dari RC2 telah dipublikasikan ke Internet oleh orang tanpa nama melalui forum Usenet yaitu Sci.crypt.

RC2 merupakan block cipher 64 bit dengan variable key size. Terdiri atas 18 round yang diatur dengan feistel network yang sulit. Dengan 16 round Mixing yang disambung dengan dua roundMashing. Mixing round terdiri atas empat aplikasi dari Mix transformation seperti ditunjukkan pada Gambar 2.3 berikut ini :

NOT

<<<s

subkey

Gambar 2.3 Mix Transformation dari RC2


(27)

2.1.4. Algoritma Stream Cipher RC4

Rc4 adalah jenis kriptografi symmetric key, secret key, dan stream cipher yang didesain oleh Ron Rivest. RC merupakan singkatan dari “Ron’s Code”. Dikenal secara umum sebagai block cipher RC2 dan RC5, dan block cipher RC6 yang didesain oleh Ron Rivest bersama orang lain. RC4 didesain sekitar tahun 1990-an.

RC4 adalah inisial rahasia perdagangan, tetapi pada September 1994 implementasi RC4 dipublikasikan tanpa nama pada Cypherpunks mailing list. Berita tersebut dengan cepat menyebar pada Usenet pada sci.crypt newsgroup dan pada beberapa site di Internet. Karena algoritmanya telah diketahui maka RC4 tidak lagi merupakan rahasia perdagangan. Nama dari RC4 adalah merupakan sebuah merek dagang, RC4

sering disebut sebagai “ARCFOUR” untuk menghindari kemungkinan dalam masalah merek dagang. RC4 merupakan bagian dari protocol standar enkripsi yang umum digunakan termasuk dalam SSL (Security Socket Layer) yang dipakai untuk mengamankan jaringan web browser.

RC4 diinisialisasi dari sebuah kunci rahasia. Kemudian di-generate sebuah

keystream” yang disederhanakan dengan XOR dengan plaintext untuk menghasilkan

ciphertext. Proses deskkripsi sama dengan proses enkripsi. Salah satu alasan untuk kepopuleran RC4 adalah kesederhanaannya. Algoritma RC4 dapat diingat dan mudah diimplementasikan. Algoritma RC4 menggunakan 256 byte dari memori, S[0] hingga S[255], dan menggunakan variable integer i, j, dan k. Crytanalysis dari RC berada pada tahap yang tidak tentu. Secara teoritis RC4 dapat dipecahkan jika stream ciphertext yang dihasilkan berjumlah giga byte, tetapi ini tidak merupakan masalah utama dalam penerapannya. Pada tahun 2001 sebuah penemuan baru yang mengejutkan terjadi, semua kemungkinan kunci RC4, statistic dari byte pertama dari output keystream tidak dalam keadaan acak. Hal ini berefek ketika digunakan untuk memecahkan enkripsi WEP (wired Equivalent Privacy) yang dipakai pada 802.11 jaringan tanpa kabel. WEP menerapkan RC4 dengan banyak kunci yang mirip, sehingga memungkinkan jaringan ini terbuka untuk diserang. Implementasi RC4 saat ini sering mengabaikan 256 byte pertama atau lebih dari stream untuk mengatasi masalah tersebut.


(28)

Seperti halnya dengan cipher stream, RC4 mudah dipecahkan jika yang sama dipakai dua kali. Masalah ini biasanya diatasi dengan melakukan hashing kunci dengan vector inisialisasi unik (unique initialization vector) setiap kali kunci ini dipakai dan vector inisialisasi ini dikirim bersamaan dengan pesan.

RC4 merupakan stream cipher yang sangat cepat dan aman dari RSA. Data Security, Inc. RC4 digunakan dalam lingkungan dengan sumber daya yang kecil dengan resiko yang tinggi. RC4 tidak dipatenkan meskipun untuk tujuan komersial sekalipun. RC 4 menggunakan panjang kursi variable dari 1-256 byte (mempunyai kemampuan antara 1 – 2048 bit) untuk menginisialisasi 256 – byte state table.

Algoritma RC4 dibagi menjadi dua tahap, yaitu membentuk kunci dan ciphering (enskripsi/deskripsi). Pembentukan kunci merupakan tahap pertama dan tersulit. Selama pembentukan kunci, kunci enkripsi digunakan untuk menghasilkan sebuah variable enkripsi menggunakan 2 array (state array & key array) dan sejumlah operasi penjumlahan. Berikut ini penjelasan algoritma tahap – tahap dalam proses ciphering RC4:

1. Pembentukan Kunci ( Key Scheduling )

For 1 = 0……255 S ( i ) = i Next i

J = 0

For I = 0……255

J = ( j + S(i) + key [ I mod key_length]) mod 256 Swap ( S [i] , S [ j ])

2. Proses Enkripsi

For i = 0 to Len ( Plaintext – 1 ) i = ( i + 1 ) mod 256 j = ( j + S [ i ] ) mod 256 swap ( S [ i ] , S [ j ] )

k = S [ ( S [ i ] + S [ j ] ) mod 256 ] Ciphertext ( i ) = k XOR Plaintext ( i ) Next i


(29)

3. Proses Dekripsi

For i = 0 to Len ( Ciphertetx – 1 ) i = ( i + 1 ) mod 256

j = ( j + S [ i ] ) mod 256 swap ( S[ i ] , S[ j ] )

k = S [ ( S[ i ] + S [ j ] ) mod 256 ] plaintext ( i ) = k XOR Ciphertext ( i ) Next I

2.1.5. Algoritma Block Cipher RC6

RC6 merupakan block cipher turunan dari RC5. Didesain oleh Ron Rivest, Matt Robshaw, Ray Sidney, dan Yigun Lisa Yin untuk memenuhi persyaratan dari kompetisi Advanced Encryption Standard (AES). RC6 mempunyai block size 128 bit dan mendukung panjang kunci 128, 192, dan 256 bit. Seperti halnya RC5 maka RC6 dapat diparameter untuk mendukung panjang word yang lebih besar dan bervariasi, key size, dan jumlah round yang dapat ditentukan. RC6 sangat mirip dengan RC5 dalam strukturnya. Menggunakan data dependent rotation, penjumlahan modular dan operasi XOR. Pada kenyataannya RC6 dapat dilihat sebagai proses enkripsi RC5 dengan dua parallel interweaving. RC6 menggunakan operasi perkalian ekstra yang tidak terdapat dalam RC6 dengan maksud membuat rotation dependent pada setiap bit, jadi tidak hanya beberapa least significant bit saja.

Algoritma RC6 dilengkapi dengan beberapa parameter, sehingga dituliskan sebagai RC6-w/r/b. Parameter w merupakan ukuran kata dalam satuan bit, parameter merupakan bilangan bukan negatuf yang menunjukan banyaknya iterasi selama proses enskripsi dan parameter b menunjukkan ukuran kunci enkripsi dalam byte. Setelah algoritma ini masuk ke dalam AES, maka ditetapkan bahwa nilai w = 32, r = 20, dan b bervariasi antara 16, 24, dan 32 byte.

a. Operasi dasar

RC6-w/r/b memecah blok 128-bit menjadi 4 buah blok 32-bit, dan mengikuti aturan enam operasi dasar sebagai berikut :


(30)

a – b operasi pengurangan bilangan integer a ⊕b operasi eksklusif OR (XOR)

a x b operasi perkalian bilangan integer a <<< b a dirotasikan ke kiri sebanyak b a >>> b a dirotasikan ke kanan sebanyak b

b. Algoritma enkripsi

Algoritma RC6 memecah blok 128 bit menjadi 4 buah blok 32 bit, maka algoritma ini bekerja dengan 4 buah register 32-bit A, B, C, D. Byte yang pertama dari plainteks atau cipherteks ditempatkan pada byte A, sedangkan byte yang terakhirnya ditempatkan pada byte D. Dalam prosesnya akan didapatkan (A, B, C, D) = (B, C, D, A) yang diartikan bahwa nilai yang terletak pada sisi kanan berasal dari register di sisi kiri. Gambar 2.4 berikut akan lebih menjelaskan proses enkripsi yang terjadi pada algoritma RC6.

Gambar 2.4 Proses Enkripsi

Algoritma RC6 menggunakan sub kunci yang dibangkitkan dari kunci dan dinamakan dengan S[0] hingga S[43]. Masing-masing sub kunci panjangnya 32bit. Proses enkripsi pada algoritma RC6 dimulai dan diakhiri dengan proses whitening yang bertujuan untuk menyamarkan iterasi yang pertama dan yang terakhir dari proses enkripsi dan dekripsi. Pada proses whitening awal, nilai B akan dijumlahkan dengan S[0] dan nilai D dijumlahkan dengan S[i]. Pada masing- masing iterasi pada RC6


(31)

menggunakan dua (2) buah sub kunci. Sub kunci pada iterasi yang pertama menggunakan sub-sub kunci lanjutannya. Setelah iterasi ke-20 selesai, dilakukan proses whitening akhir dimana nilai A dijumlahkan dengan S[42], dan nilai C dijumlahkan dengan S[43]. Setiap iterasi pada algoritma RC6 mengikuti aturan sebagai berikut, nilai B dumasukkan ke dalam fungsi f, yang didefinisikan sebagai f(x) = x(2x + 1), kemudian diputar ke kiri sejauh 5 bit. Hasil yang didapat pada proses ini dimisalkan sebagai u. Nilai u kemudian di XOR dengan C dan hasilnya menjadi nilai C. Nilai t juga digunakan sebagai acuan bagi C untuk memutar nilainya ke kiri. Begitu pula dengan nilai U, juga digunakan sebagai acuan bagi nilai A untuk melakukan proses pemutara ke kiri. Kemudian sub kunci S[2i] pada iterasi dijumlahkan dengan A, dan sub kunci S[2i+1] dijumlahkan dengan C. Keempat bagian dari blok kemudian akan dipertukarkan dengan mengikuti aturan bahwa nilai A ditempatkan pada D, nilai B ditempatkan pada A, nilai C ditempatkan pada B, dan nilai (asli) D ditempatkan pada C. Demikian iterasi tersebut terus berlangsung hingga dua puluh (20) kali.

c. Algoritma dekripsi

Proses dekripsi cipherteks pada algoritma RC6 merupakan pembalikan dari proses enkripsi. Pada proses whitening, bila proses enkripsi menggunakan operasi penjumlahan, maka pada proses dekripsi menggunakan operasi pengurangan. Sub kunci yang digunakan pada proses whitening setelah iterasi terakhir diterapkan sebelum iterasi pertama, begitu juga sebaliknya sub kunci yang diterapkan pada proses whitening sebelum iterasi pertama digunakan pada whitening setelah iterasi terakhir. Akibatnya, untuk melakukan dekripsi, hal yang harus dilakukan semata- mata hanyalah menerapkan algoritma yang sama dengan enkripsi, dengan tiap iterasi menggunakan sub kunci yang sama dengan yang digunakan pada saat enkripsi, hanya saja urutan sub kunci yang digunakan terbalik.

2.2. Citra Analog dan Citra Digital

Citra adalah suatu proyeksi scene tiga dimensi ke dalam permukaan dua dimensi. Scene didefenisikan sebagai kumpulan objek tiga dimensi dengan pengaturan geometris.

Citra dapat direpresentasikan ke dalam citra analog dan citra digital. Citra analog biasanya ditampilkan oleh garis – garis raster horizontal. Tiap garis dibentuk oleh


(32)

sinyal analog yang membawa variasi berkelanjutan dari intensitas cahaya sepanjang garis horinzontal dalam objek tiga dimensi aslinya. Analog berhubungan dengan hal yang berterusan (continue) dalam satu dimensi.

Citra digital terdiri dari sinyal-sinyal frekuensi elektromagnetis yang sudah di sampling, dan ukuran pixel dari citra tersebut sudah dapat ditentukan. Sampling merupakan proses pembentukan citra digital dari citra analog.


(33)

BAB 3

METODOLOGI PENELITIAN 3.1. Pendahuluan

Penyandian citra dengan menggunakan algoritma kriptografi dapat dilakukan dengan memanfaatkan input pixel dan merpelakukannya seperti string. Penyandian dilakukan pada tiap pixel citra sesuai dengan lebar dan tinggi citra. Ini dimungkinkan mengingat sebuah citra merupakan deretan pixel-pixel yang mempunyai komponen R(Red), G(Green), dan B(Blue). Komponen-komponen ini merupakan bilangan-bilangan bulat sehingga dapat dioperasikan dengan mengubah nilai tersebut menjadi bentuk ASCII terlebih dahulu. Ilustrasi mengenai reprensentasi citra dalam RGB ditunjukkan pada Gambar 3.1 berikut ini.

Gambar 3.1 Representasi Citra dalam RGB

Citra yang digunakan dalam tulisan ini dibatasi dalam format BMP, JPG, atau JPEG. Untuk mengenkripsi citra mula-mula nilai RGB tiap pixel diambil. Adapun algoritma untuk pengambilan nilai RGB yang dilakukan untuk tiap pixel dengan menggunakan fungsi GetPixel adalah sebagai berikut :

For i = 0 To PictureWidth - 1

1 Pixel tediri atas komponen 3 elemen warna yaitu RGB (Red Green Blue)

pixel


(34)

For j = 0 To PictureHeight - 1 ‘GetPixel i , j

PixelColor = GetPIxel (Picture, i, j ) r = PixelColor Mod 256

g = (PixelColor \ 256) mod 256 b = PixelColor \ 256\256 Next j

Next i

Dimana : - PictureWidth = Lebar Citra dalam satuan pixel.

- PictureHeight = Tinggi Citra dalam satuan pixel.

- PixelColor = Merupakan hasil pengembalian warna dari fungsi GetPixel dalam nilai long integer.

- r = Merupakan nilai merah (red) pada pixel dalam rentang 0 hingga 255.

- g = Merupakan nilai warna hijau (green) pada pixel dalam rentang 0 hingga 255.

- b = Merupakan nilai warna biru (blue) pada pixel dalam rentang 0 hingga 255.

- i dan j = Merupakan posisi pixel yang dinyatakan dalam sumbu koordinat.

Citra analog terdiri dari dua sinyal –sinyal frekuensi elektromagnetis yang belum dibedakan sehingga pada umumnya tidak dapat ditentukan ukuranya. Ilustrasi dari citra analog diperlihatkan pada Gambar 3.2 di berikut ini.

Vertikal Horizontal


(35)

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.

Citra digital terdiri dari sinyal-sinyal frekuensi elektromagnetis yang sudah di sampling, dan ukuran pixel dari citra tersebut sudah dapat ditentukan. Sampling merupakan proses pembentukan citra digital dari citra analog. Suatu citra yang dicetak di atas kertas disebut dengan citra analog, jika citra analog tersebut di-scan dengan alat scanner maka akan terjadi citra digital. Dengan demikian, scanner merupakan alat sampling. Ilustrasi dari citra analog diperlihatkan pada Gambar 3.3 di bawah ini.

Citra Digital

8-bit 8-bit 8-bit Pixel Citra 24-bit

pixel

Gambar 3.3 Citra Digital

Gambar 3.3 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 intesitas warna dasar yaitu merah, hijau, dan biru.

3.2. Rancangan Penelitian

RC6 merupakan algoritma chipper blok baru yang dikembangkan di Laboratorium RSA pada tahun 1998 yang ditujukan kepada NIST sebagai pertimbangan untuk menjadi algoritma AES yang baru. Algoritma RC6 merupakan pengembangan dari algoritma sebelumnya yaitu RC5. Hampir sebagian besar operasi dalam Algoritma


(36)

RC6 menggunakan operasi dari algoritma RC5. Beberapa penambahan operasi dasar diterapkan pada RC6 untuk menutupi kelemahan pada algortima RC5.

Operasi Algoritma RC6 secara garis besar terbagi menjadi tiga algoritma, yaitu : 1. Algoritma Pembangkitan Kunci, algoritma pembangkitan kunci merupakan

algoritma yang digunakan untuk inisialisasi kunci yang akan digunakan pada tiap putaran baik pada operasi enkripsi maupun operasi dekripsi.

S[0] = Pw

For i = 1 to (2r+3) do S[i] = S[i-1] + Qw

i = 0 j = 0 A = 0 B = 0

for 3 x max(c, (2r + 4)) times do S[i] = (S[i] + A+B) <<< 3 A = S[i]

L[i] = (L[j] + A+B) <<< 3 B = L[i]

i = ( j+1) mod (2r+4) j = ( j+1) mod c

2. Algoritma Enkripsi, algoritma enkripsi merupakan algoritma yang digunakan untuk operasi enkripsi plaintext menjadi chipertext, berikut algoritma enkripsi.

B= B + S[0] D= D + S[1]

for i = 1 to r do

p = (B x (2B+1))<<<5 q = (D x (2D+1))<<<5 A = ((A⊕p)<<<q) + S[2i]


(37)

(A,B,C,D) = (B,C,D,A) A = A + S[2r + 2]

C = C + S[2r + 3]

3. Algoritma Dekripsi, algoritma dekripsi merupakan algoritma yang digunakan untuk operasi dekripsi chipertext menjadi plaintext, berikut algoritma dekripsi.

C = C – S[2r+3] A = A– S[2r+2]

for i = r downto 1 do

(A,B,C,D) = (D,A,B,C)

p = (D x (2D + 1)) <<<5 q = (B x (2B + 1)) <<<5 C = ((C – S[2i + 1] >>> q) ⊕p A = ((A – S[2i] >>> p) ⊕q D = D – S[1]

B = B – S[0]

3.2.1 Pengembangan RC5 -> RC6

RC6 merupakan metode enkripsi baru yang menggunakan mode blok yang dasar operasinya merupakan pengembangan dari metode RC5. Perancangan metode RC6 didasari oleh pertimbangan dari metode RC5 yang merupakan kandidat yang sangat potensial untuk ditetapkan sebagai AES (Advanced Encryption Standart). Untuk memenuhi persyaratan dan kebutuhan yang ditentukan oleh AES, maka metode RC5 dikembangkan menjadi RC6 untuk meningkatkan keamanan dan performa serta memenuhi persyaratan kebutuhan dari AES (Ronald L. Rivest, 1998).

Salah satu kebutuhan AES, sebuah metode enkripsi harus dapat menangani blok input/output dengan ukuran 128bit. Dikarenakan RC5 menggunakan dua buah blok register dalam operasi nya, maka tiap register akan memiliki ukuran 64bit. Namun arsitektur dan bahasa yang dispesifikasikan belum mendukung operasi 64bit dengan efektif dan efisien, oleh karena itulah RC5 kemudian dikembangkan menggunakan


(38)

empat buah blok yang masing-masing memiliki ukuran 32bit yang kemudian muncullah metode RC6.

(a) (b)

Gambar 3.4. Perbandingan Operasi Algoritma RC5 (a) dan RC6 (b)

Perbedaan operasi pada RC5 dan RC6 dapat dilihat pada Gambar 3.4 dimana penggunaan jumlah register pada RC5 hanya menggunakan dua register sedangkan pada RC6 menggunakan empat register. Penambahan jumlah register selain ditujukan untuk memenuhi kebutuhan dari AES juga meningkatkan tingkat kompleksitas pada hasil enkripsi sehingga tahan terhadap serangan kriptanalis.

Pengembangan berikutnya dari algoritma RC5 dan RC6 adalah tahap operasi pada proses enkripsi dan dekripsi. Berikut algoritma enkripsi pada RC5.

A = A + S[0] B = B + S[1]

for i = 1 to r do

A = ((A ⊕ B) <<< B) + S[2i] B = ((B ⊕ A) <<< A) + S[2i+1]


(39)

Pada algoritma RC6 operasi pada proses enkripsi telah dikembangkan seperti yang terlihat sebagai berikut.

B= B + S[0] D= D + S[1]

for i = 1 to r do

p = (B x (2B+1))<<<5 q = (D x (2D+1))<<<5 A = ((A⊕p)<<<q) + S[2i]

C = ((C⊕q)<<< p) + S[2i+1]

(A,B,C,D) = (B,C,D,A) A = A + S[2r + 2]

C = C + S[2r + 3]

Pada kedua operasi enkripsi diatas terdapat beberapa perbedaan mendasar antara algoritma RC5 dan algoritma RC6. Salah satu perbedaan yang paling mencolok adalah penambahan operasi primitif perkalian pada algoritma RC6 yang mana tidak ditemukan pada algoritma RC5.

Secara sederhana dapat dikatakan perbedaan yang besar pada operasi algoritma RC5 dengan algoritma RC6 dipengaruhi oleh penggunaan jumlah register. Namun pada algoritma RC6 telah diterapkan transformasi secara menyeluruh pada ke-empat register nya sehingga dapat mengatasi kelemahan yang dimiliki oleh algoritma RC5 dimana tidak seluruh bit dalam register yang berpengaruh dalam proses rotasi, sehingga pola hasil enkripsi dapat dipetakan dengan analisis yang mendalam.

3.2.2. Modifikasi RC6 Pada Citra Digital

RC6 merupakan metode chipper blok yang menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 32 bit. Dengan kata lain setiap blok akan menyimpan empat karakter.

Pada citra digital tiap pixel terdiri dari tiga komponen yaitu R, G, dan B. Jika tiga komponen tersebut digabungkan dalam sebuah blok maka blok tersebut akan memiliki data dengan ukuran 24 bit atau tiga karakter. Secara default kekurangan bit pada tiap


(40)

blok akan diisi oleh bit dari pixel berikutnya sehingga tiap blok akan memiliki ukuran yang sesuai yaitu 32 bit.

Permasalahan yang terjadi adalah jika jumlah pixel tidak sesuai dengan pembagian blok sehingga diperlukan adanya padding atau penambahan bit 0 pada blok register, jika padding terjadi maka ukuran data hasil enkripsi akan berubah yang berpengaruh pada ukuran citra yang akan berubah dan akan menjadi sulit sekali dalam penyusunan kembali data hasil enkripsi ke dalam bentuk citra. Untuk mengatasi permasalahan tersebut maka modifikasi algoritma RC6 dengan spesifikasi sebagai berikut.

1. Tiap blok register A, B, C, dan D memiliki ukuran 24bit. A B C D

2. Nilai konstanta p dan q untuk expansi kunci menggunakan nilai berikut: konstanta Pw dan Qw standart:

Pw = b7e15163 Qw = 9e3779b9 Di modif menjadi:

P24 = b7e151

Q24 = 9e3779

Dimana nilai konstanta Pw dan Qw standart memiliki nilai 32 bit, expansi kunci Pw dan Qw standart memiliki 8 digit, pada tiap digit mengandung 4 pixel, jadi jumlah dari 8 digit dikali 4 pixel sama dengan 32 bit total dari expansi kunci.

Pada Pw dan Qw modif memiliki 24 bit karena ada 2 expansi kunci yang tidak digunakan artinya expansi kunci standart dikurangi dengan nilai 8 bit.


(41)

Langkah-langkah untuk menyandikan citra dengan RC6 lebih jelasnya dapat dinyatakan dengan diagram seperti terlihat pada Gambar 3.5. berikut ini.

tidak

Gambar 3.5. Diagram Alir Proses Enkripsi Citra

ya Mulai

Input Citra

Baca Nilai Pixel Citra dan Konversikan ke

RGB

Konversi ke ASCII

Enkripsi dengan RC6

Konversikan ke Bentuk RGB Kembali

Ubah Nilai RGB ke bentuk Pixel Kembali

Data Terahir Citra

Simpan Citra Hasil

Selesai Input kunci


(42)

Sedangkan langkah-langkah untuk mengembalikan citra ke bentuk asli (deskripsi) dengan RC6 dapat dilakukan sesuai dengan diagram seperti pada Gambar 3.6. berikut ini

tidak

Gambar 3.6. Diagram Alir Proses Deskripsi Citra

ya

Mulai

Input Citra Citra

Baca Nilai Pixel Citra dan Konversikan ke

RGB

Konversi ke ASCII

Deskripsi dengan RC6

Konversikan ke Bentuk RGB Kembali

Ubah Nilai RGB ke bentuk Pixel Kembali

Data Terahir Citra

Simpan Citra Hasil

Selesai


(43)

BAB 4

HASIL DAN PEMBAHASAN

4.1 Hasil

Dari hasil studi analisis algoritma RC6 untuk enkripsi dan dekripsi data dapat diambil beberapa kesimpulan, yaitu RC6 adalah algoritma enkripsi dengan model private key/kunci pribadi yang mempunyai key dekripsi sama dengan key enkripsi, Algoritma RC6 merupakan block cipher dengan ukuran block hingga128 bit dan parameter yaitu RC6-w/r/b dengan nilai w=32 sebagai ukuran kata dalam bit, r=20 sebagai banyaknya iterasi/round dan b ukuran kunci yang bervariasi antara 16, 24 dan 32 byte, Algoritma RC6 terdiri dari 3 bagian yaitu keysetup, whitening dan ciphering, Waktu proses enkripsi dan deskripsi tergantung pada besarnya file yang akan dienkripsi/dekripsi. Hal ini disebabkan oleh efek cache dan efek penanganan file (file handling) oleh sistem operasi. Ukuran file pada proses enkripsi/dekripsi mengalami sedikit perubahan, hal ini dikarenakan terjadinya proses padding. Dengan menggunakan panjang kunci yang berbeda pada proses enkripsi yang dilakukan pada file yang sama, waktu proses tidak mengalami perubahan yang besar. Dibandingkan dengan algoritma RC4 dan Blowfish, maka algoritma RC6 merupakan algoritma enkripsi yang lebih sederhana, cepat dan aman.

RC6 standart pada media digital hanya bisa digunakan pada citra greyscale atau citra warna dengan pixel tertentu atau dengan kata lain harus bernilai pixel genap.

4.2. RC6 Standart Pada Citra Greyscale dengan RC6 Standart Pada Citra RGB

RC6 Standart dapat digunakan pada Citra RGB jika pixel citra warna yang akan di enkripsi bernilai genap atau dengan kata lain hanya dapat digunakan pada pixel citra tertentu.


(44)

Penggunaan citra grayscale membuat alokasi nilai warna pada tiap blok enkripsi menjadi lebih mudah karena tiap pixel hanya memiliki satu nilai, ukuran yang digunakan juga dibatasi pada 256 x 256 dan 512 x 512 yang mana batasan diatas membuat munculnya padding menjadi kecil atau tidak ada padding sama sekali.

4.2.1. RC6 Standart Pada Citra Greyscale

Enkripsi RC6 Standart dapat dilakukan dengan baik pada citra Greyscale dengan ukuran (X.Y) dengan ukuran 256 x 256 pada contoh Gambar 4.1 berikut:

Gambar 4.1. Citra Asli Greyscale

Pada penelitian tersebut batasan penggunaan citra grayscale membuat alokasi nilai warna pada tiap blok enkripsi menjadi lebih mudah karena tiap pixel hanya memiliki satu nilai, ukuran yang digunakan juga dibatasi pada 256 x 256 dan 512 x 512 yang mana batasan di atas membuat munculnya padding menjadi kecil atau tidak ada padding sama sekali dimana pada ukuran 256 x 256  total nilai = 65536 x 8 /128 artinya ada 16384 pasang blok sehingga tidak perlu adanya Padding.

Pada kasus ukuran 512 x 512 = 262144 x 8 = 2097152 sehingga pasangan blok yang terbentuk sebanyak 16384 jumlah pasangan bernilai bulat yang artinya semua nilai tersebar merata sehingga tidak diperlukan adanya padding.


(45)

4.2.2. RC6 Standart Pada Citra RGB

Dari hasil studi analisis algoritma RC6 untuk enkripsi dan dekripsi data dapat digunakan pada pixel citra warna yang akan di enkripsi bernilai genap atau dengan kata lain hanya dapat digunakan pada pixel citra tertentu. Berikut contoh perhitungan pixel yang tidak dapat di dekripsi kembali:

Contoh kasus 591 x 616 = 364056  total pixel Total bit = 364056 x 24 = 8737344 Jumlah pasangan blok = 8737344/128 = 68260,5

Berdasarkan nilai diatas jumlah pasangan blok tidak bernilai bulat sehingga perlu adanya padding. Artinya RC6 tidak dapat kembali pada citra aslinya karena ada padding kecuali pada pixel gambar tertentu atau dengan kata lain pada pixel citra yang bernilai genap.

Berikut dengan menggunakan antar muka aplikasi mengamankan citra asli dengan ukuran 591 x 616

Gambar 4.2. Citra Asli RGB

Setelah dilakukan proses enkripsi terjadi perubahan jenis citra dari JPG menjadi BMP, berikut Hasil citra setelah di enkripsi.


(46)

Gambar 4.3. Hasil Citra Enkripsi

Kemudian dilakukan dekripsi pada citra diatas dari hasil perhitungan diatas total bit bernilai tidak genap yang artinya tidak memenuhi kebutuhan blok sehingga tidak dapat kembali ke citra Asli, berikut hasil pengujian citra dekripsi.

Gambar 4.4. Hasil Citra Dekripsi


(47)

Proses dekripsi gagal, karena pada proses dekripsi blok pada citra hasil enkripsi yang akan di dekripsi kembali di-padding untuk memenuhi kebutuhan blok 32 bit sehingga urutan blok – blok data tidak lagi sesuai untuk dapat di-dekripsi menjadi citra semula karena terjadi penambahan bit (padding). Sedangkan dengan menggunakan citra yang total nilai bit bernilai genap yang artinya memenuhi kebutuhan blok dapat kembali ke citra asli. Berikut contoh perhitungan pixel yang dapat di dekripsi kembali :

D = N X 24/128 dimana:

D = Jumlah blok yang terbentuk dari jumlah pixel N = Jumlah Pixel

Jika bernilai bulat tidak diperlukan padding H x W = 100 x 100

= (10.000 x24)/ 128 = 840.000/128= 1875

Dari perhitungan manual di atas dapat dilihat jika jumlah pixel genap maka saat di dekripsi dapat kembali seperti semula hasil citra setelah di enkripsi, jika tidak genap artinya jumlah pixel tidak dapat dialokasikan pada tiap blok RC6 secara merata. Berikut dengan menggunakan antar muka aplikasi mengamankan citra asli dengan ukuran 100 x 100


(48)

Setelah dilakukan proses enkripsi terjadi perubahan jenis citra dari JPG menjadi BMP, hasil citra setelah dilakukan proses enkripsi dengan pixel 100 x 100 dari hasil perhitungan diatas pixel 100 x 100 total perhitungannya bernilai genap maka tidak terjadi penambahan bit (padding), berikut hasil citra setelah di enkripsi

Gambar 4.6. Hasil Citra Enkripsi

Kemudian dilakukan dekripsi pada citra diatas dari hasil perhitungan diatas total bit bernilai genap yang artinya memenuhi kebutuhan blok sehingga dapat kembali ke citra Asli, berikut hasil pengujian citra dekripsi.


(49)

4.3. Algoritma RC6 M

Algoritma RC6 M adalah algoritma RC6 yang telah di Modifikasi oleh penulis, penulis memodifikasi dengan merubah pembangkit kunci internal berdasarkan kunci rahasia K untuk mengisi tabel kunci S, di mana ukuran tabel kunci S adalah t = 2(r+1) word. Algoritma ini dalam mengisi tabel kunci S, menggunakan 2 konstanta ‘ajaib’ (magic constants). Pw dan Qw

konstanta Pw dan Qw standart yang ada pada algoritma RC6 standart berikut: S[0] = Pw Key Expansion

For i = 1 to (2r+3) do

S[i] = S[i-1] + Qw Key Expansion

i = 0 j = 0 A = 0 B = 0

for 3 x max(c, (2r + 4)) times do S[i] = (S[i] + A+B) <<< 3 A = S[i]

L[i] = (L[j] + A+B) <<< 3 B = L[i]

i = ( j+1) mod (2r+4) j = ( j+1) mod c

4.3.1. Key Expansion Algorithm

Algoritma ini berfungsi untuk membangkitkan kunci internal berdasarkan kunci rahasia K untuk mengisi tabel kunci S, di mana ukuran tabel kunci S adalah t = 2(r+1) word. Algoritma ini dalam mengisi tabel kunci S, menggunakan 2 konstanta ‘ajaib’ (magic constants). Pw dan Qw, algoritma RC6 diatas dapat dilihat Key Expansion Algorithm Pw dan Qw yang dilingkari yang berfungsi untuk membangkitkan kunci internal. Pembangkit kunci internal pada algoritma RC6 standart memiliki konstanta berukuran 32 bit dikembangkan pada RC6 M menjadi 24bit


(50)

xx xx xx xx xx xx xx xx xx xx xx xx Konstanta Pw dan Qw yang digunakan pada RC6 standart adalah :

Pw = b7e15163 Qw = 9e3779b9

Perubahan yang digunakan RC6 M pada konstanta Pw dan Qw yang semula berukuran 32bit menjadi 24bit maka terjadi pengurangan sebesar 8 bit, sehingga konstanta yang digunakan berukuran 24 bit dalam proses pembangkitan kunci, setelah pengurangan konstanta maka Pw dan Qw pada RC6 M menjadi :

Pw = b7e151 Qw = 9e3779

Perubahan ukuran tiap blok pada blok A, B, C, D yang semula berukuran 32bit menjadi 24bit agar satu pixel cukup untuk mengisi satu blok sehingga tidak diperlukan adanya padding akibat peminjaman komponen RGB dari pixel tetangga agar memenuhi ukuran 32bit pada RC6 standard.

RC6 = mod FF FF FF FF 1 Pixel = 24 bit

2 digit hexa= 8 bit

Ukuran BLOK RC6 biasanya yang digunakan 32, 16, 128, 256, berikut blok menggunakan RC6 standart dengan ukuran tiap-tiap blok 32 bit.

A B C D xx xx xx xx

Sedangkan ukuran tiap-tiap blok RC6 M digunakan 24 bit agar tidak terjadinya peminjaman komponen RGB dari pixel tetangga dikarenakan tiap 1 pixel terdiri dari R,G dan B dengan ukuran 1 pixel sama dengan 24 bit.


(51)

Berikut blok RC6 M yang tiap - tiap blok register A, B, C, dan D memiliki ukuran 24bit.

A B C D

Selain mengatasi masalah padding pada citra digital, RC6 M ini mengurangi kapasitas atau ukuran variable yang digunakan selama prosesnya, sehingga membuat proses lebih hemat dalam mengkonsumsi memori dan lebih cepat.

Program berikut merupakan tahap dimana sistem/aplikasi siap untuk dioperasikan pada keadaan yang sebenarnya sesuai dari hasil dan pembahasan yang telah dilakukan, sehingga akan diketahui apakah system yang dirancang benar – benar dapat menghasilkan tujuan yang ingin dicapai.

Untuk menjalankan program ini maka langkah pertama yang harus dilakukan adalah mengklik pada Icon atau pada file executable. Setelah itu akan terlihat tampilan seperti pada Gambar 4.8 berikut ini.

Gambar 4.8 Tampilan Program


(52)

Pada program pilih file kemudian enkripsi image untuk mengamankan citra, pilih gambar yang akan diamankan, berikut citra asli RGB yang akan diamankan.

Gambar 4.9 Citra Asli format JPG

Gambar 4.9 akan di Enkripsi menggunakan keamanan data dengan algoritma RC6 M yaitu dengan mengubah konstanta Pw dan Qw yang digunakan dalam proses pembangkitan kunci (Key Expansion), berikut dapat dilihat hasil gambar setelah di enkripsi pada Gambar 4.10


(53)

Gambar 4.11 Citra Hasil Dekripsi Format JPG

Berbagai ukuran citra hasil enkripsi juga telah dicoba didekripsi dan didapatkan citra aslinya kembali. Ini berarti proses enkripsi dan dekripsi sudah berjalan dengan benar.


(54)

BAB 5

KESIMPULAN DAN SARAN 5.1 Kesimpulan

Beberapa kesimpulan yang dapat diambil setelah dilakukan pembahasan pada bab-bab sebelumnya adalah sebagai berikut:

1. Algoritma RC6 standart pada citra greyscale cocok digunakan sedangkan citra warna tidak cocok dikarenakan ada Padding, hanya ukuran pixel tertentu yang bisa digunakan.

2. Algoritma RC6 standart menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 32bit, Sedangkan RC6 M menggunakan blok register sebanyak empat buah blok dengan ukuran masing-masing sebesar 24bit. RC6 M sesuai untuk citra warna karena tiap pixel citra warna memiliki 24 bit

3. RC6 M mengatasi masalah padding pada citra digital dengan cara mengubah ukuran tiap blok pada blok A, B, C, D yang semula berukuran 32bit menjadi 24bit agar satu pixel cukup untuk mengisi satu blok sehingga tidak diperlukan adanya padding akibat peminjaman komponen RGB dari pixel tetangga agar memenuhi ukuran 32bit pada RC6 standard.

4. Mengurangi kapasitas atau ukuran variable yang digunakan selama prosesnya, sehingga membuat proses lebih hemat dalam mengkonsumsi memori dan lebih cepat.


(55)

5.2 Saran

Untuk pengembangan lebih lanjut program penyandian citra dengan RC6 ini, maka dapat diberikan beberapa saran sebagai berikut:

1. File input berupa citra dapat dibaca secara langsung melalui media scanner. 2. Menggabungkan dengan algoritma kriptografi yang lain sehingga program


(56)

Gonzales, R. C., Digital Image Processing, Addison – Wesley Publishing Company.,1992

H.E.H. Ahmed, H.M. Kalash & O.S. Farag Allah.Encryption Efficiency Analysis and Security Evaluation of RC6 Block Cipher for Digital Images, 2007 Kim, G.-H., Kim, J.-N., & Cho, G.-Y. 2009. An improved RC6 algorithm with the

same structure of encryption and decryption. Birla Institute Of Technology And Science

Menezes, Alfred J.,and Oorschot, Paul C.Van, and Vanstone, Scott A., “ Handbook of Applied Cryptography Fifth Edition”, CRC Press Inc., 1997.

Munir, Rinaldi, kriptografi, Penerbit Informatika, 2006

Patterson, Wayne., “Mathematical Cryptograpyhy for Computer Scientiests and Mathematicians”, Rowman &Littlefield Publisher, The United States of America, 1987.

Prayudi, Y. & Halik, I. 2005. Studi dan analisis algoritma rivest code 6 (rc6) Dalam enkripsi/dekripsi data. Prosiding Seminar Nasional Aplikasi Teknologi Informasi

Rudianto, 2007. Analisis Keamanan Algoritma Kriptografi RC6. Bandung

Rivest L, Ronald., Robshaw, M.J.B.,Sidney, R., and Yin, Y.L. The Rc6 Block Cipher. San Mateo, USA: RSA Laboratories, 1998.


(57)

Scheiner, Bruce. Applied Cryptography, Second Edition. New York: John Wiley & Son, 1996.

Scheier, Bruce. Decryption of A New Variable-Length Key, 64/128-Bit Block Cipher (Blowfish). New York: John Wiley & Son, 2001.


(58)

No. Judul Artikel Penulis

Publikasi (Seminar/ Jurnal, dll)

Waktu

Publikasi Tempat

1. Algorithm Implementation Methods With Stream Cipher Cryptography to Secure The Login Process Is An Application Mardiana, Santi Prayudani, Nur Wulan, Ade Sarah Huzaifah, Dewi Yanti International Seminar On REDSTAR-2012 23 Juni 2012 Medan Institute Of Technology

2. Rancangan

Algoritma Genetika Pada Kasus

Traveling Salesman Problem Simetris dengan Metode Cycle Crossover Ade Sarah Huzaifah, Dewi Yanti Santi Prayudani, Mardiana Seminar Nasional Ilmu Komputer 31Agustus- 2 September AMIK Tunas Bangsa Medan


(59)

LAMPIRAN 2

Contoh Potongan dari Citra RGB dengan ukuran 4x4 sebagai berikut :

(255,2555,255) (250,250,250) (128,128,128) (0,0,0) (250,250,250) (243,242,120) (244,244,110) (10,10,10) (245,241,121) (240,241,242) (15,20,10) (22,145,10)

(43,44,44) (123,11,10) (32,13,13) (11,11,11)

Potongan citra tersebut akan di-enkripsi menggunakan kunci “123456”, dan dalam kasus ini variable r (round) bernilai 5.

KEY EXPANSION

Tahap Pertama dalah proses enkripsi dan dekripsi RC6 adalah proses pembangkitan kunci, berikut proses pembentukan kunci :

- Inisialisasi kunci awal

S[0] = Pw

S[0] = b7e151 = 12050769

For I = 1 to ((2*5)+3) S[i] = S[i-1] + Qw Next I


(60)

= 12050769 + 10368889 = 22419658 mod 16777215 = 5642443

Untuk S[2] :

S[2] = S[1] + Qw = S[1] + 9e3779 = S[1] + 10368889 = 5642443 + 10368889

= 16011332 mod 16777215 = 16011332

Untuk S[3] :

S[3] = S[2] + Qw = S[2] + 9e3779 = S[2] + 10368889 = 16011332 + 10368889

= 26380221 mod 16777215 = 9603006

Untuk S[4] :

S[4] = S[3] + Qw = S[3] + 9e3779 = S[3] + 10368889 = 9603006 + 10368889

= 19971895 mod 16777215 = 3194680

Untuk S[5] :

S[5] = S[4] + Qw = S[4] + 9e3779 = S[4] + 10368889 = 3194680 + 10368889


(61)

Untuk S[6] :

S[6] = S[5] + Qw = S[5] + 9e3779 = S[5] + 10368889 = 13563569 + 10368889

= 23932458 mod 16777215 = 7155243

Untuk S[7] :

S[7] = S[6] + Qw = S[6] + 9e3779 = S[6] + 10368889 = 7155243 + 10368889

= 17524132 mod 16777215 = 746917

Untuk S[8] :

S[8] = S[7] + Qw = S[7] + 9e3779 = S[7] + 10368889 = 746917 + 10368889

= 11115806 mod 16777215 = 11115806

Untuk S[9] :

S[9] = S[8] + Qw = S[8] + 9e3779 = S[8] + 10368889 = 11115806 + 10368889

= 21484695 mod 16777215 = 4707480

Untuk S[10] :

S[10] = S[9] + Qw = S[9] + 9e3779 = S[9] + 10368889 = 4707480 + 10368889

= 15076369 mod 16777215 = 15076369


(62)

= 25445258 mod 16777215 = 8668043

Untuk S[12] :

S[12] = S[11] + Qw = S[11] + 9e3779 = S[11] + 10368889 = 8668043 + 10368889

= 19036932 mod 16777215 = 2259717

Untuk S[13] :

S[13] = S[12] + Qw = S[12] + 9e3779 = S[12] + 10368889 = 2259717 + 10368889

= 12628606 mod 16777215 = 12628606

- Operasikan Inisialisasi kunci awal dengan kunci Inputan :

Kunci Inputan : “123456” = 31 32 33 34 35 36 ( dalam Hexa )

Bentuk menjadi blok 24 bit : 31 32 33 dan 34 35 36

Terbentuk dua blok L[] -> L[0] = 313233 = 3224115 (dalam decimal) L[1] = 343536 = 3421494 (dalam decimal)

Jika panjang kunci kurang maka dilakukan padding pada kunci input dengan karakter “0” (kosong).


(63)

J=0 K=0 A=0 B=0

For k=1 to 3 * max(2, ((2*5)+4) S[i] = (S[i] + A + B) <<< 3 A = S[i]

L[j] = (L[j] + A + B) <<< 3 B = L[j]

I = (I + 1) mod 14 J= (j + 1) mod 2 Next k

Proses Enkripsi : Untuk K = 1 :

i = 0, j = 0, A = 0, B = 0 S[0] = (S[0] + A + B) <<< 3 S[0] = (12050769 + 0 + 0) <<< 3 S[0] = 12520077


(64)

L[0] = (3224115 + 12520077 + 0) <<< 3 L[0] = 8513031

B = 8513031

i = (0 + 1) mod ((2 * r) + 4) i = 1

j = (0 + 1) mod 2 j = 1

Untuk K = 2 :

i = 1, j = 1, A = 12520077, B = 8513031 S[1] = (S[1] + A + B) <<< 3

S[1] = (5642443 + 12520077 + 8513031) <<< 3 S[1] = 12077828

A = 12077828

L[1] = (L[1] + A + B) <<< 3

L[1] = (3421494 + 12077828 + 8513031) <<< 3 L[1] = 7549459

B = 7549459


(65)

j = (1 + 1) mod 2 j = 0

Untuk K = 3 :

i = 2, j = 0, A = 12077828, B = 7549459 S[2] = (S[2] + A + B) <<< 3

S[2] = (16011332 + 12077828 + 7549459) <<< 3 S[2] = 16673512

A = 16673512

L[0] = (L[0] + A + B) <<< 3

L[0] = (8513031 + 16673512 + 7549459) <<< 3 L[0] = 10229791

B = 10229791

i = (2 + 1) mod ((2 * r) + 4) i = 3

j = (0 + 1) mod 2 j = 1

Untuk K = 4 :


(66)

S[3] = 6837817 A = 6837817

L[1] = (L[1] + A + B) <<< 3

L[1] = (7549459 + 6837817 + 10229791) <<< 3 L[1] = 12387171

B = 12387171

i = (3 + 1) mod ((2 * r) + 4) i = 4

j = (1 + 1) mod 2 j = 0

Untuk K = 5 :

i = 4, j = 0, A = 6837817, B = 12387171 S[4] = (S[4] + A + B) <<< 3

S[4] = (3194680 + 6837817 + 12387171) <<< 3 S[4] = 11585194

A = 11585194

L[0] = (L[0] + A + B) <<< 3


(67)

B = 5181808

i = (4 + 1) mod ((2 * r) + 4) i = 5

j = (0 + 1) mod 2 j = 1

Untuk K = 6 :

i = 5, j = 1, A = 11585194, B = 5181808 S[5] = (S[5] + A + B) <<< 3

S[5] = (13563569 + 11585194 + 5181808) <<< 3 S[5] = 7763558

A = 7763558

L[1] = (L[1] + A + B) <<< 3

L[1] = (12387171 + 7763558 + 5181808) <<< 3 L[1] = 1333716

B = 1333716

i = (5 + 1) mod ((2 * r) + 4) i = 6

j = (1 + 1) mod 2 j = 0


(68)

i = 6, j = 0, A = 7763558, B = 1333716 S[6] = (S[6] + A + B) <<< 3

S[6] = (7155243 + 7763558 + 1333716) <<< 3 S[6] = 12579631

A = 12579631

L[0] = (L[0] + A + B) <<< 3

L[0] = (5181808 + 12579631 + 1333716) <<< 3 L[0] = 1766305

B = 1766305

i = (6 + 1) mod ((2 * r) + 4) i = 7

j = (0 + 1) mod 2 j = 1

Untuk K = 8 :

i = 7, j = 1, A = 12579631, B = 1766305 S[7] = (S[7] + A + B) <<< 3

S[7] = (746917 + 12579631 + 1766305) <<< 3 S[7] = 3302319


(69)

L[1] = (L[1] + A + B) <<< 3

L[1] = (1333716 + 3302319 + 1766305) <<< 3 L[1] = 887075

B = 887075

i = (7 + 1) mod ((2 * r) + 4) i = 8

j = (1 + 1) mod 2 j = 0

Untuk K = 9 :

i = 8, j = 0, A = 3302319, B = 887075 S[8] = (S[8] + A + B) <<< 3

S[8] = (11115806 + 3302319 + 887075) <<< 3 S[8] = 5001095

A = 5001095

L[0] = (L[0] + A + B) <<< 3

L[0] = (1766305 + 5001095 + 887075) <<< 3 L[0] = 10904155

B = 10904155


(70)

j = 1

Untuk K = 10 :

i = 9, j = 1, A = 5001095, B = 10904155 S[9] = (S[9] + A + B) <<< 3

S[9] = (4707480 + 5001095 + 10904155) <<< 3 S[9] = 13906905

A = 13906905

L[1] = (L[1] + A + B) <<< 3

L[1] = (887075 + 13906905 + 10904155) <<< 3 L[1] = 4258500

B = 4258500

i = (9 + 1) mod ((2 * r) + 4) i = 10

j = (1 + 1) mod 2 j = 0

Untuk K = 11 :


(71)

S[10] = (15076369 + 13906905 + 4258500) <<< 3 S[10] = 14275967

A = 14275967

L[0] = (L[0] + A + B) <<< 3

L[0] = (10904155 + 14275967 + 4258500) <<< 3 L[0] = 627966

B = 627966

i = (10 + 1) mod ((2 * r) + 4) i = 11

j = (0 + 1) mod 2 j = 1

Untuk K = 12 :

i = 11, j = 1, A = 14275967, B = 627966 S[11] = (S[11] + A + B) <<< 3

S[11] = (8668043 + 14275967 + 627966) <<< 3 S[11] = 4026443

A = 4026443

L[1] = (L[1] + A + B) <<< 3


(72)

i = (11 + 1) mod ((2 * r) + 4) i = 12

j = (1 + 1) mod 2 j = 0

Untuk K = 13 :

i = 12, j = 0, A = 4026443, B = 4194412 S[12] = (S[12] + A + B) <<< 3

S[12] = (2259717 + 4026443 + 4194412) <<< 3 S[12] = 16735716

A = 16735716

L[0] = (L[0] + A + B) <<< 3

L[0] = (627966 + 16735716 + 4194412) <<< 3 L[0] = 4692602

B = 4692602

i = (12 + 1) mod ((2 * r) + 4) i = 13

j = (0 + 1) mod 2 j = 1


(73)

Untuk K = 14 :

i = 13, j = 1, A = 16735716, B = 4692602 S[13] = (S[13] + A + B) <<< 3

S[13] = (12628606 + 16735716 + 4692602) <<< 3 S[13] = 4019952

A = 4019952

L[1] = (L[1] + A + B) <<< 3

L[1] = (4194412 + 4019952 + 4692602) <<< 3 L[1] = 2592438

B = 2592438

i = (13 + 1) mod ((2 * r) + 4) i = 0

j = (1 + 1) mod 2 j = 0

Untuk K = 15 :

i = 0, j = 0, A = 4019952, B = 2592438 S[0] = (S[0] + A + B) <<< 3

S[0] = (12520077 + 4019952 + 2592438) <<< 3 S[0] = 2064801


(74)

L[0] = (4692602 + 2064801 + 2592438) <<< 3 L[0] = 7689868

B = 7689868

i = (0 + 1) mod ((2 * r) + 4) i = 1

j = (0 + 1) mod 2 j = 1

Untuk K = 16 :

i = 1, j = 1, A = 2064801, B = 7689868 S[1] = (S[1] + A + B) <<< 3

S[1] = (12077828 + 2064801 + 7689868) <<< 3 S[1] = 6887826

A = 6887826

L[1] = (L[1] + A + B) <<< 3

L[1] = (2592438 + 6887826 + 7689868) <<< 3 L[1] = 3143336


(75)

i = 2

j = (1 + 1) mod 2 j = 0

Untuk K = 17 :

i = 2, j = 0, A = 6887826, B = 3143336 S[2] = (S[2] + A + B) <<< 3

S[2] = (16673512 + 6887826 + 3143336) <<< 3 S[2] = 12310812

A = 12310812

L[0] = (L[0] + A + B) <<< 3

L[0] = (7689868 + 12310812 + 3143336) <<< 3 L[0] = 602763

B = 602763

i = (2 + 1) mod ((2 * r) + 4) i = 3

j = (0 + 1) mod 2 j = 1


(76)

S[3] = (S[3] + A + B) <<< 3

S[3] = (6837817 + 12310812 + 602763) <<< 3 S[3] = 7016201

A = 7016201

L[1] = (L[1] + A + B) <<< 3

L[1] = (3143336 + 7016201 + 602763) <<< 3 L[1] = 2212325

B = 2212325

i = (3 + 1) mod ((2 * r) + 4) i = 4

j = (1 + 1) mod 2 j = 0

Untuk K = 19 :

i = 4, j = 0, A = 7016201, B = 2212325 S[4] = (S[4] + A + B) <<< 3

S[4] = (11585194 + 7016201 + 2212325) <<< 3 S[4] = 15514825


(77)

L[0] = (602763 + 15514825 + 2212325) <<< 3 L[0] = 12421584

B = 12421584

i = (4 + 1) mod ((2 * r) + 4) i = 5

j = (0 + 1) mod 2 j = 1

Untuk K = 20 :

i = 5, j = 1, A = 15514825, B = 12421584 S[5] = (S[5] + A + B) <<< 3

S[5] = (7763558 + 15514825 + 12421584) <<< 3 S[5] = 387081

A = 387081

L[1] = (L[1] + A + B) <<< 3

L[1] = (2212325 + 387081 + 12421584) <<< 3 L[1] = 2727415

B = 2727415


(78)

j = 0

Untuk K = 21 :

i = 6, j = 0, A = 387081, B = 2727415 S[6] = (S[6] + A + B) <<< 3

S[6] = (12579631 + 387081 + 2727415) <<< 3 S[6] = 8112511

A = 8112511

L[0] = (L[0] + A + B) <<< 3

L[0] = (12421584 + 8112511 + 2727415) <<< 3 L[0] = 1542715

B = 1542715

i = (6 + 1) mod ((2 * r) + 4) i = 7

j = (0 + 1) mod 2 j = 1


(79)

S[7] = (S[7] + A + B) <<< 3

S[7] = (3302319 + 8112511 + 1542715) <<< 3 S[7] = 2997070

A = 2997070

L[1] = (L[1] + A + B) <<< 3

L[1] = (2727415 + 2997070 + 1542715) <<< 3 L[1] = 7805955

B = 7805955

i = (7 + 1) mod ((2 * r) + 4) i = 8

j = (1 + 1) mod 2 j = 0

Untuk K = 23 :

i = 8, j = 0, A = 2997070, B = 7805955 S[8] = (S[8] + A + B) <<< 3

S[8] = (5001095 + 2997070 + 7805955) <<< 3 S[8] = 8992455

A = 8992455


(1)

Round Ke - 4 :

Transformasi (A,B,C,D)=(D,A,B,C) A = 11247591

B = 10099155 C = 13562653 D = 9070648

q = (10099155 * ((2 * 10099155) + 1)) <<< 5 q = 2947560

p = (9070648 * ((2 * 9070648) + 1)) <<< 5 p = 2947560

A = ((11247591 - 9776061) >>> 6633687) Xor 2947560 A = 8145481

C = ((13562653 - 16431518) >>> 2947560) Xor 6633687 C = 9672988

Round Ke - 3 :

Transformasi (A,B,C,D)=(D,A,B,C) A = 9070648


(2)

C = 10099155 D = 9672988

q = (8145481 * ((2 * 8145481) + 1)) <<< 5 q = 3244176

p = (9672988 * ((2 * 9672988) + 1)) <<< 5 p = 3244176

A = ((9070648 - 4813594) >>> 5780502) Xor 3244176 A = 12814136

C = ((10099155 - 13966601) >>> 3244176) Xor 5780502 C = 1446896

Round Ke - 2 :

Transformasi (A,B,C,D)=(D,A,B,C) A = 9672988

B = 12814136 C = 8145481 D = 1446896

q = (12814136 * ((2 * 12814136) + 1)) <<< 5 q = 13486316


(3)

p = (1446896 * ((2 * 1446896) + 1)) <<< 5 p = 13486316

A = ((9672988 - 9470458) >>> 10262966) Xor 13486316 A = 14536789

C = ((8145481 - 10185969) >>> 13486316) Xor 10262966 C = 2334556

Round Ke - 1 :

Transformasi (A,B,C,D)=(D,A,B,C) A = 1446896

B = 14536789 C = 12814136 D = 2334556

q = (14536789 * ((2 * 14536789) + 1)) <<< 5 q = 13987902

p = (2334556 * ((2 * 2334556) + 1)) <<< 5 p = 13987902

A = ((1446896 - 4886928) >>> 9137436) Xor 13987902 A = 2829356


(4)

C = ((12814136 - 5735683) >>> 13987902) Xor 9137436 C = 2100493

Setelah Round : B = B - S[0] B = 8063754 D = D - S[1] D = 723723

Proses dekripsi diatas menghasilkan nilai sebagai berikut :

16777215, 16448250, 8421504, 0, 16448250, 15987320, 16053358, 657930, 16118137, 15790578, 988170, 1504522, 2829356, 8063754, 2100493, 723723.

B[0] = 16777215. B[1] = 16448250. B[2] = 8421504. B[3] = 0.

B[4] = 16448250. B[5] = 15987320. B[6] = 16053358. B[7] = 657930. B[8] = 16118137. B[9] = 15790578. B[10] = 988170. B[11] = 1504522. B[12] = 2829356. B[13] = 8063754.


(5)

B[14] = 2100493. B[15] = 723723.

Nilai tersebut akan dikonversi kedalam Hexa sehingga menjadi :

FFFFFF, FAFAFA, 808080, 000000, FAFAFA, F3F278, F4F46E, 0A0A0A, F5F179, F0F1F2, 0F140A, 16F50A, 2B2C2C, 7B0B0A, 200D0D, 0B0B0B.

Setelah proses konversi ke dalam bilangan Hexa, proses berikutnya memecah tiap blok menjadi tiga sub nilai sebagai berikut :

{FF,FF,FF}, {FA,FA,FA}, {80,80,80}, {00,00,00}, {FA,FA,FA}, {F3,F2,78}, {F4,F4,6E}, {0A,0A,0A}, {F5,F1,79}, {F0,F1,F2}, {0F,14,0A}, {16,F5,0A}, {2B,2C,2C}, {7B,0B,0A}, {20,0D,0D}, {0B,0B,0B}.

Tahap berikutnya adalah melakukan konversi balik pada nilai Hexa yang telah dipecah menjadi sebagai berikut :

{255, 255, 255}, {250, 250, 250}, {128, 128, 128}, {0, 0, 0}, {250, 250, 250}, {243, 242, 120}, {244, 244, 110}, {10, 10, 10}, {245, 241, 121}, {240, 241, 242}, {15, 20, 10}, {22, 245, 10}, {43, 44, 44}, {123, 11, 10}, {32, 13, 13}, {11, 11, 11}.

Setelah proses pengelompokan maka dihasilkan nilai pixel baru yaitu :

P1 = 255, 255, 255 P2 = 250, 250, 250 P3 = 128, 128, 128 P4 = 0, 0, 0

P5 = 250, 250, 250 P6 = 243, 242, 120 P7 = 244, 244, 110 P8 = 10, 10, 10 P9 = 245, 241, 121 P10 = 240, 241, 242


(6)

P11 = 15, 20, 10 P12 = 22, 245, 10 P13 = 43, 44, 44 P14 = 123, 11, 10 P15 = 32, 13, 13 P16 = 11, 11, 11

Sehingga jika disusun kembali menjadi citra sebagai berikut :

(255,2555,255) (250,250,250) (128,128,128) (0,0,0) (250,250,250) (243,242,120) (244,244,110) (10,10,10) (245,241,121) (240,241,242) (15,20,10) (22,145,10)

(43,44,44) (123,11,10) (32,13,13) (11,11,11)

Dapat dilihat pada hasil dekripsi diatas, tiap pixel yang dienkrip dapat kembali ke citra semula setelah proses dekripsi.