Algoritma
DES
DES (Data Encryption Standard) adalah algoritma
cipher blok yang populer karena dijadikan standard algoritma enkripsi
kunci-simetri, meskipun saat ini standard tersebut telah digantikan dengan
algoritma yang baru, AES, karena DES sudah dianggap tidak aman lagi. Sebenarnya
DES adalah nama standard enkripsi simetri, nama algoritma enkripsinya sendiri
adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada
DEA. AlgoritmaDES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada
tahun 1972. Algoritma ini didasarkan pada algoritma Luciferyang dibuat oleh
Horst Feistel. Algoritma ini telah disetujui olehNational Bureau of Standard
(NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika
Serikat.
DES termasuk ke dalam sistem kriptografi
simetri dan tergolong jeniscipher blok. DES beroperasi pada ukuran blok 64 bit.
DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan
menggunakan 56 bit kunci internal (internal key) atau upa-kunci(subkey). Kunci
internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64
bit.
Implementasi Hardware dan Software DES
- DES
sudah diimplementasikan dalam bentuk perangkat keras.
- Dalam
bentuk perangkat keras, DES diimplementasikan di dalam chip. Setiap detik
chip ini dapat mengenkripsikan 16,8 juta blok (atau 1 gigabit per
detik).
- Implementasi
DES ke dalam perangkat lunak dapat melakukan enkripsi 32.000 blok per
detik (pada komputer mainframe IBM 3090).
Keamanan DES
Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES:
Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES:
- Panjang
kunci
- Jumlah
putaran
- Kotak-S
Panjang kunci
- Panjang
kunci eksternal DES hanya 64 bit atau 8 karakter, itupun yang dipakai
hanya 56 bit. Pada rancangan awal, panjang kunci yang diusulkan IBM adalah
128 bit, tetapi atas permintaan NSA, panjang kunci diperkecil menjadi 56
bit. Alasan pengurangan tidak diumumkan.
- Tetapi,
dengan panjang kunci 56 bit akan terdapat 256 atau 72.057.594.037.927.936
kemungkinan kunci. Jika diasumsikan serangan exhaustive key search dengan
menggunakan prosesor paralel mencoba setengah dari jumlah kemungkinan
kunci itu, maka dalam satu detik dapat dikerjakan satu juta serangan. Jadi
seluruhnya diperlukan 1142 tahun untuk menemukan kunci yang benar.
- Tahun
1998, Electronic Frontier Foundation (EFE) merancang dan membuat perangkat
keras khusus untuk menemukan kunci DES secara exhaustive search key dengan
biaya $250.000 dan diharapkan dapat menemukan kunci selama 5 hari. Tahun
1999, kombinasi perangkat keras EFE dengan kolaborasi internet yang
melibatkan lebih dari 100.000 komputer dapat menemukan kunci DES kurang
dari 1 hari.
Jumlah putaran
- Sebenarnya,
delapan putaran sudah cukup untuk membuat cipherteks sebagai fungsi acak
dari setiap bit plainteks dan setiap bit cipherteks. Jadi, mengapa harus
16 kali putaran?
- Dari
penelitian, DES dengan jumlah putaran yang kurang dari 16 ternyata dapat
dipecahkan dengan known-plaintext attack lebih mangkus daripada dengan
brute force attack.
Kotak-S
·
Pengisian kotak-S DES masih menjadi misteri tanpa ada alasan
mengapa memilih konstanta-konstanta di dalam kotak itu.
Kunci Lemah dan Kunci Setengah Lemah
- DES
mempunyai beberapa kunci lemah (weak key). Kunci lemah menyebabkan
kunci-kunci internal pada setiap putaran sama (K1 = K2 = … = K16).
Akibatnya, enkripsi dua kali berturut-turut terhadap plainteks
menghasilkan kembali plainteks semula.
- Kunci
lemah terjadi bila bit-bit di dalam Ci dan Di semuanya 0 atau 1, atau
setengah dari kunci seluruh bitnya 1 dan setengah lagi seluruhnya 0.
- Kunci
eksternal (dalam notasi HEX) yang menyebabkan terjadinya kunci lemah
adalah (ingat bahwa setiap bit kedelapan adalah bit paritas).
Kunci lemah (dengan bit paritas) Kunci sebenarnya
0101 0101 0101 0101
0000000 0000000
1F1F 1F1F 1F1F 1F1F
0000000 FFFFFFF
E0E0 E0E0 F1F1 F11F
FFFFFFF
0000000
FEFE FEFE FEFE FEFE
FFFFFFF
FFFFFFF
·
Selain kunci lemah, DES juga mempunyai sejumlah pasangan kunci
setengah-lemah (semiweak key). Pasangan kunci setengah- lemah mengenkripsikan
plainteks menjadi cipherteks yang sama. Sehingga, satu kunci dalam pasangan itu
dapat mendekripsi pesan yang dienkripsi oleh kunci yang lain di dalam pasangan
itu.
·
Kunci setengah-lemah terjadi bila: Register C dan D berisi
bit-bit dengan pola 0101…0101 atau 1010…1010, Register yang lain (C atau D)
berisi bit-bit dengan pola 0000…0000, 1111…1111, 0101…0101, atau
1010…1010
·
Ada 6 pasang kunci setengah lemah (dalam notasi HEX):
a. 01FE 01FE 01FE 01FE dan FE01
FE01 FE01 FE01
b. 1FE0 1FE0 0EF1 0EF1 dan E01F
E01F F10E F10E
c. 01E0 01E0 01F1 01F1 dan E001
E001 F101 F101
d. 1FFE 1FFE 0EFE 0EFE dan FE1F
FE1F FE0E FE0E
e. 011F 011F 010E 010E dan 1F01
1F01 0E01 0E01
f. E0FE E0FE F1FE F1FE dan FEE0
FEE0 FEF1 FEF1
Algoritma
PGP
PGP
(Pretty Good Privacy) adalah Suatu metode program enkripsi informasi yang
memiliki tingkat keamanan cukup tinggi bersifat rahasia dengan menggunakan
“Private-Public Key” sebagai dasar autentifikasinya sehingga jangan sampai
dengan mudah diketahui oleh orang lain yang tidak berhak. PGP dikembangkan oleh
Phill Zimmermann pada akhir tahun1980. Program yang dibuat oleh Phill
Zimmerann memiliki 2 versi yaitu “USA
Version “ dan “International Version”. PGP versi USA hanya dapat digunakan di
wilayah USA dan oleh warganegara USA saja. PGP versi USA ini menggunakan
algoritma RSA (yang telah menjadi hak paten) dalam enkripsinya. Sedangkan versi
internasional menggunakan algoritma MPILIB yang diciptakan khusus oleh Phill
Zimmermann sendiri. PGP Versi internasional bisa digunakan oleh seluruh dunia.
Prinsip
– prinsip kerja dari PGP itu sendiri adalah :
1.
PGP menggunakan
teknik yang disebut Public-key encryption dengan dua kode yang saling
berhubungan secara intrinsik, namun tidak mungkin untuk memecahkan satu dan
yang lainnya.
2.
Jika membuat
suatu kunci, secara otomatis akan dihasilkan sepasang kunci yaitu public key
dan secret key. Kita dapat
memberikan public key ke
manapun tujuan yang kita inginkan,
melalui telephone, internet, keyserver,
dsb. Secret key yang disimpan pada mesin kita dan menggunakan messager decipher
akan dikirimkan ke kita. Jadi orang yang
akan menggunakan public key kita
(yang hanya dapat didekripsi oleh
oleh secret key kita), mengirimkan messages kepada kita , dan kita akan menggunak an secret key untuk
membacanya.
3.
PGP menggunakan
dua kunci yaitu kunci public (proses enkripsi) dan privet (proses deskripsi).
4.
menggunakan dua
kuci tersebut dikarenakan adanya conventional crypto, disaat terjadi transfer
informasi kunci, suatu secure channel diperlukan. Dan jika kita memiliki suatu
secure channel, tapi mengapa kita menggunakan crypto? Namun dengan public-key
syistem, tidak akan menjadi masalah siapa yang melihat kunci milik kita, karena
kunci yang dilihat oleh orang lain adalah yang digunakan hanya untuk enkripsi
dan hanya pemiliknya saja yang mengetahui kunci rahasia tersebut.
Implementasi
PGP dalam TandaTangan Digital
Tanda
tangan digital ini berguna untuk memastikan keaslian pesan yang disampaikan,
bahwa suatu pesan yang disampaikan pada kita benar-benar berasal dari pengirim
seperti yang tertulis pada header e-mail. Tanda tangan digital juga menjamin
integritas pesan. Teknologi ini memungkinkan kita mendeteksi bila ada orang
yang menyadap pesan dan mengganti isi pesannya di tengah jalan.
Dibandingkan
dengan tandatangan analog, tanda tangan digital lebih sulit dipalsukan. Tanda
tangan digital lebih sering digunakan daripada enkripsi karena kita sering
tidak peduli apakah e-mail kita disadap atau tidak, tapi kita benar-benar ingin
tahu apakah yang mengirim e-mail pada kita benar-benar orang yang kita maksud.
Ini semakin penting dengan semakin menyebarnya virus yang seolah-olah datang
dari orang yang kita kenal. Berbeda dengan proses enkripsi, dalam tanda tangan
digital kunci privat digunakan untuk menandatangani dokumen atau pesan yang
hendak disampaikan. Penerima pesan atau dokumen dapat memeriksa keasliannya
dengan menggunakan kunci publik yang sudah ada padanya.
Algoritma RSA
Algoritma RSA merupakan salah satu algoritma public key
yang populer dipakai dan bahkan masih dipakai hingga saat ini. Kekuatan
algoritma ini terletak pada proses eksponensial, dan pemfaktoran bilangan
menjadi 2 bilangan prima yang hingga kini perlu waktu yang lama untuk melakukan
pemfaktorannya.
Algoritma ini dinamakan sesuai dengan nama penemunya, Ron Rivest, Adi Shamir dan Adleman(Rivest-Shamir-Adleman) yang dipublikasikan pada tahun 1977 di MIT, menjawab tantangan yang diberikan algoritma pertukaran kunci Diffie Hellman.
Algoritma ini dinamakan sesuai dengan nama penemunya, Ron Rivest, Adi Shamir dan Adleman(Rivest-Shamir-Adleman) yang dipublikasikan pada tahun 1977 di MIT, menjawab tantangan yang diberikan algoritma pertukaran kunci Diffie Hellman.
Skema RSA sendiri mengadopsi dari
skema block cipher, dimana sebelum dilakukan enkripsi, plainteks yang ada
dibagi – bagi menjadi blok – blok dengan panjang yang sama, dimana plainteks
dan cipherteksnya berupa integer(bilangan bulat) antara 1 hingga n, dimana n
berukuran biasanya sebesar 1024 bit, dan panjang bloknya sendiri berukuran
lebih kecil atau sama dengan log(n) +1 dengan basis 2. Fungsi enkripsi dan
dekripsinya dijabarkan dalam fungsi berikut :
C = Me mod
n ( fungsi enkripsi )
M = Cd mod n
(fungsi dekripsi)
C = Cipherteks
M = Message / Plainteks
e = kunci publik
d= kunci privat
n = modulo pembagi(akan
dijelaskan lebih lanjut )
Kedua pihak harus mengetahui
nilai e dan nilai n ini, dan salah satu pihak harus memilki d untuk melakukan
dekripsi terhadap hasil enkripsi dengan menggunakan public key e. Penggunaan
algoritma ini harus memenuhi kriteria berikut :
1. Memungkinkan untuk mencari nilai e, d, n sedemikian
rupa sehingga Med mod n = M untuk semua M < n.
2. Relatif mudah untuk menghitung nilai Me mod n dan Cd mod n untuk semua nilai M < n.
3. Tidak memungkinkan mencari nilai d jika diberikan
nilai n dan e.
Syarat nilai e dan d ini,
gcd(d,e)=1
sebelum memulai penggunaan RSA
ini, terlebih dahulu kita harus memiliki bahan – bahan dasar sebagai berikut :
1. p, q = 2 bilangan prima yang
dirahasiakan
2. n, dari hasil p.q
3. e, dengan ketentuan gcd (Φ(n),
e) =1
4. d, e-1 (mod Φ(n))
Saya akan berikan satu contoh :
1. Pilih 2 bilangan prima, misalnya p = 17 dan q = 11.
2. Hitung n = pq = 17 × 11 = 187.
3. Hitung Φ(n) = (p – 1)(q – 1) = 16 × 10 = 160.
4. Pilih nilai e sedemikian sehingga relatif prima terhadap Φ(n) = 160 dan kurang dari Φ(n); kita pilih e = 7.
5. Hitung d sedemikian sehingga de ≡ 1 (mod 160) dan d < 160.Nilai yang didapatkan d = 23,karena 23 × 7 = 161 = (1 × 160) + 1; d dapat dihitung dengan Extended Euclidean Algorithm.
Nah, nilai e dan d inilah yang
kita sebut sebagai Public Key(e) dan Private Key(d). Pasangan Kunci
Publiknya ={7,187} dan Kunci Privatnya = {23, 187}
Sekarang kita aplikasikan dalam proses enkripsi.
Misalnya kita punya M 88. Untuk proses enkripsi, kita
akan menghitung C = 887 mod 187.
= 887 mod 187.
=894,432 mod 187
=11
Nah, kita mendapatkan nilai C
=11.
Selanjutnya, nilai C ini
dikirimkan kepada penerima untuk didekripsi dengan kunci privat miliknya.
M = Cd mod n
= 1123 mod 187
=79,720,245 mod187
= 88
sumber:
http://infofenvin.blogspot.co.id
http://herwingoernia19.blogspot.co.id
ilmukriptografi.wordpress.com
http://infofenvin.blogspot.co.id
http://herwingoernia19.blogspot.co.id
ilmukriptografi.wordpress.com