KEAMANAN SISTEM KOMPUTER

ALGORITMA KRIPTOGRAFI Data Encryption Standard (DES)

Keamanan sistem komputer merupakan sebuah upaya yang dilakukan untuk mengamankan kinerja,fungsi atau proses komputer. sistem keamanan komputer juga berguna untuk menjaga komputer dari para hacker (penjahat dunia maya).


Pada studi kasus keamanan komputer di bidang pemerintahan yaitu peretasan situs KPU yang merubah situs tersebut dengan mengganti nama- nama partai politik menjadi nama-nama aneh. Tindakan tersebut merupakan tindakan tidak baik yang menimbulkan permasalahan pada sistem pemerintahan dan kerusakan sistem pada pemeritahan. Salah satu cara menanggulangi kasus tersebut adalah dengan teknik kriptografi/algoritma kriptografi yaitu  seni menyandikan data. Data yang dikirimkan disandikan terlebih dahulu sebelum dikirim melalui internet. Di komputer tujuan, data dikembalikan ke bentuk aslinya sehingga dapat dibaca dan dimengerti oleh penerima. Hal ini dilakukan supaya pihak-pihak penyerang tidak dapat mengerti isi data yang dikirim. Lebih tepatnya dengan algoritma Kriptografi  Data Encryption Standard/DES (Kriptografi Modern Algoritma Simetris).

Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma Lucifer yang dibuat oleh Horst Feistel. · Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat. 1

DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher 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. · Skema global dari algoritma DES adalah sebagai berikut (lihat Gambar 12.1): 1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP). 2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda. 3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1 ) menjadi blok cipherteks.

Skema Global Algoritma DES

Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing 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 Ki . Keluaran dai fungsi f di-XOR-kan 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 = Ri – 1 Ri 
    = Li – 1 Å f(Ri – 1, Ki)

TAHAPAN PROSES ENKRIPSI

Permutasi Awal · 
Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak plainteks sehingga urutan bit-bit di dalamnya berubah. Pengacakan dilakukan dengan menggunakan matriks permutasi awal berikut ini:


Cara membaca tabel/matriks: dua entry ujung kiri atas (58 dan 50) berarti: “pindahkan bit ke-58 ke posisi bit 1” “pindahkan bit ke-50 ke posisi bit 2”, dst.

Pembangkitan Kunci Internal 
Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16 buah, yaitu K1, K2, …, K16. Kunci-kunci internal ini dapat dibangkitkan sebelum proses enkripsi atau bersamaan dengan proses enkripsi. · Kunci internal dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci eksternal panjangnya 64 bit atau 8 karakter. · Misalkan kunci eksternal yang tersusun dari 64 bit adalah K. Kunci eksternal ini menjadi masukan untuk permutasi dengan menggunakan matriks permutasi kompresi PC-1 sebagai berikut: 


Dalam permutasi ini, tiap bit kedelapan (parity bit) dari delapan byte kunci diabaikan. Hasil permutasinya adalah sepanjang 56 bit, sehingga dapat dikatakan panjang kunci DES adalah 56 bit. Selanjutnya, 56 bit ini dibagi menjadi 2 bagian, kiri dan kanan, yang masing-masing panjangnya 28 bit, yang masingmasing disimpan di dalam C0 dan D0: 

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 

Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Operasi pergeseran bersifat wrapping atau round-shift. 

Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 1 sbb:

Misalkan (Ci , Di) menyatakan penggabungan Ci dan Di . (Ci+1, Di+1) diperoleh dengan menggeser Ci dan Di satu atau dua bit. Setelah pergeseran bit, (Ci , Di) mengalami permutasi kompresi dengan menggunakan matriks PC-2 berikut:


14
17
11
24
1
5
3
28
15
6
21
10
23
19
12
4
26
8
16
7
27
20
13
2
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32

Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang dalam hal ini 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

Jadi, setiap kunci internal Ki mempunyai panjang 48 bit.

Bila jumlah pergeseran bit-bit pada Tabel 1 dijumlahkan semuanya, maka jumlah seluruhnya sama dengan 28, yang sama dengan jumlah bit pada Ci dan Di. Karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0.

Proses Enciphering

Proses enciphering terhadap blok plainteks dilakukan sete lah permutasi awal. Setiap blok plainteks mengalami 16 kali putaran enciphering.

     Diagram komputasi fungsi f diperlihatkan pada gambar di bawah ini :

Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai

Li = Ri – 1
Ri = Li – 1 Å f(Ri – 1, Ki)

E adalah fungsi ekspansi yang memperluas blok Ri – 1 yang

panjangnya 32-bit menjadi blok 48 bit. Fungsi ekspansi

direalisasikan dengan matriks permutasi ekspansi
sbb:

















32
1
2
3
4
5
4
5
6
7
8

9



8
9
10
11
12
13
12
13
14
15
16

17



16
17
18
19
20
21
20
21
22
23
24

25



24
25
26
27
28
29
28
29
30
31
32

1

·
Selanjutnya, hasil ekpansi, yaitu E(Ri – 1), yang panjangnya 48

bit di-XOR-kan dengan Ki yang panjangnya 48 bit



menghasilkan vektor A yang panjangnya 48-bit:



E(Ri – 1) Å Ki = A

·         Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan menjadi masukan bagi proses substitusi. Proses substitusi dilakukan dengan menggunakan delapan buah kotak-S (S-box), S1 sampai S8. Setiap kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit. Kelompok 6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan S2, dan seterusnya.


·         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) sbb:

























16

7
20
21
29
12
28
17
1
15
23
26

5
8

31

10
2

8
24
14
32
27
3
9
19
13
30
6

22
11

4

25
·
Bit-bit P(B) merupakan keluaran dari fungsi f.






·
Akhirnya, bit-bit P(B) di-XOR-kan dengan Li – 1 untuk





mendapatkan Ri 









              Ri = Li – 1 Å P(B)

 Jadi, keluaran dari putaran ke-i adalah (Li, Ri) = (Ri – 1 , Li – 1 Å P(B))


Permutasi Terakhir ( Inverse Initial Permutation)

Permutasi terakhir dilakukan setelah 16 kali putaran terhadap gabungan blok kiri dan blok kanan.

Proses permutasi menggunakan matriks permutasi awal balikan (inverse initial permutation atau IP-1 ) sbb:

40
8
48
16
56
24
64
32
39
7
47
15
55
23
63
31
38
6
46
14
54
22
62
30
37
5
45
13
53
21
61
29
36
4
44
12
52
20
60
28
35
3
43
11
51
19
59
27
34
2
42
10
50
18
58
26
33
1
41
9
49
17
57
25





Proses Dekripsi · 

Proses dekripsi terhadap cipherteks merupakan kebalikan dari proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan adalah K1, K2, …, K16, maka 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) 

yang dalam hal ini, (R16, L16) adalah blok masukan awal untuk deciphering. Blok (R16, L16) diperoleh dengan mempermutasikan cipherteks dengan matriks permutasi IP-1 . Pra-keluaran dari deciphering adalah adalah (L0, R0). Dengan permutasi awal IP akan didapatkan kembali blok plainteks semula. 

Rinaldi Munir – IF5054 Kriptografi 14 · Tinjau kembali proses pembangkitan kunci internal pada Gambar 4. Selama deciphering, K16 dihasilkan dari (C16, D16) dengan permutasi PC-2. Tentu saja (C16, D16) tidak dapat diperoleh langsung pada permulaan deciphering. Tetapi karena (C16, D16) = (C0, D0), maka K16 dapat dihasilkan dari (C0, D0) tanpa perlu lagi melakukan pergeseran bit. Catatlah bahwa (C0, D0) yang merupakan bit-bit dari kunci eksternal K yang diberikan pengguna pada waktu dekripsi.

Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15, D15) diperoleh dengan menggeser C16 (yang sama dengan C0) dan D16 (yang sama dengan C0) satu bit ke kanan. Sisanya, K14 sampai K1 dihasilkan dari (C14, D14) sampai (C1, D1). Catatlah bahwa (Ci – 1, Di – 1) diperoleh dengan menggeser Ci dan Di dengan cara yang sama seperti pada Tabel 1, tetapi pergeseran kiri (left shift) diganti menjadi pergeseran kanan (right shift).

STUDI KASUS 

Penyerangan Terhadap Jaringan KPU Tahun 2004
      Jaringan internet di Pusat Tabulasi Nasional Komisi Pemilihan Umum  sempat down (terganggu) beberapa kali, diantaranya terjadi pada tahun 2004 dan 2009. Pada tahun 2004 terungkap dengan tertangkapnya Dani Firmansyah (25) oleh Aparat Satuan Cyber Crime Direktorat Reserse Khusus Kepolisian Daerah Metro Jaya, yang diduga kuat sebagai pelaku yang membobol situs (hacker) di Pusat Tabulasi Nasional Pemilu Komisi Pemilihan Umum (TNP KPU). Kepada polisi, Dani mengaku meng-hack situs tersebut hanya karena ingin mengetes keamanan sistem keamanan server tnp.kpu.go.id, yang disebut-sebut mempunyai sistem pengamanan berlapis-lapis. Motivasi tersangka melakukan serangan ke website KPU yaitu Dani merasa tertantang dengan pernyataaan Ketua Kelompok Kerja TI

       KPU Chusnul Mar’iyah disebuah tayangan televisi dan untuk memperingatkan kepada tim TI KPU bahwa sistem TI yang seharga Rp 125 miliar itu ternyata tidak aman. Tersangka berhasil menembus server tnp.kpu.go.id dengan cara XSS atau Cross Site Scripting dan SQL Injection, Meski perbuatan itu hanya iseng, kata Makbul, polisi tetap menilai tindakan Dani telah melanggar hukum dan dapat menimbulkan ganggan fisik dan elektromagnetik terhadap penyelenggaraan telekomunikasi dan menghancurkan atau merusak barang.

Dani Firmansyah, hacker situs tnp.kpu.go.id yang merupakan konsultan TI Danareksa sebelumnya ternyata juga pernah membobol situs Danareksa. Pihak PT Danareksa menegaskan bahwa kegiatan hacking KPU adalah tindakan pribadi Dani Firmansyah yang tidak ada sangkut pautnya dengan PT Danareksa.

         Ditangkapnya Dani Firmansyah sebagai tersangka pelaku penyusupan atas situs tnp.kpu.go.id menuai protes dari beberapa kalangan. Perbuatan Dani oleh kalangan tersebut dianggap sebagai perbuatan yang baik karena Dani menunjukkan kelemahan sistem.Komunitas Hacker pun kembali menyerukan pembebasan Dani Firmansyah, tersangka penyusup situs KPU.

        Maka menjadi aneh ketika KPU gagal mengamankan situsnya dari serangan dengan teknik 'lawas' itu. "Pertanyaan yang paling mendasar adalah, kok bisa-bisanya sebuah sistem berharga ratusan miliar tersebut bisa dibobol hanya dengan modal teknik klasik oleh seorang hacker iseng? " ujar Donny B.U, pengamat Telematika dan koordinator ICT Watch, dalam siaran.pers.yang.diterima.detikcom,Selasa.(26/04/04).

        Apa yang dilakukan oleh KPU, dengan membuat sistem keamanan yang berlapis namun menyisakan lubang SQL Injection tersebut, diibaratkan Donny sebagai usaha pengamanan rumah yang teledor. "Jadi ibaratnya kita mengelilingi rumah kita dengan kawat berduri serta memasang teralis di seluruh pintu masuk, tetapi jendela samping dibiarkan atau tanpa sengaja terbuka.lebar,"kata.Donny.

       Donny mengharapkan KPU, selaku pemilik dan administrator sistem itu, bertanggungjawab atas kejadian tersebut. "Pihak pemilik sistem, dalam hal ini KPU, juga perlu dimintakan pertanggung-jawaban kepada publik, dan kalau perlu dihadapan hukum, atas keteledorannya,". Donny menjelaskan.

       Mengenai keteledoran KPU dan keharusan mereka untuk bertanggungjawab juga sempat diucapkan oleh pengamat Telematika asal UGM, Roy Suryo. Roy beranggapan bahwa KPU juga lalai dalam menjamin keamanan sistem milik umum tersebut.

Apa yang dilakukan oleh Dani pada dasarnya bukan hal yang mengerikan. Ia hanya mengubah nama partai peserta Pemilu menjadi nama yang aneh dan lucu seperti Partai Jambu, Partai.Kolor.Ijo.dan.sejenisnya

        Donny beranggapan ada hal lain yang mungkin dilakukan Dani yang dampaknya akan lebih mengerikan. "(Jika Dani) mengubah nama partai Golkar menjadi partai PDI Perjuangan, dan demikian sebaliknya. Itulah yang benar-benar dapat dikatakan membuat kekacauan,"demikian.pendapat.Donny.

Namun, pada kenyataannya, hal itu tidak dilakukan. Dan, apabila hal itu sampai terjadi, Donny tetap beranggapan bahwa KPU yang seharusnya bertanggungjawab.

             Dani Firmansyah, tersangka penyusupan situs KPU, dinyatakan menggunakan teknik SQL Injection dalam melakukan aksinya. Perlu diketahui, teknik tersebut merupakan teknik yang telah lama beredar di kalangan Teknologi Informasi (TI). Teknik itu juga tidak melibatkan pembobolan.tingkat.tinggi.

         Donny menambahkan"Tidak menjadi kesalahan para hacker sepenuhnya, jika banyak di antara mereka yang sebelumnya sempat tergiur untuk mencoba-coba masuk ke dalam sistem komputer KPU,"

PROGRAM ALGORITMA DES DENGAN BAHASA PEMROGRAMAN C++

Source Code :
include <cstdlib>
#include <iostream>
#include <string.h>
#define maks 500

using namespace std;
class Enkripsi{
public:
Enkripsi();
void enkripsi();
void deskripsi();
void output();
private:
char chiper[maks];
int key;
char plain[maks];

};

Enkripsi::Enkripsi(){
cout<<“Masukkan kata : “;
cin.getline(chiper,sizeof(chiper));
cout<<“Masukkan key  : “;
cin>>key;
cout<<endl;
}

void Enkripsi::enkripsi(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i]<<“(“<<int(chiper[i])<<“) “;
chiper[i] = (chiper[i]+key)%128;
}
}

void Enkripsi::deskripsi(){
for(int i=0;i<strlen(chiper);i+=1){
plain[i] = (chiper[i]-key)%128;
chiper[i] = plain[i];
}
}

void Enkripsi::output(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i];
}
}

int main(int argc, char *argv[])
{
Enkripsi Deskripsi;
Deskripsi.enkripsi();
cout<<“\n\nSetelah diEnkripsi : “;
Deskripsi.output();
Deskripsi.deskripsi();
cout<<“\n\nKembali diDeskripsi : “;
Deskripsi.output();

cout<<endl<<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}


REFERENSI :

http://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/Data%20Encryption%20Standard%20(DES)


Komentar