6
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
Universitas Sumatera Utara
7
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 enkripsi – deskripsi algoritma kriptografi kunci simetris dapat dilihat pada gambar 2.1 dibawah ini:
key
plaintext
key Original Plaintext
chipertext Encryption
Decryption
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.
Universitas Sumatera Utara
8
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. Encryption
Descrytion
key
key
plaintext
Original Plaintext
chipertext Encryption
Decryption
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
Universitas Sumatera Utara
9
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 round Mashing. Mixing round terdiri atas empat aplikasi dari Mix transformation seperti ditunjukkan pada Gambar 2.3 berikut ini :
Subkey subkey
NOT
<<<s
Gambar 2.3 Mix Transformation dari RC2
Universitas Sumatera Utara
10
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.
Universitas Sumatera Utara
11
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
Universitas Sumatera Utara
12
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 : a+b
operasi penjumlahan bilangan integer
Universitas Sumatera Utara
13
a–b
operasi pengurangan bilangan integer
a ⊕b
operasi eksklusif OR (XOR)
axb
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
Universitas Sumatera Utara
14
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 diterapkan
sebelum
pada iterasi
proses pertama,
whitening
setelah
iterasi terakhir
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
Universitas Sumatera Utara
15
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.
Universitas Sumatera Utara