• Tidak ada hasil yang ditemukan

Algoritma Kriptografi Modern (Bagian 1)

N/A
N/A
Zia Imam Perdana

Academic year: 2024

Membagikan "Algoritma Kriptografi Modern (Bagian 1)"

Copied!
17
0
0

Teks penuh

(1)

Algoritma Kriptografi Modern

(Bagian 1)

Bahan kuliah

Kriptograf

(2)

Pendahuluan

Beroperasi dalam mode bit (algoritma

kriptograf klasik beroperasi dalam mode karakter)

 kunci, plainteks, cipherteks, diproses dalam rangkaian bit

 operasi bit xor paling banyak digunakan

(3)

Tetap menggunakan gagasan pada algoritma klasik: substitusi dan transposisi, tetapi lebih rumit (sangat sulit dipecahkan)

Perkembangan algoritma kriptograf modern didorong oleh penggunaan komputer digital untuk keamanan pesan.

Komputer digital merepresentasikan data dalam biner.

(4)

Diagram Blok Kriptograf Modern

S e c u r e N e t w o r k P r o t o c o l s

B l o c k C i p h e r

S t r e a m C i p h e r

H a s h F u n c t i o n

P s e u d o R a n d o m

R a n d o m S o u r c e

E l l i p t i c C u r v e

D H R S A S y m m e t r i c K e y

C r y p t o g r a p h y

M e s s a g e

D i g e s t I V s N o n c e s S e c r e t

K e y s

P u b l i c K e y C r y p t o g r a p h y

E n c r y p t i o n M A C s

M I C s

C h a l l e n g e R e s p o n s e s

S m a r t C a r d s

D i g i t a l S i g n a t u r e s

C o n f i d e n t i a l i t y D a t a

I n t e g r i t y A u t h e n t i c a t i o n N o n -

R e p u d i a t i o n

(5)

Rangkaian bit

Pesan (dalam bentuk rangkaian bit) dipecah menajdi beberapa blok

Contoh: Plainteks 100111010110 Bila dibagi menjadi blok 4-bit

  1001 1101 0110

maka setiap blok menyatakan 0 sampai 15:

  9 13 6

(6)

Bila plainteks dibagi menjadi blok 3-bit:

 

100 111 010 110

maka setiap blok menyatakan 0 sampai 7:

 

4 7 2 6

(7)

Padding bits: bit-bit tambahan jika ukuran blok terakhir tidak mencukupi panjang blok

Contoh: Plainteks 100111010110 Bila dibagi menjadi blok 5-bit:

10011 10101 00010

Padding bits mengakibatkan ukuran

plainteks hasil dekripsi lebih besar daripada ukuran plainteks semula.

(8)

Representasi dalam Heksadesimal

Pada beberapa algoritma kriptograf, pesan dinyatakan dalam kode Hex:

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

Contoh: plainteks 100111010110 dibagi menjadi blok 4-bit:

  1001 1101 0110

dalam notasi HEX adalah 9 D 6

(9)

Operasi XOR

Notasi: 

Operasi:

0  0 = 0 0  1 = 1

1  0 = 1 1  1 = 0

Operasi XOR = penjumlahan modulo 2:

0  0 = 0  0 + 0 (mod 2) = 0 0  1 = 1  0 + 1 (mod 2) = 1 1  0 = 1  0 + 1 (mod 2) = 1 1  1 = 1  1 + 1 (mod 2) = 0

(10)

Hukum-hukum yang terkait dengan operator XOR:

  (i) aa = 0

(ii) ab = ba

(iii) a  (bc) = (ab)  c

(11)

Operasi XOR Bitwise

 Jika dua rangkaian dioperasikan dengan XOR, maka

operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua rangkaian 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

(12)

Algoritma Enkripsi dengan XOR

Enkripsi: C = PK

Dekripsi: P = CK

Contoh: plainteks 01100101 (karakter ‘e’) kunci 00110101 (karakter ‘5’) cipherteks 01010000 (karakter ‘P’) kunci 00110101 (karakter ‘5’) plainteks 01100101 (karakter ‘e’)

(13)

Algoritma enkripsi XOR sederhana pada

prinsipnya sama seperti Vigenere cipher dengan penggunaan kunci yang berulang secara

periodik.

Setiap bit plainteks di-XOR-kan dengan setiap bit kunci.

(14)

 

/* Enkripsi sembarang berkas dengan algoritma XOR sederhana.

*/

#include <stdio.h>

main(int argc, char *argv[]) {

FILE *Fin, *Fout;

char p, c, K[100];

int i, n;

Fin = fopen(argv[1], "rb");

if (Fin == NULL)

printf("Kesalahan dalam membuka %s sebagai berkas masukan/n", argv[1]);

Fout = fopen(argv[2], "wb");

printf("\nEnkripsi %s menjadi %s ...\n", argv[1], argv[2]);

printf("\n");

printf("Kata kunci : "); gets(K);

n = strlen(K); /*panjang kunci*/ 

i = 0;

while ((p = getc(Fin)) != EOF) { c = p ^ K[i]; /* operasi XOR */

putc(c, Fout);

i++;

if (i > (n - 1)) i = 0;

}

fclose(Fin);

fclose(Fout);

(15)

/* Dekripsi sembarang berkas dengan  algoritma XOR sederhana.

*/

#include <stdio.h>

main(int argc, char *argv[]) {

FILE *Fin, *Fout;

char p, c, K[100];

int i, n;

Fin = fopen(argv[1], "rb");

if (Fin == NULL)

printf("Kesalahan dalam membuka %s sebagai berkas masukan/n", argv[1]);

Fout = fopen(argv[2], "wb");

printf("\nEnkripsi %s menjadi %s ...\n", argv[1], argv[2]);

printf("\n");

printf("Kata kunci : "); gets(K);

n = strlen(K); /*panjang kunci*/

i = 0;

while ((c = getc(Fin)) != EOF) { p = c ^ K[i]; /* operasi XOR */

putc(p, Fout);

i++;

if (i > (n - 1)) i = 0;

}

fclose(Fin);

(16)
(17)

Program komersil yang berbasis DOS atau Macintosh menggunakan algoritma XOR sederhana ini.

 

Sayangnya, algoritma XOR sederhana tidak

aman karena cipherteksnya mudah dipecahkan.

Referensi

Dokumen terkait

2.3.1.2 Mode Operasi Cipher Block. Plainteks dibagi menjadi beberapa blok yang dengan panjang yang tetap. Beberapa mode operasi dapat diterapkan untuk melakukan

Algoritma blowfish adalah cipher blok yang berarti selama proses enkripsi dan dekripsi, blowfish bekerja dengan membagi pesan menjadi blok-blok bit dengan ukuran sama panjang,

Block cipher adalah algoritma enkripsi yang membagi-bagi plainteks yang akan dikirimkan dengan ukuran tertentu dalam hal ini dibuat menjadi blok-blok dengan panjang t,