BAB 2 LANDASAN TEORI
2.1 Steganografi Steganografi penyembunyian
merupakan
informasi
pada
ilmu suatu
dan
seni
media
yang
mempelajari
sedemikian
rupa
cara
sehingga
keberadaannya tidak terdeteksi oleh pihak lain yang tidak berhak atas informasi tersebut. Pengguna pertama (pengirim pesan) dapat mengirim media yang telah disisipi informasi rahasia tersebut melalui jalur komunikasi publik, hingga dapat diterima oleh pengguna kedua (penerima pesan). Penerima pesan dapat mengekstraksi informasi rahasia yang ada di dalamnya. Penyembunyian data rahasia ke dalam media digital mengubah kualitas media tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data di antaranya adalah: 1.
Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia.
2.
Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (recovery). karena tujuan steganografi adalah data hiding, maka sewaktuwaktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih lanjut.
8
Gambar 2.1 Diagram Sistem Steganografi
Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, audio, teks, dan video. Sedangkan data rahasia yang disembunyikan dapat berupa berkas apapun. Media yang telah disisipi data disebut stegomessage. Proses penyembunyian data ke dalam media disebut penyisipan (embedding), sedangkan proses sebaliknya disebut ekstraksi. Proses tersebut dapat dilihat pada gambar 2-2. Penambahan kunci yang bersifat opsional dimaksudkan untuk lebih meningkatkan keamanan.
Gambar 2.2 Proses Penyisipan Dan Ekstraksi Dalam Steganografi
9
2.1.1
Sejarah Steganografi Steganografi sudah dikenal oleh bangsa Yunani. Herodatus, penguasa Yunani, mengirim pesan rahasia dengan menggunakan kepala budak atau prajurit sebagai media. Dalam hal ini, rambut budak dibotaki, lalu pesan rahasia ditulis pada kulit kepala budak. Ketika rambut budak tumbuh, budak tersebut diutus untuk membawa pesan rahasia di balik rambutnya. Bangsa Romawi mengenal steganografi dengan menggunakan tinta taktampak (invisible ink) untuk menuliskan pesan. Tinta tersebut dibuat dari campuran sari buah, susu, dan cuka. Jika tinta digunakan untuk menulis maka tulisannya tidak tampak. Tulisan di atas kertas dapat dibaca dengan cara memanaskan kertas tersebut. Saat ini di negara-negara yang melakukan penyensoran informasi, steganografi sering digunakan untuk menyembunyikan pesan-pesan melalui gambar, video, atau audio.
2.1.2
Metode-Metode Steganografi Metode-metode umum yang digunakan dalam penyembunyian data ke media adalah: 1. Metode Modifikasi LSB Sistem Steganografi akan menyembunyikan sejumlah informasi dalam suatu berkas dan akan mengembalikan informasi tersebut kepada pengguna yang berhak. Terdapat dua langkah dalam sistem Steganografi yaitu proses penyembunyian dan recovery data dari berkas penampung. Penyembunyian data dilakukan dengan mengganti bit-bit data di dalam segmen citra dengan bit-bit
10
data rahasia. Metode yang paling sederhana adalah metode modifikasi LSB (Least Significant Bit Modification) dari setiap sample pada audio (Cvejic & Seppanen). Pada susunan bit di dalam sebuah byte (1 byte = 8 bit), ada bit yang paling berarti (most significant bit atau MSB) dan bit yang paling kurang berarti (least significant bit atau LSB). Contoh : 1 1 0 1 0 0 1 0 Bit pada digit pertama merupakan MSB, dan bit pada digit terakhir merupakan LSB. Bit yang cocok untuk diganti adalah bit LSB, sebab perubahan tersebut hanya mengubah nilai byte satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Karena perubahan satu-dua buah bit pada beberapa pixel tidak akan terdengar dengan jelas. Metode ini memanfaatkan keterbatasan dari sistem indera pendengaran manusia yaitu HAS (Human Auditory System). Batas pendengaran manusia berada pada frekuensi antara 20 Hz - 20000 Hz. Namun metode ini memiliki keterbatasan jumlah bit pesan yang dapat disisipkan atau disubstitusikan pada setiap byte-nya.
Ukuran Data Yang Disembunyikan Ukuran data yang akan disembunyikan bergantung pada ukuran data penampung. Misalkan saja pada file citra 8-bit yang berukuran 256x256 pixel terdapat 65536 pixel, setiap pixel berukuran 1 byte. Setelah diubah menjadi citra 24-bit, ukuran data bitmap menjadi 65536 x 3 = 196608 byte. Karena setiap byte hanya bisa menyembunyikan satu bit di LSB-nya, maka ukuran data yang akan disembunyikan di dalam citra maksimum 196608/8 = 24576 byte. Ukuran data ini harus dikurangi dengan panjang nama berkas, karena penyembunyian data
11
rahasia tidak hanya menyembunyikan isi data tersebut, tetapi juga nama berkasnya. Semakin besar data disembunyikan di dalam citra, semakin besar pula kemungkinan data tersebut rusak akibat manipulasi pada citra penampung. Hal yang sama juga berlaku, jika file audio yang menjadi media penampungnya. Misalkan saja ada file audio sebesar 80000 byte, maka file yang dapat ditampung oleh file audio tersebut adalah 80000/8 = 10000 byte.
Gambar 2.3 Least Significant Bit Sumber : Website http://www.snotmonkey.com/work/school/405/methods.html
12
Flowchart LSB Flowchart yang ditampilkan di bawah ini merupakan flowchart dari metode LSB standar untuk menyisipkan suatu data rahasia ke dalam data lain.
Gambar 2.4: Diagram Metode LSB
13
2. Masking and Filtering Kedua metode ini menyembunyikan informasi dengan cara mirip dengan penanda kertas. Hal ini dapat dilakukan, contohnya dengan memodifikasi luminance sebagian dari citra, tetapi apabila dilakukan dengan hati-hati distorsi baru dapat terlihat. 3. Spread Spectrum Image Steganography Pada metode ini untuk menyandikan sebuah pesan, digunakan sebuah pseudorandom noise generator yang lebar untuk membuat sebuah barisan yang tersebar. Kemudian, sebuah skema modulasi digunakan untuk memperluas sebuah barisan yang tersebar. Kemudian, sebuah skema modulasi digunakan untuk memperluas spektrum yang sempit dari sebuah pesan dengan barisan yang tersebar, dengan demikian menyusun sinyal yang dibawa yang masuk ke dalam interleave dan ruang penyebar. Inner leaver juga dapat mempergunakan kunci untuk mendikte algoritma interleaving. Sinyal ini sekarang digabungkan dengan cover dari citra untuk menghasilkan cintra stego, yang sudah dibagi-bagi dengan layak untuk memlihara dynamic range awal dari cover citra. Citra stego tersebut kemudian diteruskan kepada penerima pesan. 4. Transformations Discrete Cosine Transformation (DCT)
adalah salah satu metode
transformasi untuk mentransformasi m*n blok pixel dari sebuah citra secara berurutan ke dalam masing-masing koefisien 64 DCT. Alat steganografi
14
dapat menggunakan LSB dari koefisien DCT
yang terbagi-bagi untuk
menyembunyikan informasi. 2.1.3
Steganografi Audio Steganografi audio merupakan cara penyembunyian pesan ke dalam suara digital. Pesan rahasia tersebut disembunyikan dengan cara penyisipan biner-biner pada pesan tersebut ke dalam biner audio.
2.2 Suara 2.2.1
Pengertian Suara Suara atau bunyi adalah getaran yang disalurkan melalui medium penghantarnya, baik padat, cair atau gas / udara. Suara yang dapat didengar oleh manusia lebih dikenal dengan sebutan audio. Rentang frekuensi rata – rata yang dapat ditoleransi oleh telinga manusia adalah antara 20 Hz sampai dengan 20.000 Hz atau 20kHz, dan umumnya batas atas akan berkurang seiring bertambahnya umur manusia. Makhluk hidup selain manusia memiliki rentang toleransi frekuensi yang berbeda. Contoh, seekor anjing dapat menerima frekuensi bunyi di atas 20kHz. Sebagai salah satu cara untuk memberikan signal atau tanda, suara / bunyi telah digunakan oleh beberapa spesies untuk hal – hal dalam kehidupan antara lain: mendeteksi bahaya, navigasi, komunikasi, dan sebagainya. Hampir seluruh komponen di dalam bumi yang dapat bergetar akan menghasilkan bunyi. Untuk lebih jauhnya, manusia telah meningkatkan teknologi dan budaya, seperti musik, telepon, dan radio, untuk mendayagunakan suara.
2.2.2
Bentuk Suara
15
Getaran mekanik yang dapat diintepretasikan sebagai suara mampu untuk menjalar dalam berbagai medium: gas, cairan, benda padat, dan plasma. Suara tidak dapat terdengar atau menjalar apabila tidak ada medium yang mendukungnya. Singkat kata, suara tidak dapat terdengar di ruang vakum.
Gambar 2.5 Gelombang Longitudinal dan Transversal
Gelombang Sinusoidal dengan berbagai frekuensi; gelombang paling bawah memiliki frekuensi yang lebih tinggi dibandingkan dengan gelombang pada bagian atasnya. Gelombang longitudinal yang menjalar dalam medium gas, plasma, dan cairan disebut juga gelombang kompresi. Dengan medium benda padat, suara dapat menjalar dalam bentuk gelombang longitudinal dan transversal. Gelombang suara longitudinal adalah gelombang dengan deviasi tekanan yang saling bergantian dari tekanan ekuilibrium – keadaan di mana suatu sistem seimbang dari berbagai pengaruh di luar sistem – dan menyebabkan kompresi dan rarefaction – keadaan di mana kepadatan suatu medium berkurang (berkebalikan dari kompresi) –
local. Dengan adanya deviasi tekanan yang
saling bergantian ini, maka bentuk dari gelombang longitudinal berupa rapatan dan regangan seperti pegas. Sementara gelombang transversal dalam medium padat adalah gelombang stress berlebih yang bergantian.
16
Zat dalam medium secara berkala posisinya akan diambil alih oleh gelombang suara, dan akan terombang-ambing. Energi yang dibawa oleh gelombang suara berubah – ubah dari energi potensial dengan kompresi tambahan (dalam bentuk gelombang longitudinal) atau menjadi perubahan tegangan posisi lateral (dalam bentuk gelombang transversal) dalam zat dan energi kinetik dari ketidakseimbangan mediumnya.
2.2.3
Karakteristik Gelombang Karakteristik dari gelombang suara dapat diketahui dari beberapa hal, antara lain: frekuensi – banyaknya getaran yang dihasilkan sumber suara dalam satu detik, panjang gelombang, periode – waktu yang dibutuhkan untuk menghasilkan satu getaran, amplitudo – simpangan terbesar dari getaran yang dihasilkan oleh sumber suara, intensitas, kelajuan – cepat rambat gelombang suara, dan arah (terkadang kecepatan dan arah dikombinasikan sebagai kecepatan – kelajuan dengan arah menjadi besaran vektor). Gelombang transversal, dikenal juga sebagai shear waves, memiliki polarisasi. Nada atau tinggi rendahnya suara disebabkan oleh beberapa perubahan, antara lain jarak antara titik maximal gelombangnya, yang merupakan perubahan frekuensi. Sedangkan kekerasan suara dipengaruhi oleh amplitudonya. Semakin besar amplitudonya, semakin keras suaranya.
2.2.4
Audio Digital
17
Audio digital berbeda dari suara analog tradisional. Audio digital merupakan sinyal diskrit dan bukan sinyal kontinu. Sinyal diskrit diciptakan dari sampling sinyal analog yang kontinu dengan rate tertentu. Sebagai contoh, sampling rate pada CD audio digital pada umumnya adalah 44kHz (Artinya dalam 1 detik ada sekitar 44000 sampel yang dimainkan).
Gambar 2.6 Proses Sampling
Bagaimanapun, sampling rate biasanya dipilih pada tingkatan di mana hasil sinyal digital secara visual tidak berbeda dari sinyal analognya. Audio digital disimpan pada komputer sebagai barisan 0 dan 1 dalam file audio digital. Dengan alat bantu yang tepat, maka tiap bit dalam file dapat diubah. Pengaturan yang tepat dapat menyebabkan perubahan bit pada file tidak dapat dibedakan oleh telinga manusia.
2.2.4.1 Format File Audio Digital Format dari file audio merupakan bentuk data yang digunakan untuk menyimpan audio di dalam sistem komputer. Pendekatan umum terhadap penyimpanan digital audio akan mencoba voltase dari audio pada saat audio tersebut diputar kembali, agar sesuai dengan
18
posisi tertentu di selaput speaker dari saluran khusus dengan resolusi tertentu. Di mana resolusi yang dimaksud adalah jumlah bit di setiap sample. Kemudian data dapat disimpan, baik dikompres, maupun tidak dikompres untuk mengurangi ukuran data dalam memori komputer.
Tipe-Tipe Format File Penting untuk membedakan antara format file dengan codec. Codec menunjukkan proses encoding dan decoding dari data audio yang belum diproses atau mentah, sedangkan data audio sendiri disimpan ke dalam sebuah file dengan sebuah data audio yang spesifik. Walaupun kebanyakan format file audio hanya memperbolehkan sebuah audio codec, namun format file memperbolehkan beberapa codec, seperti pada AVI. Terdapat 3 golongan besar dalam mengelompokkan audio: •
Format audio yang tidak dikompres (uncompress) , seperti WAV, AIFF dan AU
•
Format audio dengan kompresi nirrugi (lossless), seperti FLAC, Monkey's Audio (biasa disebut APE), WavPack (disingkat WV), Shorten, Tom's lossless Audio Kompressor (TAK), TTA, ATRAC
•
Format audio dengan kompresi rugi (lossy), seperti MP3, Vorbis, Musepack, ATRAC, lossy Windows Media Audio (WMA) and AAC. Sebelumnya perlu diketahui perbedaan antara format file dengan codec.
1. Format audio yang tidak dikompres 2. Format audio lossless 3. Format bebas dan terbuka 4. Format terbuka
19
5. Format layak FILE WAV Format file audio tanpa proses kompresi yang paling sering ditemui adalah PCM (Pulse Code Modulation), yang biasanya tersimpan dalam file .wav di dalam Windows dan sebagai .aiff di dalam Mac OS. WAV adalah bentuk format file yang fleksibel untuk menyimpan semua kombinasi audio baik rates maupun bitrates. Hal ini menyebabkan format file dalam bentuk .wav sangat layak untuk menyimpan dan mengarsipkan rekaman asli. Untuk format audio lossless, akan dibutuhkan lebih banyak proses pada saat direkam, tetapi akan sangat efisien dalam hal penggunaan memori. WAV, seperti halnya seluruh format file yang tidak dikompres, akan meng-enkoding-kan semua suara, baik suara yang kompleks maupun tanpa suara, dengan jumlah bit yang sama setiap satuan waktunya. Contohnya: sebuah file menyimpan rekaman dari orkestra selama satu menit akan sama besar dengan file yang menyimpan satu menit keadaan diam tanpa suara apabila keduanya disimpan dalam bentuk format WAV. Apabila file di encoding dengan format file lossless, maka dengan contoh yang sama, file pertama akan menempati lebih sedikit memori sedangkan file kedua sangat sedikit menggunakan memori. Namun bagaimanapun juga, untuk meng-encoding file ke dalam format file lossless akan membutuhkan waktu yang jauh lebih lama dibandingkan dengan format file yang tidak dikompres sama sekali, yakni dalam format WAV. Dewasa ini, format audio lossless telah mengalami perkembangan, contoh: TAK, di mana dapat menyimpan file dengan cepat dengan kompresi yang juga baik.
20
Struktur File WAV File WAV menggunakan struktur standar RIFF dengan mengelompokan isi file ke dalam bagian-bagian seperti format WAV dan data digital audio. Setiap bagian memiliki headernya sendiri-sendiri beserta dengan ukurannya. RIFF Struktur RIFF (Resource Interchange File Format) ini merupakan struktur yang biasa digunakan untuk data multimedia dalam Windows. Struktur ini mengatur data dalam file ke dalam bagian-bagian yang masing-masing memiliki header dan ukurannya sendiri dan disebut sebagai chunk. Struktur ini memungkinkan bagi program bila tidak mengenali bagian tertentu untuk melompati bagian tersebut dan terus memproses bagian yang dikenal. Data dari suatu bagian bisa memiliki sub-bagian dan seluruh data dalam file berstruktur RIFF selalu
merupakan subbagian dari suatu bagian yang memiliki header
“RIFF”. Contoh file yang menggunakan struktur RIFF adalah file WAV dan AVI.
File Wav Sesuai dengan struktur file RIFF, file WAV diawali dengan 4 byte yang berisi ‘RIFF’ lalu diikuti oleh 4 byte yang menyatakan ukuran dari file tersebut dan 4 byte lagi yang berisi ‘WAVE’ yang menyatakan bahwa file tersebut adalah file WAV. Berikutnya adalah informasi dari format sample yang menjadi subbagian dari bagian RIFF lalu diikuti sub-bagian data audionya.
21
Gambar 2.7 Struktur file WAV
Sumber http://www.sonicspot.com/guide/wavefiles.html
Bagian RIFF merupakan bagian utama dari semua file yang memakai format RIFF. Tabel 2.1 Detail Bagian RIFF
Isi dari 4 byte pertama adalah ‘RIFF’, 4 byte berikutnya adalah ukuran dari bagian RIFF yang nilainya sama dengan ukuran dari file dikurangi 8 seperti yang ada pada tabel 2.1. ‘WAVE’ menempati 4 byte berikutnya adalah ukuran
22
dari bagian RIFF yang nilainya sama dengan ukuran dari file dikurangi 8 seperti yang ada pada tabel 2.1. ‘WAVE’ menempati 4 byte berikutnya dan digunakan sebagai penentu jenis dari file tersebut, dalam hal ini adalah file WAV. Setelah itu barulah informasi format dan data dari file WAV disimpan. Bagian format sample berisi informasi-informasi mengenai bagaimana data disimpan dan memainkannya. Bagian ini dimulai dengan ID ‘fmt ‘, lalu diikuti dengan 4 byte yang merupakan panjang dari informasi dan bernilai 16 untuk PCM. Untuk lebih jelasnya ada di tabel 2.2. Tabel 2.2 Detail Bagian Sample Format
2.3 Rijndael Advanced Encryption Standard 2.3.1
Algoritma
2.3.1.1 Pengertian Algoritma Dalam ilmu Matematika dan ilmu Komputer, algoritma adalah kumpulan instruksi yang terdeskripsi dengan jelas isi dan urutan pengerjaannya, yang bertujuan untuk menyelesakan suatu tugas, dengan mendefenisikan kondisi awal dan akan berakhir pada kondisi akhir yang telah ditentukan pula. Konsep dari algoritma, secara informal dapat digambarkan sebagai sebuah resep.
23
2.3.1.2 Sejarah Algoritma Konsep algoritma berawal dari penggabungan urutan-urutan prosedur untuk menyelesaikan masalah matematika, seperti mencari Greater Common Divisor (Faktor Persekutuan Terbesar) dari dua buah bilangan. Sebagian besar algoritma dapat diimplementasikan pada bahasa pemrograman atau setidaknya dapat disimulasikan secara teoritis oleh program komputer.
2.3.1.3 Pseudocode Pseudocode adalah gambaran singkat dan informal dari sebuah algoritma pemrograman komputer yang menggunakan bentuk pemrograman struktural. Pseudocode mengabaikan detil-detil seperti subrutin, deklarasi variabel dan sintaks yang spesifik dari suatu bahasa pemrograman. Pseudocode dapat ditulis dalam bahasa-bahasa pemrograman dengan sintaks yang disederhanakan, misalnya bahasa pemrograman PASCAL, C atau BASIC. Tujuan penggunaan pseudocode adalah untuk menyederhanakan bahasa pemrograman menjadi bahasa manusia, sehingga memudahkan manusia untuk membaca alur dari suatu algoritma. Berikut adalah contoh dari sebuah pseudocode untuk pengenalan angka genap atau angka ganjil: 1
MASUKKAN bilangan pertama
2
MASUKKAN bilangan kedua
3
JIKA bilangan pertama > bilangan kedua MAKA kerjakan langkah 4, JIKA tidak, kerjakan langkah 5.
24
2.3.2
4
TAMPILKAN bilangan pertama
5
TAMPILKAN bilangan kedua
Kriptografi
2.3.2.1 Pengertian Kriptografi Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasian data, keabsahan data, integritas data, serta autentikasi data. Tidak semua aspek keamanan informasi detangani oleh kriptografi. Kriptografi mencakup ilmu matematika dari berbagai cabang seperti Aljabar Linear, Aljabar Modern maupun Analisis Real. Kriptografi mengandung istilah-istilah penting yang mendasar sebagai berikut: •
Plaintext (Cleartext) merupakan data yang dapat dimengerti.
•
Ciphertext, merupakan data yang tidak dapat dimengerti.
•
Encryption (Encoding), merupakan proses penyamaran data, dari plaintext menjadi ciphertext.
•
Decryption (Decoding), merupakan proses untuk mengembalikan ciphertext menjadi plaintext agar dapat dimengerti. Key, merupakan angka atau metode yang digunakan dalam proses enkripsi
dan
dekripsi.
25
Ada empat tujuan mendasar dari ilmu kriptografi yang juga merupakan aspek kemanan informasi yaitu : •
Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka informasi yang telah disandi.
•
Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan penyubsitusian data lain ke dalam data yang sebenarnya.
•
Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri.
•
Non-repudiasi, atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman atau terciptanya suatu informasi oleh yang mengirimkan/membuat.
2.3.2.2 Sejarah Kriptografi Sejarah kriptografi dimulai ribuan tahun yang lalu. Sampai beberapa dekade terakhir ini, sejarah kriptografi merupakan sebuah cerita yang disebut Classic Cryptography, yang merupakan metode kriptografi yang masih menggunakan pensil dan kertas atau mungkin bantuan mekanik sederhana.
26
Pada zaman romawi kuno, Julius Caesar menggunakan kriptografi untuk mengirim pesan rahasia yang masih menggunakan algoritma kriptografi klasik yaitu algoritma penggeseran atau disebut juga Shift Cipher atau Caesar Cryptography. Pada abad ke-20, ditemukan mesin elektronik untuk kriptografi yang lebih kompleks, seperti Enigma Rotor Machine, dilengkapi dengan metode enkripsi yang lebih cerdas dan berarti. Kemudian menjadi awal dari enkripsi-enkripsi baru yang memiliki kompleksitas yang lebih besar.
2.3.2.3 Algoritma Kriptografi Algoritma kriptografi adalah metode yang digunakan dalam kriptografi untuk mengubah data berupa plaintext menjadi ciphertext sehingga dapat membuat data yang ingin dikirimkan menjadi rahasia dan hanya dapat diakses oleh user-user yang mengetahui key untuk mendekripsi ciphertext tersebut.
2.3.2.4 Pembagian Algoritma Kriptografi Algoritma kriptografi sering juga disebut sebagai kriptosistem, dapat dibagi dalam tiga karakteristik: •
Berdasarkan jenis operasi yang digunakan Berdasarkan jenis operasi yang digunakan untuk mengubah plaintext menjadi ciphertext, algoritma kriptografi dibagi menjadi dua jenis umum antara lain substitution cipher dan transposition cipher. Semua algoritma kriptografi selalu berlandaskan pada dua prinsip umum tersebut, proses
27
substitusi dan proses transposisi. Tetapi ada juga algoritma kriptografi yang menggabungkan kedua konsep tersebut sekaligus. Substitution cipher adalah algoritma kriptografi yang bertujuan untuk mengubah plaintext tertentu menjadi ciphertext tertentu. Inti dari substitution cipher adalah mengubah isi plaintext. Transposition cipher adalah algoritma kriptografi yang bertujuan untuk menggeser posisi-posisi plaintext menjadi acak. Inti dari transposition cipher adalah mengubah posisi plaintext. •
Berdasarkan jumlah key yang digunakan Berdasarkan jumlah key yang digunakan, algoritma kriptografi dibagi menjadi kriptografi simetri dan kriptografi asimetri. Kriptografi
simetri
adalah
algoritma
kriptografi
yang
hanya
menggunakan satu jenis key, di mana untuk proses enkripsi dan dekripsi pada algoritma kriptografi tersebut akan menggunakan key yang sama. Oleh karena itu pada kriptografi simetri key tersebut bersifat rahasia yang hanya boleh diketahui oleh orang yang membuat pesan dan orang yang akan mendapatkan pesan. Kriptografi asimetri adalah algoritma kriptografi yang menggunakan dua jenis key, yaitu public key dan private key. Public key pada kriptografi asimetri adalah key pribadi yang dibagikan kepada semua orang sehingga keberadaan public key tidak bersifat rahasia. Private key pada kriptografi asimetri adalah key pribadi yang hanya diketahui oleh pemilik key sendiri.
28
•
Berdasarkan cara plaintext diproses Berdasarkan cara plaintext diproses, algoritma kriptografi dibagi menjadi stream cipher dan block cipher. Stream cipher adalah algoritma kriptografi yang memproses plaintext dari awal hingga akhir sekaligus tanpa mempedulikan panjang plaintext itu sendiri. Block cipher adalah algoritma kriptografi yang hanya memproses plaintext dengan panjang tertentu.
2.3.3
Kriptografi Simetri
2.3.3.1 Pengertian Kriptografi Simetri Kriptografi simetri atau disebut juga single key encryption merupakan asal mula dari kriptografi asimetri. Kriptografi simetri menggunakan key yang sama dalam proses enkripsi dan dekripsi sehingga dapat digambarkan bahwa proses dekripsi adalah kebalikan dari proses enkripsi dengan menggunakan key yang sama.
29
Gambar 2.8 Kriptografi Simetri Sumber Website http://www.antilles.k12.vi.us/math/cryptotut/1vs2key.htm
Kriptografi simetri merupakan algoritma kriptografi yang lebih sederhana dibandingkan dengan kriptografi asimetri, sehingga ada banyak kriptografi simetriyang digunakan saat ini.
2.3.3.2 Advanced Encryption Standard (AES) Advanced Encryption Standard (AES) atau dikenal juga dengan sebutan Rijndael, adalah block cipher yang dianggap sebagai standard enkripsi oleh pemerintah Amerika Serikat. AES tidak sepenuhnya merupakan Rijndael, karena AES hanya mendukung ukuran block 128 bit dan ukuran key 128, 192 dan 256 bit, sedangkan Rijndael dapat menggunakan ukuran key dan block kelipatan 32 bit, di mulai dari 128 bit hingga 256 bit. Secara umum AES terdiri dari 4 langkah: 1. SubBytes, merupakan langkah substitusi non-linear di mana setiap byte diganti sesuai dengan tabel tertentu. Pada langkah SubBytes, setiap byte pada
30
array akan diubah dengan menggunakan S-Box Rijndael. S-Box yang digunakan, diturunkan dari invers multiplikatif terhadap GF (28), yang diketahui mempunyai sifat non-linear.
Gambar 2.9 Langkah SubBytes Pada AES
2. ShiftRows, merupakan langkah transposisi bytet di mana masing-masing baris byte dirotasi dengan jumlah pergeseran tertentu. Jumlah pergeseran baris adalah 0, 1, 2 dan 3 byte untuk masing-masing baris pertama, kedua ketiga dan keempat.
Gambar 2.10 Langkah ShiftRows Pada AES
3. MixColumns, merupakan operasi pencampuran empat byte pada masingmasing kolom untuk menghasilkan empat byte output. Masing-masing kolom dibuat menjadi polinom GF (28) dan kemudian dikalikan dengan modulo
dengan polinomial konstan
.
31
Gambar 2.11 Langkah MixColumns Pada AES
4. AddRoundKey, mengoperasikan byte-byte input dengan round key. Round key didapat melalui algoritma key schedule. Proses kombinasi dilakukan dengan menggunakan operasi
Gambar 2.12 Langkah AddRoundKey Pada AES
2.3.3.3 Substitution Permutation Network (SP-Network) Pada kriptografi, SP-Network adalah sekumpulan operasi matematika yang digunakan dalam algoritma kriptografi block cipher seperti AES. SP-Network ini terdiri dari S-Box dan P-Box yang mengubah block input menjadi block output.
32
Operasi-operasi pada SP-Network merupakan operasi yang dapat dilakukan secara langsung oleh hardware, seperti operasi AND dan XOR. S-Box mengubah bit-bit input menjadi bit-bit output. Pada S-Box yang ideal, perubahan satu bit input dapat berakibat perubahan untuk setengah dari bitbit output, dan masing-masing bit output bergantung pada setiap bit input. Pada kriptografi, S-Box adalah komponen dasar dari kriptografi simetri. Pada block cipher, S-Box digunakan untuk membuat hubungan antara plaintext dan ciphertext menjadi tidak jelas. S-Box biasanya dibuat dengan teliti sehingga dapat bertahan dari cryptanalysis. Pada umumnya, S-Box menggunakan beberapa input m, kemudian mengubahnya menjadi beberapa bit output n (S-Box
). S-Box tersebut
diimplementasikan sebagai suatu tabel. Tabel S-Box pada kriptografi biasanya telah ditentukan, misalnya S-Box Data Encryption Standard (DES), tetapi pada beberapa algoritma kriptografi, S-Box dibuat secara dinamis tergantung pada key, misalnya kriptografi Blowfish atau kriptografi Twofish. Berikut adalah contoh S-Box dari DES (S5): Tabel 2.3 Contoh S-Box Pada DES (S5) S5
Bit‐bit dalam 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 00 0010 1100 0100 0001 0111 1100 1011 0110 1000 0101 0011 1111 1101 0000 1110 1001
Bit‐bit 01 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1100 0011 1001 1000 0110 luar 10 0100 0010 0001 1011 1100 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 1110 11 1011 1000 1100 0111 0001 1110 0010 1101 0110 1111 0000 1001 1100 0100 0101 0011
Dengan diketahui 6 bit input 011011 maka akan didapat 4 bit output 1001. Bit-bit input dibagi menjadi 2 bit luar dan 4 bit dalam (0-1101-1), sehingga
33
menghasilkan 01 dan 1101. Output didapat dari hasil kombinasi tabel antara 01 dan 1101, yaitu 1001.
2.3.3.4 Key Schedule Pada kriptografi, key schedule disebut juga dengan product cipher, merupakan bagian dalam kriptografi simetri yang bertujuan untuk menghasilkan subkey-subkey dengan mengoperasikan key pada tahap-tahap kriptografi tertentu. Tujuan utama dari pembentukan subkey-subkey adalah untuk mempersulit kriptoanalis untuk mendapatkan key.
Gambar 2.13 Key Schedule Pada DES
Beberapa algoritma kriptografi mempunyai key schedule yang sederhana. Misalnya key schedule pada block cipher TEA, hanya memisahkan key 128 bit menjadi empat buah subkey berukuran 32 bit dan menggunakan masing-masing subkey tersebut secara bergantian pada masing-masing tahap.
34
Salah satu key schedule yang banyak digunakan adalah key schedule pada DES. Key berukuran 56 bit pada DES dipisah menjadi dua bagian berukuran 28 bit. Masing-masing bagian dioperasikan secara terpisah, yaitu dengan merotasikan satu atau dua bit, kemudian 48 subkey dipilih dengan menggunakan Permutation Choice 2 (PC2). 48 subkey tersebut dihasilkan oleh masing-masing 24 bit dari 28 bit bagian kiri dan kanan. Banyak algoritma modern menggunakan key schedule yang lebih rumit, seperti penggunaan one-way function untuk memperluas sebuah key menjadi subkey. Algoritma kriptografi Rijndael dan Blowfish kadang-kadang mengawali key schedule dengan random angka.
2.3.4
Kriptografi Asimetri Kriptografi asimetri atau sering disebut sebagai public key encryption menggunakan dua buah key yang berbeda yaitu public key dan private key. Public key merupakan key tanda dari user yang diketahui oleh semua orang yang kemudian akan digunakan untuk proses enkripsi, sedangkan private key bersifat rahasia dan merupakan key yang digunakan untuk proses dekripsi. Pada buku “Golden Bough” karangan Sir James George Frazer, terdapat tulisan “Every Egyptians receive two names, which were known respectively as the true name and the good name, or the great name and the little name; and while the good name or the little name was made public, the true name or the great name appears to have been carefully concealed”. Tulisan tersebut adalah asal mula ilustrasi dari kriptografi asimetri.
35
Pada kriptografi asimetri, pengirim mengenkripsi plaintext dengan menyertakan public key penerima, dan apabila penerima sudah menerima ciphertext, proses dekripsi dilakukan dengan menginput ciphertext yang disertai private key penerima, yang hanya diketahui oleh penerima. Dengan demikian data tersebut aman.
Gambar 2.14 Kriptografi Asimetri Sumber Website http://www.antilles.k12.vi.us/math/cryptotut/1vs2key.htm
RSA adalah sebuah algoritma kriptografi untuk kriptografi asimetri atau disebut juga public key encryption. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. RSA merupakan algoritma kriptografi pertama yang menggunakan konsep message-signing seiringan dengan proses enkripsi, yang merupakan salah satu dari kelebihan besar kriptografi asimetri. RSA banyak digunakan dalam protokol e-commerce, dan
36
dipercaya bahwa aman dengan key yang panjang dan menggunakan implementasi terbaru.
2.4 Rijndael Advanced Encryption Standard (Rijndael AES) Input dan output dari algoritma AES terdiri dari urutan data sebesar 128 bit. Urutan data yang sudah terbentuk dalam satu kelompok 128 bit tersebut disebut juga sebagai blok data atau plaintext yang nantinya akan dienkripsi menjadi ciphertext. Cipher key dari AES terdiri dari key dengan panjang 128 bit, 192 bit, atau 256 bit. Pengantar Matematis Seluruh byte dalam algoritma AES diinterpretasikan sebagai elemen finite field. Elemen finite field ini dapat dikalikan dan dijumlahkan, tetapi hasil dari penjumlahan dan perkalian elemen finite field sangat berbeda dengan hasil dari penjumlahan dan perkalian bilangan biasa. 1. Penjumlahan Penjumlahan dari dua elemen dalam suatu finite field dilakukan dengan menjumlahkan koefisien dari pangkat polinom yang bersesuaian dari dua elemen tersebut. Penjumlahan dilakukan dengan operasi XOR dan dinotasikan dengan ⊕ . Dengan operasi ini, maka 1 ⊕ 1 = 0, 1 ⊕ 0 = 1, 0 ⊕ 1 = 1, dan 0 ⊕ 0 = 0.
Pengurangan dari polinomial identik dengan penjumlahan polinomial. Sebagai alternatif, penjumlahan elemen-elemen pada finite field dapat dijelaskan sebagai penjumlahan modulo 2 dari bit yang bersesuaian dalam byte. Untuk 2 byte {a7a6a5a4a3a2a1a0} dan {b7b6b5b4b3b2b1b0}, hasil penjumlahannya
37
adalah {c7c6c5c4c3c2c1c0} di mana setiap ci = ai ⊕ bi. Contoh dari operasi penjumlahan adalah sebagai berikut : (x6+x4+x2+x+1) ⊕ (x7+x+1) = x7+x6+x4+x2
(notasi polinomial)
{01010111} ⊕ {10000011} = {11010100}
(notasi biner)
{57} ⊕ {83} = {d4}
(notasi hexadesimal)
2. Perkalian Dalam representasi polinomial, perkalian dalam GF(28) yang dinotasikan dengan mengacu pada perkalian modulo polinomial sebuah irreducible polynomial yang berderajat 8. Sebuah polinom bersifat irreducible jika satusatunya pembagi adalah dirinya sendiri dan 1. Untuk algoritma AES, irreducible polynomial ini adalah : m(x) = x8 + x4 + x3 + x + 1 atau dalam notasi hexadesimal adalah {01}{1b}. Sebagai contoh, {57}•{83} = {c1} , karena (x6 + x4 + x2 + x + 1) • (x7 + x + 1)
=
x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x 4 + x 2 + x + 1
=
x13 + x11 + x9 + x8 + x6 + x5+ x4 + x3 + 1
dan x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 modulo (x8 + x4 + x3 + x + 1)
38
x7 + x6 + 1
=
Pengurangan modular oleh m(x) memastikan bahwa hasilnya akan berupa polinomial biner dengan derajat kurang dari 8, sehingga dapat dipresentasikan dengan 1 byte saja.Urutan bit diberi nomor urut dari 0 sampai dengan n-1 di mana n adalah nomor urutan. Urutan data 8 bit secara berurutan disebut sebagai byte di mana byte ini adalah unit dasar dari operasi yang akan dilakukan pada blok data. Dalam algoritma AES, data sepanjang 128 bit akan dibagi-bagi menjadi array byte di mana setiap array byte ini terdiri dari 8 bit data input yang saling berurutan. Array byte ini direpresentasikan dalam bentuk 0 1
Urutan bit input
2
3
4
5
6
7
8
9
10
11
0
Nomor Byte
Nomor Bit pada Byte
7
6
5
4
12
13
14
15
1 3
2
1
0
7
6
5
4
3
... ...
2
1
0
...
:a0a1a2...a15 Di mana: a0 = { input0, input1,..., input7 } a1 = { input8, input9,..., input15 } a15 = { input120, input121,..., input127 } an = { input8n, input8n+1,..., input8n+7 } Operasi algoritma AES dilakukan pada sebuah state di mana state sendiri adalah sebuah array byte dua dimensi. Setiap state pasti mempunyai jumlah baris yang tetap, yaitu 4 baris, sedangkan jumlah kolom tergantung dari besarnya blok data. Baris pada state mempunyai indeks nomor row (r) di mana 0 ≤ r < 4,
39
sedangkan kolom mempunyai indeks nomor column (c) di mana 0 ≤ c < Nb. Nb sendiri adalah besarnya blok data dibagi 32. Pada saat permulaan, input bit pertama kali akan disusun menjadi suatu array byte di mana panjang dari array byte yang digunakan pada AES adalah sepanjang 8 bit data. Array byte inilah yang nantinya akan dimasukkan atau dikopi ke dalam state dengan urutan : s[r,c] = in[r+4c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb Sedangkan dari state akan dikopi ke output dengan urutan : out[r+4c] = s[r,c] untuk 0 ≤ r < 4 dan 0 ≤ c < Nb
Gambar 2.15 Byte Input, Array State, dan Byte Output
40
Penyandian Blok Penyandian blok pada dasarnya adalah proses penyandian terhadap blok data yang jumlahnya sudah ditentukan. Untuk sistem penyandian blok terdapat empat jenis mode operasi, yaitu Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB).
Electronic Code Book (ECB) Mode ECB adalah mode yang paling umum dan paling mudah untuk diimplementasikan. Cara yang digunakan adalah dengan membagi data ke dalam blok-blok data terlebih dahulu yang besarnya sudah ditentukan. Blok-blok data inilah yang disebut plaintext karena blok data ini belum disandikan. Proses enkripsi akan langsung mengolah plaintext menjadi ciphertext tanpa melakukan operasi tambahan. Suatu blok plaintext yang dienkripsi dengan menggunakan kunci yang sama akan menghasilkan ciphertext yang sama.
Gambar 2.16 Mode Operasi ECB
41
Keuntungan dari mode OBC ini adalah kemudahan dalam implementasi dan pengurangan resiko salahnya semua plaintext akibat kesalahan pada satu plaintext. Namun mode ini memiliki kelemahan pada aspek keamanannya. Dengan mengetahui pasangan plaintext dan ciphertext, seorang kriptanalis dapat menyusun suatu code book tanpa perlu mengetahui kuncinya.
Cipher Block Chaining (CBC) Pada CBC digunakan operasi umpan balik atau dikenal dengan operasi berantai (chaining). Pada CBC, hasil enkripsi dari blok sebelumnya adalah feedback untuk enkripsi dan dekripsi pada blok berikutnya. Dengan kata lain, setiap blok ciphertext dipakai untuk memodifikasi proses enkripsi dan dekripsi pada blok berikutnya.
Gambar 2.17 Mode Operasi CBC
Pada CBC diperlukan data acak sebagai blok pertama. Blok data acak ini sering disebut initialization vector atau IV. IV digunakan hanya untuk membuat
42
suatu pesan menjadi unik dan IV tidak mempunyai arti yang penting sehingga IV tidak perlu dirahasiakan.
Cipher Feedback (CFB) Pada mode CBC, proses enkripsi atau dekripsi tidak dapat dilakukan sebelum blok data yang diterima lengkap terlebih dahulu. Masalah ini diatasi pada mode Cipher Feedback (CFB). Pada mode CFB, data dapat dienkripsi pada unit-unit yang lebih kecil atau sama dengan ukuran satu blok. Misalkan pada CFB 8 bit, maka data akan diproses tiap 8 bit.
Gambar 2.18 Mode Operasi CFB
Pada permulaan proses enkripsi, IV akan dimasukkan dalam suatu register geser. IV ini akan dienkripsi dengan menggunakan kunci yang sudah ada. Dari hasil enkripsi tersebut, akan diambil 8 bit paling kiri atau Most Significant Bit untuk di-XOR dengan 8 bit dari plaintext. Hasil operasi XOR inilah yang akan menjadi ciphertext di mana ciphertext ini tidak hanya dikirim untuk ditransmisikan tetapi juga dikirim sebagai feedback ke dalam register geser untuk dilakukan proses enkripsi untuk 8 bit berikutnya.
43
Output Feedback (OFB) Sama pada mode CFB, mode OFB juga memerlukan sebuah register geser dalam pengoperasiannya. Pertama kali, IV akan masuk ke dalam register geser dan dilakukan enkripsi terhadap IV tersebut. Dari hasil proses enkripsi tersebut akan diambil 8 bit paling kiri untuk dilakukan XOR dengan plaintext yang nantinya akan menghasilkan ciphertext. Ciphertext tidak akan diumpan balik ke dalam register geser, tetapi yang akan diumpan balik adalah hasil dari enkripsi IV.
Gambar 2.19 Mode Operasi OFB
2.4.1
Algoritma Rijndael AES Pada algoritma AES, jumlah blok input, blok output, dan state adalah 128 bit. Dengan besar data 128 bit, berarti Nb = 4 yang menunjukkan panjang data tiap baris adalah 4 byte. Dengan panjang kunci 128-bit, maka terdapat sebanyak 3,4 × 1038 = 2128 kemungkinan kunci. Jika komputer tercepat dapat mencoba 1 juta kunci setiap detik, maka akan dibutuhkan waktu 5,4 × 1024 tahun untuk mencoba seluruh kunci. Jika tercepat yang dapat mencoba 1 juta kunci setiap
44
milidetik, maka dibutuhkan waktu 5,4 × 1018 tahun untuk mencoba seluruh kunci. Dengan blok input atau blok data sebesar 128 bit, key yang digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok input. Cipher key pada algoritma AES bisa menggunakan kunci dengan panjang 128 bit, 192 bit, atau 256 bit. Perbedaan panjang kunci akan mempengaruhi jumlah round yang akan diimplementasikan pada algoritma AES ini. Di bawah ini adalah Tabel yang memperlihatkan jumlah round (Nr) yang harus diimplementasikan pada masing-masing panjang kunci. Tidak seperti DES yang berorientasi bit, Rijndael beroperasi dalam orientasi byte. Setiap putaran mengunakan kunci internal yang berbeda (disebut round key). Enciphering melibatkan operasi substitusi dan permutasi.
2.4.1.1 Ekspansi Kunci Algoritma AES mengambil kunci cipher, K, dan melakukan rutin ekspansi kunci (key expansion) untuk membentuk key schedule. Ekspansi kunci menghasilkan total Nb(Nr+1) word. Algoritma ini membutuhkan set awal key yang terdiri dari Nb word, dan setiap round Nr membutuhkan data kunci sebanyak Nb word. Hasil key schedule terdiri dari array 4 byte word linear yang dinotasikan dengan [wi]. SubWord adalah fungsi yang mengambil 4 byte word input dan mengaplikasikan S-Box ke tiap-tiap data 4 byte untuk menghasilkan word output. Fungsi RotWord mengambil word [a0, a1, a2, a3] sebagai input, melakukan permutasi siklik, dan mengembalikan word [a1, a2, a3, a0]. Rcon[i] terdiri dari nilai-nilai yang diberikan oleh [xi-1, {00}, {00}, {00}], dengan xi-1
45
sebagai pangkat dari x (x dinotasikan sebagai {02} dalam field GF(28). Word ke Nk pertama pada ekspansi kunci berisi kunci cipher. Setiap word berikutnya, w[i], sama dengan XOR dari word sebelumnya, w[i-1] dan word Nk yang ada pada posisi sebelumnya, w[i-Nk]. Untuk word pada posisi yang merupakan kelipatan Nk, sebuah transformasi diaplikasikan pada w[i-1] sebelum XOR, lalu dilanjutkan oleh XOR dengan konstanta round, Rcon[i]. Transformasi ini terdiri dari pergeseran siklik dari byte data dalam suatu word RotWord, lalu diikuti aplikasi dari lookup Table untuk semua 4 byte data dari word SubWord.
2.4.1.2 Enkripsi Proses enkripsi pada algoritma AES terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, MixColumns, dan AddRoundKey. Pada awal proses enkripsi, input yang telah dikopikan ke dalam state akan mengalami transformasi byte AddRoundKey. Setelah itu, state akan mengalami transformasi SubBytes, ShiftRows, MixColumns, dan AddRoundKey secara berulang-ulang sebanyak Nr. Proses ini dalam algoritma AES disebut sebagai round function. Round yang terakhir agak berbeda dengan round-round sebelumnya di mana pada round terakhir, state tidak mengalami transformasi MixColumns.
46
Gambar 2.20 Diagram Algoritma Rijndael AES
1
SubBytes SubBytes merupakan transformasi byte di mana setiap elemen pada state akan dipetakan dengan menggunakan sebuah tabel substitusi (S-Box). Hasil yang didapat dari pemetaan dengan menggunakan tabel S-Box ini sebenarnya adalah hasil dari dua proses transformasi bytes, yaitu : 1. Invers perkalian dalam GF(28) adalah fungsi yang memetakan 8 bit ke 8 bit yang merupakan invers dari elemen finite field tersebut. Suatu byte a merupakan invers perkalian dari byte b bila a•b = 1, kecuali {00} dipetakan ke dirinya sendiri. Setiap elemen pada state akan dipetakan pada tabel invers. Sebagai contoh, elemen “01010011” atau {53} akan dipetakan ke {CA} atau “11001010”.
47
2. Transformasi affine pada state yang telah dipetakan. Transformasi affine ini apabila dipetakan dalam bentuk matriks adalah sebagai berikut : ⎡ b 0' ⎢ ' ⎢ b1 ⎢ b 2' ⎢ ' ⎢b3 ⎢b ' ⎢ 4' ⎢b5 ⎢b ' ⎢ 6 ' ⎣⎢ b 7
⎤ ⎡1 ⎥ ⎢1 ⎥ ⎢ ⎥ ⎢1 ⎥ ⎢ ⎥ = ⎢1 ⎥ ⎢1 ⎥ ⎢ ⎥ ⎢0 ⎥ ⎢0 ⎥ ⎢ ⎣⎢ 0 ⎦⎥
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
1
1
1
1
1
0
0
1
1
1
1
1
0
0
1
1
1
1
1⎤ ⎡b0 ⎤ ⎡1 ⎤ ⎢b ⎥ ⎢1 ⎥ 1 ⎥⎥ 1 ⎥ ⎢ ⎢ ⎥ ⎢b 2 ⎥ ⎢0 ⎥ 1⎥ ⎥ ⎢ ⎢ ⎥ ⎥ b3 ⎥ 1⎥ 0 ⎢ + ⎢ ⎥ × ⎥ ⎢ ⎢0 ⎥ ⎥ b4 0 ⎥ ⎢ ⎢ ⎥ ⎥ 0⎥ ⎢b5 ⎥ ⎢1 ⎥ ⎢b ⎥ ⎢1 ⎥ 0⎥ 6 ⎥ ⎢ ⎢ ⎥ ⎥ 1 ⎦⎥ ⎢⎣ 0 ⎥⎦ ⎣⎢ b 7 ⎦⎥
b7 b6 b5 b4 b3 b2 b1 b0 adalah urutan bit dalam elemen state atau array byte di mana b7 adalah most significant bit atau bit dengan posisi paling kiri.
Gambar 2.21 SubBytes()
48
Tabel 2.4 Substitusi (S-Box)
2
ShiftRows Transformasi ShiftRows pada dasarnya adalah proses pergeseran bit di mana bit paling kiri akan dipindahkan menjadi bit paling kanan (rotasi bit). Transformasi ini diterapkan pada baris 2, baris 3, dan baris 4. Baris 2 akan mengalami pergeseran bit sebanyak satu kali, sedangkan baris 3 dan baris 4 masing-masing mengalami pergeseran bit sebanyak dua kali dan tiga kali.
Gambar 2.22 Transformasi ShiftRows()
49
3
MixColumns MixColumns mengoperasikan setiap elemen yang berada dalam satu kolom pada state. Elemen pada kolom dikalikan dengan suatu polinomial tetap a(x) = {03}x3 + {01}x2 + {01}x + {02}. Secara lebih jelas, transformasi MixColumns dapat dilihat pada perkalian matriks berikut ini : ⎡ s 0' , c ⎢ ' ⎢ s 1,c ⎢s ' ⎢ 2' , c ⎢⎣ s 3 , c
⎤ ⎡ 02 ⎥ ⎢ ⎥ = ⎢ 01 ⎥ ⎢ 01 ⎥ ⎢ ⎥⎦ ⎣ 03
03
01
02 01
03 02
01
01
01 ⎤ ⎡ s 0 , c ⎢ 01 ⎥⎥ ⎢ s 1 , c 03 ⎥ ⎢⎢ s 2 , c ⎥ 02 ⎦ ⎢ s 3 , c ⎣
⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦
Melakukan proses penambahan pada operasi ini berarti melakukan operasi bitwise XOR. Maka hasil dari perkalian matriks diatas dapat dianggap seperti perkalian yang ada di bawah ini : s 0' ,c = ({02} • s o,c ) ⊕ ({03} • s1,c ) ⊕ s 2,c ⊕ s 3,c s1' ,c = s 0,c ⊕ ({02} • s1,c ) ⊕ ({03} • s 2,c ) ⊕ s 3,c s 2' ,c = s 0,c ⊕ s1,c ⊕ ({02} • s 2,c ) ⊕ ({03} • s 3,c ) s 3' ,c = ({03} • s 0,c ) ⊕ s1,c ⊕ s 2,c ⊕ ({02} • s 3,c )
Gambar 2.23 MixColumns()
50
4
AddRoundKey Pada proses AddRoundKey, sebuah round key ditambahkan pada state dengan operasi bitwise XOR. Setiap round key terdiri dari Nb word di mana tiap word tersebut akan dijumlahkan dengan word atau kolom yang bersesuaian dari state sehingga :
[s
' ' ' ' 0,c , s1,c , s 2,c , s 3,c
] = [s
0,c , s1,c , s 2,c , s 3,c
]⊕ [wround*Nb+c ] untuk 0 ≤ c ≤ Nb
[wi] adalah word dari key yang bersesuaian di mana i = round*Nb+c. Transformasi AddRoundKey diimplementasikan pertama kali pada round = 0, di mana key yang digunakan adalah initial key (key yang dimasukkan oleh kriptografer dan belum mengalami proses key expansion).
Gambar 2.24 AddRoundKey()
2.4.1.3 Dekripsi Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang berlawanan untuk menghasilkan Inverse cipher yang mudah dipahami
51
untuk algoritma AES. Transformasi byte yang digunakan pada invers cipher adalah InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey. Algoritma dekripsi dapat dilihat pada skema berikut ini :
Gambar 2.25 Diagram Alir Proses Dekripsi
1
InvShiftRows InvShiftRows adalah transformasi byte yang berkebalikan dengan transformasi ShiftRows. Pada transformasi InvShiftRows, dilakukan pergeseran bit ke kanan sedangkan pada ShiftRows dilakukan pergeseran bit ke kiri. Pada baris kedua, pergeseran bit dilakukan sebanyak 3 kali, sedangkan pada baris ketiga dan baris keempat, dilakukan pergeseran bit sebanyak dua kali dan satu kali.
52
Gambar 2.26 Transformasi InvShiftRows()
2
InvSubBytes InvSubBytes juga merupakan transformasi bytes yang berkebalikan dengan transformasi SubBytes. Pada InvSubBytes, tiap elemen pada state dipetakan dengan menggunakan Tabel Inverse S-Box. Tabel ini berbeda dengan tabel S-Box di mana hasil yang didapat dari Tabel ini adalah hasil dari dua proses yang berbeda urutannya (Tabel 2.5 : Inverse S-box), yaitu transformasi affine terlebih dahulu, baru kemudian perkalian invers dalam GF(28). ⎡ b 7' ⎤ ⎡ 0 ⎢ '⎥ ⎢ ⎢b 6 ⎥ ⎢0 ⎢b ' ⎥ ⎢1 ⎢ 5' ⎥ ⎢ ⎢b 4 ⎥ ⎢ 0 ⎢b ' ⎥ = ⎢0 ⎢ 3⎥ ⎢ ⎢ b 2' ⎥ ⎢ 1 ⎢ '⎥ ⎢ ⎢ b1 ⎥ ⎢ 0 ⎢⎣ b 0' ⎥⎦ ⎣⎢ 1
1 0
0 1
1 0
0 1
0 0
1 0
0 1
0 0
1 0
0 1
1 0
0 1
0 0
1 0
0 1
0 0
1 0
0 1
1
0
0
1
0
0
0
1
0
0
1
0
0 ⎤ ⎡b 7 ⎤ ⎢ ⎥ 1 ⎥⎥ ⎢ b 6 ⎥ 0 ⎥ ⎢b5 ⎥ ⎥ ⎢ ⎥ 0 ⎥ ⎢b 4 ⎥ × + 1 ⎥ ⎢b3 ⎥ ⎥ ⎢ ⎥ 0 ⎥ ⎢b 2 ⎥ 1 ⎥ ⎢ b1 ⎥ ⎥ ⎢ ⎥ 0 ⎦⎥ ⎣⎢ b 0 ⎦⎥
⎡0 ⎤ ⎢0 ⎥ ⎢ ⎥ ⎢0 ⎥ ⎢ ⎥ ⎢0 ⎥ ⎢0 ⎥ ⎢ ⎥ ⎢1 ⎥ ⎢0 ⎥ ⎢ ⎥ ⎣⎢ 1 ⎦⎥
Perkalian invers yang dilakukan pada transformasi InvSubBytes ini sama dengan erkalian invers yang dilakukan pada transformasi SubBytes.
53
Tabel 2.5 Inverse S-box
3
InvMixColumns Pada InvMixColumns, kolom-kolom pada tiap state (word) akan dipandang sebagai polinom atas GF(28) dan mengalikan modulo x4 + 1 dengan polinom tetap a-1(x) yang diperoleh dari : a-1(x)= {0B}x3 + {0D}x2 + {09}x + {0E}. Atau dalam matriks :
s ' ( x) = a( x) ⊗ s ( x) ⎡ s0' ,c ⎤ ⎡ 0 E 0 B 0 D 09 ⎤ ⎡ s0,c ⎤ ⎢ ' ⎥ ⎢ ⎥⎢ ⎥ ⎢ s1,c ⎥ = ⎢ 09 0 E 0 B 0 D⎥ ⎢ s1,c ⎥ ⎢s ' ⎥ ⎢0 D 09 0 E 0 B ⎥ ⎢ s ⎥ ⎢ 2' ,c ⎥ ⎢ ⎥ ⎢ 2 ,c ⎥ ⎢⎣ s3,c ⎥⎦ ⎣ 0 B 0 D 09 0 E ⎦ ⎢⎣ s3,c ⎥⎦
54
Hasil dari perkalian diatas adalah :
s0' ,c = ({0 E} • so,c ) ⊕ ({0 B} • s1,c ) ⊕ ({0 D} • s 2,c ) ⊕ ({09} • s3,c ) s1' ,c = ({09} • so,c ) ⊕ ({0 E} • s1,c ) ⊕ ({0 B} • s 2,c ) ⊕ ({0 D} • s3,c ) s2' ,c = ({0 D} • so,c ) ⊕ ({09} • s1,c ) ⊕ ({0 E} • s 2,c ) ⊕ ({0 B} • s3,c ) s3' ,c = ({0 B} • so,c ) ⊕ ({0 D} • s1,c ) ⊕ ({09} • s 2,c ) ⊕ ({0 E} • s3,c )
4
InvAddRoundKey Transformasi InvAddRoundKey tidak mempunyai perbedaan dengan transformasi AddRoundKey karena pada transformasi ini hanya dilakukan operasi penambahan sederhana dengan menggunakan operasi bitwise XOR.
2.5 Software Development Life Cycle Menurut Turban, et. al. (2001, p477-486), Software Development Life Cycle (SDLC) adalah kerangka terstruktur yang terdiri dari beberapa proses yang berurutan yang diperlukan untuk membangun suatu sistem informasi. Pendekatan waterfall digunakan untuk menggambarkan SDLC. SDLC dirancang dengan tujuan untuk membangun alur pemrograman yang terstruktur dan untuk membantu manajemen proyek dalam perhitungan estimasi waktu dan sumber yang dibutuhkan suatu proyek.
55
Gambar 2.27 Eight Stage SDLC Sumber: Turban, et. al. (2001, p. 477)
Tahap-tahap SDLC adalah sebagai berikut: 1. System Investigation System Investigation adalah tahap yang mengutamakan pembelajaran terhadap segala kemungkinan yang dapat terjadi. Dengan pembelajaran maka suatu sistem dapat terhindar dari kesalahan yang dapat mengakibatkan peningkatan usaha, waktu dan jumlah pengeluaran. 2. System Analysis System Analysis adalah tahap yang menganalisis masalah yang perlu diselesaikan. Tahap ini mendefinisikan permasalahan, mengidentifikasikan penyebab, menspesifikasikan solusi, serta mengidentifikasikan informasiinformasi yang diperlukan. 3. System Design
56
System Design adalah tahap yang menjelaskan bagaimana suatu sistem akan bekerja. Hasil dari tahap ini adalah output, input dan user interface dari sistem serta hardware, software, database dan prosedur. 4. Programming Programming adalah tahap yang menerjemahkan spesifikasi desain sistem menjadi bahasa pemrograman yang dapat dimengerti oleh komputer. 5. Testing Testing adalah tahap yang digunakan untuk memeriksa apakah pemrograman telah menghasilkan hasil yang diinginkan dan diharapkan atas situasi tertentu. Testing dirancang untuk mendeteksi adanya kesalahan coding. 6. Implementation Implementation adalah proses perubahan dari penggunaan sistem lama menjadi sistem yang baru. 7. Operation and Maintenance Operation and Maintenance adalah tahap untuk memelihara sistem baru yang akan dioperasikan dalam suatu periode waktu.
2.6 Unified Modelling Language Unified Modelling Language (UML) adalah bahasa grafis yang standar untuk memodelkan software object oriented (Lethbridge, 2002, p.151). UML mengandung tipe diagram yang bervariasi, termasuk: 1. Class Diagram 2. Sequence Diagram 2.6.1
Class Diagram
57
Class diagram adalah salah satu diagram struktur statis yang menunjukkan struktur dari sistem dengan menunjukkan class-class yang ada pada sistem, attribute dan method class-class tersebut dan hubungan antar class. Hubungan class terdiri dari link, association, aggregation dan composition.
Gambar 2.28 Notasi Class Sumber: Lethbridge (2002, p.439)
Gambar 2.29 Hubungan Class Pada Class Diagram
Link adalah hubungan dasar antar objek yang menggambarkan garis penghubung antara dua atau lebih class. Link merupakan bagian dari association. Association menggambarkan kumpulan link yang saling berhubungan. Binary Association (dengan dua titik akhir) biasanya digambarkan sebagai sebuah garis, dimana masing-masing titik akhir dihubungkan dengan sebuah class. Association memiliki dua atau lebih titik akhir.
58
Gambar 2.30 Hubungan Association Pada Class Diagram
Aggregation adalah lambang dari “memiliki sebuah” atau hubungan association, tetapi aggregation lebih spesifik daripada association. Meskipun aggregation merupakan perluasan association, hubungan aggregation hanya dapat melibatkan dua class. Aggregation terjadi bila suatu class mengandung satu atau lebih objek dari class lain, tetapi class yang dikandung tidak memiliki life cycle dependency dengan class yang mengandung.
Gambar 2.31 Hubungan Aggregation Pada Class Diagram
Composition merupakan hubungan aggregation di mana class yang dikandung telah memiliki life cycle dependency dengan class yang mengandung.
Gambar 2.32 Hubungan Composition Pada Class Diagram
59
2.6.2
Sequence Diagram Menurut Lethbridge (2002, p270), sequence diagram adalah diagram yang menunjukkan urutan proses dan penukaran pesan oleh sejumlah objek (dan seorang aktor yang optional) dalam melakukan tugas tertentu. Sequence diagram menggambarkan skenario runtime sederhana secara grafis.
Gambar 2.33 Notasi Object, Lifetime dan Activation Sumber: Lethbridge (2002, p.440)
Gambar 2.34 Contoh Sequence Diagram
60
2.7 State Transition Diagram 2.7.1
Pengertian STD STD merupakan suatu modeling tool yang menggambarkan sifat ketergantungan sistem. Pada mulanya hanya digunakan untuk menggambarkan suatu sistem yang memiliki sifat real time seperti proses control, telephone switching system, dan control system.
2.7.2
Simbol dan Sifat STD State adalah kumpulan keadaan dan atribut yang mencirikan objek pada waktu atau kondisi tertentu. Disimbolkan dengan segi empat.
Gambar 2.35 Notasi State
Transition adalah simbol perpindahan keaktifan dari sebuah objek menjadi objek lain. Transition disimbolkan dengan anak panah.
Gambar 2.36 Notasi Transition
Condition adalah suatu keadaan pada lingkungan eksternal yang dapat dideteksi oleh sitem. Condition menggambarkan syarat yang biasanya digunakan dalam hubungan seleksi. Action adalah yang dilakukan sistem bila terjadi
61
perubahan state atau merupakan reaksi terhadap kondisi. Aksi akan menghasilkan keluaran atau output. Display adalah hasil yang merupakan STD.
2.8 User Interface Design User Interface (UI) Design adalah perancangan tampilan antarmuka yang bersifat visual dari suatu aplikasi agar aplikasi tersebut dapat berinteraksi dengan baik dengan user dan dapat digunakan dengan maksimal. Proses perancangan UI harus mengandung arti dari unsur-unsur visual yang seimbang, yang dapat memodelkan inti dari operasi aplikasi yang akan dijalankan. Selain itu perancangan UI yang baik juga harus dapat membuat aplikasi hingga mudah digunakan dan dapat disesuaikan dengan kebutuhan masing-masing user. Dalam perancangan UI, terdapat delapan aturan emas yang mendukung sebuah perancangan UI yang baik. Delapan aturan emas, yang dijabarkan oleh Ben Scneiderman, tersebut antara lain: 1. Usaha untuk konsistensi dalam tampilan. 2. Memungkinkan user yang rutin untuk menggunakan shortcut. 3. Memberikan umpan balik yang informatif. 4. Memunculkan dialog box pada penutupan. 5. Mempunyai error-handling sederhana. 6. Memungkinkan user untuk membatalkan tindakan. 7. Mendukung komponen dan control. 8. Mengurangi penggunaan memori jangka pendek.