Breaking News

Pages

Minggu, 27 Maret 2016

Pengertian dan Cara Kerja DES,IDEA,AES

Pengertian Data Encrytion Standard

Data Encryption Standard (DES) adalah salah satu algoritma kriptografi simetris, artinya kunci yang digunakan untuk proses enkripsi sama dengan kunci yang digunakan untuk proses dekripsi. Algoritma DES ini juga merupakan algoritma enkripsi block-chiperdengan panjang blok 64 bit dan dengan panjang kunci 56 bit yang bersifat rahasia yang dibagi (shared secret). Shared secret sendiri merupakan sepenggal data yang hanya diketahui oleh pihak-pihak yang melakukan komunikasi, dalam hal ini yaitu pengirim pesan dan penerima pesan. Yang dimaksud sepenggal data di sini dapat berupa kata sandi (password), passphrase, atau kunci pada algoritma enkripsi. Saat ini DES sudah hampir tidak digunakan lagi karena panjang kunci yang hanya 56 bit itu amat dengan mudah dibongkar dengan serangan Brute Force. Menggunakan prosesor tercepat saat tulisan ini dibuat, DES dapat dibongkar hanya dalam waktu beberapa menit. Algoritma lain yang dianggap sebagai ganti dari algoritma DES ialah algoritma AES (Advanced Encryption Standard).


Cara Kerja Data Encryption Standard


Cara kerjanya adalah dengan mengubah pesan asli yang dapat dimengerti/dibaca manusia (plainteks) ke bentuk lain yang tidak dapat dimengerti/dibaca oleh manusia (cipherteks). Proses transformasi plainteks menjadi chiperteks diistilahkan dengan enkripsi.
Contohnya seperti ini :
plaintext : bayucaem
binary : 0110001001100001011110010111010101100011011000010110010101101101
jika sudah diacak oleh matriks IP akan menjadi:
1111111100001100
1100100011111110
0000000011111111
1000010000010001
begini code-nya dalam c#:
pertama jadikan plaintext ke binary :
setelah jadi tuh binary, dibagi-bagi tiap 64 bit.
jika sudah dibagi-bagi menjadi 64 bit maka di permutasikan dengan matriks IP
setelah tahap permutasi selesai dilakukan maka sekarang menuju ke tahap enchipering. disni butuh yang namanya kunci eksternal yang akan membentuk kunci internal. jadi gambarannya sang user jika ingin mengenkripsi maka ada dua yang harus diinputkan yaitu plaintextnya  dan kuncinya sepanjang 16 digit hexadesimal. kunci ini juga (selanjutnya disebut kunci eksternal) akan digunakan pada saat mendekripsi DES.
diperlukan 16 kunci internal untuk digunakan dalam putaran enchipering. untuk mendapatkannya pertama, kunci external yang diinputkan oleh user dalam bentuk hexadesimal diubah kebentuk biner kemudian dipermutasikan oleh matriks PC-1. ini matriksnya :
57494133251791585042342618
10259514335271911360524436
635547393123157625446383022
1466153453729211352820124
cara permutasinya sama dengan permutasi plaintext dan mengahsilkan 56 bit dari 64 bit kunci eksternal. setelah didapatkan hasil dari permutasi maka hasil permutasi tadi dibagi dua, yaitu bagian kiri dan kanan masing-masing 28 bit. Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Operasi pergeseran bersifat wrappingatau round-shift. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 1 sbb:
Putaran, iJumlah pergeseran bit
11
21
32
42
52
62
72
82
91
102
112
122
132
142
152
161
setelah digeser, masing-masing digabungkan kembali dan kembali lagi dipermutasikan. tetapi matriks yang digunakan adalah matriks pc-2 :
14171124153281562110
23191242681672720132
415231374755304051453348
444939563453464250362932
ilustrasinya begini:
key eksternal inputan user : ab12781bac253987
binernya:
1010101100010010
0111100000011011
1010110000100101
0011100110000111
setelah dipermutasikan dengan pc-1 dan dibagi menjadi dua bagian (L0 dan R0)
L0
10010001000001
00011101010100
R0
10001011101100
00010111011110
karena ini adalah putaran pertama maka L0 dan R0 masing-masing digeser kekiri 1 kali menurut tabel pergeseran diatas, hasilnya begini setelah L0 dan R0 digeser dan digabung kembali kemudian dipermutasikan dengan pc-2
010000110010
110000010010
010010001101
011111000101
dalam hexadecimal : 432c1248d7c5
itulah key internal pertama yang didapatkan. untuk mendapatkan key/kunci internal yang kedua  cukup key yang pertama dibagi masing-masing 24 bit kiri dan kanan setelah itu digeser menurut table pergesaran  dan dipermutasikan dengan pc-2. berikut key internal lengkapnya :
Key eksternal : ab12781bac253987
nokey
1432c1248d7c5
250422d7cb8e8
381912420fc7f
4800ae72fbcb2
5b17220ad4d73
68017e00fca56
7d05255d5c5d4
805d3408986cd
9e621187136f8
100e861139b82f
114f181a267cb6
122ea0c82d29f7
131a4c0aa7c8d3
14682918478757
1504ac0d9f85cc
169805c455366e
implementasi pembentukan kunci dalam bahasa c# sebagai berikut :
pertama adalah menerima input dari user berupa hexadesimal kemudian inputan tersebut dijadikan biner:
bilangan biner yang di dapat akan dilakukan permutasi dengan pc-1. fungsi yang digunakan adalah fungsi permutasi yang dilakukan pada plaintext hanya berbeda array matriksnya saja. setelah itu dibagi dua masing-masing menjadi L0 dan R0:
setelah itu adalah pergesaran pada kedua bagian tersebut




Setelah digeser proses terakhir adalah menggabungkan L0 dan R0 lalu dilakukan permutasi pada matriks pc-2. nah untuk fungsi permutasi yang digunakan adalah fungsi pada permutasi pada plaintext, hanya saja array yang digunakan adalah array matriks pc-2.
Nah sekarang masuk ke proses 16 kali enchipering karena kunci internalnya dan hasil permutasi matriks IP  sudah didapatkan.
secara lengkap bagan DES adalah seperti ini :
ini dia bagian terumit dari DES. gambar diatas ada dua bagian, yang kanan tuh proses DES lengkap sedangkan yang kiri adalah rincian dari proses fungsi F. proses enchipering dimulai pada saat hasil dari permutasi matriks IP dibagi dua yaitu Lo dan Ro masing-masing 32 bit. setelah itu dilakukan rumus dibawah ini untuk hasil putaran pertama (disebut L1 dan R1):
Li R– 1
Ri L– 1 xor f(R– 1Ki)
misalnya hasil dari permutasi IP adalah 1111111111111111111111111111111100000000000000000000000000000000 maka begini jika di pisah menjadi L0 dan R0
jadi untuk mendapatkan L1 itu tinggal copas dari R0. sedangkan R1 di dapatkan dari L0 di-xor-kan dengan fungsi F. bagan fungsi F bisa dilihat diatas. fungsi F ini memerlukan R0 dan kunci internal pertama (K1).
didalam fungsi F ini nantinya R0 akan diekspansi dari 32 bit menjadi 48 bit. cara mengekspansinya adalah dengan melakukan permutasi oleh matriks E :
3212345456789
8910111213121314151617
161718192021202122232425
24252627282928293031321
cara permutasi sudah ada di episode 1. hasil dari permutasi matriks E di-xor-kan oleh kunci internal pertama. hasil xor ini nantinya di sebut oleh vektor A. selanjutnya vektor A ini bagi-bagi menjadi 8 bagian masing-masing 6 bit. dari bagian yang paling kiri disebut A1 dan paling kanan A8.  nah nanti A1-A8 ini disubtitusikan oleh S-box yang banyaknya juga ada 8 kotak. berikut adalah S-box urut dari S1-S8 :
S1
1441312151183106125907
0157414213110612119538
4114813621115129731050
1512824917511314100613
S2
1518146113497213120510
3134715281412011069115
0147111041315812693215
1381013154211671205149
S3
1009146315511312711428
1370934610285141211151
1364981530111212510147
1101306987415143115212
S4
7131430691012851112415
1381156150347212110149
1069012117131513145284
3150610113894511127214
S5
2124171011685315130149
1411212471315015103986
4211110137815912563014
1181271142136150910453
S6
1211015926801334147511
1015427129561131401138
9141552812370410113116
4321295151011141760813
S7
4112141508133129751061
1301174911014351221586
1411131237141015680592
6111381410795015142312
S8
1328461511110931450127
1151381037412561101492
7114191214206101315358
2114741081315129035611
bisa diliat bahwa masing-masing S-box memiliki 4 baris (baris ke 0 sampai baris ke 3) dan 16 kolom (kolom ke 0 sampai kolom ke 15). vektor A yang sudah dibagi menjadi 8 masing-masing 6 bit akan disubsitusikan dengan S-box dengan cara berikut :
misal A1 adalah 010011 maka dapat dilihat seperti gambar diatas dikonversi menjadi baris 01 (dalam desimal 1) dan kolom 1001 (dalam desimal 9). maka cari pada S1 baris 1 dan kolom 9 maka hasilnya adalah 6 (dirubah menjadi 4 bit = 0110). begitu seterusnya untuk A2 dan S2, dst. setelah semua bagian disubtitusi dan dirubah menjadi bit-bit maka digabungkan akan menjadi 32 bit yang disebut vektor B. nah nanti vektor B ini akan dipermutasikan oleh matriks P :
1672021291228171152326583110
28241432273919133062211425
hasil dari permutasi inilah keluaran dari fungsi F yang nantinya akan di-xor-kan dengan L0 untuk menghasilkan R1.
untuk mengahsilkan L2 dan R2  maka ulangi proses tadi dengan data yang sudah di peroleh yaitu L1,R1, dan K2. proses ini diulang sampai didapatkan L16 dan R16. nah setelah mendapatkan L16 dan R16, dua bagian ini akan digabungkan, namun posisinya dipertukarkan. pemisalan enchipering akhir sebagai berikut :
selesai sudah proses enchipering, inti dari proses DES. proses enchipering tidak diberikan contoh karena sangat panjang, nih pseudo codenya aja
fungsi enkirpsides menerima variable Lo, R0,dan kunci yang nantinya fungsi ini akan diputar 16 kali.
fungsi funsif yang dipanggil oleh fungsi enkirpsides yang menerima inputan R dan kunci internal
fungsi-fungsi yang dipanggil oleh fungsi fungsif
selesai sudah tahap dari enchipering DES. sekarang keluaran dari tahap enchipering ini akan di invers. caranya yaitu dilakukan permutasi oleh matriks IP-1
408481656246432397471555236331
386461454226230375451353216129
364441252206028353431151195927
34242105018582633141949175725
selesai sudah enkripsi DES.

Klick Lanjutan pengertian  dan cara kerja : International Data Encryption Algorithm (IDEA )

1 komentar:

Designed By