BAB II DASAR TEORI Bab dua berisi dasar teori. Pada bab ini dibahas mengenai arsip citra dijital yang sesuai untuk steganografi, definisi dan konsep dari steganografi, metode LSB secara umum, algoritma Zhang LSB Image Steganography, dan metode MARS. Landasan teori yang dibahas pada bab dua ini memberikan pemahaman sehingga dapat memudahkan dan membantu dalam analisis penyelesaian masalah bab selanjutnya.
2.1 Citra Dijital Hampir semua format arsip dijital dapat digunakan untuk steganografi, tetapi format yang paling cocok adalah yang memiliki tingkat redundancy yang tinggi. Redundancy dapat didefinisikan sebagai jumlah bit berlebih dari sebuah objek yang menghasilkan akurasi jauh lebih besar dari yang dibutuhkan untuk penggunaan dan menampilkan objek. Bit berlebih dari suatu objek adalah bit-bit yang dapat diubah akan tetapi menghasilkan perubahan yang tidak dapat dideteksi dengan mudah pada objek tersebut. Gambar II-1 menunjukkan redundant data yang dapat dimanfaatkan pada objek citra tersebut.
Gambar II-1 Identifikasi redundant data [PRO03]
Citra dijital terdiri dari piksel-piksel berukuran kecil yang membentuk sebuah bentuk citra yang dapat dilihat oleh mata manusia. Kepadatan piksel-piksel yang ada dalam citra ini disebut dengan resolusi. Semakin besar resolusi sebuah citra dijital maka kualitas citra dari citra dijital tersebut semakin baik.
Arsip citra tidak terkompresi sangat sesuai dengan kebutuhan ini sehingga citra tidak terkompresi paling banyak digunakan dalam steganografi, meskipun penelitian telah menemukan berbagai jenis arsip lainnya untuk pneyembunyian pesan. Kebanyakan II-1
II-2
aplikasi steganografi tidak mendukung dan tidak menganjurkan penggunaan citra JPEG, tetapi menganjurkan penggunaan citra 24-bit atau citra grayscale. Penjelasan lebih lanjut mengenai format citra BMP dapat dilihat di lampiran A. 2.1.1 Representasi Citra Dijital Pada citra dijital, data yang ada direpresentasikan dalam bentuk matriks. Matriks tersebut berukuran sesuai dengan ukuran jumlah pikselnya. Jika suatu citra dijital memiliki ukuran 100 x 100 piksel, maka matriks yang merepresentasikan terdiri dari bit-bit warna yang menyusun piksel tersebut.
Jika pada sebuah citra dijital dengan warna hitam-putih dan berukuran 8 x 6 piksel didefinisikan bahwa bit 0 menandakan warna piksel putih dan bit 1 merupakan representasi warna piksel hitam, maka contoh representasi matriks M. Gambar II-2 memberikan contoh penginterpretasian piksel dengan matriks.
M=
Gambar II-2 Represntasi citra dijital dalam matriks dan gambar
Citra dijital dengan warna yang kompleks memiliki nilai bit warna tidak hanya satu. Masing-masing bit merepresentasikan setiap warna yang merupakan pembentuk warna piksel.
II-3
2.1.2 Warna pada Citra Dijital Citra dijital memiliki beberapa jenis cara pewarnaan. Tiap jenis pewarnaan ini memiliki karakteristik masing-masing. Jenis pewarnaan ini memberikan pengaruh pada citra dijital sehingga memiliki jumlah warna yang berbeda (perbedaan kualitas warna) dan pengaruh pada ukuran dokumen. Berikut adalah jenis-jenis pewarnaan pada citra dijital. 2.1.2.1 Duotone (Hitam dan Putih) Pada citra dijital dengan pewarnaan duotone, warna pada piksel hanya memiliki 2 kemungkinan warna, pada umumnya hitam-putih. Duotone ini disebut juga dengan warna 1-bit. Selain itu duotone juga dikenal dengan sebutan monochrome.
Dengan penggunaan warna 1-bit, maka kualitas citra pada citra dijital tidak begitu bagus. Untuk sebuah citra yang sederhana penggunaan warna 1-bit sangat sederhana karena memiliki ukuran arsip yang jauh lebih kecil dibandingkan dengan penggunaan sistem warna lainnya, namun pada sebuah citra dijital yang merupakan citra fotografi, maka citra fotografi tersebut akan mengalami pengurangan kualitas yang signifikan dengan penggunaan 1-bit. 2.1.2.2 Grayscale Citra dijital dengan pewarnaan grayscale tidak memiliki warna yang terlalu banyak. Pada grayscale, warna yang tersedia hanyalah warna-warna yang ada di antara hitam dan putih, meliputi warna abu-abu yang beragam. Namun kualitas yang dihasilkan warna grayscale ini jauh lebih baik dibandingkan dengan duotone yang hanya terdiri dari hitam dan putih. Pada citra dengan pewarnaan grayscale, perubahan warna antara satu piksel ke piksel lainnya tidak terlihat sangat signifikan sehingga citra dapat lebih mudah dicerna oleh mata manusia.
Jika pada duotone bit yang memiliki tiap piksel hanya 1, maka pada grayscale setiap piksel direpresentasikan dalam 8 bit data. Dengan penggunaan warna 8-bit ini maka ukuran dokumennya pun otomatis menjadi semakin besar dibandingkan dengan warna 1-bit.
II-7
yang ingin disembunyikan. Sebuah pesan dapat berupa plaintext, chipertext, atau citra lain, atau apapun yang dapat disembunyikan dalam bit stream.
Terdapat beberapa istilah yang berkaitan dengan steganografi: a. Embedded message atau hiddentext : pesan rahasia yang disembunyikan. b. Cover-object atau covertext : media yang digunakan untuk menyembunyikan embedded message. Media ini juga disebut media pembawa, citra penutup, coverimage, dan cover medium. c. Stego-object atau stegotext : media yang sudah berisi embedded message. Untuk media yang berupa citra sering juga disebut stegoimage atau stegogram. d. Stego-key : kunci yang digunakan untuk mengacak posisi pesan pada saat penyisipan pesan dan mengekstraksi pesan dari stego-object. e. Steganografer : orang yang merancang metode steganografi. f. Steganalisis : seni dan ilmu dalam mendeteksi ada-tidaknya pesan tersembunyi dalam suatu objek. g. Steganalis : orang yang berusaha untuk memecahkan metode steganografi dengan menggunakan berbagai metode steganalisis.
Di dalam steganografi dijital, baik hiddentext maupun covertext dapat berupa teks, citra, audio, video, maupun protokol. Gambar II-6 memperlihatkan contoh hiddentext, cover-image, dan stego-image. Perhatikan bahwa jika stegotext berupa citra, disebut stego-image, kita tidak dapat membedakan dengan citra yang belum disisipi pesan rahasia. Keduanya terlihat hampir sama. Citra anjing pada Gambar II-6 tetap kelihatan mulus, pihak lawan tidak menyadari keberadaan pesan rahasia di dalamnya. Sebenarnya stego-image dan cover-image
tidak sama, citra anjing tersebut mengalami sedikit
perubahan akibat steganografi, namun mata manusia mempunyai sifat yang kurang peka terhadap perubahan kecil ini, sehingga manusia sukar membedakan mana citra yang asli dan mana yang sudah disisipi pesan.
II-8
Hiddentext
Cover-text
Stego-Image
A hidden message containing content to be communicated without an eavesdropper knowing that communication is happening Gambar II-6 Contoh hiddentext, cover-image, dan stego-image [PRO03]
Penyisipan pesan ke dalam media covertext dinamakan encoding, sedangkan ekstraksi pesan dari stegotext dinamakan decoding. Kedua proses ini mungkin memerlukan kunci rahasia (yang dinamakan stego-key) agar hanya pihak yang berhak saja yang dapat melakukan penyisipan pesan dan ekstraksi pesan. Gambar II-7 memperlihatkan diagram penyisipan.
Gambar II-7 Diagram penyisipan pesan dan ekstraksi pesan [KAT00]
Teknik penyisipan data ke dalam cover-object dapat dilakukan dalam dua ranah: 1. Ranah spasial Teknik ini mengubah langsung nilai byte dari cover-object (nilai byte dapat merepresentasikan intensitas/warna pixel atau amplitudo). Contoh metode yang tergolong ke dalam teknik ini adalah metode LSB (Least Significant Bit)
II-9
2. Ranah transform Teknik ini memodifikasi langsung hasil transformasi frekuensi sinyal. Contoh metode yang tergolong ke dalam teknik ranah frekuensi adalah spread spectrum. Sinyal dalam ranah spasial diubah ke dalam ranah frekuensi dengan menggunakan transformasi seperti DCT(Discrete Cosine Transform), DFT (Discrete Fourier Transform), dan DWT (Discrete Wavelet Transform).
Pada tugas akhir ini hanya dibahas mengenai teknik penyisipan pesan secara spasial karena algoritma steganografi yang dibahas yaitu algoritma Zhang LSB Image Steganography, ditujukan untuk penyisipan pesan secara spasial.
2.3
Metode LSB
Pengubahan LSB (Least Significant Bit) pada citra yang tidak terkompresi sangat sulit untuk diketahui secara kasat mata, sehingga metode ini sangat banyak digunakan. Metode ini memanfaatkan ketidakmampuan mata manusia dalam menemukan perbedaan antara antara citra asli dengan yang sudah dimasukkan pesan. Pada Gambar II-8 ditunjukkan bahwa medium pembawa yang disisipkan pesan dengan menggunakan suatu fungsi penyisipan, dalam hal ini LSB, menghasilkan stego-image yang tidak memiliki perubahan yang signifikan dengan citra aslinya. Gambar II-8 mengilustrasikan jumlah redundant bit dan pengubahan redundant bit tersebut sehingga menghasilkan stego-image.
Untuk menjelaskan metode ini, digunakan citra dijital sebagai cover-object. Setiap piksel dalam citra dijital berukuran 1 sampai 3 byte. Pada susunan bit di dalam byte (1 byte = 8 bit), terdapat bit yang memiliki arti yang paling kecil (Least Significant bit atau LSB). Misalnya pada byte 00011001, maka bit LSB-nya adalah bita yang terletak di paling kanan yaitu 1. Untuk melakukan penyisipan pesan, bit yang paling cocok untuk diganti dengan bit pesan adalah bit LSB, sebab pengubahan bit tersebut hanya akan mengubah nilai byte-nya menjadi satu lebih tinggi atau satu lebih rendah.
II-10
Gambar II-8 Penyisipan pesan pada gambar [PRO03]
Sebagai contoh, urutan bit berikut ini menggambarkan 3 piksel pada cover-image 24bit. (00100111
11101001
11001000)
(00100111
11001000
11101001)
(11001000
00100111
11101001)
Pesan yang akan disisipkan adalah karakter “A”, yang nilai biner-nya adalah 10000001, maka akan dihasilkan stego-image dengan urutan bit sebagai berikut: (00100111
11101000
11001000)
(00100110
11001000
11101000)
(11001000
00100111
11101001)
Jumlah bit yang dimodifikasi dan lokasinya dalam citra berbeda berdasarkan teknik yang diterapkan. Teknik yang ada mungkin memodifikasi sejumlah bit yang sama untuk setiap blok piksel atau jumlah bit yang dimodifikasi berbeda-beda untuk setiap blok. Melakukan pemodifikasian sejumlah bit yang tetap untuk setiap blok piksel mungkin mengubah kualitas visual dari citra tersebut dan mungkin terdeteksi dengan tes statistikal.
II-11
Beberapa variasi pada teknik LSB dasar [KRU02]: 1. Every bit, partial fill Ini merupakan teknik subtitusi yang paling sederhana, melakukan penanaman sebuah pesan rahasia ke setiap LSB cover-image tersebut. Ukuran pesan rahasia tersebut l(m) akan lebih kecil dari ukuran cover-image l(c). Bit yang tidak digunakan dalam cover-image tersebut tetap tidak tersentuh. Perbedaan-perbedaan antara bagian yang ditanamkan pesan dan yang tidak ditanamkan pesan mungkin berbeda, sehingga deteksi statistikal pada teknik ini mungkin dapat dilakukan.
2. Every bit, total fill with random data Untuk menghadapi serangan statistikal terhadap teknik sebelumnya, teknik ini memperbesar pesan rahasia tersebut sehingga mengisi cover-image tersebut, (l(m) = l(c)). Usaha untuk membuat sejumlah perubahan yang sama pada citra tersebut membuat teknik ini lebih peka terdeteksi dengan serangan statistikal karena teknik ini menanamkan lebih banyak informasi ke dalam cover-image.
3. Pseudorandom Sequence Sebuah alternatif dari dua teknik sebelumnya adalah untuk menanamkan bit-bit pesan rahasia pada LSB tersebut dalam interval acak pada cover-image. Stego-key digunakan untuk membangkitkan interval acak tersebut. Stego-key harus diberikan ke sender dan receiver. Pengaturan pembagian secret key diluar dari cakupan teknik ini. Ukuran pesan rahasia dan ukuran dari cover-image menentukan kemungkinan interval terbesar untuk jarak bit-bit yang ditanamkan.
4. Pseudorandom Permutation Katzenbeisser dan Petitcolas mendeskripsikan sebuah teknik untuk menanamkan data ke sebuah cover-image yang dibangkitkan secara acak. Penentuan dimana meletakkan bit pesan rahasia ditentukan oleh sebuah pembangkit angka pseudorandom. Tabrakan-tabrakan yang terjadi tidak signifikan untuk pesan-pesan kecil pada cover-image yang besar. Namun semakin meningkat kapasitas, tabrakan-
II-12
tabrakan akan terjadi lebih sering dimana ukuran pesan rahasia lebih kecil dari ukuran cover-image tersebut.Untuk menghadapi ini, disarankan untuk menjaga semua jejak tabrakan dan memilih alternatif indeks.
Satu keuntungan menggunakan cover-image yang dibangkitkan secara acak adalah untuk mengatasi kesulitan dalam pemilihan sebuah cover-image. Disebutkan sebelumnya, cover-image hanya dapat digunakan sekali. Penggunaan berulang kali cover-image
akan
memberikan
kemungkinan
penyerang
mengetahui
steganografinya apabila penyerang melakukan perbandingan terhadap citra-citra yang ada sebelumnya. Namun, cover-image yang dibangkitkan secara acak mungkin juga menjadi petunjuk bagi seorang penyerang bahwa steganografi digunakan.
5. Cover Regions and Parity Bits Katzenbeisser dan Petitcolas mendeskripsikan metode substitusi yang lain bahwa usaha untuk substitusi bit yang lebih robust daripada subtitusi bit yang sederhana dengan menurunkan variasi statistikal pada stego-image, dalam usaha untuk menghindari deteksi. Teknik tersebut membagi cover-image dalam beberapa bagian cover yang saling disjoint.
Untuk menanamkan informasi rahasia l(m), bagian-bagian cover yang disjoint dipilih untuk meng-encode setiap satu bit di dalam pariy dari cover-image. Jika parity tersebut tidak cocok dengan bit rahasia yang di-encode, kemudian satu dari nilai LSB tersebut dibalik . Untuk meng-decode pesan tersebut, semua parity bit dikalkulasi secara berurutan.
6. Using palette indices Katzenbeisser and Peticolas mendeskripsikan teknik substitusi yang lain untuk menanamkan pesan rahasia ke bit LSB dari palette format citra GIF atau BMP. Palette-palette warna digunakan untuk mengurangi jumlah informasi yang digunakan untuk merepresentasikan warna-warna dalam sebuah citra. Pengulangan warna pada sebuah citra diidentifikasi dalam palette warna tersebut dan direferensikan oleh nilai indeksnya. Karena nilai indeks lebih kecil daripada nilai
II-13
warna yang sebenarnya, kompresi citra dihasilkan. Lebih banyak warna di dalam citra, lebih besar palette tersebut dan lebih besar kemungkinan untuk menanamkan informasi menggunakan metode steganografi.
Teknik steganografi ini melakukan penanaman informasi ke palette menggunakan LSB dan memanfaatkan nilai warna palette tersebut untuk menyembunyikan informasi. Perubahan LSB tidak secara signifikan mengubah nilai warna dan tidak terdeteksi oleh mata manusia. Program perangkat lunak seperti EzStego mengaplikasikan teknik ini. Sebelum informasi ditanamkan ke palette, palette tersebut diurutkan-kembali sehingga warna tetangga pada palette tersebut secara perceptual sama. Ini membuat teknik tersebut lebih baik, walaupun seorang penyerang melakukan reorder palette tersebut untuk “menyapu” pesan yang ditanamkan tersebut. Untuk melawan serangan ini,
penerima pertama kali
melakukan reorder palette tersebut sebelum mengekstrak informasi rahasia tersebut.
2.4
Algoritma Zhang LSB Image Steganography
Algoritma ini dikembangkan oleh Hong-Juan Zhang dan Hong-Jun Tang dari Universitas Hangzhou Dianzi. Algoritma ini dapat bertahan terhadap serangan steganalisis yang berdasarkan kepada analisis statistikal seperti RS-Analysis dan ChiSquare. 2.4.1 Proses Penanaman Pesan Proses penanaman pesan ke dalam citra menggunakan generator angka pseudo-random. Misalkan
kumpulan piksel-piksel yang dipilih oleh angka
pseudo-random. Sebuah stego-key digunakan sebagai benih dari generator angka pseudo-random, x adalah nilai dari piksel itu, n ditentukan dari ukuran pesan yang ditanamkan dan berapa banyak bit-bit LSB dalam setiap piksel yang dapat digunakan untuk menanamkan pesan. Ini dapat dihitung dengan menggunakan fungsi ini: (2.1) dimana l adalah panjang bit stream dari pesan yang ditanamkan, m adalah jumlah bit yang digunakan untuk menanamkan pesan-pesan dalam setiap piksel, dan n adalah sejumlah kumpulan m bit pesan. Bit stream dari pesan yang ditanamkan dibagi menjadi bit segmen dengan panjang m bit dan dinotasikan dengan
,
II-14
. Didefinisikan
menjadi fungsi untuk mendapatkan nilai
m bit LSB dari x tersebut dan didefinisikan MaxVal sebagai nilai 2p – 1 (dimana p adalah banyaknya bit yang merepresentasikan setiap piksel).
Untuk melakukan penanaman pesan dilakukan seperti pseudo algoritma pada Gambar II-9. for
i = 1, 2, …., n do if
xi > MaxVal then xi = xi - 2m;
end if xi < 0 then xi = xi + 2m; end end Gambar II-9 Pseudo-code penanaman pesan pada citra
Sekarang kita mendapatkan nilai G yang baru dan digunakan untuk menukar nilai piksel-piksel yang bersesuain dengan angka pseudo-random.
Ilustrasi berikut memberikan contoh tentang penanaman pesan di atas. Dimisalkan jumlah bit untuk merepresentasikan sebuah citra adalah 8 bit, m yang dipilih adalah 2, dan pesan yang akan disembunyikan adalah 10000001. Pesan tersebut dibagi menjadi empat karena persamaan (2.1); (
) menjadi
dan E = <10, 00, 00, 01>. Nilai
G yang dipilih adalah 00100111, 11101001, 11001000, 00100111, 11001000 (x0, x1, x2, x3, x4). Proses selanjutnya diilustrasikan pada Tabel II-3. 2.4.2 Proses Ekstraksi Pesan Dengan menggunakan stego-key yang sama untuk membangkitkan angka pseudorandom tersebut, piksel-piksel yang bersesuain dipilih dengan menggunakan angka pseudo-random untuk membangun
. Pesan dapat
diekstrak seperti pseudo algoritma pada Gambar II-10. for i= 1, 2, …., n do end Gambar II-10 Pseudocode proses ekstraksi
sehingga didapatkan tersebut.
. dan dapat membangun kembali pesan
II-15
Tabel II-1 Contoh proses penanaman pesan pada citra
G
LSB2(xi)
x0
x1
x2
x3
x4
00100111
11101001
11001000
00100111
11001000
11
01
00
11
00
Mod4
Mod4
Mod4
Mod4
00
11
00
11
10
00
00
01
Sum Mod4
ei xi’
00100111
11101011
11000101
00100111
11000110
LSB2(xi’)
11
11
01
11
10
Ilustrasi pada Tabel II-4 akan menyimulasikan pengekstrakan pesan yang telah ditanamkan pada contoh penanaman pesan pada subbab sebelumnya. Ilustrasi ini akan menggunakan data yang sama dengan data sebelumnya. Tabel II-2 Contoh proses pengekstrakan pesan pada citra
LSB2(xi’)
11
Sum
11
01
11
10
Mod4
Mod4
Mod4
Mod4
10
00
00
01
Mod4 ei
2.5
Algoritma LCG
Algoritma LCG (linear congruential generator) merupakan metode yang dapat menghasilkan angka pseudo-random. Metode ini merupakan salah satu metode tertua dan paling sederhana, namun ini tidak direkomendasikan untuk saat ini. Angka-angka pseudo-random adalah angka-angka yang kelihatannya acak namun sebenarnya angkaangka tersebut sebenarnya tidak acak.
II-16
Metode memerlukan sebuah pemicu atau benih yang berupa sebuah angka acak X0. Kemudian angka acak ke-i berikutnya didefinisikan sebagai berikut : Xi = (aXi-1 + c) mod m
(2.2)
untuk a, c, dan m adalah bilangan integer.
Algoritma ini menghasilkan suatu periode. Hal tersebut dapat dilihat pada contoh berikut ini: m = 8, a = 5, c = 1, X0 = 1: Xi = (5 x Xi-1 + 1) mod 8 X1 = 6 mod 8 = 6 X2 = 31 mod 8 = 7 X3 = 36 mod 8 = 4 X4 = 21 mod 8 = 5 X5 = 26 mod 8 = 2 X6 = 11 mod 8 = 3 X7 = 16 mod 8 = 0 X8 = 1 mod 8 = 1 Pada iterasi ke-8, terlihat nilainya kembali ke nilai awal X0. Penggunaan benih yang sama akan menghasilkan himpunan nilai yang sama dengan nilai a,c, dan m yang sama.
Periode metode ini akan memiliki panjang m, jika : 1. c dan m adalah relatif prima 2. a – 1 dapat dibagi dengan semua factor prima m 3. a -1 adalah kelipatan 4 jika m merupakan kelipatan 4 juga.
2.6
Algoritma MARS
Input dan output metode ini berupa 4 word data 32-bit. Metode ini merupakan metode yang berorientasi word, karena semua operasi internalnya dilakukan dalam word 32-bit. Kode yang sama untuk mesin dengan struktur internal little-endian dapat digunakan untuk mesin dengan struktur internal big-endian. Ketika input atau output berupa sebuah byte stream, digunakan susunan byte little-endian untuk menginterpretasikan
II-17
setiap 4 byte sebagai sebuah word 32-bit. Gambar II-11 menunjukkan struktur algoritma MARS.
Tahap enkripsi dan dekripsi dilakukan dalam 3 fase: 1. Fase pertama ini menyediakan rapid mixing dan key avalanche, ini berfungsi untuk mengatasi serangan chosen-plaintext dan membuat lebih sulit untuk melakukan penyerangan dengan metode linier dan diferensial. Fase ini terdiri dari penambahan kunci ke data, diikuti dengan delapan putaran S-box.
2. Fase kedua disebut “cryptographic core” metode ini, terdiri dari 16 putaran dari transformasi Feistel tipe-3. Ini untuk memastikan bahwa enkripsi dan dekripsi memiliki kekuatan yang sama, dilakukan 8 putaran pertama dalam “forward mode” dan 8 putaran terakhir dalam “backwards mode”.
Gambar II-11 Struktur Algoritma MARS [BUR99]
3. Fase terakhir menyediakan kembali rapid mixing dan key avalanche, pada saat ini untuk melindungi dari serangan chosen-chipertext. Fase ini merupakan inverse dari fase pertama, terdiri dari 8 putaran Feistel tipe-3 seperti yang terdapat pada fase
II-18
pertama (namun dalam “backwards mode” sedangkan fase pertama dalam “forward mode”), diikuti dengan substraksi kunci dari data.
Notasi yang akan digunakan dalam metode ini: 1. D[] adalah sebuah array 4 word data 32-bit. Inisial D berisi plaintext dan pada akhir proses enkrispi berupa chipertext. 2. K[] adalah array untuk expanded key, terdiri dari 40 word (1 1 word = 32 bit) 3. S[] adalah sebuah S-box, terdiri dari 512 word. 256 entri pertama dinotasikan dengan S0 dan 256 entri terakhir dengan S1. Dalam disain S-box S, entri-entri S dibangkitkan dalam sebuah mode pseudorandom dan diuji bahwa S-box yang dihasilkan memiliki sifat diferensial dan linier yang baik. 2.6.1 Proses Enkripsi Proses enkripsi menerima input berupa plaintext berupa 4 word data dan menghasilkan chipertext dengan 3 fase yang akan dijelaskan secara detail berikutnya. 2.6.1.1 Fase 1 : Forward Mixing Pertama di dalam fase ini ditambahkan sebuah word kunci ke setiap word data plaintext, dan kemudian dilakukan 8 putaran Feistel mixing tipe-3, dikombinasikan dengan beberapa operasi mixing tambahan. Fase ini digambarkan dengan Gambar II-12. Untuk setiap putaran digunakan satu data word (disebut word sumber) untuk memodifikasi 3 word data yang lain (disebut word target). 4 byte dalam word sumber dipandang sebagai indeks ke dalam 2 S-box (S0 dan S1), kemudian entri-entri S-box yang bersesuaian di-xor-kan atau ditambahkan ke ketiga data word yang lain.
Jika 4 byte dari word sumber dinotasikan dengan b0, b1, b2, b3 (dimana b0 adalah byte terendah dan b3 adalah byte yang tertinggi), kemudian b0, b2 sebagai indeks ke dalam S-box S0 dan b1, b3 sebagai indeks ke dalam S-box S1. Pertama S0[b0] di-xor-kan dengan word target pertama, dan kemudian S1[b1] ditambahkan ke word yang sama tersebut. Kemudian S0[b2] ditambahkan dengan word target kedua dan S1[b3] di-xorkan ke word target ketiga. Terakhir, word sumber dirotasikan 24 posisi ke kanan.
Untuk putaran berikutnya, 4 word tersebut dirotasikan, sehingga word target pertama saat ini menjadi word sumber berikutnya, word target kedua saat ini menjadi word
II-20
tambahan ini untuk mengeliminasi beberapa serangan diferensial yang mudah terhadap operasi mixing pertama dan untuk memecahkan kesimetrian yang ada. 2.6.1.2 Fase 2 : Main Keyed Transformation “Cryptographic core” pada metode ini menggunakan Feistel network tipe-3 yang tediri dari 16 putaran. Untuk setiap putaran, digunakan fungsi-E (E untuk kata ekspansi) yang didasarkan pada sebuah kombinasi baru dari multiplikasi, rotasi data yang tidak saling bebas, dan sebuah lookup S-box. Fungsi E ini mendapatkan satu word data sebagai input dan mengembalikan tiga word data sebagai ouput. Untuk setiap putaran, satu word data digunakan sebagai input untuk fungsi-E, dan tiga word output dari fungsi-E ditambahkan atau di-xor-kan ke tiga word data yang lain. Sebagai tambahan, word sumber dirotasikan 13 posisi ke kiri.
Untuk memastikan bahwa metode ini memiliki daya tahan yang sama untuk serangan chosen-chipertext dan serangan chosen-plaintext, tiga ouput dari fungsi-E digunakan dalam sebuah susunan berbeda dalam 8 putaran pertama dan 8 putaran terakhir. Pada delapan putaran pertama, output pertama dan kedua dari fungsi-E ditambahkan dengan word target pertama dan kedua secara berturut-turut; dan output ketiga di-xor-kan dengan word target ketiga. Pada delapan putaran terakhir, output pertama dan kedua dari fungsi-E ditambahkan dengan word target ketiga dan kedua secara berturut-turut; dan output ketiga di-xor-kan dengan word target pertama. 2.6.1.3 Fase 3 : Backwards Mixing Fase backward mixing ini sama dengan fase forward mixing pada proses dekripsi, namun word-word data yang diproses dalam urutan yang berbeda (backward mode). Gambar II-14 menggambarkan fase backwards mixing ini.
Seperti halnya pada forward mixing, di setiap putaran pada backward mixing juga digunakan sebuah word sumber untuk memodifikasi tiga word target. Keempat byte dari word sumber dinotasikan dengan b0, bl, b2, b3 seperti sebelumnya (dimana b0 adalah byte terendah dan b3 adalah byte tertinggi). b0, b2 digunakan sebagai index ke dalam Sbox S1 dan b1, b3 sebagai index ke dalam S-box S0. S1[b0] di-xor-kan dengan word target pertama, dan S0[b3] dikurangkan dengan word target kedua, S1 [b2] dikurangkan
II-23
2.6.2 Proses Dekripsi Proses dekripsi adalah invers dari proses enkripsi. Kode untuk dekripsi sama dengan kode enkripsi namun tidak identik. Pseudo-code untuk proses enkripsi pada LAMPIRAN B. 2.6.3 Ekspansi Kunci Perluasan kunci berfungsi untuk membangkitkan sub kunci dari kunci yang diberikan oleh pemakai yaitu array K[ ] yang terdiri dari n 32-bit word (dimana n adalah angka berapa pun dari 4 sampai 14) ke dalam array K[] sebanyak 40 word. MARS menerima satu blok kunci awal sebesar 128 bit untuk mendapatkan kunci lain yang digunakan dalam proses enkripsi dan dekripsi. Untuk panjang kunci yang kurang dari 128, maka dilakukan padding bits yaitu proses penambahan untuk menambahkan satu dan sisanya ditambahkan dengan nol sampai mencapai panjang kunci yang seharusnya. Key expansion menyediakan 40 word key (K[0],......,K[39]) yang terdiri dari 32-bit. Empat kunci pertama digunakan untuk proses forward mixing dan empat kunci terakhir digunakan pada proses backwards mixing.
Kunci yang asli tidak diharuskan memiliki struktur apa pun. Prosedur ekspansi kunci ini menjamin bahwa word kunci yang digunakan untuk multiplikasi di dalam prosedur enkripsi memiliki sifat berikut: -
Dua bit terendah dalam sebuah word kunci yang digunakan untuk multiplikasi dibuat menjadi 1
-
Tidak terdapat word kunci yang memiliki sepuluh 0 yang berurutan atau sepuluh 1 yang berurutan.
2.6.4 Fungsi-E Fungsi-E menerima input satu word data dan menggunakan dua atau lebih kunci untuk menghasilkan tiga word output. Pada fungsi ini digunakan tiga variabel sementara, dinotasikan dengan L, M, dan R (untuk left, middle, dan right). Proses yang terjadi pada fungsi-E ini digambarkan pada Gambar II-15.
R berfungsi untuk menampung nilai word sumber yang dirotasikan 13 posisi ke kiri, dan M berfungsi untuk menampung jumlah word sumber dan word kunci pertama. Sembilan bit terendah dari M digunakan sebagai indeks untuk 512-entri S-box S (didapatkan dari
II-24
menggabungkan S0 dan S1 dari fase mixing tersebut). L menampung nilai entri S-box yang bersesuaian.
Kemudian word kunci kedua (mengandung sebuah integer ganjil) dikalikan dengan R dan kemudian R dirotasikan sebanyak 5 posisi ke kiri (5 bit
tertinggi dari hasil
perkalian menjadi 5 bit terendah dari R setelah rotasi). Lalu L di-xor-kan dengan R dan lima bit terendah dari R sebagai sebuah jumlah rotasi antara 0
dan 31, dan M
dirotasikan ke kiri sebanyak jumlah rotasi tersebut. R dirotasikan sebanyak 5 posisi ke kiri dan di-xor-kan dengan L. Terakhir, lima bit terendah dari R diambil sebagai sebuah jumlah rotasi dan L dirotasikan ke kiri sebanyak jumlah rotasi tersebut. Output pertama dari fungsi-E adalah L, kedua adalah M, dan ketiga adalah R.
Gambar II-15 Fungsi-E dan mainkeyed transformation[BIR99]