LANDASAN TEORI
Teknik untuk membuat pesan menjadi tidak dapat dibaca disebut sebagai
enkripsi. Pesan yang tidak dapat dibaca tersebut disebut sebagai ciphertext. Proses
yang merupakan kebalikan dari enkripsi disebut sebagai dekripsi. Jadi, enkripsi
merupakan proses untuk mengubah pesan yang dapat dibaca (plaintext) menjadi suatu
pesan yang tidak dapat dibaca (ciphertext). Sedangkan deskripsi merupakan suatu
proses untuk mengembalikan pesan yang tidak dapat dibaca tadi (ciphertext), menjadi
dapat dibaca kembali (plaintext). Secara matematis, proses umum enkripsi dijelaskan
sebagai berikut:
E (P) = C
Jadi, proses enkripsi (E) plaintext (P) akan menghasilkan ciphertext C. Sedangkan
proses umum deskripsi adalah sebagai berikut:
D (C) = P
Proses dekripsi (D) ciphertext (C), akan menghasilkan plaintext (P). Bagan di bawah
ini akan menggambarkan lebih jelas lagi mengenai proses umum yang terjadi didalam
kriptografi:
Kriptografi memiliki sejarah yang panjang dan mengagumkan. Penulisan rahasia ini
dapat dilacak kembali ke 3000 tahun SM saat digunakan oleh bangsa Mesir. Mereka
menggunakan hieroglyphcs untuk menyembunyikan tulisan dari mereka yang tidak
diharapkan. Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berarti
ukiran rahasia. Hieroglyphs berevolusi menjadi hieratic, yaitu stylized script yang
lebih mudah untuk digunakan [1].
Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Spartan dalam
bentuk sepotong papirus atau perkamen dibungkus dengan batang kayu. Sistem ini
disebut Scytale.
Untuk mencapai hal diatas, perlu ditetapkan suatu tujuan sebagai titik tolak
dalam pengembangan ilmu kriptografi itu sendiri. Menurut Rhee (1994) tujuan dari
kriptografi dapat memenuhi satu atau lebih dari hal-hal berikut ini:
1. Melakukan proteksi terhadap sistem komputer yang khusus ditujukan untuk
pemrosesan dan penyimpanan data.
2. Melakukan pencegahan terhadap tindakan yang tidak mendapat otoritas untuk
mengambil ataupun menghapus suatu informasi dari pesan-pesan yang dikirim
melalui saluran terbuka.
3. Melakukan pencegahan terhadap tindakan yang tidak mendapat otoritas untuk
memodifikasi data ataupun informasi pada saluran terbuka.
Algoritma simetri disebut juga sebagai algoritma konvensional adalah algoritma yang
menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Disebut
konvensional karena algoritma yang biasa digunakan orang sejak berabad-abad yang
lalu adalah algoritma jenis ini. Algoritma simetri sering juga disebut sebagai algoritma
kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, dan mengharuskan
pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka dapat
berkomunikasi dengan aman. Keamanan algoritma simetri tergantung pada kunci,
membocorkan kunci berarti bahwa orang lain dapat mengenkrip dan mendekrip pesan.
Agar komunikasi tetap aman, kunci harus tetap dirahasiakan [8].
Kriptografi yang termasuk algoritma kunci simetri adalah OTP, DES, RC2,
RC4, RC5, RC6, Message Digest (MD), IDEA, Twofish, Magenta, FEAL, SAFER,
LOKI, CAST, Rinjael (AES), Blowfish, GOST, AS, Kasumi, dan lain-lain.
Gambar 2.4 memperlihatkan kriptografi simetri yang biasa disebut juga sebagai
kriptografi kunci konvensional. Pesan plaintext P, misalnya SAYA dikodekan
(dienkrip) menjadi ciphertext 60oe menggunakan password (kunci K) TES. Untuk
mengembalikan cipher 60oe menjadi SAYA dilakukan proses dekripsi dengan kunci
yang sama yaitu TES. Karena kunci yang digunakan sama, disebut kriptografi kunci
Algoritma simetri dapat dibagi dalam 2 (dua) kategori. Jenis pertama beroperasi
pada plaintext yang berupa satu bit tunggal pada satu waktu, yang disebut Stream
Algorithms (algoritma aliran atau Stream Cipher). Jenis ke dua beroperasi pada
plaintext dalam grup bit-bit. Grup bit-bit ini disebut blok. Algoritmanya disebut
sebagai algoritma blok atau kode rahasia blok.
Dalam sistem ini, kunci enkripsi sering disebut kunci publik, sementara kunci
dekripsi sering disebut kunci privat. Kunci privat disebut kunci rahasia. Kriptografi
yang termasuk dalam algoritma asimetri adalah ECC, LUC, RSA, EI Gamal dan DH.
2.3.1 Interruption
Interruption terjadi ketika data yang dikirimkan dari A tidak sampai pada orang yang
berhak (B). Interruption merupakan pola penyerangan terhadap sifat availability
(ketersediaan data).
A B
2.3.2 Interception
Serangan ini terjadi pihak ke tiga C berhasil membaca data yang dikirimkan.
Interception merupakan pola penyerangan terhadap sifat confidentially (kerahasiaan
data).
A B
Pada serangan ini pihak ke tiga C berhasil merubah pesan yang dikirimkan.
Modification merupakan pola penyerangan terhadap sifat integrity (keaslian data).
A
B
2.3.4 Fabrication
A B
Enkripsi dan dekripsi diibaratkan seperti dua sisi mata uang. Pesan-pesan dibuat
seolah-olah tidak bermakna dengan merubahnya menurut prosedur tertentu (enkripsi),
dan dibuat bermakna kembali dengan menggunakan prosedur yang biasanya bersifat
kebalikannya (dekripsi). Dalam dunia kriptografi, pesan yang akan dirahasiakan
disebut plaintext, sedangkan bentuk pesan hasil proses enkripsi disebut ciphertext.
Berikut ini akan dicontohkan prosedur enkripsi dari masing-masing teknik dasar
untuk melakukan pengacakan data terhadap plaintext yang sama, yaitu ”POLA
PENYARINGAN TRANSMISI DATA” [3].
2.4.1 Substitusi
Langkah pertama teknik ini adalah membuat suatu tabel substitusi. Tabel substitusi
dapat dibuat sesuai dengan yang dikehendaki, dengan catatan penerima pesan
memiliki tabel yang sama untuk keperluan dekripsi. Tabel substitusi dibuat secara
acak, sehingga semakin sulit pemecahan ciphertext oleh orang yang tidak
berhak.Tabel Substitusi dapat dilihat pada Tabel 2.1.
Tabel substitusi di atas dibuat secara acak. Tanda spasi akan diganti dengan
tanda ”#”. Dengan menggunakan tabel tersebut, dari plaintext di atas akan dihasilkan
ciphertext ”X2HB0XQD9AMPNAD07MBDVYPVP0KB7B”. Dengan menggunakan
tabel substitusi yang sama secara dengan arah terbalik, plaintext dapat diperoleh
kembali ciphertext-nya [3].
Sistem enkripsi terkadang membagi plaintext menjadi blok-blok yang terdiri dari
beberapa karakter yang kemudian dienkripsikan secara independent. Plaintext yang
dienkripsikan dengan menggunakan teknik blocking adalah:
Dengan menggunakan enkripsi blocking dipilih jumlah lajur dan kolom untuk
penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan
teknik ini. Plaintext dituliskan secara vertikal ke bawah berurutan pada lajur, dan
dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Ciphertext-nya adalah
hasil pembacaan plaintext secara horizontal berurutan sesuai dengan bloknya. Jadi
ciphertext yang dihasilkan dengan teknik adalah: ”PY SOATILRR AIAD
NNAPPGSTEAMANNI”. Plaintext dapat pula ditulis secara horizontal dan
ciphertext-nya adalah hasil pembacaan secara vertikal.
Mode-mode operasi yang biasa digunakan dalam kriptografi ada 4 (macam). Mode-
mode operasi ini bertujuan sama yaitu untuk mengatasi keamanan cara penyandian
dan juga untuk mempermudah penyandian. Adapun mode tersebut [5]:
1. Mode Electronic Code Book (ECB)
2. Mode Cipher Blok Chaining (CBC)
Pada mode Electronic Code Book (ECB) ini, suatu blok cipher yang panjangnya
dibagi dalam bentuk urutan binari menjadi satu blok tanpa mempengaruhi blok-blok
lain. Satu blok terdiri dari 64 bit atau 128 bit. Setiap blok merupakan bagian dari
pesan yang dienkripsi.
Mode ini merupakan suatu enkripsi yang sederhana, kerusakan satu blok data
tidak mempengaruhi blok-blok lainnya. Pada dasarnya sifat yang paling mendasar dari
mode ECB adalah blok plaintext yang sama akan dikodekan menjadi cipher yang
sama. Secara matematis, enkripsi dengan mode ECB dinyatakan sebagai berikut [5]:
Ci = Ek (Pi)
dan dekripsi sebagai:
Pi = DK (Ci)
Sistem mode Cipher Blok Chaining (CBC) adalah plaintext yang sama akan dienkripsi
kedalam bentuk cipher yang berbeda, karena blok yang satu tidak berhubungan
dengan blok yang lainnya. Pada mode CBC, input untuk enkripsi merupakan hasil dari
XOR antara plaintext dengan ciphertext sebelumnya. Kunci digunakan pada setiap
blok yang ada.
Untuk mendekripsi sebuah pesan, setiap blok cipher dari algoritma dekripsi
merupakan hasil dari XOR dengan blok sebelumnya untuk mendapatkan blok dari
plaintext [5].
Bentuk formal dari hal di atas seperti :
C1=Ek (IV ⊕ P1)
P1= Dk(C1) ⊕ IV
Mode Cipher FeedBack (CFB) ini digunakan untuk melakukan enkripsi pada stream
cipher, mode ini tidak memerlukan padding bit (bit tambahan) karena jumlah panjang
blok sama dengan jumlah panjang plaintext yang ada. Mode CFB memiliki input 8 bit
yang diproses setiap enkripsi dan ciphertext sebelumnya digunakan sebagai input dari
algoritma enkripsi untuk menghasilkan algoritma yang diacak. Output diambil dari 8
bit paling kiri untuk dilakukan operasi XOR dengan plaintext dengan panjang 8 bit
untuk dapat menghasilkan ciphertext yang berikutnya. Input dari enkripsi terdiri dari 8
bit yang digeser ke kiri sebanyak 8 bit. Karena terjadi penggeseran, kekosongan yang
ada akan diisi oleh cipher sebelumnya. Input dari enkripsi pada awalnya adalah IV
(initial value) [5].
Mode Output Feed Back (OFB) tidak mempengaruhi blok yang lain walaupun terjadi
error, satu bit yang error pada ciphertext hanya akan mempengaruhi satu bit plaintext
pada terjadinya proses dekripsi [5].
Suatu algoritma dikatakan aman apabila algoritma itu memiliki keadaan seperti
berikut [3]:
1. Jika harga untuk menjebol algoritma lebih besar daripada nilai informasi yang
dibuka, maka algoritma aman. Misalkan diperlukan komputer senilai 1 juta dollar
untuk menjebol algoritma senilai 100 ribu dollar, algoritma itu aman.
2. Jika waktu yang diperlukan untuk menjebol algoritma tersebut lebih lama daripada
lamanya waktu yang diperlukan oleh informasi tersebut harus tetap aman, maka
algoritma aman. Misalnya waktu untuk membobol sebuah kartu kredit 1 tahun,
sedangkan sebelum setahun kartu tersebut sudah tidak berlaku lagi, algoritma itu
aman.
3. Jika jumlah data yang dienkrip dengan kunci dan algoritma yang sama lebih
sedikit dari jumlah data yang diperlukan untuk menembus algoritma tersebut,
Jika dalam proses pengiriman pesan saluran komunikasi yang digunakan sudah
aman dan kunci hanya diketahui oleh pihak yang berhak, sekarang masalahnya siapa
yang menjamin bahwa pesan yang dikirim memang berasal dari orang yang berhak.
Atau bagaimana meyakinkan pihak yang akan menerima kiriman data bahwa memang
benar-benar berasal dari pengirim aslinya. Untuk mengatasi validitas pengiriman
tersebutlah digunakan teknologi Tanda Tangan Digital.
Tanda tangan digital berfungsi untuk melakukan validasi terhadap setiap data
yang dikirim. Dalam pengiriman data, walaupun saluran komunikasi yang digunakan
sudah sangat aman, tentu saja perlu diperhatikan validitasnya. Validitas tersebut
berkaitan dengan pertanyaan apakah data yang sampai ke penerima dalam keadaan
utuh dengan aslinya saat dikirim tanpa sedikitpun adanya gangguan-gangguan dari
pihak lain. Tanda tangan digital menggunakan algoritma yang disebut dengan istilah
hashing algorithm. Fungsi tersebut akan menghasilkan sebuah kombinasi karakter
yang unik yang disebut dengan Message Digest.
Tanda tangan digital mampu memenuhi tiga dari empat aspek keamanan
kriptografi, yaitu aspek integritas data, otentikasi, dan antipenyangkalan. Otentikasi
dan integritas data dijelaskan sebagai berikut:
1. Apabila pesan M yang diterima sudah berubah, maka MD’ yang dihasilkan
dari fungsi hash berbeda dengan MD semula. Ini berarti pesan tidak asli lagi.
2. Apabila pesan M tidak berasal dari orang yang sebenarnya, maka message
digest MD yang dihasilkan dari persamaan 3 berbeda dengan message digest
MD’ yang dihasilkan pada proses verifikasi (hal ini karena kunci publik yang
digunakan oleh penerima pesan tidak berkoresponden dengan kunci rahasia
pengirim).
3. Bila MD = MD’, ini berarti pesan yang diterima adalah pesan yang asli dan
orang yang mengirim dalah orang yang sebenarnya .
Fungsi hash satu arah merupakan fungsi satu arah (one way function) yang dapat
menghasilkan ciri (signature) dari data (berkas, stream). Perubahan satu bit saja akan
mengubah keluaran hash secara drastis. Fungsi hash biasanya digunakan untuk
menjamin integritas dan digital signature. Fungsi hash satu arah memiliki banyak
nama diantaranya fungsi pembanding, fungsi penyusutan, intisari pesan, sidik jari,
message integrity check (MIC) atau pemeriksa keutuhan pesan dan manipulation
detection code (MDC) atau pendeteksi penyelewengan kode [4].
Fungsi hash satu arah dibuat berdasarkan ide tentang fungsi pemampatan.
Fungsi hash adalah sebuah fungsi atau persamaan matematika yang mengambil input
dengan panjang variabel (pre image) dan mengubahnya menjadi panjang yang tetap
(biasanya lebih pendek), keluarannya biasa disebut nilai hash. Metode fungsi hash
satu arah adalah berfungsi melindungi data dari modifikasi.
Nilai hash ini bersama blok pesan berikutnya menjadi masukan berikutnya bagi
fungsi pemampatan. Nilai hash keseluruhan adalah nilai hash dari blok paling akhir.
Pre-image sedapatnya mengandung beberapa binary yang menggambarkan panjang
dari masukan pesan. Teknik ini digunakan untuk mengatasi masalah yang dapat terjadi
bila pesan yang tidak sama mempunyai nilai hash yang sama. Metode ini disebut MD-
strengthening atau penguatan MD. Fungsi Hash satu arah dapat dilihat pada Gambar
2.10.
M
Fungsi Hash satu Arah h1
hn
Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat
keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data. Umumnya
digunakan untuk keperluan autentikasi dan integritas data. Fungsi hash adalah fungsi
yang secara efisien mengubah string input dengan panjang berhingga menjadi string
output dengan panjang tetap yang disebut nilai hash.
Sifat-Sifat Fungsi Hash Kriptografi [7]:
a. Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit
(secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
b. Tahan preimej kedua (Second preimage resistant): bila diketahui input m1
maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan
hash(m1) = hash(m2).
Mula-mula pesan diberi tambahan untuk membuat panjangnya menjadi kelipatan 512
bit (L x 512). Jumlah bit data asal adalah K bit. Tambahkan bit ‘1’ kemudian
tambahkan bit ‘0’ secukupnya sampai 64 bit kurangnya dari kelipatan 512(512-
64=448), yang disebut juga sebagai kongruen dengan 448 (mod 512). Akhirnya
tambahkan 64 bit yang menyatakan panjang pesan sebelum diberi tambahan. Pesan
dibagi-bagi menjadi blok-blok berukuran 512 bit dan setiap blok diolah. Keluaran
setiap blok digabungkan dengan keluaran blok berikutnya. Sehingga akhirnya
diperoleh digest. Pengubahan satu huruf dapat menghasilkan cipher yang jauh
berbeda.
DSA menggunakan fungsi hash SHA (Secure Hash Algorithm) untuk mengubah pesan
menjadi intisari pesan yang berukuran 160 bit. DSA dan algoritma tanda-tangan digital
lainnya mempunyai tiga proses utama yaitu [2]:
1. Pembangkitan pasangan kunci (Key Pair Generation)
2. Pembangkitan tanda-tangan digital (Digital Signature Generation)
3. Verifikasi tanda-tangan digital (Digital Signature Verification)
Digital Signature Algorithm (DSA) merupakan varian dari skema tanda tangan
ElGamal. Pada bulan Agustus 1991, NIST (The National Institute of Standard and
Technology) mengumumkan bahwa algoritma tanda tangan digital DSA dijadikan
sebagai standar dari Digital Signature Standard (DSS). Perbedaan mendasar dengan
tanda tangan ElGamal adalah jumlah perhitungan eksponensial pada proses verifikasi
dikurangi dari tiga menjadi dua. Perbedaan yang terpenting adalah banyaknya digit
eksponen dibatasi 160 bit, tidak seperti tanda tangan ElGamal yang tidak dibatasi,
tergantung pada pemilihan bilangan prima p, paling tidak sebesar 768 bit. DSA
menggunakan SHA (Secure Hash Algorithm) sebagai fungsi hash.
SHA akan mengubah pesan menjadi massage digest berukuran 160 bit. Seperti
pada algoritma kriptografi kunci-publik, DSA menggunakan dua buah kunci, yaitu
kunci publik dan kunci rahasia. Pembentukan tanda tangan digital menggunakan kunci
rahasia pengirim, dan verifikasi tanda tangan menggunakan kunci publik pengirim [5].
2.9.4 Verifikasi
Akan diverifikasi tanda tangan (r,s) untuk pesan m. Diketahui kunci publik (p,q,g,A)
dan fungsi hash yang digunakan adalah [5]:
1. Cek apakah memenuhi 1 ≤ r ≤q-1 dan 1≤ s≤ q-1.
2. Cek apakah
Flowchart program adalah bagan alir yang menggambarkan arus data dari program.
Fungsi dari bagan alir ini adalah untuk memudahkan programmer di dalam
perancangan program aplikasi. Simbol-simbol yang digunakan pada bagan flowchart
ini antara lain seperti pada Table 2.4.