Dokumen ini membahas algoritma kriptografi modern yang beroperasi dalam mode bit dan meliputi blok cipher, stream cipher, hash function, dan kriptografi kunci publik seperti RSA dan Diffie-Hellman. Algoritma-algoritma ini lebih rumit dari algoritma klasik dan menggunakan operasi XOR sebagai contoh algoritma enkripsi sederhana.
2. Pendahuluan
Beroperasi dalam mode bit (algoritma
kriptografi klasik beroperasi dalam mode
karakter)
kunci, plainteks, cipherteks, diproses
dalam rangkaian bit
operasi bit xor paling banyak digunakan
Rinaldi M/IF5054 Kriptogra2fi
3. Tetap menggunakan gagasan pada algoritma
klasik: substitusi dan transposisi, tetapi lebih
rumit (sangat sulit dipecahkan)
Perkembangan algoritma kriptografi modern
didorong oleh penggunaan komputer digital
untuk keamanan pesan.
Komputer digital merepresentasikan data
dalam biner.
Rinaldi M/IF5054 Kriptogra3fi
4. Diagram Blok Kriptografi Modern
S e c u r e N e t w o r k P r o t o c o l s
Rinaldi M/IF5054 Kriptogra4fi
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
Rinaldi M/IF5054 Kriptogra5fi
6. Bila plainteks dibagi menjadi blok 3-bit:
100 111 010 110
maka setiap blok menyatakan 0 sampai 7:
4 7 2 6
Rinaldi M/IF5054 Kriptogra6fi
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.
Rinaldi M/IF5054 Kriptogra7fi
8. Representasi dalam
Heksadesimal
Pada beberapa algoritma kriptografi, 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
Rinaldi M/IF5054 Kriptogra8fi
9. Operasi XOR
Rinaldi M/IF5054 Kriptogra9fi
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) a Å a = 0
(ii) a Å b = b Å a
(iii) a Å (b Å c) = (a Å b) Å c
Rinaldi M/IF5054 Kriptogra1fi0
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
Rinaldi M/IF5054 Kriptogra1fi1
12. Algoritma Enkripsi dengan XOR
Enkripsi: C = P Å K
Dekripsi: P = C Å K
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101 Å (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101 Å (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
Rinaldi M/IF5054 Kriptogra1fi2
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.
Rinaldi M/IF5054 Kriptogra1fi3
14. /* Enkripsi sembarang berkas dengan algoritma XOR sederhana.
*/
Rinaldi M/IF5054 Kriptogra1fi4
#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.
*/
Rinaldi M/IF5054 Kriptogra1fi5
#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);
fclose(Fout);
}
16. Pada wisuda sarjana
baru, ternyata ada
seorang wisudawan yang
paling muda. Umurnya
baru 21 tahun. Ini
berarti dia masuk ITB
pada umur 17 tahun.
Zaman sekarang banyak
sarjana masih berusia
muda belia.
7! S S !
HIS Ao !
!!S G
H
H KS= !bEAYA !FA.
E
SA ! G(:'y ! !N -GPYE
@ES2 ! !!E!
Hb A ! H
A S K
Rinaldi M/IF5054 Kriptogra1fi6
17. Program komersil yang berbasis DOS atau
Macintosh menggunakan algoritma XOR
sederhana ini.
Sayangnya, algoritma XOR sederhana tidak
aman karena cipherteksnya mudah dipecahkan.
Rinaldi M/IF5054 Kriptogra1fi7