Wednesday, May 21, 2014

Algoritma Kriptografi Modern


·        Algoritma kriptografi modern umumnya beroperasi dalam mode bit ketimbang mode karakter (seperti yang dilakukan pada cipher substitusi atau cipher transposisi dari algoritma kriptografi klasik).


·        Operasi dalam mode bit berarti semua data dan informasi (baik kunci, plainteks, maupun cipherteks) dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Algoritma enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian bit. Rangkaian  bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk rangkaian bit, demikian sebaliknya. 

·        Perkembangan algoritma kriptografi modern berbasis bit didorong oleh penggunaan komputer digital yang merepresentasikan data dalam bentuk biner.

·        Algoritma kriptografi yang beroperasi dalam mode bit dapat dikelompokkan menjadi dua kategori:
1. Cipher aliran (stream cipher)
              Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit.

          2. Cipher blok (block cipher)
              Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
              Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter = 8 bit dalam pengkodean ASCII).

Rangkaian bit


·        Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam sejumlah cara bergantung pada panjang blok.

Contoh: Plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi

1001  1101  0110

Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu

          9        13      6
         
Bila plainteks dibagi menjadi blok-blok yang berukuran 3 bit, maka rangkaian bit di atas menjadi:

100   111  010   110
           
          Setiap blok menyatakan bilangan bulat dari 0 sampai 7, yaitu

                   4        7        2        6

Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok
yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu yang disebut  padding bits.
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi

10011  10101 00010

Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal (dicetak tebal) agar ukurannya menjadi 5 bit. Padding bits dapat mengakibatkan ukuran plainteks hasil dekripsi lebih besar daripada ukuran plainteks semula.



·        Cara lain untuk menyatakan rangkaian bit adalah dengan notasi heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang berukuran 4 bit dengan representasi dalam HEX adalah:

0000 = 0     0001 = 1     0010 = 2     0011 = 3
0100 = 4     0101 = 5     0011 = 6     0111 = 7
1000 = 8     1011 = 9     1010 = A    1011 = B
1100 = C    1101 = D    1101 = E     1111 = F

Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi

1001  1101  0110

yang dalam notasi HEX adalah

          9 D 6


Operator XOR

·        Operator biner yang sering digunakan dalam cipher yang yang beroperasi dalam mode bit adalah XOR atau exclusive-or.

·        Notasi matematis untuk opeartor XOR adalah Å (dalam Bahas C, operator XOR dilambangkan dengan ^).

·        Operator XOR diperasikan pada dua bit dengan aturan sebagai berikut:

0 Å 0 = 0
0 Å 1 = 1
1 Å 0 = 1
1 Å 1 = 0

Operator XOR identik dengan penjumlahan modulo 2.       
·        Misalkan a, b, dan c adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
          (i)   a  Å a = 0                                 
          (ii)  a Å b = b Å a                            (Hukum komutatif)
                   (iii) a Å (b Å c) = (a Å b) Å c         (Hukum asosiatif)

·        Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua ramngkaian bit tersebut.

Contoh: 10011 Å 11001 = 01010
     yang dalam hal ini, hasilnya diperoleh sebagai berikut:

                   1           0        0         1         1  
                   1           1        0         0         1    Å
               1 Å 1   0 Å 1  0 Å 0  1Å 0  1 Å 1       
                   0          1         0         1         0

·        Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks:

CP Å K                                                 (6.1)

Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan:

                   P = C Å K                                                  (6.2)

Contoh:      plainteks              01100101             (karakter ‘e’)
                   kunci                    00110101   Å       (karakter ‘5’)
 


                   cipherteks            01010000             (karakter ‘P’)
                   kunci                    00110101   Å       (karakter ‘5’)
         
          plainteks              01100101             (karakter ‘e’)
·              Program komersil yang berbasis DOS atau Macintosh menggunakan algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak aman karena cipherteksnya mudah dipecahkan.

Cara memecahkannya adalah sebagai berikut (asumsi: panjang kunci adalah sejumlah kecil byte):
1.     Cari panjang kunci dengan prosedur counting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.


2.     Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut. 

0 comments:

Post a Comment

Followers

English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified


  © Blogger template 'A Click Apart' by Ourblogtemplates.com 2008

Back to TOP