Optimasi Algoritma RSA dengan Menggunakan Pembangkit Bilangan Acak ISAAC Shauma Hayyu Syakura (13507025) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia 1
[email protected]
Abstrak— Seperti yang kita ketahui, tingkat keamanan algoritma RSA bergantung pada panjang kunci dan kunci itu sendiri. Untuk mendapatkan kunci bilangan prima yang besar, sulit untuk membuatnya sendiri, oleh karena itu digunakan pembangkit bilangan acak untuk menghasilkan kunci tersebut. Namun pembangkit bilangan random konvensional yang tersedia pada program untuk pengembangan seperti Java, C#, dan lain-lain, memiliki masalah tersendiri. Bilangan acak yang dihasilkan sebenarnya adalah bilangan pseudorandom (tidak benar-benar acak), dan bilangan-bilangan tersebut akan muncul lagi secara berulang setelah periode tertentu, sehingga mengurangi keamanan dari bilangan random tersebut. Oleh karena itu, pembangkit bilangan random khusus untuk kriptografi dibuat, dan pembangkit ini disebut Cryptographically Secure Pseudorandom Generator. ISAAC adalah sebuah Cryptographic Pseudorandom Generator yang dikenal cepat. ISAAC merupakan singkatan dari Indirect, Shift, Accumulate, Add, dan Count. Dalam makalah ini, akan dilakukan studi dan analisis optimasi RSA dengan menggunakan ISAAC. Pseudorandom generator ini diharapkan dapat menghasilkan RSA yang lebih aman dan cepat. Index Terms—Algoritma Kunci Publik, pseudorandom generator, ISAAC, optimasi
RSA,
I. PENDAHULUAN Kriptografi adalah ilmu untuk menyamarkan pesan agar pesan tersebut hanya diketahui oleh pihak pemberi pesan dan pihak penerima pesan, dan tidak diketahui oleh pihak lain. Pesan disamarkan dengan cara mengganti pesan asli menjadi pesan lain yang hanya bisa dimengerti oleh pihak pemberi pesan dan pihak penerime pesan. Pesan yang disamarkan tersebut, dapat diubah kembali menjadi pesan asli dengan menggunakan kunci atau caracara tertentu. Kriptografi sudah digunakan sejak zaman dahulu, salah satu penggunaannya adalah untuk menyampaikan pesan saat perang. Pengiriman pesan dalam sebuah peperangan biasanya menggunakan kriptografi agar pesan rahasia tersebut tidak dapat dibaca dan diketahui oleh pihak musuh. Kriptografi dalam peperangan mulai digunakan sejak za-
Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011
man pemerintahan Julius Caesar yang terkenal dengan Caesar Chiper-nya hingga Perang Dunia II. Kriptografi pada zaman tersebut masih menggunakan cara manual, seperti menggunakan cryptex atau mesin. Namun sejak lahirnya komputer dan dimulainya era digital, kriptografi mulai berkembang pesat, berbagai macam algoritma kriptografi untuk menyembunyikan pesan dibuat. Dan penggunaannya tidak lagi hanya untuk menyampaikan pesan dalam peperangan, karena saat ini, privasi dalam penyampaian pesan dan penyimpanan data menjadi penting. Oleh karena itu, saat ini kriptografi juga digunakan dalam penyampaian pesan-pesan digital, seperti e-mail, sms, atau chatting, dan juga untuk penyimpanan data-data penting seperti password (kata kunci), tanda tangan digital, dan lain-lain. Ada dua algoritma kriptografi digital yang berkembang hingga saat ini, yaitu algoritma kunci simetri dan algoritma kunci publik. Proses algoritma kriptografi terdiri dari proses enkripsi dan dekripsi. Proses enkripsi adalah proses pengubahan pesan asli (disebut plaintext) menjadi pesan yang tersamarkan (disebut chipertext), sedangkan proses dekripsi adalah proses sebaliknya. Algoritma kunci simetri adalah algoritma kriptografi yang menggunakan kunci yang sama untuk mengenkripsi dan mendekripsi pesan. Kunci tersebut hanya boleh diketahui oleh pihak pemberi dan penerima pesan. Beberapa contoh algoritma yang menggunakan kunci simetri adalah algoritma vigenere chiper, algoritma block chiper, dan one time pad. Sedang algoritma kunci publik adalah algoritma yang memiliki 2 buah kunci, yaitu kunci publik dan kunci privat. Kunci publik digunakan untuk mengenkripsi pesan, dan dapat diketahui oleh siapa saja. Sedangkan kunci privat digunakan untuk mendekripsi pesan dan tidak boleh diketahui oleh siapapun, hanya pemberi dan penerima pesan. Beberapa contoh algoritma yang menggunakan kunci publik adalah algoritma RSA, ElGamal dan DSA. Salah satu algoritma kunci publik yang populer digunakan adalah Algoritma RSA. Algoritma RSA banyak digunakan untuk pengamanan pesan dan pembuatan tanda tangan digital (digital signature). Keamanannya terletak pada sulitnya memfaktorkan bilangan prima yang menjadi kunci dari algoritma tersebut.
Keamanannyya juga terletaak pada besarn nya bilangan pprima yang menjaddi kunci. Karena bilangan primaa yang dibutuh hkan besar daan tidak mungkinn untuk dimassukkan secaraa manual, oleeh karena itu dibbutuhkan pem mbangkit bilaangan acak uuntuk menghasilkann bilangan priima yang besaar tersebut. Namun, peembangkit billangan acak biiasa memiliki kelemahan, karenna sebenarnyya pembangkitt tersebut meerupakan pembanggkit bilangan acak semu (attau disebut deengan pseudorandoom). Hal tersebut dikarenak kan pembangkkit bilangan tersebbut menghasillkan bilangan-bilangan yanng sama secara peeriodik. Hal ini i tentu akan n mengurangii keamanan dari kunci bilangaan acak yang digunakan, ssebab ukan bilangann acak kriptanalis dapat lebih muudah menemu yang menjaddi kunci. Oleh kareena itu, dibuaatlah algoritm ma-algoritma pembangkit bilanngan acak untuk menguran ngi kelemahann tersebut, frekueensi bilangan sama s yang mu uncul secara pperiodik dikuranggi. Dan pembaangkit bilangaan acak tersebuut disebut dengaan cryptograpphycally secu ure pseudoranndom generator. tu pseudorandom generattor yang terk rkenal Salah satu adalah ISAA AC. ISAAC dibuat d oleh Ro obert J. Jenkinns Jr. ISAAC adallah pembangkkit bilangan acak a yang terk rkenal dengan keceepatannya, peersebarannya merata, tidakk bisa ditebak, dan aman secaraa kriptografi. Algoritma IS SAAC p biilangan acak RC4, mirip dengann algoritma pembangkit namun ISAA AC tiga kali lebbih cepat[1]. Dengan m melihat kelebihhan-kelebihan n ISAAC, dihharapkan kelebihaan tersebut dappat digunakan n untuk melakkukan optimasi terhhadap algorittma RSA dallam pembanggkitan bilangan priima acak seebagai kunci. Dengan IS SAAC diharapkan ddidapatkan biilangan kuncii yang lebih aman dari bilangann kunci yang dihasilkan d darri pembangkitt bilangan kunci bbiasa. Algoritmaa RSA sendirii membutuhkaan komputasi yang besar karenna modulasi dan perpan ngkatan bilannganbilangan bessar dalam prroses enkripsii dan dekripssinya. Komputasi yyang digunakkan ISAAC lebih rendahh dari algoritma pem mbangkit bilaangan acak biaasa, sehingga dapat lebih meninggkatkan performansi dari algoritma a RSA A dan menurunkan biaya komputasi.
III. ALGRORIT TMA KUNCI PUBLIK Algoritmaa kunci publikk adalah algo oritma yang m menggunakan kunnci asimetri, yaitu kuncii yang digunnakan untuk menggenkripsi dann mendekripssi pesan berrbeda. Terdapat duaa jenis kuncii yaitu kunci publik dan kkunci privat. Pengiirim pesan meengenkripsi peesan menggunnakan kunci publikk, dan kunci publik p ini dapat diketahuii oleh banyak orangg. Namun apabila pengirim m pesan inginn mengirimkan ppesan tersebutt ke penerimaa pesan, penngirim pesan mengirimkan pesaan yang teren nkripsi. Kemuudian pesan terenkkripsi tersebutt didekripsi deengan kunci pprivat yang dimilikki penerima peesan. Algoritmaa kunci publlik ditemukaan Diffie-Hellman. Algoritma kuunci publik muncul m karenaa terdapat maasalah pada algorittma kunci simetri. Masallahnya adalahh baMakalah IF3058 Kriptograafi – Sem. II Tahun T 2010/20011
mana mengirim m kunci rahasiia kepada pen nerima pesan?? gaim Men ngirim kunci melalui m jalur pengiriman biasa b tidak a-man, sedangkan menggunakan m jjalur kedua um mumnya lam-bat dan d sangat mahal. Prrosedur enkrip psi dan dekrippsi algoritma kunci publikk adalaah sebagai berrikut:
Gambar 1 Prosedur Algorritma Kunci Asim metri
Ku unci publik dan d pesan terrenkripsi dapaat dikirimkann melaalui saluran tidak aman. Keeuntungan alg goritma kuncii publik adalah tid dak perlu mellakukan peng giriman kuncii rahasia sehingga jumlah kunci ddapat ditekan.. s kunnci pada kriptografi kuncii Peembangkitn sepasang publik didasarkan n pada persoallan integer yaitu pemfakto-d logaritma. Semakin bessar bilangan yang y harus di-ran dan fakto orkan, semakiin sulit faktori risasi yang harus dilakukann dan dibutuhkan waktu yangg sangat laama. Contohh m prinssip ini adalah RSA. Begituu algorritma yang memakai pula dengan log garitma bilanggan besar, semakin s sulitt bilan ngannya semaakin sulit dan lama komputtasinya. Algo-ritmaa yang menaffaatkan prinsiip ini adalah ElGamal dann DSA A. Kelebihan algorritma kunci assimetri adalah h hanya kuncii privaat yang dijagaa kerahasiannnya, dan tidak k ada kebutu-han untuk mengirrimkan kuncii privat sebag gaimana padaa a prosess algorritma kunci simetri. Keleemahannya adalah enkrripsi dan dek kripsi lebih laambat daripaada algoritmaa kuncci simertri, karrena enkripsi dan dekripsi menggunakan m n bilan ngan besar dan n melibatkan operasi perpaangkatan bila-ngan n besar. Algoritma kunnci publik menggunakan m n bilan ngan-bilangan n besar sebagaai inti dari keamanan algo-ritmaa tersebut. Ukuran U chiperrteks dapat menjadi m jauhh lebih h besar dari plainteks, p beggitu pula uku uran kuncinyaa pun lebih besar daari kunci simeetri. Oleh karrena itu biasa-k publik digunakan d unt ntuk mengamaankan pengiri-nya kunci man kunci simetrri dan digunaakan untuk memberi m tandaa tangaan digital.
III. CRY YPTOGRAPHY YCALLY SECURE PSEU UDORANDOM M GENERATOR R Peembangkit bilangan acak banyak digu unakan dalam m kripttografi, seperti pembangkiitan kunci paada algoritmaa kuncci publik yang g membutuhkaan bilanga bessar, pembang-kitan n initialization n vector (IV) ppada algoritm ma kunci sime-tri, dan d sebagainyaa. Seebenarnya, alg goritma pembbangkit bilang gan acak yangg umum tidak ben nar-benar mennghasilkan deeret bilangann acak k. Bilangan acak yang dihassilkan sebenarrnya menggu-nakaan rumus-rum mus matematiika, yang dissebut dengann bilan ngan acak sem mu (pseudoranndom). Deret bilangan b acakk
yang dihasilkan dari rumus matematika tidak benar-benar acak karena dapat berulang secara periodik. Pembangkit bilangan acak semacam itu disebut dengan pseudorandom number generator (PRNG). Salah satu contoh algoritmanya adalah Linear Congruental Generator. Hal tersebut menyebabkan pseudorandom number generator biasa tidak dapat digunakan untuk kriptografi. Kemunculan periodik dari deret bilangan acak tersebut dapat dimanfaatkan oleh kriptanalis untuk menemukan bilangan acak yang digunakan dalam enkripsi atau dekripsi suatu pesan rahasia lebih mudah. Hal ini tentu menyebabkan penggunaan pembangkit bilangan acak semu biasa menjadi tidak benar-benar aman. Pembangkit bilangan acak yang cocok untuk kriptografi disebut cryptographycally secure pseudrandom generator (CSPRNG). Pembangkit bilangan acak yang aman secara kriptografi harus lolos uji keacakan statistik dan ttahan terhadap serangan yang serius, yaitu serangan untuk memprediksi bilangan acak yang dihasilkan. Contoh CSPRNG adalah algoritma BBS (Blum Blum Shut).
IV. ALGORITMA RSA Algoritma RSA adalah algoritma kunci publik paling terkenal dan paling banyak aplikasinya. Ditemukan oleh tiga peneliti MIT yaitu Ron Rivest, Adi Shmir, dan Len Adleman. Keamanannya terletak pada sulitnya menmfaktorkan bilangan-bilangan prima besar. Proses enkripsi dan dekripsi pesan RSA, terdiri dari pembangkitan kunci terlebih dahulu, setelah itu baru dilakukan proses enkripsi menggunakan kunci publik, dan dekripsi menggunakan kunci privat. Proses enkripsi dan dekripsi filenya mirip dengan blok chiper, yaitu dilakukan per blok, dengan panjang blok sesuai dengan panjang kunci. Proses pembangkitan kunci RSA adalah sebagai berikut: 1. Pilih 2 buah bilangan prima p dan q. Untuk tujuan keamanan, bilangan integer p dan q dipilih secara random, dan harus memiliki panjang bit yang sama. Biasanya panjang bit yang dipilih untuk bilangan p dan q ukurannya besar, agar kunci semakin aman. 2. Hitung n, yaitu n = pq. Bilangan n akan digunakan sebagai modulus untuk kunci publik dan kunci privat. 3. Hitung φ(n) = (p – 1)(q – 1), dimana φ adalah fungsi totient Euler. 4. Pilih bilangan integer e, dimana 1 < e < φ(n), fpb(e, φ(n)) = 1, e dan φ(n) adalah coprime (e relatif prima terhadap φ(n)). Bilangan e adalah bilangan yang menjadi kunci publik. 5. Hitung kunci dekripsi d, dengan persamaan: ed 1 (mod (n)) atau d e-1 mod ((n)) 6. Dari perhitungan di atas didapatkan kunci publik dan kunci privat: Kunci publik adalah pasangan (e, n) Kunci privat adalah pasangan (d, n) Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011
Proses enkripsi dan dekripsi algoritma RSA: 1. Nyatakan pesan menjadi blok-blok plainteks m1, m2, m3, ..., mn, dengan syarat 0 < mi < n-1. 2. Hitung blok chiperteks ci untuk blok plainteks pi dengan persamaan ci = mie mod n. 3. Proses dekripsi dilakukan dengan menggunakan persamaan mi = cid mod n. Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor-faktor prima, dalam hal ini n = a b. Bila a dan b diketahui, dan karena kunci enkripsi e tidak rahasia, maka kunci dekripsi d dapat diketahui. Penemu algoritma RSA menyarankan nilai a dan b panjangnya lebih dari 100 digit, dengan demikian hasil n = ab bisa berukuran lebih dari 200 digit. Usaha untuk mencari faktor dari bilangan 200 digit membutuhkan waktu komputasi yang sangat lama, hinga bermilyarmilyar tahun. Oleh karena itu, RSA hanya aman jika nilai n cukup besar. Kelemahan RSA adalah komputasinya lebih lambar dari pada algroitma kunci simetri seperti DES dan AES. Karena komputasinya yang sangat lambat, RSA dalam praktek tidak digunakan untuk mengenkripsi pesan, melainkan kunci simetri, atau digunakan untuk mengenkripsi pesan yang ukurannya pendek. Selain itu RSA juga digunakan dalam tanda tangan digital, yaitu untuk mengenkripsi message digest hasil fungsi hash file yang ingin dibuat tanda tangan digitalnya.
V. PEMBANGKIT BILANGAN ACAK ISAAC ISAAC merupakan algoritma pembangkit bilangan acak yang dirancang oleh Robert J. Jenkins Jr. Jenkins membuat algoritma ISAAC bersaamaan dengan dua algoritma pembangkit bilangan acak lainnya, yaitu IA dan IBAA, dimana ISAAC merupakan hasil dari pengembangan keduanya. ISAAC membutuhkan 18,75 instruksi untuk menghasilkan nilai sebesar 32-bit. Pembangkit bilangan acak IA (Inderection, Addition), lebih mudah diprediksi, tetapi aman, dan tahan terhadap serangan eliminasi Gaussian. IA didesain dengan menyimpulkan bahwa keadaan internal dari hasilnya tidak dapat ditelusuri, agar kodenya mudah disimpan di memori, dan beroperasi secepat mungkin. Sedangkan lebih banyak kebutuhan ditambahkan dalam pembuatan IBAA (Indirection, Barrelshif, Accumulate, Add). IBAA didesain agar aman secara kriptografi (cryptographically secure), tidak dapat diprediksi (tidak terdapat bilangan sama muncul secara periodik) sepanjang keseluruhan siklus, dan kemunculan siklus pendek jarang. IBAA dibuat dengan mengkombinasikannya dengan IA tanpa mengurangi keamanan IA atau menghasilkan bias. ISAAC merupakan pengembangan dari IBAA, dengan tambahan agar mudah disimpan di memori. Selain itu kode ISAAC dioptimisasikan untuk kecepatan, state-state yang berurutan akan diubah menjadi tidak berurutan dengan cepat, dan tidak ada siklus pendek sama sekali.
ISAAC lebihh cepat dari IBAA, dijamin n tidak menghhasilkan nilai seeed yang burruk, mengubaah state beruurutan menjadi statee tidak urut leebih cepat, daan tidak ada ssiklus pendek[]. ISAAC membbutuhkan 18,7 75 instruksi m mesin untuk menghhasilkan nilai sebesar 32-biit, dan 19 insttruksi mesin untukk menghasilkaan nilai sebessar 64-bit. Juumlah operasi tersebbut akan berjaalan sangat ceepat pada kom mputer 32-bit. Algoritmaa ISAAC memiliki keemiripan deengan algoritma PR RNG RC4. IS SAAC mengg gunakan arrayy 256 integer 32-biit sebagai statte internal, menulis m hasilnyya ke array 256 intteger lain, dim mana mereka dibaca d satu perr satu hingga arrayy-nya kosongg, sampai suaatu saat merekka di rekomputasi.. Kom-putasinnya terdiri darri mengubah m mm[i] dengan mm[i^128], 2 elem men dari mm ditemukan deengan ntuk semua nnilai i indireksi, akkumulator, dann counter, un dari 0 hinggga 255. Diagram di bawaah ini menunjjukan bagaimana IB BAA atau ISA AAC mempro oduksi sebuahh hasil dalam r[] dann menggantikaan satu nilai dalam d m[].
Gam mbar 2 Proses Koomputasi Algorittma ISAAC
mplementasi dari d ISAAC saangat cepat, hiingga Banyak im mereka dapaat bersaing dengan d algorritma PRNG lain, bahkan denggan PRNG yang y didesain n untuk kecep epatan bukan keamaanan[3].
VI. RAN NCANGAN OPTIMASI P ALG GORITMA RS SA Kekuatan dari algoritm ma RSA terleetak dari bilaangan prima dan panjang bilaangan prima yang digunnakan sebagai kunnci. Semakinn besar bilan ngan prima yang digunakan, m maka kunci tersebut akaan semakin aaman, karena semaakin sulit diprrediksi oleh kriptanalis. k Saampai saat ini, unntuk nilai n sepanjang 512-bit sudah bisa dipecahkan ddengan beberaapa ratus kom mputer. Oleh kkarena itu, bilangan n yang digunnakan harus di atas 512-bit. ber generatorr berDisinilah letak pseudorrandom numb peran. Karenna untuk bilanngan prima seb besar itu tidakk bisa dilakukan seecara manual. Oleh karena itu dibutuhkaan algoritma pem mbangkit kunnci untuk RSA menggunnakan PRNG. Karena keekuatan kemaanan RSA terrletak pada kkunci, maka pembaangkitan kuncci pun menjad di penting. K Karena pembangkitaan kunci dilakkukan dengan pembangkitaan bilangan randoom, oleh karenna itu algoritm ma PRNG yanng di-
Makalah IF3058 Kriptograafi – Sem. II Tahun T 2010/20011
gunaakan harus am man secara kripptografi. Dari syarat-syarrat tersebut, ddapat dilihat bahwa b ISAAC C nakan sebagaii adalaah PRNG yaang potensial untuk digun pemb bangkit kunci RSA. Karenaa selain memaang dirancangg sebaagai cryptogrraphically seecure PRNG G, algoritmaa ISAA AC berjalan sangat s cepat. Hal ini tentun nya akan me-ngurrangi beban komputasi k kom mputer dibanding penggu-naan n PRNG biasa. Olleh karena itu i dalam paaper ini, un ntuk optimasii algorritma RSA, diusulkan unntuk menggun nakan PRNG G ISAA AC sebagai alternatif a algooritma PRNG G untuk pem-bang gkitan bilangan n-bilangan kuunci. Un ntuk algoritm ma RSA, besarr bilangan yan ng digunakann sebaagai nilai p dan n q untuk pem mbangkitan ku unci adalah 488 byte, yang berarti 384 bit, untukk keamanan. Karena K sema-b bilangaan kunci, sem makin sulit un ntuk diserang.. kin besar Kareena bilangan p dan q sebesaar 48 byte, maaka besar nilaii n daan d akan men ncapai 96 bytte (768 bit). Nilai N ini tentuu meleebihi nilai 512 2-bit. Algoritm ma RSA diimp plementasikann dalam m sebuah prog gram C#. Dalam proses enkripsinya, plainteks dib bagi menjadii blok k-blok sepanjang p dan q yaaitu 384 bit. Karena K ukurann file umumnya u jaraang yang habiss dibagi 384 bit, b digunakann padd ding untuk memenuhi m bblok yang ju umlah bitnyaa kuraang. Namun hasil h enkripsi atau cipertek ks ditampungg dalam m blok-blok sepanjang 7768 bit, karen na hasil darii perhitungan ci = mie mod n besaarnya dapat mencapai m lebihh dari 384 bit, nam mun tidak meleebihi 768 bit.. Oleh karenaa p chiperteks menjaadi jauh lebiih besar darii itu panjang plain nteksnya. Pad da proses dekkripsi hal yan ng sebaliknyaa terjaadi. Karena cip perteks ditamp mpung dalam blok-blok b 7688 bit, oleh o karena itu ciperteks ddipecah menjadi blok-blokk 768 bit. Hasil dekripsi ditaampung dalaam blok-blokk plain nteks 384 bit agar kemballi menjadi seeperti semula.. Dan padding pun dihilangkan an, dengan cara c memberii der panjang file fi pada file ciperteks, sehinga jumlahh head file bit yang diam mbil hanya ssebesar panjaang file yangg mpan pada heaader. disim Dalam pembuatan algoritmaa RSA ini, dig gunakan kelass bahan yang didapat darri sumber in nternet yangg tamb meru upakan kelas BigInteger yyang khusus dibuat untukk peng golahan bilan ngan-bilangann dalam Algoritma RSA.. Kelaas BigInteger ini digunakan an untuk menampung bila-ngan n-bilangan bessar seperti billangan sebesar 48 byte dann 96 by yte, beserta peengolahannyaa. Seedang proses pembangkitan p n kuncinya sen ndiri tidak se-mertta-merta langssung menggunnakan PRNG ISAAC I untukk mem mbangkitkan nilai n p dan q. Dalam algoriitma RSA ini,, digu unakan kelas ISAAC yangg diimplemen ntasikan olehh Jenk kins, dan keelas ISAAC yang diimp plementasikann maksimal hanya dapat d menghaasilkan bilangaan sebesar 644 uhkan sebesarr bit, sementara bilangan kunci yang dibutu b 384 bit. Olleh karena itu u dilakukan peenggabungan bit-bit 6 buahh bilan ngan random yang y dihasilkaan oleh ISAAC, sehingga 6 buah h 64-bit integeer tersebut meenjadi sebuah h bitarray 3844 bit. Kemudian BiitArray 384 bbit tersebut dikonversikan d n menjjadi BigIntegeer sebesar 3844 bit.
//Kelas s PRNG ISAA AC 64-bit Rand r = new Rand d();
Gambar 3 Diagram penggab bungan bit-bit biilangan hasil PR RNG ISAAC
Setelah nnilai BigIntegger tersebut didapatkan, nilai BigInteger ttersebut diperriksa apakah bilangan terrsebut bilangan prim ma. Jika bilaangan tersebu ut bilangan pprima, maka nilai B BigInteger ituulah yang akaan menjadi niilai p dan q, yang kkemudian akaan diolah menjjadi kunci. Berikut inni adalah kodee pembangkittan kunci mennggunakan PRNG G ISAAC dalaam kode C#: public voi id Generate eKeyISAAC() ) { p = gen48Byte ePrimeISAAC C(); q = gen48Byte ePrimeISAAC C(); n = p * q; Big gInteger T = (p - 1) * (q - 1); ; e = gen48Byte ePrimeISAAC C(); whi ile (e.gcd( (T) != 1) { e = gen n48BytePrimeISAAC(); } d = e.modInve erse(T);
} public Big gInteger ge en48BytePri imeISAAC() {
Big gInteger b = new BigI Integer(); whi ile (!b.isP ProbablePri ime()) { b.genRa andom48ByteISAAC(); } ret turn b;
for (i = 0; i < 6 ; i++) { r.Isaac(); //mendapat tkan nilai random dari i kelas r aInt = r.v val(); Byte[] int tByte = BitC Converter.G GetBytes(aI Int); intBits[i] = new BitA Array(intBy yte); } for (i = 0; i < 6 ; i++) { R.copyB BitArray(In ntBit,intBi its[i],0,( i * 64), 64); } b = get tBigIntFrom mBitArray(I IntBit); return b; }
ungsi copyB BitArray dann getBigIntF FromBitArrayy Fu terletak dalam kelas RSA.cs.. Isi dari fu ungsi tersebutt adalaah : publ lic void co opyBitAray( (BitArray Target, T BitA Array Sourc ce, int ind dexAwal, in nt inde exTarget, int i Length) ) { for (in nt i = inde exAwal, j = inde exTarget; j < (indexT Target + Le ength); i++, , j++) { if (i >= S Source.Leng gth) brea ak; Target.Set t(j, Source e.Get(i)); } }
} public Big gInteger ge enRandom48B ByteISAAC() ) { int t i=0; //v variabel un ntuk menamp pung hasil bilangan r random ISAA AC Int t64() aInt = new Int6 64(); Bit tArray[] In ntBits = Bi itArray[6]; ; Bit tArray IntB Bit = new BitArray(38 B 84, false); Big gInteger b = new BigI Integer();; ; //K Kelas RSA dipanggil d untuk u memanggil fungsi man nipulasi bi it copyBitArr ray dan get tBigIntFrom mBitArray RSA A R = new RSA(); R
Makalah IF3058 Kriptograafi – Sem. II Tahun T 2010/20011
publ lic BigInte eger getB BigIntFromB BitArray(Bi itArray bit tArray) { Byte[] Data = new w Byte e[bitArray. .Length/8]; ; Console e.WriteLine e(Data.Leng gth); bitArra ay.CopyTo(D Data,0); BigInte eger b = ne ew BigInteg ger(Data); return b; }
Dari algoritma tersebut, kun unci publik (ee dan n) dann n n) didapatkaan. kuncci privat (d dan
VII. PENG GUJIAN Peengujian
dillakukan
denngan
mengeenkripsi
dann
mendekripsi suatu pesan pendek p dalam m string. Prosees pengujian dilakkukan dengan terlebih dahu ulu membangkkitkan kunci mennggunakan algoritma a peembangkit kkunci memakai alggoritma PRNG G ISAAC yang g sudah dibuatt
genkripsi suattu pesan pende dek. meng
Gambar G 5 Contooh enkripsi
g akan dienkkripsi adalah h kriptografi,, Pllainteks yang semeentara hasil enkripsinya e m merupakan nillai heksadesi-mal dari chipertek ks yang dihasillkan.
Gambarr 4 Pembangkitaan kunci menggu unakan ISAAC
Nilai kuncci publik dan kunci k privat berhasil b didap atkan menggunakaan algoritma yang sudah dibuat. Nilaii-nilai tersebut adalah :
Hasi il chiperte eks = 0B00 00000197823 3C44B1B3567 787A4E225CE EF3559C1AD 5EC1 18F0C84A452 2626FC51486 685D9C07F62 2F8634603C F65F FEC9019EADA AB2D78DB74F FEA9B303953 305624FF83 343A A5EA248EF28 8F4888ECA07 77C0C35B66D DC0F7E4517 A818 89FA43531EF FAAF16DC3BB BB3AF
m n Kemudian chiperteks didekriipsi kembali menggunakan kuncci privat
p = 66822187734 41519597569 97723718653 3486 2297454166 0756992434 40732384985 52940187538 81308184900 0832 1952032793 30658413729 96551730931 1 q = 58913204237 70584429915 54634410896 6331 2904297885 3130482011 14979414140 07893387266 68922698288 8438 9106836453 37753678577 71168019813 3 e = 07786816098 87979985377 73569868191 1829 3007272880 0829541420 01644697972 22527253635 54104249012 2842 6760828389 95773344579 99612649243 3 n = 92273732720 02900056890 00089364598 8562 6672491279 9893999180 01159466129 93429769988 81646416618 8026 1291667728 88421232680 06619953968 88156709286 6226 1681231225 56117493622 23253482816 60715134297 7037 1564554199 93114594533 30239673401 10350446893 3351 4330176852 2935903 d = 1830589086 67979266646 63098559252 21110646893 3797 1055921955 58576876933 38748834029 92332646945 5274 4548468687 75537972446 67354452282 25852582580 0899 8813487334 45456613861 11455122473 35034713841 1766 2991553077 74827402912 21527245286 69197421465 5941 2095102991 1214267
Walaupunn secara kasattmata tidak teerlihat dan haarus 6 kali menghasilkan bilangaan random un ntuk menda-p atkan bilangan ranndom 384 bitt, hal tersebu ut dapat diimbbangi dengan prosees komputasi ISAAC yang g cepat. Selaiin itu hasil bilangaan acak yang didapatkan d pun lebih aman secara kriptografi fi. Kemudiann kunci yangg dihasilkan digunakan uuntuk Makalah IF3058 Kriptograafi – Sem. II Tahun T 2010/20011
. mengembalikaan chipertekss Hasil dekripsi berhasil m menjjadi plainteks semula.
V. KESIMPPULAN a prosess Dari paper ini, kesimpulan yyang didapat adalah, pemb bangkitan kunci sangat peenting dalam m menentukann keam manan algoritm ma RSA. Sem mentara proses pembangki-tan bilangan b kunci yang sangatt besar membu utuhkan pem-bang gkit bilangan n acak, olehh karena itu pembangkitt bilan ngan acak yaang cepat, ma mangkus, dan aman secaraa kripttografi menjad di dibutuhkan.. Allgoritma ISAA AC adalah alggoritma PNRG yang dapatt digu unakan untuk k mengoptim masikan algo oritma RSA,, karen na kecepatann nya dan keamaanannya secarra kriptografi.. Nam mun, hal ini tidak t menutup up kemungkin nan algoritmaa PNR RG lain yang lebih mangkuus, cepat, dan n aman, untukk dapaat lebih mengo optimasikan aalgoritma RSA A. Diharapkann kedeepannya muncul algoritmaa PNRG lain n yang lebihh cang ggih untuk leebih mengopttimasikan alg goritma RSA.. Untu uk saat ini IS SAAC termassuk beberapa PNRG yangg mem miliki kualitas dan ke kecepatan tin nggi dalam m peng ggunaannya[3].
VIII. ACKNOWLEDGMENT Ucapan terima kasih pertama-tama saya ucapkan sebesar-besarnya kepada Tuhan Yang Maha Kuasa. Kemudian terima kasih saya ucapkan kepada Bapak Rinaldi Munir yang telah membimbing kami selama mempelajari mata kuliah kriptografi. Kemudian kepada teman-teman saya yang telah mengajari saya bagaimana memanipulasi bit dan memberi tahu saya mengenai kelas BigInteger. Dan kepada penulis-penulis sumber referensi yang telah memberikan saya pengetahuan yang saya butuhkan.
REFERENCES [1]Robert J. Jenkins Jr., ISAAC. Fast Software Encryption 1996, pp41– 49. [2]http://burtleburtle.net/bob/rand/isaacafa.html [3]http://en.wikipedia.org/wiki/ISAAC_(cipher) [4]http://burtleburtle.net/bob/rand/isaac.html [5]http://en.wikipedia.org/wiki/RSA
PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 9 Mei 2011
Shauma Hayyu Syakura (13507025)
Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011