bab 2 landasan teori 2.1 steganografi -...
Post on 21-Mar-2019
223 Views
Preview:
TRANSCRIPT
BAB 2
LANDASAN TEORI
2.1 Steganografi
Steganografi merupakan ilmu dan seni yang mempelajari cara
penyembunyian informasi pada suatu media sedemikian rupa 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 sewaktu-
waktu 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 tak-
tampak (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 sub-
bagian 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
4 TAMPILKAN bilangan pertama
5 TAMPILKAN bilangan kedua
2.3.2 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 masing-
masing 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 bit-
bit 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)
Bit‐bit dalam S5
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
01 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1100 0011 1001 1000 0110
10 0100 0010 0001 1011 1100 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 1110
Bit‐bit luar
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 satu-
satunya 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 + x4 + x2 + 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
Urutan bit input 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ...
Nomor Byte 0
1 ...
Nomor Bit pada Byte 7
6
5
4
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 :
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
+
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
×
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
01100011
1111100001111100001111100001111110001111110001111110001111110001
7
6
5
4
3
2
1
0
'7
'6
'5
'4
'3
'2
'1
'0
bbbbbbbb
bbbbbbbb
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 :
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
c
c
c
c
c
c
c
c
ssss
ssss
,3
,2
,1
,0
',3
',2
',1
',0
02010103030201010103020101010302
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 :
)}02({)}03({
)}03({)}02({
)}03({)}02({
)}03({)}02({
,3,2,1,0',3
,3,2,1,0',2
,3,2,1,0',1
,3,2,1,',0
ccccc
ccccc
ccccc
ccccoc
sssss
sssss
sssss
sssss
•⊕⊕⊕•=
•⊕•⊕⊕=
⊕•⊕•⊕=
⊕⊕•⊕•=
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 :
[ ] [ ] [ ] Nbcwssssssss cNbroundcccccccc 0 untuk ≤≤⊕= +*,3,2,1,0',3
',2
',1
',0 ,,,,,,
[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).
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
+
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
×
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
10100000
0010010110010010010010011010010001010010001010011001010001001010
0
1
2
3
4
5
6
7
'0
'1
'2
'3
'4
'5
'6
'7
bbbbbbbb
bbbbbbbb
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 :
)()()(' xsxaxs ⊗=
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
c
c
c
c
c
c
c
c
ssss
EDBBEDDBE
DBE
ssss
,3
,2
,1
,0
',3
',2
',1
',0
00900000900000909000
54
Hasil dari perkalian diatas adalah :
)}0({)}09({)}0({)}0({
)}0({)}0({)}09({)}0({
)}0({)}0({)}0({)}09({
)}09({)}0({)}0({)}0({
,3,2,1,',3
,3,2,1,',2
,3,2,1,',1
,3,2,1,',0
ccccoc
ccccoc
ccccoc
ccccoc
sEssDsBs
sBsEssDs
sDsBsEss
ssDsBsEs
•⊕•⊕•⊕•=
•⊕•⊕•⊕•=
•⊕•⊕•⊕•=
•⊕•⊕•⊕•=
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 informasi-
informasi 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.
top related