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