PEMFAKTORAN KUNCI RSA DENGAN METODE PENYARINGAN KUADRATIK HERY MULYONO DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2012 1 PEMFAKTORAN KUNCI RSA DENGAN METODE PENYARINGAN KUADRATIK HERY MULYONO DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2012 1 ABSTRAK HERY MULYONO. Pemfaktoran Kunci RSA dengan Metode Penyaringan Kuadratik. Dibimbing oleh SUGI GURITMAN dan SISWANDI. Data yang dikirim melalui jaringan tidak jarang disadap oleh orang lain untuk kepentingan tertentu. Oleh karena itu, data harus dienkripsi sebelum dikirim. RSA (Rivest Samir Adleman) adalah salah satu metode kriptografi kunci publik untuk mengenkripsi data. Keamanan algoritme ini terletak pada sulitnya memfaktorkan bilangan bulat positif yang besar menjadi faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Dalam skripsi ini kita mempelajari salah satu metode faktorisasi disebut penyaringan kuadratik. Pada metode ini, pemilihan nilai B,disebut faktor basis, akan sangat berpengaruh pada proses komputasi. Kata Kunci : kriptografi RSA, metode penyaringan kuadratik. ii ABSTRACT HERY MULYONO. Factoring RSA Keys with Quadratic Sieve Method. Supervised by SUGI GURITMAN and SISWANDI. Sending data by network might be hacked by others for certain purposes. Therefore, the data should be encrypted before it is sent. RSA (Rivest Samir Adleman) is one of public key cryptosystem method for encrypting data. Security of this algorithm relies on the difficulty of factoring large positif integer to prime factors. Factoring is used to obtain a private key. In this thesis, we study one of factoring methods called quadratic sieve. In this method, selection the basic factor will greatly affect on the computational processes. Key Words : RSA cryptography, quadratic sieve method. i PEMFAKTORAN KUNCI RSA DENGAN METODE PENYARINGAN KUADRATIK HERY MULYONO Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains pada Departemen Matematika DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR 2012 iii Judul : Pemfaktoran Kunci RSA dengan Metode Penyaringan Kuadratik Nama : Hery Mulyono NIM : G54104065 Menyetujui, Pembimbing I Pembimbing II Dr. Sugi Guritman Drs. Siswandi, M.Si NIP. 19620927 199203 1 004 NIP. 19640629 199103 1 001 Mengetahui, Ketua Departemen Dr. Berlian Setiawaty, MS NIP.19650505 198903 2 004 Tanggal Lulus : iv KATA PENGANTAR Puji dan syukur penulis panjatkan kepada Allah SWT atas segala nikmat, karunia, dan pertolongan-Nya sehingga penulisan karya ilmiah ini berhasil diselesaikan. Sholawat dan salam semoga senantiasa tercurahkan kepada nabi besar Muhammad SAW. Terima kasih penulis ucapkan kepada : 1 Dr. Sugi Guritman dan Drs. Siswandi selaku pembimbing pertama dan kedua yang telah dengan sabar membimbing penulis dalam menyusun karya ilmiah ini, 2 Dr. Ir. Hadi Sumarno, MS. selaku dosen pembimbing akademik, Teduh Wulandari Mas’oed, M.Si. selaku dosen penguji, dan seluruh dosen Departemen Matematika FMIPA IPB, 3 Ibu dan Bapak tercinta atas doa, dukungan, kasih sayang, nasihat, dan kepercayaannya, 4 teman-teman Matematika 41 atas segala dukungan, bantuan, dan ketulusan hati yang telah diberikan, 5 teman-teman DOTA lab: Deni, Amin, Irwan, Kopet, Ali, Judin, Aswin, Akil, Ihsan, Tendi, Haryanto, TB atas doa, nasihat dan bantuan kepada penulis, 6 teman-teman Baristar Squad atas rasa kekeluargaan yang telah diberikan, 7 seluruh staf Departemen Matematika : Bapak Yono, Mas Heri, Ibu Ade, Bapak Acep, Ibu Susi, Mas Bono, Mas Deni yang telah membantu penulis dalam administrasi dan sebagainya. Penulis menyadari bahwa dalam tulisan ini masih terdapat kekurangan, oleh kerena itu penulis mengharapkan saran dan kritik dari semua pihak. Semoga tulisan ini bermanfaat bagi semua pihak yang memerlukan . Bogor, April 2012 Hery Mulyono v RIWAYAT HIDUP Penulis dilahirkan di Bogor,pada tanggal 1 Oktober 1986 dari pasangan Willy Suparman dan Gusnimar Aliawaty. Penulis merupakan putra pertama dari satu bersaudara. Pendidikan yang telah ditempuh oleh penulis antara lain SDN Empang II (Bogor, Jawa Barat) tahun 1992-1998, SLTPN 4 Bogor (Bogor, Jawa Barat) tahun 1998-2001, SMAN 3 Bogor (Bogor, Jawa Barat) tahun 20012004, dan Institut Pertanian Bogor Departemen Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam 2004-2012. Penulis diterima di Institut Pertanian Bogor melalui jalur SPMB (Seleksi Penerimaan Mahasiswa Baru) pada tahun 2004. Disamping kegiatan akademis, penulis pernah menjadi asisten praktikum matakuliah Algoritma dan Pemrograman pada tahun ajaran 2006-2007. Penulis juga aktif dalam kegiatan kemahasiswaan yaitu menjadi panitia pada Try Out Gumatika tahun 2006, Matematika Ria pada tahun 2006 dan 2007, dan Ramadhan in Action tahun 2006. vi DAFTAR ISI Halaman DAFTAR TABEL …………………………………………………………………………. viii DAFTAR LAMPIRAN ……………………………………………………………………. viii I PENDAHULUAN 1.1 Latar Belakang ………………………………………………………………...…. 1 1.2 Tujuan ……………………………………………………………………………. 1 II LANDASAN TEORI ………………………………………………………………….. 1 III PEMBAHASAN 3.1 Faktorisasi Trial Division ………………………………………………………... 5 3.2 Faktorisasi Fermat …………………………………………………………........... 5 3.3 Faktorisasi Kraitchik dan Dixon ………………..………………………………... 5 3.4 Smoothness………………………………………………………………………... 6 3.5 Faktorisasi Penyaringan Kuadratik ………..……………………………………... 7 IV SIMPULAN 4.1 Simpulan …………………………………………………………………………. 10 4.2 Saran ………………………………………………………………….................. 10 DAFTAR PUSTAKA ……………………………………………………………………… 11 LAMPIRAN ……………………………………………………………………………….. 12 vii DAFTAR TABEL Halaman 1 Perbandingan waktu …………………………………………………………………… 9 2 Pemfaktoran N…………………………………………………………………………. 9 DAFTAR LAMPIRAN Halaman 1 Pembangkitan kunci RSA ……………………………………………………………… 13 2 Pembangkitan bilangan prima acak ……………………………………………………. 13 3 Penyaringan kuadratik …………………………………………………………………. 14 viii 1 I PENDAHULUAN 1.1 Latar Belakang Kriptografi „cryptography‟ berasal dari bahasa yunani „cryptos‟ artinya rahasia dan „graphein‟ artinya tulisan, jadi kriptografi berarti tulisan rahasia. Sedangkan menurut definisi kriptografi adalah studi teknik matematik yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi data. Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Diffie dan Hellman mempublikasikan ”New Directions in Cryptography”. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret. Meskipun Diffie dan Hellman tidak memiliki realisasi praktis pada ide enkripsi kunci publik saat itu, idenya sangat jelas dan menumbuhkan ketertarikan yang luas pada komunitas kriptografi. Pada 1978 Rivest, Shamir dan Adleman menemukan rancangan enkripsi kunci publik dan tanda tangan digital, yang sekarang disebut RSA. Rancangan RSA berdasar pada masalah faktorisasi yang sulit untuk kriptografi, dan menggiatkan kembali usaha untuk menemukan metode yang lebih efisien untuk pemfaktoran. Pada awalnya pemfaktoran ini menggunakan metode Trial Division, kemudian digantikan oleh metode Fermat karena jauh lebih cepat. Namun metode iterasi Fermat masih terlalu lambat untuk memfaktorkan bilangan berdigit ratusan contohnya untuk faktorisasi kriptografi RSA. Beberapa metode baru telah dikembangkan untuk memecahkan masalah tersebut diantaranya metode Elliptic Curve, metode Continued Fraction, metode Quadratic Sieve, dan metode Number Field Sieve. Metode Quadratic Sieve (Penyaringan Kuadratik) ditemukan oleh Carl Pomerence pada tahun 1981, sebagai perluasan ide dari Kraitchik dan Dixon. QS adalah algoritme pemfaktoran tercepat sampai metode Number Field Sieve ditemukan pada tahun 1993. 1.2 Tujuan Tujuan dari penulisan ini adalah untuk mempelajari metode Quadratic Sieve sehingga dapat memfaktorkan kunci dari kriptografi RSA dan mengimplementasikan algoritme Quadratic Sieve dengan perangkat lunak Maple 13. II LANDASAN TEORI Definisi 2.1 (Keterbagian) Misalkan Bilangan b dikatakan membagi a jika ada integer n sehingga , dinotasikan . Dalam hal ini b disebut juga pembagi atau faktor dari a. Untuk kasus b tidak membagi a dinotasikan dengan . [Menezes, 1997] Definisi 2.3 (Pembagi Bersama Terbesar) Suatu bilangan bulat tak negatif d, dikatakan sebagai pembagi bersama terbesar atau greatest common divisor (gcd) dari bilangan bulat a dan b jika Dengan adalah bilangan bulat positif. [Niven, 1991] Definisi 2.2 (Pembagi Bersama) Suatu bilangan bulat c dikatakan pembagi bersama dari a dan b jika dan . [Niven, 1991] Definisi 2.4 (Floor) Floor dari x yang dinotasikan oleh ⌊ ⌋ adalah bilangan bulat terbesar yang kurang dari atau sama dengan x. [Menezes, 1997] Teorema 2.1 (Teorema Dasar Aritmatika (TDA)) Setiap integer dapat dituliskan sebagai hasil kali beberapa bilangan prima. dengan adalah integer dan bilangan prima, untuk [Crandall, 2005] Definisi 2.5 (Ceilling) Ceiling dari x yang dinotasikan oleh ⌈ ⌉adalah bilangan bulat terkecil yang lebih besar atau sama dengan x. [Menezes, 1997] 2 Definisi 2.6 (Prima) Integer dikatakan bilangan prima jika bilangan tersebut hanya dapat dibagi oleh 1 dan p. Integer positif yang bukan prima disebut komposit. [Crandall, 2005] Definisi 2.7 (Relatif Prima) Jika maka dua integer a dan b dikatakan relatif prima. [Menezes, 1997] Definisi 2.8 (Fungsi Phi Euler) Dinotasikan dengan adalah banyaknya integer positif yang kurang dari n dan koprima (relatif prima) dengan n, untuk . [Guritman, 2010] Definisi 2.9 (Himpunan Bilangan Bulat Modulo n) Misalkan N adalah suatu integer positif. Himpunan integer modulo N, dinotasikan , merupakan suatu himpunan dari integer – . [Menezes, 1997] 8. Jika , maka [Guritman, 2010] Algoritme 2.1 (Euclid yang diperluas) Input : Dua integer tak negatif, a dan b dengan . Output: dan bilangan bulat x dan y yang memenuhi . 1. Jika maka tetapkan . 2. Tetapkan nilai . 3. Selama lakukan iterasi berikut : 3.1 Tentukan ⌊ ⌋ – 3.2 Tentukan 4. Didapatkan Definisi 2.10 (Kongruensi) Jika a dan b adalah integer, maka a disebut kongruen ke b modulo n ditulis , apabila n membagi – . integer n disebut modulus dari kongruensi. [Menezes, 1997] [Menezes, 1997] Teorema 2.4 (Sifat-sifat Fungsi Euler) 1. Jika p prima maka – . 2. Jika , maka 3. Jika Teorema 2.2 Misalkan 1. Jika 2. Jika dan . Maka : , maka . . , maka [Guritman, 2010] Teorema 2.3 (Sifat-sifat Kongruensi) Untuk semua maka berlaku berikut ini. 1. Refleksif : . 2. Simetrik : jika , maka 3. Transitif : 4. Jika maka 5. Jika maka 6. Jika jika , maka dan dan dan , , maka 7. Jika , maka . ( , maka )( ) ( ) [Guritman, 2010] Teorema 2.5 (Faktorisasi Trial Division) Misalkan , maka salah satu faktor a dan b pasti kurang dari atau sama dengan ⌊ ⌋ . [Crandall, 2005] Teorema 2.6 (Faktorisasi Fermat) Jika N adalah bilangan komposit maka ada bilangan x dan y sehingga [Crandall, 2005] Definisi 2.11 (B-smooth) Misalkan B sebuah bilangan bulat positif. Sebuah bilangan bulat N dikatakan B-smooth jika semua faktor prima dari N kurang dari atau sama dengan B. [Menezes, 1997] 3 Teorema 2.7 (Faktorisasi Kraitchik dan Dixon) Untuk mendapatkan faktor a pada dan maka pelacakannya dapat dilakukan dengan algoritme dengan , [Crandall, 2005] Definisi 2.12 (Fungsi) Misalkan A dan B himpunan. Relasi biner f dari A ke B merupakan suatu fungsi jika setiap anggota di dalam A dihubungkan dengan tepat satu anggota di dalam B. Jika f adalah fungsi dari A ke B maka dapat dituliskan f : A B yang artinya f memetakan A ke B. Himpunan A disebut domain dan himpunan B disebut codomain. Jika maka image dari x adalah himpunan B dimana aturan f berlaku pada x. Image y dari x dinotasikan sebagai Jika maka sebuah preimage dari B adalah sebuah anggota dimana Himpunan seluruh anggota dalam Y memiliki sedikitnya sebuah preimage disebut image dari f, dinotasikan Im(f). [Munir, 2006] Definisi 2.13 (Fungsi satu-satu) Suatu f : A B disebut fungsi satu-satu (1-1) jika tidak ada dua anggota A yang memiliki image (bayangan) yang sama. Dengan kata lain, jika a dan b adalah anggota himpunan A, maka bilamana Jika maka implikasinya adalah . [Munir, 2006] Definisi 2.14 (Fungsi Onto) Suatu f : A B disebut fungsi onto jika setiap anggota himpunan B merupakan bayangan dari satu atau atau lebih anggota himpunan A. [Munir, 2006] Definisi 2.15 (Fungsi Bijeksi) Jika f : A B adalah fungsi satu-satu dan fungsi onto, maka f disebut fungsi bijeksi. [Munir, 2006] Definisi 2.16 (Fungsi Satu Arah) Suatu fungsi f : A B disebut dengan fungsi satu arah jika untuk setiap a A, f (a) adalah mudah dihitung, tetapi untuk “kebanyakan“ b Im( f ) adalah secara perhitungan tidak layak (computationally infeasible) dapat menentukan a A sehingga b f (a). [Guritman, 2003] Definisi 2.17 (Fungsi Satu-Arah Pintu Jebakan) Fungsi satu-arah pintu jebakan adalah fungsi satu-arah f : A B yang apabila diberikan informasi ekstra (yang disebut informasi pintu jebakan), maka perhitungan mencari nilai x A, diketahui y B sehingga y f ( x), menjadi mudah. [Guritman, 2003] Definisi 2.18 (Residu Kuadratik) Misalkan m adalah integer positif dan a adalah sembarang integer sehingga Maka, a disebut residu kuadratik modulo m jika kongruensi mempunyai solusi, sebaliknya (jika tidak mempunyai solusi) a disebut nonresidu kuadratik modulo m. [Guritman, 2003] Definisi 2.19 (Sistem Residu Terreduksi) Himpunan berkardinal r, dengan , yaitu disebut sistem residu terreduksi (SRT) modulo n jika dan . [Niven, 1991] Definisi 2.20 (Legendre ( )) Misalkan p prima ganjil dan a adalah sembarang integer, simbol Legendre ( ) didefinisikan sebagai 0 jika ,1 jika a adalah residu kuadratik modulo p, dan -1 jika a adalah non-residu kuadratik modulo p. [Crandall, 2005] 4 III PEMBAHASAN Data yang dikirim melalui jaringan tidak jarang disadap oleh orang lain untuk kepentingan tertentu, sehingga timbul usaha untuk melakukan pengkodean terhadap data sebelum dikirim melalui jaringan agar tidak bisa dibaca oleh penyadap. Pengubahan data asli menjadi kode rahasia disebut proses data encryption (enkripsi). Setelah data rahasia sampai ke tujuan maka data ini dikembalikan ke bentuk aslinya, proses ini disebut data decryption (dekripsi). Ilmu matematik yang mendasari teknik enkripsi dan dekripsi disebut kriptologi sedangkan teknik dan sains dari proses enkripsi-dekripsi disebut kriptografi. Naskah asli disebut sebagai plainteks dan naskah rahasia (yang telah dienkrip) disebut cipherteks. Kriptografi secara garis besar dibagi kedalam kriptografi modern dan klasik. Pada kritografi klasik, kriptografer menggunakan algoritme yang sederhana, yang memungkinkan cipherteks dapat dipecahkan dengan mudah (melalui penggunaan statistik, terkaan, intuisi, dan sebagainya). Algoritme kriptografi modern dibuat sedemikian sehingga kritanalis (pihak yang berusaha menemukan rahasia (plaintext atau kunci) dari chiperteks) sangat sulit memecahkan cipherteks tanpa mengetahui kunci. Algoritme kriptografi modern umumnya beroperasi dalam mode bit ketimbang mode karakter. Operasi dalam mode bit berarti semua data dan informasi (baik kunci, plainteks, maupun cipherteks) dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Algoritme enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian bit. Rangkaian bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk rangkaian bit, demikian sebaliknya. Secara garis besar ada dua kategori teknik kriptografi, yaitu: teknik simetris dan teknik asimetris. Teknik simetris berarti kunci/kode untuk melakukan enkripsi sama dengan kunci/kode untuk melakukan dekripsi. Teknik asimetri disebut juga sebagai teknik kunci publik, menggunakan kunci yang berbeda antara enkripsi dan dekripsi. Dari sekian banyak algoritme kriptografi asimetris yang pernah dibuat, algoritme yang paling populer adalah algoritme RSA. Keamanan kriptografi RSA yaitu terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritme yang mangkus, maka selama itu pula keamanan algoritme RSA tetap terjamin. Pembangkitan Kunci RSA 1. Pilih dua bilangan prima p dan q yang memenuhi syarat keamanan, . 2. Hitung dan – – . 3. Pilih e yang relatif prima dengan . 4. Gunakan algoritme Euclidean diperluas untuk menghitung integer . 5. Kunci publik pasangan kunci privat d. Contoh 3.1 Misalkan Hery akan membangkitkan kunci publik dan kunci privat. Hery memilih dan (dalam praktek, p dan q haruslah bilangan yang memenuhi syarat keamanan). Selanjutnya, Hery menghitung dan – – . Kemudian Hery memilih , karena 47 relatif prima dengan 220, dengan menggunakan algoritme Euclidean diperluas didapatkan . Sehingga didapatkan pasangan kunci publik (253,47) dan kunci privat 103. Tujuan kriptanalis di dalam skema kunci publik yang menggunakan algoritme RSA adalah ingin mendapatkan plainteks m dari cipherteks c dengan bermodalkan kunci publik . Di dalam teori bilangan, masalah ini disebut problem RSA. Salah satu cara untuk memecahkan problem RSA yaitu dengan cara mencari faktor dari , kemudian menghitung ( – )( – ), dan selanjutnya menghitung d sebagai invers dari e yang pada akhirnya didapatkan . Dengan pendekatan ini dapat dikatakan bahwa problem RSA ekuivalen dengan problem faktorisasi n. Sejauh ini belum ada algoritme yang efisien untuk memecahkan problem tersebut. Beberapa algoritme tentang faktorisasi integer: Trial Division, Pollard’s rho, Elliptic Curve, Quadratic Sieve, Number Field Sieve Factoring, dan lain-lain. Salah satunya yang akan saya bahas yaitu metode faktorisasi penyaringan kuadratik. 5 Sebelum masuk kepembahasan metode faktorisasi penyaringan kuadratik, ada baiknya kita mengetahui metode–metode yang mendasari faktorisasi penyaringan kuadratik. 3.1 Faktorisasi Trial Division Misalkan maka salah satu faktor a dan b pasti kurang dari atau sama dengan ⌊ ⌋ . Jika N genap salah satu faktornya pasti 2. Jika N ganjil untuk mendapatkan faktornya, N diuji apakah habis dibagi 3 dan seterusnya sampai ⌊ ⌋. Metode ini sangat lambat terutama jika N berukuran sangat besar dan produk dari dua prima yang ukurannya hampir sama. 3.2 Faktorisasi Fermat Jika N adalah bilangan komposit dan N dapat dinyatakan sebagai maka adalah faktor dari N. Jika N ganjil dan , maka bentuk dijamin tercapai dengan dan karena N ganjil maka a dan b pasti ganjil, sehingga x dan y pasti integer. Berdasarkan ide dasar diatas, untuk memformulasikan algoritmenya kita definisikan fungsi yang berfungsi untuk mencari nilai , dengan x adalah integer dengan nilai terkecil ⌈ ⌉ dan setiap nilai x diuji apakah kuadrat. Jika sudah diperoleh kuadrat, maka proses berhenti dan . Sehingga semakin kecil y maka looping akan semakin sedikit. Dengan demikian kasus terbaik algoritme Fermat terjadi ketika Teorema 3.1 Jika maka dapat disimpulkan bahwa Bukti: Misal .Jika dapat maka disimpulkan bahwa Adb : . . Misal : Karena gcd maka kita Untuk kontradiksi dengan Untuk kontradiksi dengan Jadi tidak negatif dan tinggal membuktikan . dan berarti . dan berarti . haruslah Dengan demikian untuk mendapatkan faktor a dalam formulasi algoritmenya, dapat dilakukan pelacakan pada integer x dan y sedemikian sehingga , Dengan ide dasar ini, maka metode Fermat bisa dipercepat sebagaimana dideskripsikan dalam formulasi berikut ini sehingga ⌈ dapat ⌉ dengan didefinisikan barisan dengan dan ⌊ ⌋ sifat dengan nilai a dan b berdekatan ) dan kasus terburuknya terjadi pada saat untuk p prima. Dari kasus terburuknya diperoleh ⌊ ⌋ ⌊ ⌋ Dari deskripsi di atas, kecepatan algoritme Fermat dan Trial Division bisa dikatakan berimbang, keduanya sama – sama memerlukan O( ) operasi. 3.3 Faktorisasi Kraitchik dan Dixon Metode faktorisasi Kraitchik dan Dixon adalah pengembangan dari faktorisasi Fermat . Pada metode Fermat N didapatkan pada saat kuadrat. Sedangkan pada metode Kraitchik tidak harus menunggu sampai kuadrat, tetapi manakala ada subbarisan { } { } dengan ∏ kuadrat, maka faktor dari N bisa diperoleh. Dari persamaan diatas didapatkan ∏ ∏ ∏ ∏ atau dapat ditulis dengan ∏ dan √∏ Algorime pelacakan 1. Ambil sembarang integer positif B. 6 2. 3. 4. 5. Didefinisikan himpunan B disebut faktor basis dan adalah banyaknya semua prima kurang dari atau sama dengan B. Mulai dari integer ⌈ ⌉ sampai dengan didefinisikan barisan dan dengan langkah penyaringan : a) b) Faktorkan dalam representasi TDA, c) Jika setiap p berada dalam F, maka x dan s masuk dalam barisan. Tentukan subbarisan dan dengan cara : a) Dari masing-masing representasi TDA untuk didefinisikan vektor biner dengan panjang b) Dengan metode aljabar linear, masuk dalam barisan jika tak – bebas linear. ∏ Hitung √∏ Jika maka salah satu faktor nontrivial dari N adalah dan jika atau maka N adalah bilangan prima. Contoh 3.2 Misalkan diberikan N = 253. 1. Definisikan B = 10, maka F = {2,3,5,7}. 2. Hitung ⌈ ⌉ maka Faktor TDA dari Dari kalkulasi ini diperoleh 3. Hitung maka Faktor TDA dari Dari kalkulasi diperoleh 4. Hitung maka Faktor TDA dari karena maka x tidak terpilih. 5. Hitung maka Faktor TDA dari Dari kalkulasi diperoleh tak – bebas linear, sehingga dan ( ) , jadi salah satu faktor dari 253 adalah Dengan berdasarkan ide dasar yang sama ( tetapi sedikit berbeda pada pelacakannya. Untuk mencari x dan y yang memenuhi persamaan pada metode faktorisasi Dixon dipilih x secara acak dan menghitung sehingga . Maka salah satu faktor nontrivial dari N adalah . Contoh 3.3 Misalkan diberikan 1. Ambil sembarang x, misal 2. Cari x dan y sehingga persamaan terpenuhi. , , 3. Lihat didapatkan sehingga kita mempunyai Perhatikan bahwa dan bahwa sehingga persamaan terpenuhi. 4. Hitung karena maka didapatkan salah satu faktor dari 3.4 Smoothness Berdasarkan teorema dasar aritmatika (teorema 2.1), setiap integer dapat dituliskan sebagai hasil kali beberapa bilangan prima. dengan adalah integer dan bilangan prima untuk lalu untuk setiap tidak nol atau kurang dari sama dengan batas smoothness, katakanlah B, maka integer n, dikatakan B-smooth. Contoh 3.4 Misal diberikan jika kita tetapkan apakah n 7-smooth? Diketahui karena faktor – faktor prima dari N yaitu maka dengan demikian N adalah 7-smooth, tetapi jika batas smoothness B dirubah menjadi 5, maka N dikatakan tidak 5-smooth. 3.5 Faktorisasi Penyaringan Kuadratik Ide dasar metode ini sama dengan metode Kraitchik dan Dixon yang merupakan pengembangan dari metode Fermat, yang akan menjadi penekanan di sini adalah 7 pengoptimalan pada metode penyaringannya. Hal ini terkait dengan: 1. Memilih nilai B yang cukup optimal. 2. Memilih barisan prima yang bisa mempercepat proses penyaringan. 3. Menentukan barisan pelacakan sehingga memperbesar probabilitas bahwa semua faktor prima dari berada dalam Dalam hal ini disebut B-smooth. Pada metode Kraitchik kita mengambil sembarang B sehingga didapatkan himpunan F. Dalam tahapan penyaringan dari metode Kraitchik, besar kecilnya nilai B sangat mempengaruhi kecepatan keberhasilan faktorisasi dan penggunaan memori. Jika nilai B kecil, kita mempunyai keuntungan sehingga kita tidak membutuhkan banyak Bsmooth residu untuk mendapatkan s, tetapi jika B terlalu kecil maka akan sulit untuk mendapatkan s yang B-smooth. Sehingga dibutuhkan nilai B yang optimal sehingga dapat mengoptimalkan waktu dan memori. Fakta yang cukup relevan adalah probabilitas bahwa suatu anggota dalam merupakan Bsmooth adalah sekitar (Crandall, 2005). Sebagai ilustrasi, jika maka peluang integer acak dalam merupakan B-smooth adalah 0.0510. Jika penentuan barisan menggunakan metode Fermat ( √⌈ ⌉) maka peluang bahwa s adalah B-smooth menjadi lebih baik, yaitu sekitar Pada pelacakan ini penghitung s cukup dengan dan s positif. Misalkan diberikan suatu nilai B, berapa waktu yang diperlukan untuk menguji bahwa suatu nilai s adalah B-smooth untuk suatu nilai x? Pertanyaan tersebut perlu mendapatkan perhatian karena peluang bahwa s adalah B-smooth cukup kecil sehingga uji tersebut akan dilakukan berulang-ulang. Metode termudah yang terkait dengan pertanyaan tersebut adalah dengan trial division (dengan representasi TDA). Metode tercepat adalah dengan Penyaringan Eratosthenes yang hanya melibatkan (ln ln B) operasi, namun metode ini memerlukan memori besar. Dalam penyaringan Kraitchik dan Dixon dipilih F adalah himpunan semua prima dengan merupakan banyaknya semua prima kurang dari atau sama dengan B. Sebagaimana dinyatakan sebelumnya bahwa nilai terkait banyaknya vektor biner tak-bebas linear yang diperlukan. Jadi nilai yang kecil akan mempercepat proses penyaringan. Jika p adalah prima yang membagi maka ini berarti N merupakan residu kuadratik modulo p (bilangan Legendre ( ) Dengan demikian, prima yang menyebabkan N bukan residu kuadratik modulo p tidak layak untuk dijadikan anggota F. Jadi, F selayaknya didefinisikan sebagai { ( ) } sehingga (Crandall, 2005). Perhatikan bahwa karena probabilitas untuk satu s merupakan B-smooth adalah maka harapan untuk mendapatkan satu s yang B-smooth adalah Dengan demikian, harapan untuk mendapatkan s yang B-smooth sebanyak adalah melibatkan langkah (operasi) sebanyak ( ) Jika pengujian s adalah B-smooth diasumsikan menggunakan metode Fermat, maka langkah yang diperlukan bisa dinyatakan sebagai fungsi ( ) * ( dari pendefinisian fungsi ini, akan dicari (dengan pendekatan) nilai B sebagai fungsi dari N yang meminimalkan T(B). Untuk menyederhanakan didefinisikan sehingga ( ) ( ) kemudian dicari bilangan kritisnya diperoleh dari persamaan karena ( ( maka ( ) dan ) persamaannya menjadi ) dengan pendekatan selanjutnya diperoleh sehingga ( ) ( ) 8 dari hasil ini menunjukkan bahwa estimasi running time adalah ketika dipilih nilai B adalah √ Secara garis besar algoritme Penyaringan kudratik adalah sebagai berikut. 1. Inisialisasi a. Tentukan nilai B ⌈√ ⌉ b. Tentukan himpunan { | ( ) } 2. Penyaringan a. Saring barisan untuk ⌈ ⌉ dan yang memenuhi merupakan Bsmooth. Catatan bahwa nilai awal barisan bisa kurang dari ⌈ ⌉ asalkan nilainya tidak jauh dari Dalam hal ini, haruslah yang terkait dengan formulasi vektor binernya. b. Dapatkan sebanyak +c) hasil saringan pasang dan dihimpun kedalam himpunan S. Catatan bahwa nilai c adalah integer positif kecil (misalkan tergantung besarnya N). Nilai digunakan untuk mengatisipasi terjadinya kegagalan faktorisasi pada langkah terakhir. 3. Kalkulasi Aljabar Linear a. Untuk setiap nyatakan s dalam representasi TDA 4. Faktorisasi a. Dari himpunan H, hitung (∏ (√∏ b. Hitung c. Jika faktor + , maka g adalah N. Jika faktorisasi gagal. Catatan bahwa dalam kasus gagal, bisa kembali ke Langkah-3 untuk mencari r vector tak-bebas linear yang lain. Jika A tidak memuat himpunan vektor yang tak-bebas linear, maka nilai B atau c harus diperbesar. dari Contoh 3.4: Misalkan diberikan N = 253 1. Inisialisasi Tentukan nilai √ didapatan himpunan 2. Penyaringan ⌈ ⌉ maka 3. Kalkulasi Aljabar Linear ∏ dengan secara terurut. b. Dari setiap repsentasi TDA dari s, definisikan vektor biner Dengan panjang bit. Cacatan bahwa jika maka bit pertama dari adalah “0” ketika dan “1” ketika c. Dari sebanyak vektor biner definisikan matrik A berukuran d. Dari matriks A, dengan metode aljabar linear, pilih r vektor yang tak-bebas linear dan himpunan anggota-anggota S yang terkait yaitu ( )( ) ( ) [ ] 4. Faktorisasi Dari himpunan H didapat, dan ( ) Jadi salah satu faktor dari 253 adalah Pada metode Penyaringan Kuadratik pemilihan nilai B akan mempengaruhi cepat atau lambatnya proses penyaringan dan kalkulasi Aljabar Linearnya, seperti disajikan pada Tabel 1. 9 Tabel 1 Perbandingan Waktu No bit p 1 2 3 4 5 6 7 8 10 20 30 30 40 40 50 50 733 596209 812972143 812972143 648485443343 648485443343 806704852939511 806704852939511 q B 691 746153 669145397 669145397 1022548977533 1022548977533 945719412570883 945719412570883 19 110 471 4710 1654 16540 5072 50720 Spesifikasi computer yang digunakan adalah sebagai berikut prosesor Intel® Core™ i3 CPU 530 @ 2.93GHz, RAM 4GB, system type 32-bit OS. Dari tabel terlihat bahwa untuk nilai p dan q yang sama tetapi nilai B yang berbeda, didapatkan perbedaan waktu komputasi pada penyaringan dan kalkulasi aljabar linearnya. Dari tabel tersebut juga terlihat bahwa setiap penambahan bit pada nilai p dan q akan meningkatkan waktu komputasinya. Untuk nilai p dan q sebesar 60 bit, 2 jam proses komputasi tidak menghasilkan solusi, sehingga saya hentikan proses komputasinya. Untuk menguji keakuratan algoritme Penyaringan Kuadratik diatas maka akan Waktu (detik) Penyaringan 0 2.542 14.773 1.185 245.202 20.576 1924.823 606.875 Kalk alin 0 0.015 0.046 1.404 0.015 12.994 1.762 142.538 dilakukan 10 percobaan memasukkan nilai N secara acak. dengan Tabel 2 Pemfaktoran N No N 1 543996567377675771 2 848824551314626063 3 623007170805249617 4 922121180248472873 5 613001134894902163 6 808672364201669447 7 903318945087037417 8 465280673507443873 9 791864136083864357 10 695821058187484787 g 669145397 946418267 593777267 969490519 664385773 1069704931 941582827 768048691 907171091 711845041 10 IV SIMPULAN DAN SARAN 4.1 Simpulan Ada banyak metode untuk menfaktorkan suatu bilangan komposit tetapi sampai sekarang belum ditemukan metode yang benar-benar efektif dan efisien, sehingga kriptografi RSA masih layak digunakan. Pemilihan nilai B akan sangat berpengaruh pada proses komputasi dari Metode Penyaringan Kuadratik. Jika nilai B kecil maka proses penyaringan akan memakan waktu yang lama, bahkan jika nilai B terlalu kecil maka solusi tidak akan didapatkan. Tetapi jika nilai B terlalu besar maka proses perhitungan pada Aljabar Linear akan memakan waktu yang lama. 4.2 Saran Bagi yang berminat, algoritme ini masih dapat dikembangkan, karena masih belum ditemukan algoritme yang benar-benar optimal untuk memfaktorkan suatu bilangan komposit. Lalu mengimplementasikan pada perangkat lunak untuk membandingkan tingkat kecepatannya. 11 DAFTAR PUSTAKA Cryptography. CRC Press. Inc. New York. Crandall, R. dan Pemorance, C. 2005. Prime Number a Computational Perspective. Springer. New York. Guritman, S. 2010. Faktorisasi dan Logaritme Diskret. Departemen Matematika FMIPA IPB. Bogor. Menezes, A.J. Oorschot, P.C.V. dan S Vanstone. 1997. Handbook of Munir, A. 2006. Kriptografi. Informatika. Bandung. Niven, I. Zuckerman, H.S. dan Montgomery, L.H. 1991. An Introduction to The Theory of Numbers. John Wiley & Sans. Inc. New York. 12 LAMPIRAN 13 LAMPIRAN 1. Pembangkitan kunci RSA > 2. Pembangkitkan bilangan prima secara acak > 14 3. Penyaringan Kuadratik Prosedur untuk melis semua bilangan prima ( ) > Prosedur untuk menentukan vektor biner yang direpresentasikan dengan TDA > Prosedur untuk menentukan menyaring barisan > 15 16 Prosedur untuk memfaktorkan integer berdasarkan TDA > Prosedur untuk menentukan satu faktor (prima terkecil) dari integer positif N > 17 > 18