Anda di halaman 1dari 17

Algoritma

Kriptografi Modern

Bahan kuliah Matakuliah


Kriptografi

Pendahuluan
Kriftograf modern beroperasi dalam

mode bit sedangkan algoritma kriptografi


klasik beroperasi dalam mode karakter.
Kunci, Plainteks dan Cipherteks
diproses dalam rangkaian bit
Operasi bit xor paling banyak
dipergunakan

Tetap menggunakan gagasan pada algoritma

klasik: substitusi dan transposisi tetapi


lebih rumit (sangat sulit untuk dipecahkan)

Perkembangan algoritma kriptografi modern

didorong oleh penggunaan komputer digital


untuk keamanan pesan.

Komputer digital merepresentasikan data

dalam biner.

Penggunaan Enkripsi

Jenis Algoritma Kriptografi


Algoritma Simetri

1. Blok Chiper : DES, IDEA, AES


2. Stream Chiper : OTP, A5 dan RC4
Algoritma Asimetri : RSA, DH, ECC, DSA
Fungsi Hash : MD5, SHA1

Diagram Blok Kriptografi Modern


S e c u r e N e tw o r k P r o to c o ls

C o n fid e n tia lit y

E n c r y p tio n

S y m m e tr ic K e y
C ry p to g ra p h y

B lo c k
C ip h e r

S tre a m
C ip h e r

D a ta
In te g r ity

M ACs
M IC s

M essage
D ig e s t

H ash
F u n c tio n

N onR e p u d ia tio n

A u th e n tic a tio n

C h a lle n g e
R esponses

IV s

N onces

P seudo
R andom

S m a rt
C a rd s

S e c re t
Keys

R andom
S o u rc e

D ig ita l
S ig n a tu r e s

P u b lic K e y
C ry p to g ra p h y

E llip t ic
C u rv e

DH
RSA

Rangkaian bit
Pesan (dalam bentuk rangkaian bit) dipecah

menjadi beberapa blok


Contoh: Plainteks 100111010110

Bila dibagi menjadi blok 4-bit


1001 1101 0110
maka setiap blok menyatakan 0 sampai 15:
9
13
6
7

Algoritma Enkripsi dgn rangkaian bit


Bila plainteks dibagi menjadi blok 3-bit:
100

111

010

110

maka setiap blok menyatakan 0 sampai 7:


4

6
8

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.
9

Representasi dalam Heksadesimal


Pada beberapa algoritma kriptografi, pesan

dinyatakan dalam kode Hex:


0000
0100
1000
1100

=
=
=
=

0
4
8
C

0001
0101
1011
1101

=
=
=
=

1
5
9
D

0010
0011
1010
1101

=
=
=
=

2
6
A
E

0011
0111
1011
1111

=
=
=
=

3
7
B
F

Contoh: plainteks 100111010110 dibagi menjadi

blok 4-bit:
1001 1101 0110
dalam notasi HEX adalah
9
D

6
10

Notasi:
Operasi:

OPERASI XOR

00=0
01=1
10=1
11=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 1 + 0 (mod 2) = 1
1 1 = 1 1 + 1 (mod 2) = 0
11

Hukum-hukum yang terkait dengan

operator XOR:
(i) a a = 0
(ii) a b = b a
(iii) a (b c) = (a b) c

12

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

13

Algoritma Enkripsi dengan XOR


Enkripsi: C = P K
Dekripsi: P = C K
Contoh:

plainteks
kunci

01100101
00110101

(karakter e)
(karakter 5)

cipherteks
kunci

01010000
00110101

(karakter P)
(karakter 5)

plainteks

01100101

(karakter e)
14

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.

15

/* Enkripsi berkas teks dengan


algoritma XOR sederhana.
Berkas plainteks: plain.txt
Berkas cipherteks: cipher.txt
*/

/* Dekripsi berkas teks dengan


algoritma XOR sederhana.
Berkas plainteks: cipher.txt
Berkas cipherteks: plain2.txt
*/

#include <stdio.h>

#include <stdio.h>

main()
{
FILE *Fin, *Fout;
char P, C, K[20];
int n, i;

main()
{
FILE *Fin, *Fout;
char P, C, K[20];
int n, i;

Fin = fopen("plain.txt", "r");


Fout = fopen("cipher.txt", "w");

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);

enk_xor.c

Fin = fopen("cipher.txt", "r");


Fout = fopen("plain2.txt", "w");
printf("Kata kunci : "); gets(K);
n = strlen(K); /*panjang kunci*/
i = 0;
while ((C = getc(Fout)) != EOF)
{
P = C ^ K[i]; /* operasi XOR */
putc(P, Fout );
i++; if (i > n-1) i = 0;
}
fclose(Fin);
fclose(Fout);
}

dek_xor.c

16

Program komersil yang berbasis DOS

atau Macintosh menggunakan


algoritma XOR sederhana ini.
Sayangnya, algoritma XOR sederhana

tidak aman karena cipherteksnya


mudah dipecahkan.
17