220 likes | 429 Views
Sekuriti Digital, Teori dan Praktek. Generator Bilangan Prima. Bab 11.3, 11.5. Beberapa Fakta Tentang Bilangan Prima. Dibutuhkan untuk membuat parameter sekuriti dalam RSA Untuk setiap pasang kunci privat - publik kita membutuhkan dua bilangan prima
E N D
Sekuriti Digital, Teori dan Praktek Generator Bilangan Prima Bab 11.3, 11.5
Beberapa Fakta Tentang Bilangan Prima • Dibutuhkan untuk membuat parameter sekuriti dalam RSA • Untuk setiap pasang kunci privat - publik kita membutuhkan dua bilangan prima • Kalau setiap pemakai internet butuh satu set kunci RSA yang berbeda, apakah kita tidak akan kehabisan bilangan prima? • Ada luar biasa banyaknya bilangan prima. Kepadatan bilangan prima < n adalah n/(ln n). • Jadi … ada 10151 bilangan prima yang panjangnya 512 bit … lebih dari cukup untuk semua mahluk inteligen di alam semesta. • Perbandingan: di alam semesta ada 1070 atom … bahkan jika setiap atom membutuhkan 1 milyar bilangan prima setiap 1 S semenjak alam semesta diciptakan … ini baru akan menghabiskan 10109 bilangan prima, dan kita masih punya 10151 bilangan prima 512 bit yang masih belum terpakai.
Prime Hole ... • Berapa kans-nya dua orang di bumi akan memilih bilangan prima yang sama? (assume 512 bits primes) • Domain pilihannya besranya adalah 10151. Jika pembangkitannya betul-betul random … maka kansnya mikroskopis. • Bagaimana jika orang berhasil membuat list dari semua bilangan prima 512 bit? • List tsb mau disimpan dimana? Asumsikan 1 GB hard disk yang beratnya cuma 1 gr. Maka daftar dr. semua bilangan prima itu membutuhkan hard disk yang beratnya akan melebihi batas Chandrasar … masa itu akan runtuh menjadi Black Hole. • Kita tidak bisa mengakses Black Hole hard-disk karena tidak ada materi / cahaya / informasi yang bisa keluar dari Black Hole
Pembangkit Bilangan Prima • Algoritme : • Faktorisasi : (1) ambil bilangan acak p (2) coba faktorkan p (3) kalau tak bisa berarti p prima. • Kalau ini bisa dilakukan dengan efesien maka sistem enkripsi RSA tidak ada gunanya. • Test Keprimaan : (1) ambil bilangan acak p (2) terapkan satu atau lain test akan keprimaan p (3) kalau lolos berarti p kandidat prima • Bagaimana membuat test keprimaan yang efesien? • Naif : menguji semua bilangan q < p1/2 apakah q membagi p … sangat tidak efesien!
Soloway-Strassen TestRobert Soloway & Volker Strassen 1978 0. Ajukan kandidat bilangan prima p 1. Ambil penguji a, a<p, acak 2. if gcd(a,p) 1 then p bukan prima else 3. j = a(p-1)/2mod p 4. if j J(a,p) then p bukan prima else kans p bukan prima < 50% ulangi langkah 1..4 sebanyak 50 kali, kalau p lolos semua test maka kans p bukan prima < 2-50.
Quadratic Residue dan Simbol Legendre (L) • Sebuah bilangan a disebut Quadratic Residue modulo p bila : • ada sebuah x<p sehingga x2 = a (mod p) • Bilangan yang bukan quadratic residue disebut non-quadratic residue. • Bila p prima, maka sebanyak (p-1)/2 bilangan a<n merupakan residu kwadrat. • Cara menentukan apakah a merupakan residu kwadrat … menggunakan fungsi/simbol Legendre (asumsi: p prima): • L(a,p) = 0 jika a bisa dibagi oleh p (gcd(a,p) 1) • L(a,p) = 1 jika a adalah residu kwadrat modulo p • L(a,p) = -1 jika a adalah non-residu kwadrat modulo p • algoritme : L(a,p) = a(p-1)/2mod p bedasarkan Fermat's Little Theorem : • z = (a(p-1)/2)2 = ap-1 harus sama dengan 1 … jadi z = -1 atau 1. • Kalau a residu kwadrat a(p-1)/2 = (x2)(p-1)/2 = xp-1 dan bedasarkan Fermat ini sama dengan 1 • algoritme rekursif lihat di 11.3
Simbol Jacobi (J)Generalisasi dr. Legendre • Simbol Jacobi merupakan generalisasi dr. simbol Legendre untuk p yang tidak harus prima. • DEF1 J(a,n) hanya terdefinisi untuk n yang ganjil • DEF2 Jika n prima J(a,n) = L(a,n) • DEF3 Jika n komposit … terdiri dari faktor prima p1,p2,…,pk maka J(a,n) = J(a,p1)*J(a,p2)*…*J(a,pk) • Seperti L(a,p) value dr. J(a,n) {0,1,-1} • Algoritme rekursif lihat di 11.3
Lehman Test 0. Ajukan kandidat bilangan prima p 1. Ambil penguji a, a<p, acak 2. j = a(p-1)/2mod p 3. if j {1,-1} then p bukan prima else kans p bukan prima < 50% ulangi langkah 1..3 sebanyak 50 kali, kalau p lolos semua test maka kans p bukan prima < 2-50.
Rabin - Miller TestMichael Rabin & Gary Miller 1976 0. Ambil kandidat prima p 1. Hitung b terbesar sehingga 2b membagi p-1 2. Hitung m dimana p = (2b)*m + 1 3. Pilih penguji a, a<p, acak 4. j = 0 ; z = ammod p 5. if z {1,p-1} then p bukan prima 6. while jb zp-1 do 7. If j>0 z=1 then p bukan prima 9. j++ ; z=z2mod p 7. If j=b zp-1 then kans p bukan prima < 25% Ulangi 3..7 sebanyak 25 kali maka kans p bukan prima adalah 2-50.
Pre-filter untuk Kandidat Prima 0. Buat bilangan p n-bit secara acak. 1. Set MSB dan LSB = 1 … ini menjamin bilangan akan ganjil, dan panjangnya persis n-bit 2. Test apakah p bisa dibagi bilangan prima kecil (<256 misalnya) test divisibility • vs 3,5,7 mengeliminasi 54% kandidat • vs bil. Prima < 100 mengeliminasi 76% kandidat • vs bil. Prima < 256 mengeliminasi 80% kandidiat • vs bil. Prima < n mengeliminasi 112 / ln n % kandidat
Strong Primes • Dalam pembuatan parameter sekuriti n=pq … diinginkan bilangan prima p,q yang kuat dalam arti memenuhi sifat2 tertentu yang membuat n sulit difaktor. Antara lain : • gcd(p-1,q-1) harus kecil • p-1 dan q-1 masing2 harus punya faktor prima p', q' yang besar • p'-1 dan q'-1 masing2 harus punya faktor prima yang besar • p+1 dan q+1 masing2 harus punya faktor prima yang besar • bisa juga : (p-1)/2 dan (q-1)/2 harus prima • Keharusan dari penggunaan konsisten dari strong primes merupakan bahan perdebatan. • Membuat bil. Prima yang dibangkitkan sifatnya kurang acak • Karakterisasi strong primes dibuat berdasarkan tehnik (attack) faktorisasi tertentu … bisa menimbulkan kerentanan thd jenis attack lain!
Sekuriti Digital, Teori dan Praktek "Cryptography is a mixture of mathematics and muddle, and without the muddle the mathematics can be used against you." Ian Cassels. Generator Bilangan Acak Bab 16.1 - 16.5, 16.12, 9.4
Bilangan Acak • Digunakan dalam RSA untuk secara acak memilih komponen prima p dan q dr. parameter sekuriti n. • Digunakan oleh generator bilangan prima itu sendiri • Digunakan sebagai challenge dalam protokol/sistem enkripsi seperti: • Secret splitting • Secret sharing • Blind signature • Sistem enkripsi hibrid • challenge (toko) dalam Uang digital • stream cipher
Bilangan Acak dan Enkripsi • Membangkitkan bilangan yang murni random sangat sulit … selama kita menggunakan mesin yang deterministis. • Deret pseudo random adalah deret bilangan yang walaupun dibuat dengan cara deterministik memenuhi (sebagian) sifat-sifat statistis dari deret random ideal. • Salah satu cara membuat bilangan acak : Xn = [Xn-1]k • menggunakan satu atau lain sistem enkripsi, dan kunci k. X0 disebut seed. • Periode dr. deret bilangan pseudo random adalah jarak terpanjang dalam deret sebelum deret tersebut mengulang polanya. • Dalam deret acak ideal tidak akan terjadi pengulangan. • Enkripsi sebaiknya menghasilkan deret yang pseudo acak … kalau tidak nanti polanya bisa ditebak. • Karena itu metode enkripsi bisa dipakai sebagai generator bilangan acak.
Linear Congruential Generator (LCG) • LCG adalah generator deret pseudo random yang membuat deret tsb dengan cara : Xn = (aXn-1 + b) mod m • a,b, m, dan X0 adalah parameter • a disebut multiplier • b disebut increment • m disebut modulus • X0 disebut seed • Quadratic generator : Xn = (aXn-12+ bXn-1 + c) mod m • Polinomial generarator Xn = (an-1Xn-1n-1+ an-2Xn-2n-2 + … + a1X1+ a0) mod m • Periode terbaik dari deret adalam m-1. Generator yang menghasilkan deret dengan periode terbaik disebut maximal period generator. • Mencari paremeter yang menghasilkan periode terbaik tidak trivial. Contoh parameter optimal seperti ini lihat di tabel 16.1
Keamanan LCG • Sebuah generator random dikatakan tidak aman bila deret yang dihasilkan bisa ditebak. • LCG … juga quadratic generator … bahkan polynomial generator … walaupun memenuhi berbagai sifat statistis penting dari deret bilangan acak, tetapi telah dibuktikan bisa ditebak deretnya … jadi tidak aman. • Tidak digunakan untuk sistem kriptografis
Feedback Shift Register (FSR) bn-1 bn-2 bn-3 . . . b1 b0 output Feedback Function FSR membangkitkan deret terdiri dr. 0/1 (deret bit). Cara kerja : Setiap langkah (clocking) register di-shift satu bit ke kanan (kiri). Output (1 bit) diambil dari, misalnya, bit ke 0. Sebuah fungsi non-linier yang disebut Feedback function akan membangkitkan bit ke n-1 yang baru di setiap shift. Masukan fungsi adalah bit ke 0 sampai bit ke n-1 yang lama. Linear Feedback Shift Register (LFSR) Adalah FSR dengan fungsi XOR sebagai feedback function. Pilihan bit mana saja dr. register yang ikut di-XOR disebut tap sequence. Tap sequence sangat menentukan perioda dr. LFSR.
Contoh LFSR b3 b2 b1 b0 • Deret yang dihasilkan : • 1 1 1 1 • 0 1 1 1 • 1 0 1 1 • 0 1 0 1 • 1 0 1 0 • 1 1 0 1 • 0 1 1 0 • 0 0 1 1 • 1 0 0 1 • 0 1 0 0 • 0 0 1 0 • 0 0 0 1 • 1 0 0 0 • 1 1 0 0 • 1 1 1 0 output Tap sequence dapat dianggap sebagai encoding dr. sebuah polinom p … +1. Contohnya tap sequence diatas merupakan ecoding dari polinom x4 + x + 1 Untuk mendapatkan LFSR dengan periode maksimal, harus dicari tap sequence yang merupakan encoding dari polinom p+1 (spt. contoh diatas) tetapi polinomnya primitif berorde n (ukuran register) … contoh tap sequence yang demikian bisa dilihat di Tabel 16.2. output
Sekuriti dari LFSR • Menghasilkan deret bit pseudo acak yang 'baik' … tetapi tidak cocok untuk sistem kriptografis. • Internal state ke i bisa ditentukan dengan melihat ke ouput ke i sampai ke i+n (n = ukuran register LFSR) • Fungsi feedback bisa direkonstruksi dengan menganalisa output ke i samai ke i+2n (Berlekamp - Massey attack). • Membangkitkan deret bilangan acak dari deret bit acak keluaran LFSR menghasilkan deret yang memiliki korelasi tinggi. • Penggunaan polinom 'padat' (banyak suku) sebagai tap sequence menghasilkan sistem yang lebih aman. • Penggunaan polinom jarang lebih efesien. • LFSR digunakan sebagai basic building blocks dari generator bilangan random.
Stream Chipher Keystream Generator Keystream Generator Ki Ki Key stream Key stream Ci Ki = Pi Ki Ki = Pi Pi Ki = Ci Pi Plain text Plain text Cipher text Stream chipper adalah tehnik melakukan enkripsi dengan mengenkrip plain text bit per bit. Ini dilakukan dengan cara mengkombasikan plain text dengan kunci secara bit per bit. Jadi panjang kunci harus sama dengan panjang text. Generator keystream harus menghasilkan deret bit acak … karena kalau tidak bisa ditebak orang. Implementasi generator ini banyak yang menggunakan kombinasi dari LFSR.
Generator Deret Bit AcakMenggunakan LFSR LFSR0 Combining function LFSR1 . . . LFSRn Gunakan n LFSR, masing-masing dengan panjang, tap sequence, dan clocking yang berbeda. Keluaran akhir dihasilkan oleh 'combining function' … masukan fungsi ini diambil dr. bit-bit tertentu dr. LFSR (tidak harus bit ke 0). Fungsi ini harus 'non-linier'.
Geffe Generator dan A5 Geffe : A5 : LFSR0 LFSR0 2-1 Multiplexer LFSR1 LFSR1 LFSR3 LFSR3 • A5 menggunakan 3 LFSR dengan panjang masing-masing 19,22,23 bit. • Digunakan oleh GSM untuk mengenkrip pembicaraan lewat telpon selular. . • Menggunakan variable clocking : masing-masing LFSR di-clock berdasarkan bit tengahnya, di XOR dengan inverse treshold function dr. ketiga bit tengah dr. semua LFSR. • lemah … tapi idenya sudah baik. Memperbesar LFSR dan menggunakan polinom padat akan meningkatkan kekuatan A5. • Geffer generator menggunakan 3 LFSR : • panjang LFSR bervariasi. • Clocking seragam • lemah