Uploaded by User34447

Rij

advertisement
Keamanan Jaringan
Implementasi Enkripsi &
Dekripsi Text Menggunakan
Algoritma RIJNDAEL
Kelompok 1
RIJNDAEL Outline
01
Pengertian
Latar Belakang
04
02
Proses Kerja
03
Sejarah
LATAR BELAKANG
Zaman sekarang pengiriman pesan maupun dokumen dalam
bentuk digital menjadi pilihan utama karena lebih efisien dan
efektif.
Adanya penggunaan media berbasis internet memicu tindakan kejahatan
yang semakin mudah dan marak terjadi biasanya dalam dunia maya.
Tindakan kejahatan dapat berupa klaim produk, pemalsuan data, dan
identitas merubah page informasi pada page website dan terlebih dalam
pencurian data dan informasi
Pengertian RIJNDAEL
Algoritma Rijndael adalah algoritma yang beroperasi dalam
byte, bukandalam bit. Algoritma ini mampu melakukan enkripsi
terhadap plain text sebesar 16 byte atau 128 bit. Selain itu,
algoritma ini juga menggunakan kunci sebanyak 16 byte.
Dengan kunci sepanjang 128 bit, maka terdapat 2128 = 3,4 x
1038 kemungkinan kunci. Dengan demikian, waktu yang
dibutuhkan untuk menebak kunci yang ada dengan komputer
yang cepat pun membutuhkan 1018 tahun.
Selain panjang kunci yang lumayan banyak, kunci internal
pada algoritma ini juga selalu berubah pada setiap putarannya.
Kunci internal ini disebut dengan round key. Pembangkitan
round key diambil dari cipher key. Mirip dengan DES,
algoritma Rijndael juga melakukan putaran enkripsi
(enciphering) sebanyak 10 putaran namun bukan putaran
yang merupakan jaringan Feistel.
Sejarah Rijndael
Pada tahun 1972 dan 1974 National Bureau of Standards
sekarang dikenal dengan nama National Institute of
Standards and Technology, NIST menerbitkan permintaan
kepada publik untuk pembuatan standar enkripsi.
Akhirnya NIST mengadakan kompetisi untuk standar
kriptografi yang terbaru, yang dinamakan AES Advanced
Encryption Standard. Dari hasil seleksi yang dilakukan
oleh NIST, akhirnya NIST memilih 5 finalis AES, yaitu :
Mars, RC6, Rijndael, Serpent, dan Twofish. Kompetisi ini
akhirnya dimenangkan oleh Rijndael dan secara resmi
diumumkan oleh NIST pada tahun 2001.
Algoritma kriptografi bernama Rijndael yang didesain oleh
oleh Vincent Rijmen dan John Daemen asal Belgia keluar
sebagai pemenang kontes algoritma kriptografi pengganti
DES yang diadakan oleh NIST (National Institutes of
Standards and Technology) milik pemerintah Amerika
Serikat pada 26 November 2001. Algoritma Rijndael inilah
yang kemudian dikenal dengan Advanced Encryption
Standard (AES).
Sejarah Rijndael

Pada bulan Oktober 2000, NIST mengumumkan untuk
memilih Rijndael (dibaca: Rhine-doll).

Pada bulan November 2001, Rijndael ditetapkan sebagai
AES.

Diharapkan Rijndael menjadi standard kriptografi yang
dominan paling sedikit selama 10 tahun.

Rijndael mendukung panjang kunci 128 bit sampai 256
bit dengan step 32 bit.

Panjang kunci dan ukuran blok dapat dipilih secara
independen.

Setiap blok dienkripsi dalam sejumlah putaran tertentu,
sebagaimana halnya pada DES.

Karena AES menetapkan panjang kunci adalah 128, 192,
dan 256, maka dikenal AES-128, AES-192, dan AES256.
Proses Kerja Rijndael
Tidak seperti DES yang berorientasi
bit, Rijndael beroperasi dalam
orientasi byte.
Setiap putaran mengunakan kunci
internal yang berbeda (disebut round
key).
Enciphering
melibatkan
operasi
substitusi dan permutasi.
Algoritma Rijndael mempunyai 3 parameter:
1.
plaintext : array berukuran 16-byte, yang berisi data
masukan.
2. ciphertext : array berukuran 16-byte, yang berisi hasil
enkripsi.
3.
key : array berukuran 16-byte, yang berisi kunci
ciphering (disebut juga cipher key).
Dengan 16 byte, maka blok data dan kunci yang
berukuran 128-bit dapat disimpan di dalam array 16
elemen (16 8 = 128).

Blok plainteks disimpan di dalam matrix of byte
yang bernama state dan berukuran NROWS 
NCOLS.
Plainteks 128-bit

Untuk blok data 128-bit, ukuran state 4  4.
state

Pada awal enkripsi, 16-byte data masukan, in0, in1, …, in15
disalin ke dalam array state (direalisasikan oleh fungsi:
CopyPlaintextToState(state, plaintext))
input bytes
state array
output bytes
in0
in4
in8
in12
S0,0
S0,1
S0,2
S0,3
out0
out4
out8
out12
in1
in5
in9
in13
S1,0
S1,1
S1,2
S1,3
out1
out5
out9
out13
in2
in6
in10
in14
S2,0
S2,1
S2,2
S2,3
out2
out6
out10
out14
in3
in7
in11
in15
S3,0
S3,1
S3,2
S3,3
out3
out7
out11
out15
Contoh: (elemen state dan kunci dalam notasi HEX)
Transformasi SubBytes()

SubBytes() memetakan setiap byte dari array state
dengan menggunakan S-box.
Transformasi ShiftRows()
Transformasi ShiftRows() melakukan pergeseran secara wrapping(siklik)
pada 3 baris terakhir dari array state.
Jumlah pergeseran bergantung pada nilai baris (r).
Baris r = 1 digeser sejauh 1 byte,
baris r = 2 digeser sejauh 2 byte, dan
baris r = 3 digeser sejauh 3 byte.
baris r = 0 tidak digeser.
Geser baris ke-1:
Hasil pergeseran baris ke-1 dan geser baris ke-2:
Hasil pergeseran baris ke-2 dan geser baris ke-3:
Hasil pergeseran baris ke-3:
Transformasi MixColumns()



Transformasi MixColumns() mengalikan
setiap kolom dari array state dengan
polinom a(x) mod (x4 + 1).
Setiap kolom diperlakukan sebagai polinom
4-suku pada GF(28).
a(x) yang ditetapkan adalah:
a(x) = {03}x3 + {01}x2 + {01}x + {02}
s’(x) = a(x)  s(x)
 s' 0,c  02
 s'  
 1,c    01
 s' 2,c   01
 

'
s
c
,
3
 03

03 01 01
02 03 01

01 02 03

01 01 02 
 s0,c 
s 
 1,c 
 s2,c 
 
 s3,c 
s' 0,c  ({02}  s0,c )  ({03}  s1,c )  s2,c  s3,c
s'1,c  s0,c  ({02}  s1,c )  ({03}  s2,c )  s3,c
s' 2,c  s0,c  s1,c  ({02}  s1,c )  ({03} s3,c )
s' 3,c  ({03}  s0,c )  s0,c  s1,c  ({02}  s3,c )
Hasil transformasi ShiftRows() sebelumnya:
Operasi MixColumns() terhadap kolom pertama:
Hasil transformasi MixColumns() seluruhnya:
Transformasi
AddRoundKey()

Transformasi ini melakukan
operasi XOR terhadap sebuah
round key dengan array state,
dan hasilnya disimpan di array
state.
XOR-kan kolom pertama state dengan kolom pertama round key:
Hasil AddRoundKey() terhadap seluruh kolom:
Terima Kasih
Download