Makalah Kriptografi

Anda mungkin juga menyukai

Anda di halaman 1dari 13

PEMFAKTORAN DAN MENYELESAIKAN MASALAH TERKAIT

PEMFAKTORAN

MAKALAH
UNTUK MEMENUHI TUGAS MATAKULIAH
Kriptografi
yang dibina oleh Bapak I Made Sulandra

disusun oleh:
Ratih Pangesti S. (150312600288)

UNIVERSITAS NEGERI MALANG


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
JURUSAN MATEMATIKA
PROGRAM STUDI S1 MATEMATIKA
SEPTEMBER 2018
8.1 Trial Division
Untuk menemukan faktor prima kecil dari n, table precomputed dari semua
bilangan prima di bawah suatu batas yang tetap B dihitung. Ini dapat diselesaikan
menggunakan sieve of Eratosthenes. Kemudian untuk setiap bilangan prima p dalam
table ini, eksponen maksimum ditentukan sedemikian rupa sehingga
membagi n. Batas yang khas adalah

Contoh 8.1.1

Kita akan faktor . Percobaan pembagian dengan


semua bilangan prima menghasilkan faktor 22, 72, dan 43. Jika kita membagi n
dengan faktor itu, maka kita memperoleh karena
, Teorema kecil Fermat mengiplikasikan kompositas m.

8.2 Metode

Ada Algoritma pemfaktoran dari kombinasi bilangan bulat dengan sifat


tertentu. Metode cara yang cocok untuk kombinasi bilangan bulat dengan
factor prima sehingga hanya punya pembagi prima terkecil. Untuk
menentukan kelipatan dari tanpa mengetahui sebagai hasil kali dari
pangkat bilangan prima terkecil. Teorema kecil Fermat mengakibatkan

Untuk setiap bilangan bulat yang tidak dapat dibagi oleh . Artinya membagi

. Jika tidak dapat dibagi oleh , maka adalah pembagi


sejati dari , sehingga factor dari ditemukan.

Sebagai calon , metode menggunakan hasil kali dari setiap pangkat


bilangan prima berikut diberikan batas B,
Jika pangkat bilangan prima membagi semua kurang dari , maka

merupakan kelipatan dari . Algoritma hitung untuk basis


tepat. Jika bukan pembagi ditemukan, maka menggunakan batas yang baru.

8.3 Kuadrat Sieve


Salah satu pemfaktoran algoritma yang paling efisien adalah Kuadrat Sieve
(QS), yang akan kita deskripsikan pada bagian ini.

8.3.1 Idea
Kita coba untuk memfaktorkan bilangan bulat positif ganjil komposit. Kita
deskripsikan bagaimana salah satu pembagi n ditemukan. Ini sudah cukup untuk
memecahkan masalah system RSA karena moduli RSA adalah hasil kali dua bilangan
prima besar.
Secara umum, suatu aplikasi rekursif dari faktor QS.
Kuadrat sieve menentukan bilangan bulat dan sehingga

(8.1)
Dan
(8.2)

Sehingga adalah pembagi dari , tetapi bukan salah satu


dari atau . Karena, adalah pembagi dari .

Contoh 8.3.2
Misal . Maka
oleh karena itu, . Ini merupakan pembagi dari .
8.3.2 menentukan dan

Ide dari bagian sebelumnya yang juga digunakan untuk algoritma pemfaktoran,
seperti banyaknya field sieve (NFS), tetapi algoritmanya memiliki beberapa cara
berbeda untuk menentukan dan . Kita deskripsikan bagaimana menentukan dan
pada kuadrat sieve.

Misal

Dan

Pertama kita jelaskan prosedurnya pada contoh.


Contoh 8.3.2
Seperti contoh 8.3.1, misal . Maka dan
. Kita memiliki

Ini berakibat

Dua kongruensi terakhir kita kalikan, lalu kita peroleh

Selanjutnya, kita atur

Itu merupakan nilai dan dari contoh 8.3.1

Pada contoh 8.3.2 telah disajikan bilangan yang bernilai hanya memiliki faktor
prima uang kecil. Lalu gunakan kongruensi

(8.3)

Dari kongruensi tersebut, kita pilih subset hasil kali kuadar pada sisi kiri dan
kanannya. Sisi kiri dari setiap kongruensi adalah suatu kudarat. Kita juga tahu setiap
sisi kanan meruakan faktorisasi prima. Hasil kali bagian sisi kanan adalah kuadrat
jika eksponennya dan semua factor genapnya dalah prima. Pada bagian
selanjutnya, kita akan menjelaskan bagaimana memilih subset dari kongruensi secara
tepat.
8.3.3 Memilih Kongkruensi yang Tepat
Dalam contoh 8.3.2, sudah jelas yang mana kongkruensi yang harus dikalikan
sedemikian rupa sehingga hasil kali dari sisi kanan adalah persegi. Jika n besar, lebih
banyak faktor prima dan kesesuaian harus dipertimbangkan. Proses seleksi
menggunakan aljabar linier yang akan diilustrasikan pada contoh berikut.
Contoh 8.3.3
Kita tunjukkan bagaimana kita dapat memilih kongkruensi yang sesuai dalam
contoh 8.3.2 dengan menyelesaikan sistem linier. Kita dapat memilih dari tiga
kongkruensi. Tujuannya adalah hasil kali sisi kanan kekongkruenani yang dipiilih
menjadi persegi. Proses seleksi dikontrol oleh koefisien jika
, maka kekongkruenan i dipilih, kalau tidak demikian tidak. Hasil kali dari sisi
kanan kekongruenan yang dipilih adalah

Kita ingin bilangan ini menjadi persegi jika dan hanya jika eksponen dari -1
dan semua bilangan prima adalah genap. Ini menggarah ke sistem linier berikut:

Koefisien dari adalah sisa dari mod 2, jadi kita mendapatkan system yang
sederhana
Solusinya

Hasil kali dari sisi kanan yang kedua dan ketiga kekongkruensian adalah persegi.
Dibuat sketsa bagaimana saringan kuadrat memilih sesuai kekongkuensian secara
umum. Dipilih bilangan bulat positif B. Kemudian dilihat untuk bilangan bulat
sedemikian sehingga hanya memiliki faktor utama yang menjadi basis faktor.

Demikian nilai disebut B-smooth. Tabel 8.1 memberi pengaruh dari ukuran basis
faktor yang diperlukan. Jika menemukan banyak nilai utuk s sebagai basis faktor
memliki elemen. Karena sistem linier adalah sistem di atas bidang , algoritma
Gauss dapat digunakan untuk menyelesaikannya. Namun, untuk nesar n yang lebih
efisien algoritma yang digunakan.

8.3.4 Sieving

Masih harus ditunjukkan bagaimana nilai-nilai s ditemukan yang mana


adalah B-smooth. Salah satu kemungkinan adalah untuk menghitung nilai untuk
, ..., dan untuk menguji dengan percobaan pembagian apakah
adalah B-smooth. Sayangnya, nilai-nilai itu biasanya tidak B-smooth. Untuk
mendeteksi ini, percobaan pembagian oleh masing-masing elemen dari basis faktor
dibutuhkan. Ini sangat tidak efisien karena basis faktornya besar untuk n besar,
seperti yang ditunjukkan Tabel 8.1. Metode yang lebih efisien adalah dengan
menggunakan teknik sieving, yang dijelaskan sebagai berikut
TABLE 8.1 Ukuran dari basis factor dan interval sieving
Kami menjelaskan versi yang disederhanakan yang menunjukkan ide utama. Kita
memperbaiki interval sieving

Kita akan mencari semua pada adalah B-smooth. Pertama, hitung


untuk semua . Untuk setiap bilangan prima p dalam basis faktor, membagi
nilai dengan kekuatan tertinggi yang mungkin dari p. B-smooth nilai tepat
dengan yang 1 atau -1 tersisa.

Untuk mengetahui dari nilai-nilai habis dibagi bilangan


prima p dalam basis faktor, pertama-tama kita menentukan semua bilangan bulat

dimana habis dibagi p. Dengan Corollary 2.19.7, polinomial


dapat memiliki paling banyak dua nol modulo p. Untuk bilangan prima kecil,
nol dapat ditentukan dengan mencoba semua kemungkinan. Jika p besar, maka
metode yang lebih canggih harus digunakan (lihat [4]).

Sekarang anggaplah kita tahu nol dari modulo bilangan prima {0,1, ..., p-
1} (yaitu, argumen yang mana dapat dibagi p. Nilai-nilai lain
s dimana habis dibagi oleh p diperoleh dari nol yang sudah kita ketahui dengan
menambahkan kelipatan bilangan bulat dari p. Mulai dari nol yang kita tahu, kita
berjalan dengan langkah-langkah panjang p di kedua arah melalui interval sieving.
Setelah setiap langkah, kita membagi yang koresponden dengan p.Ini disebut
sieving dengan p. Tidak ada percobaan pembagian yang gagal oleh p perlu. Kekuatan
utama dapat diperlakukan sama.
Contoh 8.3.4
Seperti pada Contoh 8.3.1 dan 8.3.2, misal , , dan
. Basis faktor adalah himpunan [2,3,5, 7} U {-1}. Sebagai
interval sieving, kami menggunakan himpunan {—3, —2, ..., 3}. Sieve ditunjukkan
pada Tabel 8.2.
Sieve dapat dibuat lebih efisien. Ini dijelaskan pada [27].
8.4 Analisis Penyaring Kuadratik

Misal bilangan riil dan misal lebih besar dari konstanta Euler
ditulis

Fungsi ini digunakan untuk menggambarkan urutan waktu dari algoritma


pemfaktoran. Sehingga kita punya

dan

Algoritma yang punya faktor bilangan bulat positif diterima sebagai input .
Panjang pasangan adalah . Jika algoritma punya urutan waktu ,
maka algoritma waktu polynomial. Kompleksitasnya dibatasi oleh polinomial dalam
ukuran input. Algoritma ini dianggap efisien, meskipun efisiensi sebenarnya
bergantung pada pangkat v dari polynomial. Jika algoritma punya urutan waktu
, maka eksponensial. Kompleksitasnya dibatasi oleh fungsi eksponensial pada
ukuran input. Algoritma tidak memperhatikan keefisienan. Jika algoritma punya
urutan waktu dengan , maka merupakan eksponensial bagian.
Algoritma lebih lambat daripada polynomial tapi lebih cepat daripada eksponensial.
Algoritma pemfaktoran bilangan bulat tercepat bersifat eksponensial bagian.
Pembagian percobaan adalah algoritma eksponensial.
Sejauh ini, tidak ada yang bisa menganalisis sepenuhnya waktu berjalan dari
penyaring kuadrat. Namun, di bawah asumsi yang masuk akal, namun dapat

ditunjukkan dengan urutan waktu berikut . (1) disini ada untuk fungsi

yang konvergen ke nol sebagai menuju tak hingga. Kopleksitas penyaring kuadrat
memperhatikan tengah antara polynomial dan eksponensial.

Analisa penyaring kuadrat dilakukan dengan melihat pada QS pilih batas


dan dan cari bilangan bulat pada interval penyaringan
dimana nilai

Adalah . Batas dan harus dipilih karena banyaknya bilangan bulat


yang sukses dan banyaknya anggota faktor dasar hampir sama.

Karena , oleh karena itu sangat kecil. Oleh karena itu,

akibatnya untuk kecil nilai besarnya sama yaitu . Asumsi pecahan dari

bilangan bulat , Asumsi ini tidak terbukti, tetapi percobaan indikasi


nya berpeluang benar. Juga membuat analisis penyaring kuadrat memungkinkan.

Dinotasikan bilangan bulat berikut dengan batas dengan


. Jumlah ini diperkirakan dalam teorema berikut, yang buktinya dapat
ditemukan di [13].
Teorema 8.4.1

Misal bilangan real positif. Maka untuk setiap bilangan real dan
kita punya

Dengan fungsi memenuhi untuk dan setiap .


Artinya pecahan dari bilangan mulus mendekati .
Dari teorema ini, kita dapat menyimpulkan hasil sebagai berikut.
Corollary 8.4.2

Misal bilangan real positif. Maka untuk kita punya

Pada penyaring kuadratik, kita bangun banyaknya yang mendekati .


Asumsikan dengan hubungan kemulusan nilai berperilaku sebagai angka acak

. Pada corollary 8.4.2, buat . Maka ditemukan peluang nilai


menjadi yaitu . Artinya pada
rata-rata kita harus mencoba bilangan bulat di
dalam basis faktor sebelum kita menemukan satu untuk yang mana adalah
. Banyaknya anggota pada basis factor mendekati , perlu
mencari nilai sukses pada order sistem linier yang punya solusi. Oleh
karena itu, waktu untuk mencari nilai merupakan suatu kelipatan
. Untuk mebuat nilai ini kecil
kemungkinannya pilih .

Untuk menghitung, perlu sedikit hokum sederhana. Jika dan bilangan riil,
maka

Dan jika polynomial dan jika bilangan riil maka,

Artinya factor polynomial pada log n .

Sekarang basis factor memuat semua bilangan prima dengan


. Untuk setiap sukses, perlu anggota pada
interval penyaringan, seperti yang baru saja kita lihat. Karena perlu nilai

dari , interval penyaringannya merupakan ukuran dari

Nilai optimal untuk akan ditemukan. Pertama, kumpulkan urutan waktu


untuk algoritma dengan langkah berbeda.

Hitung nol dari modulo untuk bilangan prima pada basis factor yang
mungkinpada polinomial waktu dalam log n. karena, (8.9) akibatnya semua nol dapat
dihitung pada waktu .
Penyaringan waktu untuk bilangan prima adalah

, karena mwnggunakan langkah dari lebar


sepanjang interval. Dapat disimpulkan dari rumus ini bahawa total waktu

penyaringan, masuk sebelum perhitungan yaitu .

Algoritma Wiedemann untuk menyelesaikan sistem linier yang tersebar ambil


waktu . Algoritma ini mengambil keuntungan dari bentuk special
dari sistem. Nilai mengecilkan waktu penyaringan. Karena, total urutan
waktu adalah .

8.5 efisiensi dari Algoritma Pemfaktoran yang lain


Analisisnya disajikan pada bagian sebelumnya yang mengangkat dua
pertanyaan. Apakah ada algoritma yang lebih cepat? Adakah algoritma yang dapat
menukur waktu berjalan dengan telititi?
Algoritma yang paling efisien digunakan untuk mengukur waktu yang
berjalan secara tepat adalah bentuk kuadrat. Itu merupakan algoritma probabilistic
dengan waktu berjalan yang diharapkan . Ini sama dengan waktu
berjalan dari kuadrat sieve dan telah terbukti di . Pada prakteknya, kuadrat sieve
lebih efisien.
Metode kurva elips juga merupakan algoritma probabilistic. Ini meirip dengan

metode dan mengharapkan waktu berjalan , dimana adalah

factor prima terkecil dari . Ini adalah perbedaan utama dari kuadrat sieve. Sementara
waktu berjalan dari QS bergantung terutama pada ukuran dari , ECM lebih cepat
jika memiliki factor prima yang kecil. Oleh karena itu, ECM digunakan untuk

mencari factor prima yang jauh lebih kecil dari . Untuk factor prima yang
berukuran , karena waktu berjalan dari ECM adalah , sama dengan
waktu berjalan dari QS, tetapi ECM kurang efisien dalam prakteknya.
Hingga 1998, algoritma pemfaktoran bilangan bulat tercepat telah

menajalankan waktu . Meskipun beberapa orang berpikir tidak ada


algoritma pemfaktoran bilangan bulat tercepat. Tapi pada tahun 1998 John Pollard
menemukan number field sieve (NFS). Tidak menunjukkan asumsi yang tepat, dapat
ditunjukkan bahwa waktu berjalan dari NFS adalah . Oleh karena
itu, NFS lebih dekat ke algoritma waktu polynomial dari pada QS. Kumpulan dari
makalah tentang NFS dapat ditemukan di [20].
Sejak tahun 1980, ada kemajuan dramatis di bidang algoritma pemfaktoran.
Oleh karena itu sangat mungkin suatu hari algoritma pemfaktoran waktu polynomial
akan ditemukan.

Anda mungkin juga menyukai