Chapter 3 A. Block Cipher Principles 1. Stream Ciphers and Block Ciphers Stream cipher adalah yang mengencrypt aliran data digital satu bit atau satu byte pada suatu waktu. Contoh stream cipher klasik adalah autokey Vigenere cipher dan cipher Vernam. Block cipher adalah dimana block plaintext dianggap sebagai satu kesatuan dan digunakan untuk menghasilkan ciphertext block dengan panjang yang sama. 2. Motivation for the Feistel Cipher Structure Block cipher beroperasi dalam block plaintext dengan ukuran n bits untuk membuat block ciphertext dengan ukuran n bits. Terdapat
�
kemungkinan block plaintext yang
berbeda-beda dan untuk enkripsi harus bisa reversible (bisa dibalikkan dari ciphertext ke plaintext), masing-masing harus menghasilkan block ciphertext yang unik. Transformasi seperti ini disebut reversible, atau nonsingular
Gambar diatas mengilustrasikan general substitution cipher untuk n = 4. 4-bit input menghasilkan satu dari 16 keadaan input yang mungkin, yang di mapkan oleh
substitution cipher menjadi satu dari 16 kemungkinan keadaan output yang unik, yang masing-masing diwakili oleh 4 ciphertext bit. Cara ini merupakan cara yang paling umum block cipher dan dapat digunakan untuk menentukan reversible mapping antara plaintext dan ciphertext. Cara ini disebut ideal block cipher oleh Feistel. Tetapi terdapat masalah practical dalam ideal block cipher. Jika block ukuran kecil seperti n = 4 digunakan, maka sistem sama dengan classical substitution cipher. Sistem seperti ini lemah terhadap statistical analysis plaintext. Kelemahan ini tidak melekat dalam penggunaan substitution cipher tetapi hasil dari penggunaan dari block dengan ukuran kecil. Jika n cukup besar, dan suatu arbitrary reversible substitution antara plaintext dan ciphertext diizinkan, maka statistical characteristics dari asal plaintext akan ditopengi hingga ke tingkat tertentu sampai tipe cryptanalysis seperti ini tidak berlaku. Aribitary reversible substitution cipher (ideal block cipher) untuk block ukuran besar tidak praktis, namun dari sudut pandang implementasi dan performance dapat tergolong praktis. Untuk transformasi seperti ini, pemetaan (mapping) sendiri merupakan kunci. Untuk suatu n-bit ideal block cipher, panjang key ditentukan dengan
×
�
bits untuk
64-bit block dimana panjang yang diinginkan untuk menggagalkan serangan statistic adalah 64 ×
=
≈
� .
Mempertimbangkan kelemahan tersebut, Feistel mengatakan bahwa yang dibutuhkan adalah sebuah perkiraan ideal block cipher untuk n dengan ukuran yang besar,
membangun dari komponen yang lebih mudah dicapai. 3. The Feistel Cipher Feistel mengusulkan bahwa kita dapat mengira-ngira ideal block cipher dengan memanfaatkan konsep dari aproduct cipher, dimana eksekusi dua atau lebih simple cipher secara berurutan sedemikian rupa hingga hasil akhir atau produk adalah kriptografi yang lebih kuat dari komponen cipher. Hal terpenting dari pendekatan tersebut adalah untuk mengembangkan block cipher dengan panjang kunci k bit dan panjang block n bit, yang memungkinkan total Transformasi tersedia dengan ideal block cipher.
�
transformasi, daripada
�
!
Feistel mengusulkan untuk menggunakan cipher yang menggunakan fungsi substitusi dan permutasi secara bergantian. Struktur feistel cipher yang sudah tertinggal, dan yang tiap putaran berdasarkan gagasan Shanon pada 1945, merupakan struktur yang banyak digunakan oleh symmetric block cipher yang sering digunakan sekarang ini.
4. Diffusion and Confusion Diffusion dan Confusion diperkenakan oleh Claude Shannon, tujuan utamanya untuk mengagalkan cryptanalysis. Contoh cara kerja, anggap penyerang mengetahui statistical characteristic plaintext. Contoh dalam pesan yang bisa dibaca manusia dalam bahasa tertentu, frekuensi distribusi dari beberapa huruf dapat diketahui. Atau ada kata yang mungkin muncul didalam pesan. Jika statistic ini tercermin dalam ciphertext, maka crypanalysis dapat menyimpulkan encryption key atau bagian dari key. Shannon menyarankan dua cara untuk menghalangi statistical cryptanalysis : a. Duffusion Struktur statistical plaintext didisipasikan menjadi statistic jarak panjang dari ciphertext. Caranya dengan membuat tiap digit plaintext mempengaruhi banyak nilai dari digit ciphertext. Umumnya, ini setara dengan membuat tiap digit ciphertext terpengaruh oleh digit plaintext. Dapat dirumuskan :
Yn = ciphertext ke n
� =
�
∑ �=
+
� 6
K = key M = pesan ke n+1 Diffusion dapat tercepat setelah melakukan berulang-ulang permutasi data diikuti dengan menggunakan fungsi kepada permutasi tersebut. Efeknya adalah bit dari posisi yang berbeda-beda dalam plaintext asli berkontribusi kepada single bit dari ciphertext. Setiap block cipher melibatkan transformasi dari block plaintext menjadi ciphertext. Dimana transformasi bergantung pada key. Mekanisme diffusion bertujuan untuk membuat hubungan statistical antara plaintext dan ciphertext se complex mungkin agar dapat menggagalkan percobaan untuk mendapatkan key. b. Confusion Confusion bertujuan untuk membuat hubungan antara statistic ciphertext dan nilai dari encryption key sekomplex mungkin. Tujuannya sama dengan diffusion yaitu
agar key tidak ketahuan. Demikian, walau jika penyerang memegang statistic ciphertext, cara dimana key digunakan untuk menghasilkan ciphertext tersebut sangat kompleks sehingga membuat key sulit untuk didapatkan. Dapat dicapai dengan menggunakan algoritma substitusi yang kompleks. Sebaliknya, fungsi substitusi linear yang simple menambah sedikit “confusion”. 5. Feistel Cipher Structure Gambar dibawah menggambarkan struktur yang digagaskan oleh Feistel. Inpute plaintext block dengan ukuran 2w bit dan kunci k. Plaintext lalu dibagi menjadi L0 dan R0. Kedua bagian data melewati putaran ke n diproses lalu disatukan membentuk ciphertext block. Tiap putaran i memiliki input Li-1 dan Ri-1, didapat dari putaran sebelumnya, kunci juga demikian, kunci Ki didapat dari K. umumnya subkey Ki berbeda dari K dan subkey yang lain. Tiap putaran memiliki struktur yang sama. Substitusi dilakukan pada bagian kiri data. Dilakukan dengan menerapkan round function F ke bagian kanan data lalu di XOR antara hasil output round function dan data bagian kiri. Setelah substitusi, dilakukan permutasi yang menukar posisi kedua bagian data.
Feistel network dapat terealisasi tergantung pada pemilihan parameter dan design features sebagai berikut : a. Block size : Semakin besar ukuran block maka tingkat keamanan semakin tinggi, tetapi kecepatan untuk mengenkripsi atau mendekripsi semakin berkurang. b. Key size : sama seperti block size, semakin besar ukuran block maka tingkat keamanan semakin tinggi, tetapi kecepatan untuk mengenkripsi atau mendekripsi semakin berkurang. c. Number of rounds : Yang esensi/ yang terpenting dari Feistel cipher adalah bahwa hanya 1 putaran memberikan keamanan yang kurang memadai tetapi semakin banyak putaran, menambah tingkat keamanan. d. Subkey generation algorithm : Semakin tinggi tingkat kompleksitas algoritma dapat meningkatkan kesulitan dalam cryptanalysis. e. Round function : Semakin besar kompleksitas, semakin tinggi kekbalan terhadap cryptanalysis. Ada 2 lagi yang menjadi pertimbangan dalam design Feistel cipher : a. Fast software encryption/decryption : dalam banyak kasus, enkripsi tertanam dalam aplikasi atau fungsi utility sedemikian rupa untuk mengalangi implementasi hardware. b. Ease of analysis : walaupun kita ingim membuat algoritma kita sesulit mungkin agar tidak bisa di-cryptanalyze, ada keuntungan dalam membuat algoritma mudah dia analisa. Yaitu jika algoritma dapat singkat dan dijelaskan dengan jelas, dapat lebih mudah untuk menganalisa algoritma tersebut untuk kelemahan cryptanalytic dan karena itu berkembang level jaminan yang lebih tinggi untuk kekuatannya. 6. Feistel Decryption Algorithm Aturan untuk mendekripsi adalah : gunakan ciphertext sebagai input algoritma, tetapi gunakan kunci dalam urutan yang terbalik. Yaitu gunakan Kn pada putaran pertama lalu Kn-1 pada putaran kedua seterusnya hingga K1 pada putaran terakhir. Gambar dibawah menunjukkan proses enkripsi dari atas ke bawa pada bagian kiri dan proses dekripsi dari bawah ke atas pada bagian kanan dengan putaran 16 kali. Untuk lebih jelas, kita menggunakan notasi LEi (Left Encryption ke i) dan REi (Right Encryption ke i) untuk data pada proses enkripsi dan LDi dan RDi untuk proses dekripsi. Diagram menunjukkan bahwa pada tiap putaran, nilai intermediate dari proses dekripsi dama dengan nilai corresponding dari proses enkripsi dengan kedua bagian nilainya di tukar
.
B. The Data Encryption Standard Skema enkripsi yang paling umum digunakan adalah DES yang diadopsi pada tahun 1977 oleh Biro Standard Nasional, atau yang sekarang lebih dikenal dengan Institut Nasional Standard dan Teknologi (NIST). Pada DES, data dienkripsikan pada blok 64 bit menggunakan kunci 56 bit. Algoritmanya mengubah input 64 bit dengan serangkaian langkah menjadi output 64 bit. Dengan langkah yang sama, dan kunci yang sama, digunakan untuk membalikkan enkripsi. Review sejarah DES Akhir 1960, IBM melakukan riset proyek dalam kriptografi komputer yang dipimpin oleh Horst Feistel. Proyek tersebut diselesaikan pada tahun 1971 dengan pengembangan dari algortima “LUCIFER”, yang dijual pada Lloyd of London untuk digunakan pada sistem ATM, yang juga dikembangkan oleh IBM. LUCIFER adalah Feistel Block Cipher yang beroperasi pada blok 64 bit, menggunakan kunci 128 bit. Karena hasil yang menjanjikan dari proyek LUCIFER, IBM memulai usaha untuk mengembangkan produk enkripsi komersil yang dapat dijual yang dapat diimplementasikan dalam sebuah chip. Usaha ini dipimpin oleh Walter Tuchman dan Carl Meyer, dan melibatkan periset IDM serta konsultan dan binaan teknsi dari NSA. Hasil dari usaha ini menghasilkan versi yang lebih baik dari LUCIFER yang lebih tahan akan cryptanalysis dan menurunkan ukuran kunci menjadi 56 bit, agar dapat masuk dalam sebuah chip. Pada 1973, NBS meminta pembuatan national Cipher Standard. IBM memasukkan proyek kedua LUCIFER. Ini menjadi algoritma terbaik yang dimasukkan dan dijadikan acuan pada 1977 sebagai Data Encryption Standard. Sebelum pengadopsian sebagai standar, pemasukan DES menuai kritik. 2 hal utama yang memancing kritik adalah, soal penurunan jumlah kunci dari 128 menjadi 56 bit. Pengkritik mencemaskan kunci ini terlalu pendek dalam menghadapi bruteforce attack. Yang kedua adalah desain kriteria dari struktrur DES, dirahasiakan. Menyebabkan pengguna tidak yakin apabila struktur internal dari DES bebas dari kelemahan yang dapat membuat NSA mungkin untuk men-decypher pesan tanpa manfaat dari kunci. Saat ini DES telah umum digunakan, terutama pada aplikasi keuangan. Pada 1994, NIST menyetujui kembali DES untuk kegunaan federal untuk 5 tahun ke depan. NIST merekomendasi penggunaan DES untuk aplikasi selain perlindungan informasi rahasia. Pada 1999, NIST mengisukan bersi baru dari standar mereka, (FIPS PUB 46-3) yang terindikasi bahwa DES hanya bisa digunakan untuk legacy systems dan dianjurkan untuk
menggunakan triple DES
Enkripsi DES Skema dari DES dapat dilihat dalam ilustrasi di bawah
Dapat dilihat dalam ilustrasi di atas bahwa tingkat kerumitan dari DES cukup tinggi. Perlu diingat bahwa enkrisi dan dekripsi menggunakan blok bit dalam penyandian. Semua angka yang digunakan menunjuk pada urutan ke-bit. Bagian sebelah kiri dalam ilustrasi di atas, menunjukkan bahwa terdapat 3 fase pemrosesan plaintext. Pertama, plaintext 64bit dipermutasi untuk menghasilkan permuted input. Lalu dilanjutkan dengan 16 ronde permutasi dan substitusi. Hasil dari 16 ronde ini merupakan fungsi dari kunci dan plaintext. Bagian kiri dan kanan selanjutnya ditukar untuk menghasilkan preoutput. Dan terakhir, dipermutasi lagi untuk menghasilkan ciphertext 64bit. Di bagian sebelah kanan, menunjukkan bagaimana kunci 56 bit digunakan. Awalnya kunci di permutasikan. Lalu untuk tiap ronde dari 16 ronde tersebut, subkey dihasilkan dari kombinasi left circular shift dan permutasi. Fungsi permutasi sama setiap ronde, namun hasil subkey selalu berbeda karena pengulangan pergeseran dari bit kunci. Penjelasan rinci Permutasi awal dan inversnya dapat dilihat pada tabel dibawah. Tabel terdiri dari 64 bit angka dari 1-64. 64 masukkan dari tabel permutasi mengandung angka 1-64. Setiap entri dari tabel permutasi menunjukkan posisi dari input angka pada output, yang juga terdiri dari 64 bit.
Tabel-tabel diatas merupakan tabel yang diperlukan untuk operasi permutasi pada awal pengenkripsian. Untuk melihat bahwa fungsi permutasi merupakan inversnya, kira-kira dapat diuji dalam contoh berikut. Diberikan input M, Mi adalah binary digit.
Dengan permutasi X=IP(M) menghasilkan
Apabila kita menginvers Y=IP-1(X)=IP-1(IP(M)), dapat dilihat bahwa urutan dari bit kembali seperti semula. Penjelasan Ronde Tunggal pada DES Bagian kiri dan kanan memiliki nilai 64bit, dan dipisahkan menjadi 32bit. Secara umum, seluruh proses dapat dirangkum menjadi rumus berikut Li=Ri-1
Ri=Li-1 x F(Ri-1.Ki)
Kunci Ki yang digunakan 48 bit. Sedangkan R inputnya 32 bit. R ini pada awalnya akan diekspansi menggunakan tabel yang mempermutasikan serta melibatkan penduplikasian dari bit R. Hasil dari48 bit akan di XOR dengan Ki. Hasilnya selanjutnya akan di substitusi dan menghasilkan output 32 bit, seperti pada tabel (c) diatas. Peran S-Box pada fungsi F ditas dapat dilihat pada diagram di bawah.
Substitusi terdiri dari 8 set S-Box, yang menerima 6 bit dan menghasilkan 4 bit. Bit awal dan akhiir dari input Si membentuk binary 2 angka untuk menentukan 1 dari 4 baris substitusi di S-Box, dan 4 bit sisa yang ada di tengah menentukan 1 dari 16 kolom. Berikut terlampir SBox.
Setiap baris dari sebuah S-Box, mendefinisikan sebuah substitusi bolak-balik. Operasi dari
S-Box dapat diperhatikan bahwa 32 bit input dipisah menjadi grup dengan 4 bit, dan menjadi grup 6 bit dengan menambah bit terluar dari grup yang berdekatan Contohnya jika input : efgh ijkl mnop Akan menjadi : defghi hijklm lmnopq Pembuatan Kunci Kita lihat kembali pada diagram paling atas, dapat diketahui bahwa kita menggunakan kunci 64 bit sebagai input dalam algoritma. Bit dari kunci merupakan penomoran dari 1-64. Kunci akan dipermutasi dengan tabel Permuted Choice One, akan menghaslkan kunci 56-bit. Kunci ini kemudian akan dipisah menjadi masing masing 28 bit, dan diberi nama C0 dan D0. Di setiap ronde, Ci-1 dan Di-1 akan digeser kiri, 1 atau 2 (tergantung pada ronde ke berapa, ada tabel yang menjeleaskan dibawah). Pergeseran ini akan menjadi input untuk ronde selanjutnya. Nilai ini juga akan menjadi input pada Permuted Choice Two yang pada akhirnya akan menghasilkan output 48 bit yang menjadi input pada fungsi F diatas(Ri-1.Ki).
Dekripsi DES Seperti semua yang menggunakan Feistel Cipher, pendekripsiam menggunakan algoritma yang sama dengan enkripsi,. Selain penerapan dari subkey menjadi kebalikannya. Efek Avalanche Keinginan dari semua algoritma enkripsi yaitu ingin apabila terjadi perubahan kecil pada plaintext dan atau pada kuncinya, membuat perubahan besar ada ciphertext. Perubahan 1 bit pada plaintext atau pada kunci, dapat membuat banyak perubahan pada banyak bit pada ciphertext.
Dapat dilihat pada tabel diatas bahwa , setiap ronde, jumlah bit pada plaintext dan Kuncinya akan semakin bertambah.
Chapter 9 A. Principles of Public-Key Cryptosystems Kunci dalam symetric encryption memerlukan: a. Kunci yang dibagikan secara umum(public key) b. Kunci yang hanya digunakan oleh pemilik(private key) Public-key Cryptosystems Dalam Public key enkripsi membutuhkan 6 bahan yaitu: 1. Plaintext: pesan/data yang dapat dibaca dengan alogaritma sebagai input 2. Encryption algorithm: bertujuan untuk mentranslate/mengubah plaintext 3. Public and private keys: sebuah pasangan key yang digunakan pada saat enkripsi,dan selain itu digunakan sebagai dekrpsi 4. Ciphertext: setelah melakukan enkripsi pada plaintext lalu mendapatkan Ciphertext sebagai output 5. Decryption algorithm: Alogaritma ini menyamakan chipertext dengan kunci dan plaintext Public-Key Cryptography Cara kerja 1.setiap pengguna memiliki 2 pasangan key yang digunakan enkripsi dan dekripsi 2.setiap pengguna menggunakan 2 pasangan kunci.satu adalah private key dan yang satu lagi adalah public key. 3.Jika X ingin mengirim pesan ke Y.X harus menggunakan Y public key 4.Saat Y mendapat pesan.Y harus mendekripsi menggunakan private key nya.hanya Y yang bisa mendekripsi karena hanya dia yang mempunyai Private key nya Conventional and Public-Key Encryption Convetional Encryption Untuk kerja 1.menggunakan algoritma yang sama untuk enkripsi dan dekripsi 2.pengirim dan penerima harus memberikan algoritma dan key yang sama Untuk keamanan 1. kunci harus rahasia 2. tidak mungkin untuk mendekripsi pesan jika tidak ada informasi 3. pengetahuan tentang algoritma dan contoh chipertext harus tidak bisa memecahkan kunci yang digunakan
Public-Key Encryption Untuk kerja 1. satu alogaritma digunakan untuk mengenkripsi dan dekripsi degan 2 pasangan kunci.1 untuk enkripsi dan satu lagi untuk dekripsi 2.pengirim dan penerima harus memiliki kunci yang cocok Untuk keamanan 1. satu dari kunci tersebut harus dirahasiakan 2. tidak mungkin untuk mendekripsi pesan jika tidak ada informasi 3. pengetahuan tentang algoritma dan contoh chipertext harus tidak bisa memecahkan kunci yang dirahasiakan Public-Key Cryptosystem: Secrecy
Enkripsi menggunakan public key dan dekripsi menggunakan private key
Public-Key Cryptosystem: Authentication
Enkripsi menggunakan private key dan dekripsi menggunakan public key Public-Key Cryptosystem: Authentication and Secrecy
Pasangan key 1,enkripsi menggunakan private key dan dekripsi menggunakan public key(Authentication).setelah itu mengenkripsi lagi menggunakan pasangan key 2,enkripsi menggunakan public key dan dekripsi menggunakan private key(secrecy) Applications for Public-Key Cryptosystems Dalam aplikasi public key Cryptosystems dibagi menjadi 3 kategori 1. Encryption/decryption: pengirim mengenkripsi pesan dengan public key 2. Digital signature: sebuah tanda bahwa pesan ini hanya bisa di buka dengan kunci privatenya
3. Key exchange: 2 pihak saling berkoperasi pertukaran kunci Requirements for Public-Key Cryptography 1. Mudah untuk kelompok B membuat 2 pasangan kunci(Public key PUb,Private key PRb) 2. mudah bagi pengirim A,untuk mengetahui Public key dan pesan yang di enkripsi 3. Mudah bagi penerima B untuk mengenkripsi hasil chipertext dengan private key 4. Tidak layak semua orang untuk mengetahui public key untuk menentukan private key 5. Tidak layak semua orang untuk mengetahui public key dan Ciphertext untuk mendapatkan pesan aslinya 6. 2 key dapat di jalankan dengan M = D[PUb, E(PRb, M)] = D[PRb, E(PUb, M)]
B. ALGORITMA RSA Sistem kriptografi RSA adalah salah satu sistem kunci publik yang ditemukan oleh Ron Rivest, Adi Shamir, dan Leonard Adleman. RSA dianggap sebagai terobosan baru dalam hal enkripsi data, dimana sebelumnya enkripsi data hanya menggunakan satu kunci untuk melakukan enkripsi dan dekripsi. Sedangkan pada algoritma RSA enkripsi bersifat asimetris atau menggunakan dua kunci berbeda dalam melakukan enkripsi dan dekripsi data. Teknik ini disebut juga dengan sistem enkripsi Public key – Private key.
Orang yang mempunyai kunci publik dapat melakukan enkripsi tetapi yang dalam melakukan dekripsi hanyalah orang yang memiliki kunci privat. Kunci publik dapat dimiliki oleh sembarang orang, tetapi kunci privat hanya dimiliki oleh orang tertentu saja. Skema RSA mengadopsi dari skema block cipher, yang sebelum dilakukan enkripsi, plainteks yang ada dibagi menjadi blok – blok dengan panjang yang sama, dimana plainteks dan cipherteksnya berupa integer(bilangan bulat) antara 1 hingga n. n biasanya berukuran sebesar 1024 bit, dan panjang bloknya sendiri berukuran lebih kecil atau sama dengan log(n) +1 dengan basis 2. Penjelasan mengenai Algoritma RSA Untuk pembangkitan pasangan kunci RSA, digunakan algoritma sebagai berikut : 1. Pilih dua buah bilangan prima yang besar secara random, p dan q. Nilai p dan q dirahasiakan. 2. Hitung nilai n dari rumus : n = p x q. Besaran n tidak perlu dirahasiakan. 3. Hitung nilai m menggunakan teorema euler dengan rumus : m = (p – 1)(q – 1) 4. Pilih sebuah bilangan bulat sebagai kunci publik (e), yang relatif prima terhadap m. e relatif prima terhadap m artinya faktor pembagi terbesar keduanya adalah 1, secara matematis disebut gcd (e,m) = 1. Untuk mencarinya dapat digunakan algoritma Euclid 5. Hitung kunci privat yang disebut d sedemikian hingga agar (d * e) mod m = 1. Untuk mencari nilai d yang sesuai dapat juga digunakan algoritma Extended Euclid.Maka hasil dari algoritma tersebut diperoleh : kunci publik adalah pasangan (e,n) kunci privat adalah pasangan (d,n)
Nilai dari n bersifat publik, dan diperlukan pada perhitungan enkripsi/dekripsi. Fungsi enkripsi dan dekripsinya dijabarkan dalam fungsi berikut : C = Me mod n ( fungsi enkripsi ) M = Cd mod n (fungsi dekripsi) Keterangan : C = Cipherteks
d = kunci privat
n
=
modulo
pembagi M = Message / Plainteks
E = kunci publik
Kedua pihak harus mengetahui nilai e dan nilai n ini, dan salah satu pihak harus memilki d untuk melakukan dekripsi terhadap hasil enkripsi dengan menggunakan public key e. Penggunaan algoritma ini harus memenuhi kriteria berikut : 1. Memungkinkan untuk mencari nilai e, d, n sedemikian rupa sehingga Med mod n = M untuk semua M < n. 2. Relatif mudah untuk menghitung nilai Me mod n dan Cd mod n untuk semua nilai M < n. 3. Tidak memungkinkan mencari nilai d jika diberikan nilai n dan e. Syarat nilai e dan d ini, gcd(d,e) = 1 Sebelum menggunakan RSA, beberapa aspek dasar yang harus dimiliki yaitu : 1. p, q = 2 bilangan prima yang dirahasiakan 2. n dari hasil = p.q 3. e dengan ketentuan gcd (Φ(n), e) =1 4. d = e-1 (mod Φ(n)) Contoh tahapan perhitungan pembangkit kunci pada RSA : 1. Pilih 2 bilangan prima, misalnya p = 17 dan q = 11. 2. Hitung n = p*q = 17 × 11 = 187. 3. Hitung Φ(n) = (p – 1)(q – 1) = 16 × 10 = 160. 4. Pilih nilai e sedemikian sehingga relatif prima terhadap Φ(n) = 160 dan kurang dari Φ(n); contoh pilih nilai e = 7. 5. Hitung d sedemikian sehingga de≡ 1 (mod 160) dan d< 160. Nilai yang didapatkan d = 23, karena 23 × 7 = 161 = (1 × 160) + 1; d dapat dihitung dengan Extended Euclidean Algorithm. Nilai e disebut Public Key dan d disebut Private Key. Sehingga Pasangan yang didapatkan adalah Kunci Publik
: = (e, n) = {7,187}
Kunci Privatnya
= (d, n) = {23, 187}
Selanjutnya kunci diatas dapat digunakan untuk melakukan enkripsi. Contoh : Lakukan enkripsi angka 88 maka M = 88. Untuk proses enkripsi, hitung dengan menggunakan
rumus C = Me mod n = 887 mod 187 = 11. Maka didapatkan C atau hasil enkripsi = 11. Selanjutnya, nilai C inilah yang akan dikirimkan kepada penerima untuk didekripsi dengan kunci privat
miliknya. d
23
M = C mod n = 11 mod 187 = 88. Keamanan RSA Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan yang sangat besar menjadi faktor-faktor prima untuk mendapatkan kunci, yang dalam hal ini n = p x q. Empat cara yang mungkin digunakan untuk memecahkan Algoritma RSA, yaitu :
Brute force
: mencoba semua kemungkinan kunci privat.
Mathematical attacks : ada beberapa cara dengan tujuan memfaktorkan hasil dari 2 bilangan prima.
Timing attacks : berdasarkan waktu yang dihabiskan algoritma untuk melakukan dekripsi.
Chosen ciphertext attacks : memanfaatkan suatu bagian dari Algoritma RSA.
Exercise 1. Problem 3.8 Key dan plaintext sama : in hexadecimal notation : 0 1 2 3 4 5 6 7 8 9 A B C D E F binary notation
: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 0100 1101 1110 1111
Ditanya : a. K1 subkey putaran pertama. b. Tentukan
dan �
c. Perbesar � untuk mendapatkan E[� ] , dimana E[] merupakan fungsi expansi.
d. Hitung A = E[� ] XOR
.
e. Kelompokkan 48-bit hasil dari soal (d) menjadi set 6 bit, evaluasi sesuai dengan substitusi S-box. f.
Menggabungkan hasil dari soal (e) untuk mendapatkan hasil 32-bit, B.
g. Aplikasikan permutasi untuk mendapatkan P(B). h. Hitung � = P(B) XOR i.
.
Tuliskan ciphertextnya.
Jawab :
a. 0000 000
0010 001
0100 010
0110 011
1000 100
1010 101
0100 110
1110 111
Permuted Choise 1 K+ = 1011000 0110011 0010101 0100000 1010101 0110011 0011110 0000000 Bagi K+ menjadi C0 dan D0 masing-masing 28 bit C0 = 1011000 0110011 0010101 0100000 D0 = 1010101 0110011 0011110 0000000 Left Shift C1 dan D1 C1 = 0110000 1100110 0101010 1000001 D1 = 0101010 1100110 0111100 0000001 Permuted Choise 2 C1D1 C1D1 =
011000
110011
010101
100000
010101
110011
011110
000000
K1 = 000000 110000 001001 100111 100110 110100 100110 100101 b. 0000 000
0010 001
0100 010
0110 011
1000 100
1010 101
0100 110
1110 111
Initial Permutation IP = 1100 1100 0000 0000 1100 1100 1111 1111 1011 0000 1010 1010 1111 0000 1010 1010 �
�
= 1100 1100 0000 0000 1100 1100 1111 1111 � = 1011 000
1010 101
1111 000
1010 101
c. E(� ) = 010110 100001 010101 010101 011110 100001 010101 010011 d. A = E(� ) XOR (
)
E(� )
= 010110 100001 010101 010101 011110 100001 010101 010011
(
= 000000 110000 001001 100111 100110 110100 100110 100101 XOR
)
A
= 010110 010001 010100 110010 111001 010101 110011 110110
e. B1 = 010110 B3 = 010001 B4 = 010100 B5 =110010 B6 =010101 B7 =110011 B8 =110110 f.
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = B = 1100 110 110
1100 000
1010
1001 110
g. P(B) = 1001 1011 1000 1001 1010 1001 1011 1001 h.
� = P(B) XOR
P(B)
= 1001 1011 1000 1001 1010 1001 1011 1001 = 1100 1100 0000 0000 1100 1100 1111 1111 XOR
i.
�
= 0101 0111 1000 1001 0110 0101 0100 0110 = � = 1011 0000 1010 1010 1111 0000 1010 1010
Ciphertext = �
= 01010111 10001001 01100101 01000110 10110000 10101010
11110000 10101010 2. Problem 9.2 a. p = 3; q = 11, e = 7; M = 5 b. p = 5; q = 11, e = 3; M = 9 c. p = 7; q = 11, e = 17; M = 8 d. p = 11; q = 13, e = 11; M = 7 e. p = 17; q = 31, e = 7; M = 2 Lakukan enkripsi dan dekripsi menggunakan algoritma RSA Jawab a. n = p x q = 3 x 11 = 33 Ф(n) = (p-1) x (q-1) = 2 x 10 = 20 gcd(Ф(n), e) = gcd(20, 7) = 1 d ≡ e-1(mod Ф(n)) d x e mod Ф(n) = 1 7d mod 20 = 1 d=3 PU = {e,n} = {7,33} PR = {d,n} = {3,33} Enkripsi = C = Me mod n = 57 mod 33 = 14 Dekripsi = M = Cd mod n = 143 mod 33 = 5 b. n = p x q = 5 x 11 = 55 Ф(n) = (p-1) x (q-1) = 4 x 10 = 40 gcd(Ф(n), e) = gcd(40, 3) = 1 d ≡ e-1(mod Ф(n)) d x e mod Ф(n) = 1 3d mod 40 = 1 d = 27 PU = {e,n} = {3,55} PR = {d,n} = {27,55} Enkripsi = C = Me mod n = 93 mod 55 = 14 Dekripsi = M = Cd mod n = 1427 mod 55 = 9
c. n = p x q = 7 x 11 = 77 Ф(n) = (p-1) x (q-1) = 6 x 10 = 60 gcd(Ф(n), e) = gcd(60, 17) = 1 d ≡ e-1(mod Ф(n)) d x e mod Ф(n) = 1 17d mod 60 = 1 d = 53 PU = {e,n} = {17,77} PR = {d,n} = {53,77} Enkripsi = C = Me mod n = 817 mod 77 = 57 Dekripsi = M = Cd mod n = 5753 mod 77 = 8 d. n = p x q = 11 x 13 = 143 Ф(n) = (p-1) x (q-1) = 10 x 12 = 120 gcd(Ф (n), e) = gcd(120, 11) = 1 d ≡ e-1(mod Ф(n)) d x e mod Ф(n) = 1 11d mod 120 = 1 d = 11 PU = {e,n} = {11,143} PR = {d,n} = {11,143} Enkripsi = C = Me mod n = 711 mod 143 = 106 Dekripsi = M = Cd mod n = 10611 mod 143 = 7 e. n = p x q = 17 x 31 = 527 Ф(n) = (p-1) x (q-1) = 16 x 30 = 480 gcd(Ф(n), e) = gcd(480, 7) = 1 d ≡ e-1(mod Ф(n)) d x e mod Ф(n) = 1 7d mod 480 = 1 d = 343 PU = {e, n} = {7, 527} PR = {d, n} = {343, 527} Enkripsi = C = Me mod n = 27 mod 527 = 128 Dekripsi = M = Cd mod n = 128343 mod 527 = 2
Practice 1.
Configure Load Balancer.
2. Virtualisasi adalah membuat sesuatu mirip seperti aslinya tetapi tidak asli . System setting host : Base memory 2048 Processor : Intel® Core™ i7-4720HQ CPU @ 2.60 GHz Graphics video memory 12mb OS type Debian Storage Controller : SATA .SATA port 0:Debian.vdi System setting guest : Base memory 1024 Processor : Intel® Core™ i7-4720HQ CPU @ 2.60 GHz Graphics video memory 12mb OS type Debian Storage Controller : SATA .SATA port 0:Debian.vdi