2. Introduction
• Standar enkripsi DES diterbitkan tahun 1977 sebagai Federal
Information Processing Standard 46 (FIPS 46) oleh National Institute
of Standards and Technology (NIST) yaitu Data Encryption
Algorithm (DEA)
• IBM mengembangkan algoritma Lucifer di bawah National Security
Agency (NSA), kemudian mengusulkan proposal ke NIST pada tahun
1975, dan akhirnya disepakati sebagai DES untuk algoritma enkripsi
simetris
• Karena panjang kunci DES hanya 56 bit dan dianggap rentan
terhadap brute-force attack, maka NIST meluncurkan standar baru
yaitu FIPS 46-3 untuk algoritma 3-DES
3. Introduction
• DES memiliki beberapa kelemahan baik dari sisi panjang kunci, desain
algoritmanya, dan implementasi pada software
• NIST kemudian mengumumkan “call for proposals” tahun 1997 untuk
standar enkripsi baru yaitu Advanced Encryption Standard (AES)
• Terdapat 22 proposal yang diterima NIST, tetapi 7 tidak memenuhi
persyaratan, kemudian dari 15 yang memenuhi persyaratan diperoleh 5
finalis, yaitu : Mars, RC6, Rijndael, Serpent, dan Twofish
• Pemenangnya adalah Algoritma Rijndael yang diusulkan oleh dua
Kriptografer Belgia yaitu Dr. Joan Daemen dan Dr. Vincent Rijmen
• Pada tahun 2001, Rijndael didefinisikan sebagai algoritma AES dengan
standar FIPS PUB 197
4. The AES Cipher - Rijndael
• designed by Rijmen-Daemen in Belgium
• has 128/192/256 bit keys, 128 bit data
• an iterative rather than feistel cipher
• processes data as block of 4 columns of 4 bytes
• operates on entire data block in every round
• designed to be:
• resistant against known attacks
• speed and code compactness on many CPUs
• design simplicity
15. AES Structure
data block of 4 columns of 4 bytes is state
key is expanded to array of words
has 9/11/13 rounds in which state undergoes:
byte substitution (1 S-box used on every byte)
shift rows (permute bytes between groups/columns)
mix columns (subs using matrix multiply of groups)
add round key (XOR state with key material)
view as alternating XOR key & scramble data bytes
initial XOR key material & incomplete last round
with fast XOR & table lookup implementation
19. • ECB
• Tiap plaintext dibagi menjadi b bit
• Tiap plaintext dienkripsi
menggunakan kunci yang sama
• Bila terdapat lebih dari 1 plaintext
dapat menghasilkan ciphertext
yang sama
• Rentan dilakukan attack oleh
cryptanalyst
• CBC
• Proses enkripsi dilakukan dari input hasil
XOR dari plaintext dan ciphertext
sebelumnya
• Untuk menghasilkan ciphertext pertama
perlu menggunakan initialization vector
(IV) yang di-XOR dengan plaintext
pertama
• IV harus diketahui pengirim dan penerima
• Ciphertext dari 2 plaintext yang sama
dapat berbeda
• CFB
• Dapat mengubah block cipher
menjadi stream cipher
• Dapat mengenkripsi plaintext
tanpa menyesuaikan panjang blok
• Dapat beroperasi secara real time
• Ciphertext sesuai panjang plaintext
• CTR
• Counter dienkripsi dan di-XOR
dengan blok plaintext untuk
menghasilkan ciphertext
• Pada dekripsi, sekuen counter yang
sama dienkripsi kemudian akan di-
XOR dengan ciphertext dan akan
mendapatkan suatu plaintext
21. Algoritma RC4
• Didesain tahun 1987 oleh Ron Rivest
• Variable key-size stream cipher with byte-oriented operations
• RC4 digunakan pada standar Secure Socket Layer / Transport Layer
Security (SSL / TLS) yang didefinisikan untuk komunikasi antara Web
browser dan server
• RC4 digunakan pada protokol Wired Equivalent Privacy (WEP) dan
Wifi Protected Access (WPA) yang merupakan bagian dari standar
IEEE 802.11
23. Algoritma RC4
• Variable panjang key mulai 1-256 byte (8 – 2048 bit)
• Panjang key digunakan untuk menginisialisasi 256-byte state vector S,
dengan elemen S[0], S[1], …., S[255]
• S berisi permutasi semua 8-bit bilangan mulai 0 hingga 255
• Pada proses enkripsi dan dekripsi, 1 byte k dibangkitkan dari S dengan
memilih 1 dari 255 input
• Untuk tiap k yang dibangkitkan, input pada S
24. Proses Inisialisasi
for i = 0 to 255 do
S[i] = i;
T[i] = K[i mod keylen];
• S[0] = 0, S[1] = 1, …, S[255] = 255
• T = temporary vector
• Jika panjang key K = 256 byte, maka K dipindah ke T
1 ≤ keylen ≤ 256
25. Initial Permutation of S
j = 0
for i = 0 to 255 do
j = (j + S[i] + T[i]) (mod 256);
swap (S[i], S[j]);
• T digunakan untuk permutasi awal dari S
• Dimulai dari S[0] sampai S[255], tiap S[i] ditukar dengan byte S
lainnya
• Hanya permutasi dan masih berisi bilangan 0 hingga 255
26. Stream Generation
i = j = 0;
for each message byte Mi
i = (i + 1) (mod 256);
j = (j + S[i]) (mod 256);
swap(S[i], S[j]);
t = (S[i] + S[j]) (mod 256);
Ci = Mi XOR S[t];