Selasa, 03 Januari 2012

ENKRIPSI dan DESKRIPSI (penyadian monoalfabetik,polyalfabetik,penggunaan public key dan metode enkripsi DES)

enkripsi dan deskripsi

Keamanan data adalah hal yang sangat penting, kalo didunia komputer "Keamanan Berbanding Terbalik dengan Kenyamanan". Banyak pengguna komputer rela membayar mahal untuk hal yang satu ini. Dan metode enkripsi adalah salah satu pilihan yang dapat dilakukan dari masalah keamanan data tersebut.

jika ingin ngomongin mengenai enkripsi, maka hal tersebut tidak akan terpisah dengan apa yang dinamakan Kriptografi(Cryptography). Dimana kriptografi adalah studi tentang cara-cara menyamarkan/menyandikan pesan yang bertujuan untuk menghindari perolehan pesan secara tidak sah.

sedangkan didalam kriptografi itu sendiri terdapat dua proses penting, yaitu enkripsi dan dekripsi. ngomong-2 pada tahu enkripsi ama dekripsi ga niy,,,(klo ga tahu cape' dechh,,,,,).
jadi...  
Enkripsi adalah suatu cara untuk menyandikan suatu informasi menjadi sebuah kode-kode rahasia.Sedangkan  
Dekripsi adalah metode untuk mengubah kode-kode rahasia tadi menjadi data informasi dengan menggunakan kunci rahasia (baik itu public key maupun private key).

Bila ingin mengamankan data yang anda miliki Enkripsi adalah salah satu solusi yang dapat dipergunakan,kita ga ingin kan ketika kita mengirim email tahu-2 ditengah perjalanan dibajak ama orang yang ga bertanggung jawab. Dengan menggunakan aplikasi enkripsi, paling tidak kita akan meminimalisasi pembajak terhadap data kita.

Bit Kunci dan Blok Data
banyak banget jenis Enkripsi dan setiap enkripsi dibedakan berdasar besar bit kunci dan besar blok datanya. Dari mulai bit kunci 8-bit,sampai 256 bit. dan dari 64-bit hingga 512-bit besar blok data. Mengapa bit kunci dan blok data penting?,karena kekuatan dari enkripsi terletak dalam tiga hal, yaitu besar bit kunci, bear blok data, dan metode pengulangan yang dilakukan didalamnya. semakin besar blok kunci, semakin kecil blok data dan semakin banyak pengulangan yang dilakukan maka enkripsi tersebut bisa dibilang cukup tangguh, dan begitu juga sebaliknya.



Penyandian Monoalfabetik dan Polialfabetik

Penyandian Monoalfabetik, merupakan setiap huruf digantikan dengan sebuah huruf. Huruf yang sama akan memikili pengganti yang sama. Misalnya huruf “a” digantikan dengan huruf “e”, maka setiap huruf “a” akan digantikan dengan huruf “e”. Metode pada Penyandi Monoalfabetik :

a. Caesar
Metode Caesar Cipher yang digunakan oleh Julius Caesar. Pada prinsipnya, setiap huruf digantikan dengan huruf yang berada tiga (3) posisi dalam urutan alfabet. Sebagai contoh huruf “a” digantikan dengan huruf “D” dan seterusnya.
Transformasi yang digunakan adalah:

plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

b. ROT13
Pada sistem ini sebuah huruf digantikan dengan huruf yang letaknya 13 posisi darinya.
Sebagai contoh, huruf “A” digantikan dengan huruf “N”, huruf “B” digantikan dengan huruf “O”, dan seterusnya. Enkripsi ini merupakan penggunaan dari sandi Caesar dengan geseran 13. ROT13 biasanya digunakan di forum internet, agar spoiler, jawaban teka-teki, kata-kata kotor, dan semacamnya tidak terbaca dengan sekilas. Hal ini mirip dengan mencetak jawaban TTS secara terbalik di surat kabar atau majalah.
Secara matematis, hal ini dapat dituliskan sebagai:
C ROT13 = (M)
Untuk mengembalikan kembali ke bentuk semulanya dilakukan proses enkripsi ROT13 dua kali.
M = ROT13(ROT13(M))

Penyandian Polialfabetik, merupakan suatu enkripsi dilakukan dengan mengelompokkan beberapa huruf menjadi sebuah kesatuan (unit) yang kemudian dienkripsi. Metode pada Penyandi Polialfabetik adalah Playfair. Playfair ini menggunakan tabel 5×5. Semua alfabet kecuali J diletakkan ke dalam tabel. Huruf J dianggap sama dengan huruf I, sebab huruf J mempunyai frekuensi kemunculan yang paling kecil.

Berikut ini aturan-aturan proses enkripsi pada Playfair:
1. Jika kedua huruf tidak terletak pada baris dan kolom yang sama, maka huruf pertama menjadi huruf yang sebaris dengan huruf pertama dan sekolom dengan huruf kedua. Huruf kedua menjadi huruf yang sebaris dengan huruf kedua dan sekolom dengan huruf pertama. Contohnya, SA menjadi PH, BU menjadi EP.
2. Jika kedua huruf terletak pada baris yang sama maka huruf pertama menjadi huruf setelahnya dalam baris yang sama, demikian juga dengan huruf kedua. Jika terletak pada baris kelima, maka menjadi baris pertama, dan sebaliknya. Arahnya tergantung dari posisi huruf pertama dan kedua, pergeserannya ke arah huruf kedua. Contohnya, AH menjadi TR, LK menjadi KG, BE menjadi CI.
3. Jika kedua huruf terletak pada kolom yang sama maka huruf pertama menjadi huruf setelahnya dalam kolom yang sama, demikian juga dengan huruf kedua. Jika terletak pada kolom kelima, maka menjadi kolom pertama, dan sebaliknya. Arahnya tergantung dari posisi huruf pertama dan kedua, pergeserannya ke arah huruf kedua. Contohnya, DS menjadi LY, PA menjadi GW, DH menjadi HY.
4. Jika kedua huruf sama, maka letakkan sebuah huruf di tengahnya (sesuai kesepakatan).
5. Jika jumlah huruf plainteks ganjil, maka tambahkan satu huruf pada akhirnya, seperti pada aturan ke-4.
metoda enkripsi  DES
Semenjak kehadiran internet pada kehidupan manusia, kontrol atas informasi bergerak dengan amat cepat.Termasuk pula informasi-informasi yang harus mendapatkan “perhatian” khusus karena nilai informasi tersebut yang sangat penting semisal informasi intelijen,militer, dan berbagai macam informasi yang sering dilabeli TOP SECRET.
Dengan adanya masalah di atas maka muncul ilmu baru pada dunia informatika yang disebut kriptografi yang merupakan pengembangan dari kriptologi.Berbagai pakar kriptografi telah mengembangkan berbagai macam algoritma enkripsi seperti AES,Lucifer,OTP,IDEA,Triple DES,DES,dsb.Diantara berbagai macam jenis algoritma, DES merupakan algoritma yang paling terkenal dan paling banyak digunakan di internet semisal untuk aplikasi e-commerce,perbankan,dll.Namun sebelum mempelajari bagaimana cara kerja algoritma DES maka akan “sedikit” dibahas terlebih dahulu riwayat hidup sang algoritma.
Kisah Hidup DES (Data Encryption Standard)
Pada sekitar akhir tahun 1960, IBM melakukan riset pada bidang kriptografi yang pada akhirnya disebut Lucifer.Lucifer dijual pada tahun 1971 pada sebuah perusahaan di london.Lucifer merupakan algoritma berjenis Block Cipher yang artinya bahwa input maupun output dari algoritma tersebut merupakan 1 blok yang terdiri dari banyak bit seperti 64 bit atau 128 bit.Lucifer beroperasi pada blok input 64 bit dan menggunakan key sepanjang 128 bit.
Lama kelamaan Lucifer semakin dikembangkan agar bisa lebih kebal terhadap serangan analisis cypher tetapi panjang kuncinya dikurangi menjadi 56 bit dengan masksud supaya dapat masuk pada satu chip.
Di tempat yang lain, biro standar amerika sedang mencari-cari sebuah algoritma enkripsi untuk dijadikan sebagai standar nasional.IBM mencoba mendaftarkan algoritmanya dan di tahun 1977 algoritma tersebut dijadikan sebagai DES (Data Encryption Standard).
Ternyata timbul masalah setelah DES resmi dijadikan algoritma standar nasional.Masalah pertama adalah panjang kunci DES yang hanya 56-bit sehingga amat sangat rawan dan riskan serta berbahaya , terhadap brute-force attack.Masalah kedua adalah struktur DES pada bagian substitution-box (S-box) yang diubah menurut saran dari NSA.Desain substitution-box dirahasiakan oleh NSA sehingga kita tidak mengetahui kemungkinan adanya kelemahan-kelemahan pada DES yang sengaja disembunyikan oleh NSA.Dan juga muncul kecurigaan bahwa NSA mampu membongkar cypher tanpa harus memiliki key-nya karena menurut para “pakar” kriptografi, DES sudah didesain secara cermat sehingga kalau S-box ini diubah secara acak maka sangat mungkin DES justru lebih mudah “dijebol” meskipun DES cukup kebal terhadap serangan differential cryptanalysis maupun linier cryptanalysis.
Seperti kata peribahasa “Karena susu setitik rusak iman sebelanga” ,.Di dunia ini tak ada ciptaan manusia yang sempurna.Pada tahun 1998, 70 ribu komputer di internet berhasil menjebol satu kunci DES dengan waktu sekitar 96 hari.Bahkan pada tahun 1999 berhasil dibobol dalam waktu kurang dari 22 hari.Pada tanggal 16 juni 1998 ada sebuah kelompok yang menamakan dirinya Electronic Frontier Foundation (EFF) telah berhasil memecahkan DES dalam waktu 4-5 hari menggunakan komputer yang dilengkapi dengan Integrated Circuit Chip DES Cracker.Di akhir tragedi ini, DES dianggap sudah tak aman lagi sehingga ia dicampakkan begitu saja dan digantikan oleh AES (Anvanced Encryption Standard).
Proses Kerja DES
Cara kerja DES secara sederhana dapat digambarkan sebagai berikut :
Blok Plaintext 64 bit
Invers inisial
permutasi
Ronde-16
Inisial permutasi
Blok Ciphertext
64-bit
Ronde-2
Ronde-1
Initial Permutation
Plaintet sebesar 64-bit akan dipecah menjadi 2 bagian yaitu Left (L) dan Right.Bit-bit dari plaintext akan mengalami permutasi sehingga susunannya akan berubah sebagai berikut :
[58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
Blok kiri (L)
Blok Kanan (R)
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7]
Maksud daripada keterangan di atas adalah, bit yang pada plaintext terletak pada urutan ke 58, setelah di Inisial permutasi posisinya berubah yang tadinya berada di urutan ke 58 menjadi urutan ke-1 atau yang pertama.Jika diperhatikan, bit-bit bernomor genap setelah dipecah berada di blok L (kiri) dan bit yang bernomor ganjil terletak di blok R (kanan).Permutasi diatas menggunakan sebuah urutan yang ditunjukkan oleh arah panah berwarna merah.Dimulai pada kolom paling kanan dan bit-bit yang ada akan bergerak secara urut dengan vertikal ke arah bawah.Sebagai contoh pada blok L,
bilangan genap asli terkecil adalah 2 sehingga dimulai dengan angka 2 lalu 4,6,8 lalu
menuju kolom di sebelah kirinya 10,12,dst.
16 Ronde pada DES
Algoritma DES mengalami 16 ronde untuk membentuk sebuah cipher.Pada setiap ronde, blok R (kanan) tidak akan mengalami perubahan apapun karena hanya akan dipindah menjadi blok L pada ronde selanjutnya.Namun blok R akan digunakan bersamaan dengan subkey 56-bit untuk diolah pada fungsi F dan akan di XOR-kan dengan blok L (kiri).Jika bingung dengan penjelasan di atas, coba perhatikan dan amati skema pada masing-masing ronde DES di halaman selanjutnya.
Li (32 bit) Ri (32 bit)
Subkey 56 bit
Ki+1
F
XOR
Dapat dihasilkan beberapa persamaan sebagai berikut :
Li+1 (32 bit) Ri+1 (32 bit)
1. L i+1 = R i
2.R i+1 = L i .. F(K i+1 , Ri)
Ket :
.. = Operasi XOR
Nah, semoga kamu sudah paham setelah melihat penjelasan, bagan, dan persamaan yang telah dijelaskan di atas tadi.Fungsi F merupakan satu-satunya fungsi linier yang nilainya berubah-ubah tergantung pada nilai Blok R (kanan) dan sub-key 56bit.Saya yakin kalau kamu sudah bertanya-tanya tentang fungsi F.Sekarang, untuk kesekian kalinya, perhatikan lagi sebuah bagan di halaman selanjutnya (soalnya tempatnya nanggung banget nih ,)
R i (32 bit) K i (56 bit)
Ekspansi
48 bit
Penghapusan
byte terakhir
..
S1 S2 S3 S4 S5 S6 S7 S8
48 bit
Permutasi Ket :
.. = Operasi XOR
S1 - S8 = Subsitution-box (S-box)
32 bit
susunannya akan berubah sebagai berikut :
Fungsi F dapat dilihat pada gambar diatas.Blok R (kanan) di-ekspansi sehingga
[32 1 2 3 4 54 5 6 7 8 9
8 9 10 11 12 13 12 13 14 15 16 17
16 1718 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32 1]
Angka-angka yang dicetak tebal merupakan bit-bit yang akan ditambahkan pada input sebesar 32 bit agar menjadi 48 bit.Angka tersebut akan muncul 2 kali seperti angka 1,4,5, dst.Bilangan yang dicetak tebal juga bertambah dengan aturan (a,a+8,a+16,a+24 dengan a sebagai bilangan minimum pada satu kolom)secara vertikal.Jika angka yang dicetak tebal dihilangkan maka akan muncul bit-bit yang berurutan.Jadi bit pertama yang akan di-outputkan oleh blok ekspansi adalah bit ke 32pada input ekspansi.
Hasil dari output ekspansi akan di XOR dengan subkey yang telah mengalami penghapusan byte terakhir (1 byte=8 bit) yang diubah ukurannya dari 56 bit menjadi 48 bit.Hasil XOR tadi adalah sebuah bilangan 48 bit yang akan dibagi secara merata kepada 8 Substitution Box sehingga masing-masing box akan di-input sebesar 6 bit (48/8=6).Substitution box yang agak gamblang dapat dilihat pada gambar di bawah ini :
CL Si CR
Ket:
CL = Control Left (kontrol kiri)
CR = Control Right (kontrol kanan)
dari 6 bit input pada S-box, bit paling kiri akan dimasukkan pada CL (Control Left) dan bit paling kanan akan dimasukkan pada CR (Control Right) sedangkan 4 bit sisanya akan dianggap sebagai input yang biasa-biasa saja ,.
Output dari masing-masing S-box akan menjadi bilangan sepanjang 4 bit sehingga output total dari 8 S-box menjadi 32 bit (4*8=32).Lantas, bagaimana pengolahan input pada masing-masing S-box ? OK, saya akan memberikan salah satu contoh yaitu pada S-box yang pertama.Amati tabel di bawah ini :
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Contoh :
input pada S-box ke adalah 110010.Berapa nilai outputnya ?
Jawab:
Bit paling kiri akan dijadikan CL dan bit paling kanan akan dijadikan CR.
110010
CL=1
CR=0
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Bit ke 2 sampai bit ke 5 harus diubah ke bilangan basis 10 atau bilangan
desimal.
Dari contoh di atas bit ke 2 sampai ke 5 bernilai 1001.
1001(2) = 9(10)
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Pertemuan antara baris dan kolom di atas merupakan output dari s-box pertama yang kemudian harus diubah dalam bentuk biner.
12(10) = 1100(2)
Jadi jika input dari s-box pertama adalah 110010 maka outputnya bernilai 1100.
Jika seluruh input pada S-box telah didapatkan hasil yang panjangnya 32 bit maka hasil tersebut akan dipermutasi dengan aturan :
[16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25]
Jadi, jika input dari blok permutasi pada bit ke 16 akan berubah menjadi bit pertama dari output blok permutasi.
Menggunakan Algoritma DES pada aplikasi openssl
Openssl merupakan toolkit kriptografi yang merupakan inplementasi dari secure socket layer (SSL) sebagaimana pada manual pages-nya
OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3)and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.
Openssl masih berupa tool command line yang bisa digunakan untuk mengenkrip pesan dengan algoritma simetris maupun dengan fungsi hash satu arah.Di sini saya mencoba menjelaskan bagaimana menggunakan openssl untuk mengenkrip plaintext menggunakan algoritma DES.Openssl yang digunakan merupakan OpenSSL 0.9.7e yang dirilis tanggal 25 oktober 2004 pada distro mandriva 2005.
Sebagai contoh saya akan membuat sebuah plaintext untuk dienkrip menggunakan openssl.Misalnya text tersebut berisi :
phpinfo();
?>
Plaintext tersebut disave dengan nama plaintext.php di direktori home.
$ ls
plaintext.php
kemudian saya enkrip menggunakan openssl.
$ openssl enc -e -des -in plaintext.php -out ciphertext.php
maka akan ada perintah untuk memasukkan key.Sebagai contoh key yang saya gunakan adalah hacker.Dan akan ada konfirmasi yang kedua untuk melakukan pengecekan.
enter des-cbc encryption password:
Verifying - enter des-cbc encryption password:
maka akan muncul sebuah file baru bernama ciphertext.php
$ ls
plaintext.php
ciphertext.php
isi dari ciphertext.php dapat dilihat menggunakan text editor.
Salted__¢­$Χ#­ú8#YÑÏP³#­{,ä­¯#ç^i­S#0Ò­
Lalu untuk mendekripsinya dapat digunakan perintah
$ openssl enc -d -des -in ciphertext.php -out plaintext2.php
Maka akan ada konfirmasi key.Anda hanya perlu memasukkan satu kali tanpa verifikasi.jika key yang dimasukkan salah maka akan muncul pesan error sbb :
bad decrypt
32416:error:06065064:digital envelope routines:EVP_DecryptFinal:bad
decrypt:evp_enc.c:450:
Jika key-yang dimasukkan benar maka akan muncul file beru bernama plaintext2.php yang isinya sama dengan plaintext.php.
Mengenai openssl anda dapat mempelajarinya sendiri lewat man pages-nya atau dari howtos-howtos yang ada di internet karena saya tidak bisa membahas secara rinci di sini.Openssl juga mendukung algoritma-algoritma lain seperti blowfish, AES, IDEA, rc2, rc4, rc5 dan juga fungsi hash seperti md5 dan sha1.
Penutup
Algoritma DES dalam melakukan proses enkripsi dan dekripsi menggunakan teknik yang disebut feistel yang muncul ketika awal tahun 70-an.Fungsi pada feistel dijamin dapat didekripsi :
Li .. f(Ri , Ki+1) .. f(Ri , Ki+1) = Li
Fungsi di atas dijamin dapat didekripsi selama input f dalam setiap tahap dapat dikembalikan juga.Tidak perduli macam f (meskipun fungsi f tidak dapat dibalik sekalipun) kita dapat mendesain serumit apapun tanpa perlu susah-susah untuk membuat 2 algoritma untuk enkripsi dan dekripsi.Teknik ini digunakan pada banyak algoritma seperti DES, Lucifer, FEAL, Blowfish, dll.
Sepeti sudah disampaikan di awal bahwa panjang kunci DES yang hanya 56 bit sangat rawan di brute force sehingga saat ini digunakan 3 buah DES secara berurutan untuk mengenkripsi sebuah paintext yang disebut Triple DES.Panjang kunci Triple DES juga diperpanjang 3 kali menjadi 168 bit (56*3 = 168). 

 public key.
Metode enkripsi kunci publik menawarkan keamanan yang lebih tinggidan lebihkompleks daripada metode konvensional.Metode enkripsi kunci publik membutuhkan dua buah kunci di dalamalgoritmanya, yaitu kunci publik dan kunci pribadi. Kunci publikdigunakan untukmengenkripsi plaintext menjadi ciphertext dan kunci ini tidak terlalubersifat rahasia sehingga dapat diketahui oleh banyak orang. Kuncipribadi digunakan untuk mendekripsi ciphertext menjadi plaintext dankunci ini bersifat rahasia sehingga hanya user saja yang bolehmengetahui kunci ini.syarat yang harus dipenuhi di dalam metode enkripsi kunci publik :1. Mudah bagi user untuk membentuk sepasang kunci (kuncipublik dan kunci pribadi)2. Mudah bagi user lain untuk mengetahui kunci publik milik kitadan kemudian mengenkripsi pesan yang akan dikirimkankepada kita dengan kunci tersebut.3. Mudah bagi penerima pesan untuk mendekripsi pesanciphertext yang telah diterima dengan kunci pribadi yangdimilikinya.4. Tidak mudah bagi musuh untuk mengetahui kunci publik untukmenentukan kunci pribadi yang dimiliki oleh user lain.        disusun oleh: 
                                                            mardiansyah                        0860400064
                                                            arif mensyah putra           0860400009
                                                            marya ulva                             0860400031
                                                            hendriadi                                 0860400025
                                                                                                                    

Tidak ada komentar:

Posting Komentar