Kriptografi Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.
Kriptografi Bidang yang sangat menarik Dasar dari berbagai mekanisme keamanan
Sisi lain Bukan solusi semua masalah keamanan Tidak dapat direalisasikan kecuali diimplementasikan dengan benar Membutuhkan tenaga dan waktu yang banyak jika ingin membuat konsep sendiri
Konsep kriptografi dasar Skema enkripsi: Fungsi untuk enkripsi, dekripsi data Algoritma kunci Kunci rahasia vs kunci publik Kunci publik: mempublis kunci dengan tidak menggali kunci-1 Kunci rahasia : lebih efisien, biasanya kunci = kunci-1 Fungsi Hash, MAC Memetakan masukan pada hash singkat; biasanya tidak ada tabrakan MAC (Hash terkunci) digunakan untuk integritas pesan Skema signature Fungsi untuk tanda data, memverifikasi signature
Membeli Web
Komunikasi aman
DES Dikembangkan oleh IBM pada tahun 1972. Berdasarkan pada algoritma Lucifer yang dibuat oleh Horst
Feistel. Disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat.
DES (lanjutan) DES adalah standard, sedangkan algoritmanya adalah
DEA (Data EncryptionAlgorithm). Kedua nama ini sering dikacaukan. DES termasuk ke dalam kriptografi kunci-simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. Panjang kunci ekternal = 64 bit (sesuai ukuran blok), tetapi hanya 56 bit yang dipakai (8 bit paritas tidak digunakan)
Setiap blok (plainteks atau cipherteks) dienkripsi dalam 16
putaran. Setiap putaran menggunakan kunci internal berbeda. Kunci internal (56-bit) dibangkitkan dari kunci eksternal Setiap blok mengalami permutasi awal (IP), 16 putaran enciphering, dan inversi permutasi awal (IP-1).
Plainteks
IP
16 kali
Enciphering
IP-1
Cipherteks Skema Global Algoritma DES
E
Plainteks
IP
L0
R0
f
K1
R1 L0 f ( R0 , K 1 )
L1 = R0
f
K2
L2 = R1
R 2 L1 f ( R1 , K 2 )
L15 = R14
R15 L14 f ( R14 , K 15 )
f
K16
R16 L15 f ( R15 , K 16 )
L16 = R15
Algoritma Enkripsi dengan DES IP-1
Cipherteks
Pembangkitan Kunci Internal Kunci internal = kunci setiap putaran Ada 16 putaran, jadi ada 16 kunci internal: K1, K2, …, K16
Dibangkitkan dari kunci eksternal (64 bit) yang diberikan
oleh pengguna.
Kunci eksternal
Proses pembangkitan kunci-kunci internal DES
Permutasi PC-1
C0
D0
Left Shift
Left Shift
C1
D1
Left Shift
Left Shift
Cj
Dj
Left Shift
Left Shift
C16
D16
Permutasi PC-2
K1
Permutasi PC-2
Kj
Permutasi PC-2
K16
Matriks permutasi kompresi PC-1: 57 10 63 14
49 2 55 6
41 59 47 61
33 51 39 53
25 43 31 45
17 35 23 37
9 27 15 29
1 19 7 21
58 11 62 13
50 3 54 5
42 60 46 28
C0: berisi bit-bit dari K pada posisi 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36
D0: berisi bit-bit dari K pada posisi 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
34 52 38 20
26 44 30 12
18 36 22 4
Tabel 1. Jumlah pergeseran bit pada setiap putaran Putaran, i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Jumlah pergeseran bit 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Matriks PC-2 berikut: 14 23 41 44
17 19 52 49
11 12 31 39
24 4 37 56
1 26 47 34
5 8 55 53
3 16 30 46
28 7 40 42
15 27 51 50
6 20 45 36
21 13 33 29
Jadi, Ki merupakan penggabungan bit-bit Ci pada posisi: 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2
dengan bit-bit Di pada posisi: 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 Setiap kunci internal Ki mempunyai panjang 48 bit.
10 2 48 32
Permutasi Awal Tujuan: mengacak plainteks sehingga urutan bit-bit di
dalamnya berubah. Matriks permutasi awal (IP):
58 62 57 61
50 54 49 53
42 46 41 45
34 38 33 37
26 30 25 29
18 22 17 21
10 14 9 13
2 6 1 5
60 64 59 63
52 56 51 55
44 48 43 47
36 40 35 39
28 32 27 31
20 24 19 23
12 16 11 15
4 8 3 7
Enciphering Setiap blok plainteks mengalami 16 kali putaran enciphering .
Setiap putaran enciphering merupakan jaringan Feistel:
Li = Ri – 1 Ri = Li – 1 f(Ri – 1, Ki) Li - 1
Ri 1
f
Li
Ri
Ki
Diagram komputasi fungsi f : Ri-1 32 bit
Ekspansi menjadi 48 bit E(Ri-1)
48 bit
Ki 48 bit
48 bit E ( Ri 1 ) K i A
S1
... B
32 bit P(B) 32 bit
S8
Matriks substitusi
E adalah fungsi ekspansi yang memperluas blok Ri – 1 32-bit
menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks permutasi ekspansi:
32 8 16 24
1 9 17 25
2 10 18 26
3 11 19 27
4 12 20 28
5 13 21 29
4 12 20 28
5 13 21 29
6 14 22 30
7 15 23 31
8 16 24 32
9 17 25 1
Hasil ekpansi, yaitu E(Ri – 1) di-XOR-kan dengan Ki
menghasilkan vektor A 48-bit: E(Ri – 1) Ki = A
Vektor A dikelompokkan menjadi 8 kelompok, masing-
masing 6 bit, dan menjadi masukan bagi proses substitusi.
Ada 8 matriks substitusi, masing-masing dinyatakan
dengan kotak-S. Kotak –S menerima masukan 6 bit dan memberikan keluaran 4 bit.
Keluaran proses substitusi adalah vektor B yang
panjangnya 48 bit. Vektor B menjadi masukan untuk proses permutasi. Tujuan permutasi adalah untuk mengacak hasil proses substitusi kotak-S. Permutasi dilakukan dengan menggunakan matriks permutasi P (P-box): 16 2
7 8
20 24
21 14
29 32
12 27
28 3
17 9
1 19
15 13
23 30
26 6
5 22
8 11
31 4
10 25
P(B) merupakan keluaran dari fungsi f.
Bit-bit P(B) di-XOR-kan dengan Li – 1 menghasilkan Ri:
Ri = Li – 1 P(B) Jadi, keluaran dari putaran ke-i adalah (Li, Ri) = (Ri – 1 , Li – 1 P(B)) Li-1 32 bit
f
Ri 32 bit
Inversi Permutasi (IP-1) Permutasi terakhir dilakukan setelah 16 kali putaran
terhadap gabungan blok kiri dan blok kanan. Permutasi menggunakan matriks permutasi awal balikan (IP-1 ) sbb: 40 38 36 34
8 6 4 2
48 46 44 42
16 14 12 10
56 54 52 50
24 22 20 18
64 62 60 58
32 30 28 26
39 37 35 33
7 5 3 1
47 45 43 41
15 13 11 9
55 53 51 49
23 21 19 17
63 61 59 57
31 29 27 25
Dekripsi Dekripsi terhadap cipherteks merupakan kebalikan dari
proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Pada proses dekripsi urutan kunci yang digunakan adalah K16, K15, …, K1. Untuk tiap putaran 16, 15, …, 1, keluaran pada setiap putaran deciphering adalah Li = Ri – 1 Ri = Li – 1 f(Ri – 1, Ki)
Mode DES DES dapat dioperasikan dengan mode ECB, CBC, OFB, dan
CFB. Namun karena kesederhanaannya, mode ECB lebih sering
digunakan pada paket komersil.
Implementasi 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 Keamanan DES ditentukan oleh kunci.
Panjang kunci eksternal DES hanya 64 bit, tetapi 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. Tetapi, dengan panjang kunci 56 bit akan terdapat 256 atau 72.057.594.037.927.936 kemungkinan kunci. Jika serangan exhaustive key search dengan menggunakan prosesor paralel, maka dalam satu detik dapat dikerjakan satu juta serangan. Jadi seluruhnya diperlukan 1142 tahun untuk menemukan kunci yang benar.
Pengisian kotak-S DES masih menjadi misteri. Delapan putaran sudah cukup untuk membuat cipherteks
sebagai fungsi acak dari setiap bit plainteks dan setiap bit cipherteks.
Dari penelitian, DES dengan jumlah putaran yang kurang
dari 16 ternyata dapat dipecahkan dengan known-plaintext attack.
DES Berganda Karena DES mempunyai potensi kelemahan pada brute
force atack, maka dibuat varian dari DES. Varian DES yang paling luas digunakan adalah DES
berganda (multiple DES). DES berganda adalah enkripsi berkali-kali dengan DES
dan menggunakan kunci ganda. DES berganda: Double DES dan Triple DES
Double DES Menggunakan 2 buah kunci eksternal, K1 dan K2.
Enkripsi: C = EK2(EK1(P)) Dekripsi: P = DK1(DK2(C)) K1
K2
X P
E
E
C
Enkripsi
K2
K1
X C
D
D Dekripsi
P
Kelemahan Double DES: serangan meet-in-the-middle attack: Dari pengamatan,
C = EK2(EK1(P)) maka X = EK1(P) = DK2(C) Misalkan
kriptanalis memiliki potongan C dan P yang berkorepsonden. Enkripsi P untuk semua kemungkinan nilai K1 (yaitu sebanyak 256 kemungkinan kunci). Hasilnya adalah semua nilai X Simpan semua nilai X ini di dalam tabel
Berikutnya, dekripsi C dengan semua semua kemungkinan nilai K2
(yaitu sebanyak 256 kemungkinan kunci). Bandingkan semua hasil dekripsi ini dengan elemen di dalam tabel
tadi. Jika ada yang sama, maka dua buah kunci, K1 dan K2, telah ditemukan. Tes kedua kunci ini dengan pasangan plainteks-cipherteks lain yang
diketahui. Jika kedua kunci tersebut menghasilkan cipherteks atau plainteks yang benar, maka K1 dan K2 tersebut merupakan kunci yang benar
Triple DES (TDES) Menggunakan DES tiga kali
Bertujuan untuk mencegah meet-in-the-middle attack. Bentuk umum TDES (mode EEE):
Enkripsi: C = EK3(EK2(EK1 (P))) Dekripsi: P = DK1(DK2 (DK3 (C)))
Untuk menyederhanakan TDES, maka langkah di tengah
diganti dengan D (mode EDE). Ada dua versi TDES dengan mode EDE: - Menggunakan 2 kunci - Menggunakan 3 kunci
Triple DES Triple DES dengan 2 kunci K1
K2
Y
X P
E
K1
D
E
C
Enkripsi
K2
K1
Y C
D
E
Dekripsi
K1
X
D
P
Triple DES dengan 3 kunci K1
K2
Y
X P
E
K3
D
E
C
Enkripsi
K2
K3
Y C
D
E
Dekripsi
K1
X
D
P
RC4 Termasuk ke dalam cipher aliran (stream cipher)
Dibuat oleh Ron Rivest (1987) dari Laboratorium RSA RC adalah singkatan dari Ron’s Code). Versi lain megatakan
Rivest Cipher . Digunakan sistem keamanan seperti: - protokol SSL (Secure Socket Layer). -WEP (Wired Equivalent Privacy) -WPA (Wi-fi Protect Access) untuk nirkabel
RC4 awalnya rahasia Pada September 1994, RC4 dikirim secara anonim ke
milis Cypherpunks Lalu dikirim ke newsgroup sci.crypt dan menyebar di internet Karena telah diketahui orang, RC4 bukan lagi rahasia dagang Status sekarang, implementasi tidak resmi adalah legal, tapi tidak boleh menggunakan nama RC4. Maka digunakan nama ARCFOUR untuk menghindari masalah trademark.
RC4 membangkitkan aliran kunci (keystream) yang
kemudian di-XOR-kan dengan plainteks
RC4 memproses data dalam ukuran byte, bukan dalam
bit.
Untuk membangkitkan aliran kunci, cipher menggunakan
status internal yang terdiri dari:
Permutasi angka 0 sampai 255 di dalam larik S0, S1, …, S255.
Permutasi merupakan fungsi dari kunci U dengan panjang variabel. Dua buah pencacah indeks, i dan j
Algoritma RC4: 1.
Inisialisasi larik S: S0 = 0, S1 = 1, …, S255 = 255 for i 0 to 255 do
S[i] i endfor
2.
Jika panjang kunci U < 256, lakukan padding sehingga panjang kunci menjadi 256 byte. Contoh: U = “abc” (3 byte) Padding: U = “abcabcabc…” sampai panjang U mencapai 256 byte
3.
Lakukan permutasi nilai-nilai di dalam larik S : j0
for i 0 to 255 do j (j + S[i] + U[i]) mod 256
swap(S[i], S[j]) endfor
4.
Bangkitkan aliran-kunci dan lakukan enkripsi: i0 j0 for idx 0 to PanjangPlainteks – 1 do i (i + 1) mod 256 j (j + S[i]) mod 256 swap(S[i], S[j]) t (S[i] + S[j]) mod 256 K S[t] (* keystream *) c K P[idx] endfor
Sampai saat ini tidak ada yang dapat memecahkan RC4
sehinggat dapat dikatakan sangat kuat. Terdapat laporan versi kunci 40 bit dapat dipecahkan secara brute force. Kelemahan: Padding dapat menyebabkan kemungkinan nilai-nilai di dalam larik S ada yang sama. RC4 juga mudah diserang dengan known-plaintext attack, dengan cara meng-XOR-kan dua set byte cipherteks (kelemahan umum pada cipher-aliran)
A5 A5 : cipher aliran yang digunakan untuk mengenkripsi
transmisi sinyal percakapan dari standard telepon seluler GSM (Group Special Mobile).
Sinyal GSM dikirim sebagai barisan frame. Satu frame
panjangnya 228 bit dan dikirim setiap 4,6 milidetik.
A5 digunakan untuk untuk menghasilkan aliran-kunci 228-
bit yang kemudian di-XOR-kan dengan frame. eksternal panjangnya 64 bit.
Kunci
GSM merupakan standard telepon seluler Eropa A5 Dibuat oleh Perancis
Tidak semua operator GSM mengimplementasikan A5
(seperti di Indonesia) A5 ada dua versi: 1. A5/1 : versi kuat A5, digunakan di Eropa 2. A5/2 : versi ekspor, lebih lemah Algoritma A5/1 pada awalnya rahasia, tetapi pada tahun
1994 melalui reverse engineering, algoritmanya terbongkar.
A5 terdiri dari 3 buah LFSR , masing-masing panjangnya 19,
22, dan 23 bit (total = 19 + 22 + 23 = 64). Bit-bit di dalam register diindeks dimana bit paling tidak penting (LSB) diindeks dengan 0 (elemen paling kanan). Luaran (output) dari A5 adalah hasil XOR dari ketiga buah LFSR ini. A5 menggunakan tiga buah kendali detak (clock) yang variabel
Register diinisialiasasi dengan kunci sesi (64 bit). Tiap register didetak (clock) berdasarkan bit pertengahannya
(masing-masing: 8, 10, dan 10). Setiap register mempunyai bit pendetakan yang berbedabeda. Pendetakan bergantung kesamaan bit tengah dengan mayorita bit-bit pendetakan. Cipher menghasilkan keytream yang panjangnya 228 bit untuk kemudian dienkripsi dengan meng-XOR-kan nya dengan setiap frame.
Secure Sockets Layer / TLS Standar untuk keamanan internet Biasanya dirancang oleh Netscape Tujuan: menyediakan privasi dan realibilitas antara dua aplikasi komunikasi Dua bagian pokok Handshake Protocol Membuat kunci rahasia terbagi menggunakan kriptografi kunci publik Signed certificates untuk otantikasi
Record Layer Mengirimkan data menggunakan kunci yang sama, fungsi enkripsi
Kriptografi SSL/TLS Enkripsi kunci publik Kunci dipilih secara rahasia (handshake protocol) Bahan kunci dienkripsi dengan kunci publik Enkripsi simetrik Enkripsi kunci terbagi (rahasia) dari paket data Otentikasi berbasis signature Klien dapat mengecek sertifikat server bertanda, dll Hash untuk integritas Klien, server mengecek hash dari urutan pesan MAC digunakan dalam paket data (record protocol)
Program Linux Crypt Des : The data encryption standard PGP (Phil Zimmermann’s Pretty Good Privacy) Cryptographic IP Encapsulation (CIPE) Windows Netstumbler Aircrack Airsnort Cowpatty Asleap Ethereal
Penggunaan cmd Untuk melihat perintah-perintah command prompt
Klik kanan – new – shortcut – ketikkan hh.exe msits:c:/windows/ntcmds.chm::/ntcmds.htm
Kismet Kismet adalah scanner nirkabel untuk Linux Jika dibuka berupa daftar WLAN yang digunakan Target didapat dari setiap host pada WLAN berupa:
* AP MAC Address * MAC Address komputer target. * WEP – Key digunakan * Wi-Fi- saluran yang digunakan Buka Aircrack yang akan menangkap paket data dan IV. Gunakan ping ke jaringan untuk menghasilkan lebih banyak paket data : ping-t-l 50000 ip_address
Kismet (lanjutan) automaticall koneksi ke AP. Gunakan replay attack, yaitu menangkap sebuah paket dari
sebuah host pada WLAN, kemudian melakukan spoofs host dan terus mengulang paket. Menghasilkan lalu lintas paket data yang sangat besar. Program ini adalah airreplay. Buka airodump. Semua IV sedang ditulis ke dalam file yang akan diambil. Buka aircrack. Aircrack akan membaca semua IV yang di ambil dari file, dan melakukan analisis statistik pada file. Dia akan berusaha untuk brute force file” yang ada sampai menemukan passwordnya.
Sekian untuk hari ini