MACAMMACAM ALGORITMA KRIPTOGRAFI MODERNPada kriptografi modern terdapat berbagai macam algoritma, secara umum algorimta
kriptografi modern dibagi tiga bagian yaitu: 1. Algoritma Simetris adalah algoritma yangmenggunakan kunci yang sama untuk melakukan
enkripsi dan dekripsi. Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma:
• Data Encryption Standard (DES)
• Advance Encryption Standard (AES)
• International Data Encryption Algoritma (IDEA)
• A5
• RC4 2. Algoritma Asimetris adalah pasangan kunci kriptografi yang salah satunyadigunakan untuk proses enkripsi dan yang satu lagi digunakan untuk dekripsi. Beberapa contohalgoritma yang menerapkan asimetris diantaranya:
• Digital Signature logartihm (DSA)
• RSA
• DiffieHellman (DH)
• Elliptic Curve Cryptiography (ECC)
• Kripto Quantum 3. Fungsi Hash juga sering disebut fungsi Hash satu arah (OneWayFunction), message digest, fingerprint, fungsi kompresi, dan message authentication code(MAC), merupakan fungsi matematika yang mengambil masukan panjang variabel danmengubahnya ke dalam urutan biner dengan panjang yang tetap. Fungsi hash biasanyadiperlukan untuk membuat sidik jari dari suatu pesan. Sidik jari pada pesan merupakan suatutanda untuk mematikan bahwa pesan tersebut benarbenar dari sumber yang dipercaya
Algoritma DES (Data Encryption Standard)Standar enkripsi data (Data Encryption Standard – DES) merupakan algoritma yang
diadopsi oleh NIST (National Institute of Standard and Technology) sebagai standar pengolahan data Informasi Federal AS.
Secara umum DES terdiri dari 3 kelompok, yakni: 1. Pemrosesan kunci 2. Enkripsi Data 3.Dekripsi Data
Sejarah DES
Pada tahun 1960 hingga tahun 1971 IBM melakukan riset pada bidang kriptografi yang diberi nama Lucifer yang dipimpin oleh Horst Feistel. Proyek riset Lucifer merupakan cikal bakal adanya algoritma Data Encryption Standard (DES).
Pada tahun 1972, IBM mengembangkan proyek riset DES yang dulunya bernama Lucifer melalui tim kriptografinya dibawah kepemimpinan W.L. Tuchman. National Bureau of Standard (NBS) meminta National Security Agency (NSA) untuk melakukan evaluasi terhadap Algoritma
DES dan pada tahun 1976 Data Encryption Standard (DES) terpilih menjadi standar yang dipakai pemerintahan AS.
Algoritma DES
DES termasuk sistem kriptografi simetris dan tergolong dalam jenis blok kode yangberoperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bitcipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upakunci(subkey).Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit. Skemaglobal dari algoritma DES adalah sebagai berikut: 1. Blok plainteks dipermutasi dengan matrikspermutasi awal (initial permutation atau IP), ditulis
dengan x0
= IP (x) = L0
R0
. 2. Hasil permutasi awal kemudian dienciphering sebanyak 16 kaH (16 putaran). Setiap putaran
menggunakan kunci internal yang berbeda dengan perhitungan L
i R i . 3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial
permutation atau IP1 ) menjadi blok cipherteks.
Dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R),yang masingmasing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES.Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut f.
Pada fungsi f, blok R dikombinasikan dengan kunci internal K i . Keluaran dari fungsi fdiXORkan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru
langsung diambil dari blok R sebelumnya. Ini adalah satu putaran DES.
Secara matematis, satu putaran DES dinyatakan sebagai
Li
=Ri1 R
i
=Li1
f(Ri1,
Ki
)
Dimana, ⊕ merupakan exclusiveor dari dua. f merupakan suatu fungsi dan K1, K2, .... Kn adalah kunci. Ki merupakan permutasi K terdiri dari kunci skedul. Satu putaran DES merupakan model jaringan Feistel, dapat dilihat pada gambar berikut ini.Gambar Skema Global Algoritma DES
Initial Prmutation (IP)
Invers Initial Prmutation (IP1)
Block Plaintext
Enchipering
Block Code
PROSES ENKRIPSI DAN DEKRIPSI ALGORTIMA DES
Pada algoritma DES proese enkripsi terhadap plaintext, terlebih dahulu dilakukanpermutasi awal (Initial Permutation) terhadap plaintext. Setiap blok plaintext mengalami 16 kaliputaran pengkodean dan pada akhir enkripsi dilakukan IP kembali. Satu kali putaran merupakanjaringan Fiestel (f). Pada saat dekripsi prosesnya sama dengan enkripsi, tetapi kunci yangdigunakan untuk awal dekripsi dimulai dari K16
...K1
. Matriks P, E, SBoxes, IP, PC1 dan PC2 yang digunakan jugasama dengan pada saat enkripsi.
Gambar Putaran Pertama Algoritma DES
Li1
Li1
Ri1
Ri1
+
fK i
Proses enkripsi dimulai dengan mengubah pesan m menjadi biner dengan ukuran blok 64 bit.Kemudian terhadap pesan dalam biner diacak dengan menggunakan IP, kemudian pesan dibagi2 @ 32 bit Left dan Right. Untuk setiap putaran (round); terhadap Li dan Ri dilakukan pertukarandari kanan ke kiri. Sementara untuk mendapatkan Ri digunakan f dan dilakukan operasi XOR
dengan Li; kecuali putaran terakhir (round 16) dilakukan sebaliknya. Jadi L i
= Ri1
dan R i
= Li1
⊕ f(Ri1
, K i ) ∀i = 1,2,...15. Sementara untuk i=16 dilakukan dengan cara sebaliknya yaitu L16
= L15
⊕ f(R15
, K16
) dan R16
= R15
. f adalah sebuah fungsi yang memetakan (map) string 32bit ke string 32bit yang dihitungdari kunci dan Ri1
f(R15
,K16
L16
=R
15
)=P(S(E(R15
)⊕K16 ))
L15
=R14
L1
=R0
L2
=R1
⊕ f(R15
Gambar Enkripsi dengan Algoritma DES
L0
,K16
)
Chipertext
Plaintext
IP
f(R0
f(R1
R15
diexpand menjadi 48 bit dengan menggunakan bitselection table (matrix) E. Kemudian, lakukanoperasi XOR string 48bit yang baru dengan K i . Lalu string hasil 48bit dikompress menjadi 32bit dengan menggunakan SBoxes. Kedelapan SBoxes dirancang untuk memetakan string 6bitmenjadi string 4bit. Misalkan satu string 6bit adalah matriks 4 x 16 [0..3, 0..15]. Bit pertama danke 6 diinterpretasikan sebagai string 2bit untuk menghasilkan baris [0..3]; bit ke2 sampai ke5
diinterpretasikan sebagai string 4bit untuk menghasilkan kolom [0..15].
Contoh, sebuah string 6bit 101011 akan diinterpretasikan sebagai posisi array [3,5]. Elemen pada posisi tersebut adalah string 4bit dalam bentuk biner. Jadi string 48bit dianggap sebagai 8 blok masingmasing 6bit; dengan transformasi menggunakan salah satu dari 8 SBoxes akan menghasilkan 8 blok dengan panjang 4; sehingga diperoleh string 32bit. Dengan menggunakan string 6bit 101011 di atas sebagai input terhadap S2Box yaitu baris ke3 kolom ke5 menghasilkan output = 15 (1111). Akhirnya, blok 32bit ini dipermutasikan dengan P dan diXORkan dengan L
i1untuk menghasilkan R i . Secara singkat fungsi f dapat dituliskan sebagai: F(Ri1
, K i ) = P(S(E(Ri1
) ⊕K i )); yang diuraikan menjadi: 1. Expansikan R
i1 2. XORkan Ri1
yang telah diexpand dengan K i 3. Gunakan SBox terhadap hasil langkah 2 untuk mengubahstring 48 bit jadi 32bit 4. Gunakan permutasi P dan XORkan dengan L
i1
untuk menghasilkan R i
Yang menjadi pertanyaan, adalah bagaimana kunci 48 bit pada setiap round dari 16 diperoleh? Untuk itu kita perlu memperhatikan / menggunakan PC1, PC2 dan The Key Schedule of Left Shift LS berikut:
Iterasi Ke 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#LeftShift 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Pada setiap tahap, kunci 56bit mulamula digunakan untuk menghasilkan kunci 48bit K i(i=1,2..16). Pada round pertama, keseluruhan kunci (56bit) diinjeksikan ke string 64bit, denganbit ke 8, 16, 24 dan seterusnya dianggap parity check; kemudian hasil tersebut diberikan kepadapermutasi 64bit PC1, yang juga membuang parity bit. Kemudian pada setiap tahap, kunci 56bit
dipecah menjadi 2 bagian kiri dan kanan masingmasing 28bit (Ci1
dan Di1
). Potongan 28 bit ini akan dilakukan shift left 1 kali atau 2 kali sehubungan dengan iterasi dan key schedule di atas. Penggabungan Ci1
dan Di1
kemudian mempunyai 48 bit yang dipilih dari PC2.
Ada beberapa matriks yang digunakan yaitu: 1. IP (Initial Permutation), matriks 8 x 8 yangdigunakan pada awal dan akhir enkripsi dan dekripsi. 2. E (Expansion), matriks 8 x 6. 3. P(Permutation), matriks 8 x 4. 4. SBoxes, terdiri dari 8 buah matriks berukuran 4 x 16. 5. PC1(Key Permutation 1), matriks 8 x 7. 6. PC2 (Key Permutation 2), matriks 8 x 6
CARA MENGHITUNG KUNCI
Pertama, bagian kanan Ri1
kunci 56 bit
plaintext 64 bit
χDES
BENTUK KRIPTOSISTEM DES
= << K56
, M64
ciphertext 64 bit
, C64
, TDES
>>
transformasi DES
Left Shift
Left Shift
Left Shift
C15
C16
Co
C1
C2
Kunci Eksternal
Permutasi PC1
Gambar Proses Menghitung Kunci
Left Shift
Left Shift
Left Shift
D15
D16
Do
D1
D2
Permutasi PC2
Permutasi PC2
K
TABEL MATRIK ALGORITMA DES
1. Initial Permutation
1 2 3 4 5 6 7 8 1 58 50 42 34 26 18 10 2 2 60 52 44 36 28 20 12 4 3 62 54 46 38 30 22 14 6 IP =4 64 56 48 40 32 24 16 8 5 57 49 41 33 25 17 9 1 6 59 51 43 35 27 19 11 3 7 61 53 45 37 29 21
13 5 8 63 55 47 39 31 23 15 7
2. Final Permutation (IP1)
1 2 3 4 5 6 7 8 1 40 8 48 16 56 24 64 32 2 39 7 47 15 55 23 63 31 3 38 6 46 14 54 22 62 30 IP1= 4 37 5 45 13 53 21 61 29 5 36 4 44 12 52 20 60 28 6 35 3 43 11 51 19 59 27 7 34 2 42 10 50
18 58 26 8 33 1 41 9 49 17 57 25
3. Expansion Function (E)
1 2 3 4 5 6 1 32 1 2 3 4 5
2 4 5 6 7 8 9 3 8 9 10 11 12 13 E= 4 12 13 14 15 16 17 5 16 17 18 19 20 21 6 20 21 22 23 24 257 24 25 26 27 28 29 8 28 29 30 31 32 1
4. Permutation P
1 2 3 4 1 16 7 20 21 2 29 12 28 17 3 1 15 23 26 P= 4 5 18 31 10 5 2 8 24 14 6 32 27 3 9 7 19 1330 6 8 22 11 4 25
5. SBoxes (S1S8) S1: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 2 3 6 4 9 8 15 3 011 1 2 12 5 10 14 7 3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S4: Column Row 0 1 2 3 4 5 6 7 8 910 11 12 13 14 15 0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 92 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 4
S5: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S8: Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
6. Key Permutation (PC1)
1 2 3 4 5 6 7 1 57 49 41 33 25 17 9 2 1 58 50 42 34 26 18 3 10 2 59 51 43 35 27 PC1= 4 19 11 360 52 44 36 5 63 55 47 39 31 23 15 6 7 62 54 46 38 30 22 7 14 6 61 53 45 37 29 8 21 13 5 28 20
12 4
7. Compression Key (PC2)
1 2 3 4 5 6 1 14 17 11 24 1 5 2 3 28 15 6 21 10 3 23 19 12 4 26 8 PC2= 4 16 7 27 20 13 2 5 4152 31 37 47 55 6 30 40 51 45 33 48 7 44 49 39 56 34 53 8 46 42 50 36 29 32
Contoh: Plaintext: computer Kunci: program Enkripsi: computer = 01100011 0110111101101101 01110000 01110101 01110100 01100101Bit Ke:
Bit Ke:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16i
12345678 90123456 78901234 56789012 34567890 12345678 90123456 78901234
12345678 90123456 78901234 56789012 34567890 12345678 90123456 78901234
01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010
11111111 10111000 01110110 01010111 00000000 11111111 00000110 10000011 00000000 11111111 00000110 10000011 10111011 10011001 11101001 11001100 10111011 10011001 11101001 11001100 10000011 11110101 10001100 10100011 10000011 11110101 10001100 10100011 00010001 11011011 11001111 11011100 00010001 11011011 11001111 11011100 10011010 11110110 01100010 01011001 10011010 11110110 01100010 01011001 00100111 10100001 00011011 01011101 00100111 10100001 00011011 01011101 10110110 11100110 11001011 11011010 10110110 11100110 11001011 11011010 00101011 00111100 00010000 10101110 00101011 00111100 00010000 10101110 00011000 11111111 00010001 01010010 00011000 11111111 00010001 01010010 01111101 00001100 10100001 00101111 01111101 00001100 10100001 00101111 00011100 10111110 11100110 11101110 00011100 10111110 11100110 11101110 00000110 10001101 00100001 01011101 00000110 10001101 00100001 01011101 00111011 10000010 00101110 01001011 00111011 10000010 00101110 01001011 00100000 11111001 00001101 11110001 00100000 11111001 00001101 11110001 01101110 01001001 10001101 00010000 01101110 01001001 10001101 00010000 11101000 10000011 01111000 01001100 01010010 10011000 11000001 01011010 11101000 10000011 01111000 01001100
00100100 01100001 00000010 10011011 01011001 10001000 11001111 10110100
c
Chipertext
o
Li
m
p
u
t