algoritma
kriptografi
A.
Sejarah kriptografi
Kriptografi
adalah kata serapan dari bahasa asing, dalam hal ini bahasa inggris,
yaitu cryptography. Cryptography atau cryptology berasal dari bahasa
Yunani, yaitu κρυπτός, kryptos, "hidden, secret"
atau “tersembunyi, rahasia”, dan γράφω, gráphō, "I
write" atau “aku menulis”, dan -λογία, -logia
atau “ilmu”. Kriptografi adalah ilmu atau seni untuk
menyembunyikan informasi. Proses menyembunyikan informasi ini
dilakukan dengan teknik penyandian, atau mengubah pesan atau
informasi menjadi sandi-sandi yang tidak dimengerti oleh orang lain,
selain pembuat dan penerimanya.
Pada
kriptografi dikenal istilah-istilah seperti plain text, cipher text,
enkripsi, dan dekripsi. Plain text adalah pesan asli yang ingin
dikirimkan. Cipher text adalah pesan yang telah disandikan dengan
metode enkripsi tertentu. Enkripsi adalah proses mengubah sebuah
plain text menjadi cipher text, dan dekripsi adalah proses mengubah
sebuah cipher text menjadi plain text.
Transaksi
data banyak dilakukan dalam kehidupan sehari-hari. Beberapa informasi
yang dikirimkan tersebut adalah informasi-informasi yang bersifat
rahasia dan pribadi. Karena itu data-data yang dikirimkan perlu
dirahasiakan sehingga pihak lain yang mencoba mendapatkan informasi
tersebut tanpa izin tidak akan dapat mengetahuinya.
Pada
masa lalu, informasi yang dianggap rahasia adalah seperti pada masa
peperangan. Informasi mengenai operasi militer, kekuatan militer, dan
sebagainya adalah informasi yang tidak boleh sampai ketahuan oleh
pihak musuh. Karena itu informasi-informasi ini perlu disandikan
ketika ingin dikirimkan ke tempat lain, sehingga jika informasi yang
dikirim jatuh ke tangan pihak musuh, mereka tetap tidak mengerti.
Sementara pada era modern ini, kita sering melakukan transaksi secara
elektronik. Transaksitransaksi ini juga perlu dilindungi karena
mengandung informasi yang bersifat pribadi, misalnya nomor kartu
kredit. Karena itu kriptografi menjadi sebuah cabang ilmu yang terus
diteliti dan dikembangkan untuk melindungi kerahasiaan data.
B.Terminologi
Sebelum
era modern ini, manusia telah menggunakan teknik penyandian dalam
pertukaran atau pengiriman informasi yang dianggap sangat rahasia.
Pesan-pesan yang dikirim diubah menjadi 4 sandi-sandi sehingga orang
yang menyadap tidak dapat mengetahui isi pesan tanpa pengetahuan
mengenai cara penyandian.
Scytale
yang dimiliki masyarakat Yunani kuno mungkin merupakan salah satu
alat pertama yang digunakan untuk menyandikan sebuah pesan. Cara
kerja scytale ini adalah pesan yang ingin dikirim dituliskan di
secarik kulit yang dililitkan di sebatang kayu berbentuk silinder
sehingga jika dilepaskan, maka tulisan tersebut menjadi teracak.
Orang yang dapat menyandikan kembali pesan itu ke pesan yang
sebenarnya perlu memiliki kayu yang berukuran sama (atau kayu yang
sama). Scytale ini termasuk dalam transposition cipher yaitu metode
enkripsi yang melakukan perubahan posisi terhadap karakter-karakter
di pesan asli. Misalnya pesan “saya disini” dapat disandikan
menjadi “ini sidayas” dengan menggunakan transposition cipher
ini.
Dikenal
juga substitution cipher, atau metode enkripsi yang melakukan
substitusi terhadap karakter-karakter pada pesan asli. Salah satu
substitution cipher yang terkenal adalah Caesar Cipher yang mengubah
setiap huruf dari pesan asli dengan huruf ke sekian di depannya.
metode ini diberi nama menurut nama Julius Caesar yang dipercaya
menggunakan metode ini untuk berkomunikasi dengan jendral-jendralnya
selama peperangan.
Pada
perang dunia II, banyak negara yang juga mengembangkan dan
menggunakan mesin-mesin tertentu untuk menyandikan pesan mereka.
Contohnya seperti Mesin Lorenz dan Enigma yang digunakan oleh militer
Jerman.
Perkembangan
teknologi dan ditemukannya komputer membuat penggunaan algoritma
kriptografi yang lebih kompleks lagi menjadi terbuka kemungkinannya.
Banyak penelitian mengenai algoritma kriptografi telah dilakukan
sehingga muncul metode baru dalam sistem penyandian pesan.
Metode-metode enkripsi yang selama ini dikenal adalah dengan
menggunakan sebuah kunci atau kode khusus yang digunakan untuk
menyandikan dan membaca pesan.
Misalnya
dalam Caesar Cipher digunakan 3 huruf setelah huruf yang digunakan
untuk menyandikan pesan. Dan hal itu berarti untuk membaca pesan,
kita cukup menggeser setiap huruf yang muncul dengan 3 huruf
sebelumnya. Metode ini dikenal dengan symmetric-key cryptography,
dimana untuk membaca dan menyandikan sebuah pesan digunakan sebuah
key atau kunci yang sama.
Di
tahun 1976, sebuah sistem kriptografi yang asymmetric-key
dipublikasikan oleh Whitfield Diffie dan Martin Hellman yang
dipengaruhi oleh metode distribusi kunci publik (public-key) yang
dikembangkan oleh Ralph Merkle. Sistem pertukaran kunci ini dikenal
dengan nama Diffie- Hellman key exchage (pada tahun 2002, Hellman
menyarankan agar nama ini diubah menjadi Diffie-Hellman-Merkle key
exchage atas jasa Merkle dalam penemuan metode public-key). Sistem 5
ini juga disebut public-key cryptography.
Dalam
public-key cryptography, kedua pihak yang ingin mengirimkan dan
menerima pesan akan saling bertukar kunci yang digunakan untuk
mengenkripsi data, sedangkan kunci untuk melakukan dekripsi tetap
dirahasiakan. Salah satu public-key cryptography adalah kriptografi
RSA.
Hingga zaman modern kriptografi mengacu hampir secara ekslusif
pada
enkripsi, yang merupakan proses mengkonversikan informasi
biasa menjadi teks yang tak dapat dipahami (disebut teks sandi).
Deskripsi merupakan kebalikan, dengan kata lain, memindahkan teks
sandi yang tidak dapat dibaca menjadi teks yang dapat dibaca.
sandi
atau (
cypher) merupakan sepasang
algoritma
yang menciptakan enkripsi dan membalikan dekripsi. Operasi yang lebih
mendalam dari sandi diatur baik oleh algoritma dan pada setiap
permintaan dekripsi dengan kunci. Kucin ini bersifat rahasia (yang
biasanya diketahui hanya oleh orang yang berkomunikasi), dan biasanya
terdiri dengan karakter string singkat, yang dibutuhkan untuk
mendekripsi teks sandi. Sebelumnya dinamakan "kriptosistem"
yang merupakan daftar teratur dari elemen-elemen teks terbatas, teks
sandi terbatas, kunci terbatas, dan algoritma dekripsi dan enkripsi
yang berkoresponden pada setiap kunci. Kunci sangat penting baik pada
penggunaan secara teoretis maupun sebenarnya, di mana sandi tanpa
kunci variabel dapat dengan mudah rusak dengan hanya pengetahuan yang
digunakan dari sandi dan dengan kemungkinan tidak berguna (atau malam
tidak produktif) untuk banyak tujuan. Secara historis, sandi sering
digunakan secara langsung untuk enkripsi atau deskripsi tanpa
prosedur tambahan seperti
autentikasi
atau pengecekan integritas.
Dalam penggunaan bahasa sehari-hari, istilah "
sandi"
sering digunakan untuk menunjukkan setiap metode enkripsi atau
penyembunyian arti. Bagaimanapun, dalam kriptografi,
sandi
telah memiliki arti yang lebih spesifik. Itu berarti pemindahan unit
teks (contoh kata atau frase yang berarti) dengan sebuah kata sandi
(sebagai contoh, "wallaby" berarti "menyerang saat
fajar"). Sandi tidak lagi digunakan pada kriptografi
serius-kecuali sesekali untuk beberapa hal yang menyangkut istilah
tertentu-sejak sandi yang dipilih secara tepat lebih praktis dan
lebih aman daripada sandi terbaik dan juga dapat diadaptasikan pada
komputer.
Kriptanalisis
merupakan istilah yang digunakan untuk mempelajari metode untuk
memperoleh arti dari informasi enkripsi tanpa mengakses sandi secara
normal yang dibutuhkan untuk melakukannya; sebagai contoh ilmu yang
mempelajari cara untuk memecahkan algoritma enkripsi atau
implementasinya.
Beberapa kegunaan dari istilah
kriptografi dan
kriptologi
selalu berubah di Bahasa Inggris, sedang lainnya menggunakan
kriptografi untuk merujuk secara spesifik pada penggunakan dan
pengaplikasikan dari teknik kriptografi dan
kriptologi untuk
merujuk pada ilmu kombinasi dari kriptografi dan kriptanalisis.
Bahasa Inggris lebih fleksibel dari istilah umum yang digunakan pada
beberapa bahasa lain yang dimana
kriptologi (dilakukan oleh
kriptolog) selalu digunakan pada arti kedua di atas.
Ilmu karateristik dari bahasa yang memiliki aplikasi pada
kriptografi (atau kriptologi) (seperti data frekuensi, kombinasi
surat, pola universal, dll.) disebuh kriptolinguistik.
C.
Tujuan
Kriptografi
Kriptografi
bertujuan untuk memberikan layanan pada aspek-aspek keamanan antara
lain:
1.kerahasiaan
(confidentiality),
yaitu menjaga supaya pesan tidak dapat dibaca oleh pihak-pihak yang
tidak berhak,
2.integritas
data (data
integrity),
yaitu memberikan jaminan bahwa untuk tiap bagian pesan tidak akan
mengalami perubahan dari saat data 10 dibuat/dikirim oleh pengirim
sampai dengan saat data tersebut dibuka oleh penerima data,
3.otentikasi
(authentication),
yaitu berhubungan dengan identifikasi, baik mengidentifikasi
kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi
kebenaran sumber pesan,
4.
nirpenyangkalan
(non
repudiation),
yaitu memberikan cara untuk membuktikan bahwa suatu dokumen
datang dari seseorang tertentu sehingga apabila ada seseorang yang
mencoba mengakui memiliki dokumen tersebut, dapat dibuktikan
kebenarannya dari pengakuan orang tersebut.
D.
Algoritma kriptografi terdiri dari tiga fungsi dasar, yaitu :
1. Enkripsi, merupakan pengamanan data
yang dikirimkan agar terjaga kerahasiaanya. Pesan asli disebut
plaintext, yang diubah menjadi kode – kode yang tidak dimengerti.
2 Dekripsi, merupakan kebalikan dari
enkripsi. Pesan yang telah dienkripsi dikembalikan ke bentuk asalnya
disebut dekripsi pesan. Algoritma yang digunakan untuk dekripsi tentu
berbeda dengan algoritma yang digunakan untuk enkripsi.
3. Kunci, yang dimaksud disini
adalah kunci yang dipakai untuk melakukan enkripsi dan dekripsi.
Kunci terbagi menjadi 2 bagian yaitu : kunci rahasia (private key)
dan kunci umum(public key). (Ariyus, 2008)
Macam-macam Algoritma kriptografi modern
Kriptografi modern merupakan suatu perbaikan yang mengacu
pada kriptografi klasik. Pada kriptogarfi modern terdapat berbagai
macam algoritma yang dimaksudkan untuk mengamankan informasi yang
dikirim melalui jaringan komputer. Algoritma kriptografi modern
terdiri dari tiga bagian:
1. Algoritma Simetris
Algoritma simetris adalah algoritma yang menggunakan kunci yang
sama untuk enkripsi dan dekripsinya. Algoritma kriprografi
simetris sering disebut algoritma kunci rahasia, algoritma kunci
tunggal, atau algoritma satu kunci, dan mengharuskan pengirim dan
penerima menyetujui suatu kunci tertentu. Kelebihan dari algoritma
kriprografi simetris adalah waktu proses untuk enkripsi dan dekripsi
relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada
pembangkit kunci. Karena prosesnya relative cepat maka algoritma ini
tepat untuk digunakan pada sistem komunikasi digital secara
real
timeseperti GSM.
Contoh Alice ingin mengirim pesan x dengan aman menggunakan
saluran umum kepada Bob. Alice menggunakan kunci xƠ yang sebelumnya
telah disepakati antara Alice dan Bob. Untuk mengirim pesan e xƠ (x)
kepada Bob, dia akan deskripsi teks kode yang diterima dengan kunci
yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang
diterima. Begitu juga sebaliknya.
Aplikasi dari algoritma simetris digunakan oleh beberapa
algoritma di bawah ini:
-
Data Encryption Standard (DES)
-
Advance Encryption Standard
(AES)
-
International Data Encryption
Algoritma (IDEA)
-
A5
-
RC4
-
1. A
2. Algoritma Asimetris
Algoritma Asimetris adalah pasangan kunci kriptografi yang salah
satunya digunakan untuk proses enkripsi dan satu lagi lagi deskripsi.
Semua orang yang mendapatkan kunci publik dapat menggunakannya
untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang
memiliki rahasia itu, yang dalam hal ini kunci rahasia, untuk
melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh
algoritma terkenal yang menggunakan kunci asimetris adalah RSA
(merupakan singkatan dari nama penemunya, yakni Rivest, Shamir dan
Adleman).
3. Algoritma Hibrida
Algoritma hibrida adalah algoritma yang memanfaatkan dua tingkatan
kunci, yaitu kunci rahasia (simetri) – yang disebut juga session
key (kunci sesi) – untuk enkripsidata dan pasangan kunci rahasia –
kunci publik untuk pemberian tanda tangan digital serta melindungi
kunci simetri.
Gambar 3. Algoritma Hibrida
Algoritma kriptografi yang beroperasi dalam mode bit dapat
dikelompokkan menjadi dua kategori:
-
1. Cipher aliran (stream cipher)
Algoritma kriptografi beroperasi pada
plainteks/cipherteks dalam
bentuk bit tunggal, yang dalam hal ini rangkaian bit
dienkripsikan/didekripsikan bit per bit.
Stream
chiper atau
stream encryption merupakan
suatu teknik enkripsi data dengan cara melakukan transformasi dari
tiap bit secara terpisah berdasarkan posisi tiap bit dalam aliran
data yang biasanya dikendalikan menggunakan operasi XOR. Enkripsi
aliran data merupakan hasil dari operasi XOR antara setiap
bit
plaintext dengan setiap bit kuncinya.
Pada
stream chiper bila terjadi kesalahan selama
transmisi maka kesalahan pada teks enkripsi penerima akan terjadi
tepat di tempat kesalahan tersebut terjadi. Dalam praktek
pertimbangan kesalahan yang mungkin terjadi sangatlah penting untuk
penentuan teknik enkripsi yang akan digunakan.
-
2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam
bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi
blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma
enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter
= 8 bit dalam pengkodean ASCII).
Rangkaian bit
Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis
dalam sejumlah cara bergantung pada panjang blok.
Contoh: Plainteks 100111010110 dibagi menjadi blok bit yang
panjangnya 4 menjadi
1001 1101 0110
Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu 9 13
6
Bila
plainteks dibagi menjadi blok-blok yang
berukuran 3 bit, maka rangkaian bit di atas menjadi:
100 111 010 110
Setiap blok menyatakan bilangan bulat dari 0 sampai 7, yaitu 4 7 2
6
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok
yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu
yang disebut
padding bits.
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi
10011 10101
00010
Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal
(dicetak tebal) agar ukurannya menjadi 5 bit.
Padding
bits dapat mengakibatkan ukuran plainteks hasil dekripsi
lebih besar daripada ukuran plainteks semula.
Cara lain untuk menyatakan rangkaian bit adalah dengan notasi
heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang berukuran
4 bit dengan representasi dalam HEX adalah: 0000 = 0 0001 = 1 0010 =
2 0011 = 3
0100 = 4 0101 = 5 0011 = 6 0111 = 7
1000 = 8 1011 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1101 = E 1111 = F
Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang
panjangnya 4 menjadi
1001 1101 0110
yang dalam notasi HEX adalah 9 D 6
Operator XOR
Operator biner yang sering digunakan dalam
cipher yang
yang beroperasi dalam mode bit adalah XOR atau
exclusive-or.
Notasi matematis untuk opeartor XOR adalah ⊕ (dalam
Bahas C, operator XOR dilambangkan dengan ^).
Operator XOR diperasikan pada dua bit dengan aturan sebagai
berikut:
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
Operator XOR identik dengan penjumlahan modulo 2.
Misalkan
a,
b, dan
c adalah
peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
(i)
a ⊕
a=0
(ii)
a ⊕
b =
b ⊕
a (Hukum
komutatif)
(iii)
a ⊕ (
b ⊕
c)
= (
a ⊕
b) ⊕
c (Hukum
asosiatif)
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya
dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari
kedua ramngkaian bit tersebut.
Contoh: 10011 ⊕ 11001 = 01010
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
1 0 0 1 1
1 1 0 0 1 ⊕
1 ⊕ 1 0 ⊕ 1 0 ⊕ 0 1⊕ 0
1 ⊕ 1
0 1 0 1 0
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan
meng-XOR-kan plainteks (
P) dengan kunci (
K)
menghasilkan cipherteks:
C =
P ⊕
K (6.1)
Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai
semula, maka proses dekripsi menggunakan persamaan:
P =
C ⊕
K (6.2)
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101 ⊕ (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101 ⊕ (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
Program komersil yang berbasis DOS atau Macintosh menggunakan
algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak
aman karena
cipherteksnya mudah dipecahkan.
Cara memecahkannya adalah sebagai berikut (asumsi: panjang
kunci adalah sejumlah kecil byte):
-
Cari panjang kunci dengan
prosedur counting coincidence sbb: XOR-kan
cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte,
dan hitung jumlah byte yang sama. Jika pergeseran
itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6%
dari byte akan sama. Jika tidak, maka 0.4% akan
sama. Angka persentase ini disebut index of coincidence.
Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
-
Geser cipherteks sejauh panjang
kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan
plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang
kunci tersebut.Cari panjang kunci dengan prosedurcounting
coincidence sbb: XOR-kan cipherteks terhadap dirinya
sendiri setelah digeser sejumlah byte, dan hitung
jumlah byte yang sama. Jika pergeseran itu
kelipatan dari panjang kunci (yang tidak diketahui), maka 6%
dari byte akan sama. Jika tidak, maka 0.4% akan
sama. Angka persentase ini disebut index of coincidence.
Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
-
Geser cipherteks sejauh panjang kunci dan XOR-kan dengan
dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR
dengan plainteks yang digeser sejauh panjang kunci tersebut.