PENINGKATAN PANJANG PERIODE MAKSIMUM LINEAR
FEEDBACK SHIFT REGISTER MENGGUNAKANWAKTU LOKAL SISTEM
TESIS
PRYO UTOMO 167038018
PROGRAM STUDI S2 TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2018
PENINGKATAN PANJANG PERIODE MAKSIMUM LINEAR
FEEDBACK SHIFT REGISTER MENGGUNAKANWAKTU LOKAL SISTEM
TESIS
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Magister Teknik Informatika
PRYO UTOMO 167038018
PROGRAM STUDI S2 TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2018
PERNYATAAN
PENINGKATAN PANJANG PERIODE MAKSIMUM LINEAR FEEDBACK SHIFT REGISTER MENGGUNAKAN WAKTU LOKAL SISTEM
TESIS
Saya mengakui bahsa tesis ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 15 Agustus 2018
Pryo Utomo 167038018
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS
Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di bawah ini :
Nama : Pryo Utomo
NIM : 167038018
Program Studi : Magister Teknik Informatika Jenis Karya Ilmiah : Tesis
Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalti Free Right) atas tesis saya yang berjudul :
PENINGKATAN PANJANG PERIODE MAKSIMUM LINEAR FEEDBACK SHIFT REGISTER MENGGUNAKAN WAKTU LOKAL SISTEM
Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non- Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk database, merawat dan mempublikasikan tesis saya tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis dan sebagai pemegang dan/atau sebagai pemilik hak cipta.
Demikian pernyataan ini dibuat dengan sebenarnya.
Medan, 15 Agustus 2018
Pryo Utomo 167038018
1
Telah diuji pada
Tanggal : 22 Oktober 2018
PANITIA PENGUJI TESIS
Ketua : Drs. Mahyuddin K.M Nasution, M.IT, Ph.D Anggota : 1. Dr. Maya Silvi Lydia, B.Sc., M.Sc
: 2. Prof. Dr. Opim Salim Sitompul, M.Sc : 3. Prof. Dr. Muhammad Zarlis, M.Sc
RIWAYAT HIDUP
DATA PRIBADI
Nama Lengkap (berikut gelar) : Pryo Utomo
Tempat dan Tanggal Lahir : Bandar Baru / 29 Maret 1993 Alamat Rumah : Dsn. II Jl. Central Bandar Baru
Telepon / HP : 082273189668
E-mail : [email protected]
Instansi Tempat Bekerja : -
Alamat Kantor : -
DATA PENDIDIKAN
SD : SD Negeri 106821 Sibolangit TAMAT : 2005
SLTP : MTs Al-Hilal Bandar Baru TAMAT : 2008
SLTA : SMK Negeri 1 Percut Sei Tuan TAMAT : 2011 S1 : Pend. Teknik Elektro UNIMED TAMAT : 2015
S2 : Teknik Informatika USU TAMAT : 2018
UCAPAN TERIMA KASIH
Puji syukur yang tidak terkira penulis panjatkan kehadirat Allah SWT. karena atas ridho dan hidayah-Nya, sehingga penulis dapat menyelesaikan tesis ini yang diberi judul “Peningkatan Panjang Periode Maksimum Linear Feedback Shift Register Menggunakan Waktu Lokal Sistem” dengan lancar. Pada kesempatan ini penulis mengucapkan terima kasih sebesar-besarnya kepada Ayahanda tercinta Suyitno, Ibunda tercinta Sugiani, dan satu-satunya Saudari saya Suri Sartika Dewi yang senantiasa memberikan dukungan dan doa yang tiada hentinya kepada penulis, sehingga penulis dapat menyelesaikan tesis ini dengan baik. Terima kasih juga kepada semua pihak yang telah membantu penulis dalam menyelesaikan Tesis penelitian ini, antara lain :
1. Bapak Prof DR Runtung Sitepu, SH.M.Hum selaku Rektor Universitas Sumatera Utara.
2. Bapak Drs. Mahyuddin K.M Nasution, M.IT, Ph.D, selaku Wakil Rektor III Bidang Penelitian, Pengabdian kepada Masyarakat, dan Kerjasama dan sekaligus Dosen Pembimbing 1.
3. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi (Fasilkom-TI) Universitas Sumatera Utara dan sekaligus Dosen Penguji 1.
4. Ibu Dr. Maya Silvi Lydia, B.Sc., M.Sc, selaku Wakil Dekan III Fakultas Ilmu Komputer dan Teknologi Informasi (Fasilkom-TI) Universitas Sumatera Utara dan sekaligus Dosen Pembimbing 2.
5. Bapak Prof. Dr. Muhammad Zarlis, M.Sc, selaku Ketua Program Studi Magister (S2) Teknik Informatika Universitas Sumatera Utara dan sekaligus Dosen Penguji 2.
6. Bapak Dr. Syahril Efendi, S.Si., M.IT, selaku Sekretaris Program Studi Magister (S2) Teknik Informatika Universitas Sumatera Utara.
7. Kepada Kak Prihatin Nestri S.Kom, Bang Erwin S.Kom dan para pegawai Tenaga Penunjang Adm. Akademik MTI USU lainnya yang turut membantu.
8. Kepada Bang Delvi yang selalu membantu untuk mempertemukan penulis dengan dosen pembimbing 1.
9. Kepada para sahabat, Teddy Firmansyah, Castrovia Jodi, Ridwan Fahmi Pulungan, Muhammad Ridho Yahya, dan Suandi yang selalu menemani dikala senang maupun susah.
10. Kepada teman-teman seperjuangan KOM-B’16 MTI USU yang selalu memberikan semangat terutama untuk Bang Arisman, Nadia Widari Nasution, Aminuddin Indra Permana, Elwinus Hutri A. Mendrofa, Muhammad Rizky, Hasanal Fachri S. Simbolon dan teman-teman lainya yang tidak dapat disebutkan satu persatu.
11. Kepada geng Q-OS Kaos, Yoga Dhanu Pratama, Abdullah Hamdi Batubara, Reza Hidayat, Randi Pratama yang menjadi penghibur dari rasa jenuh pada penulis.
Penulis menyadari bahwa tesis ini masih banyak terdapat kesalahan di dalam penulisan. Oleh karena itu, penulis mengharapkan kritik dan saran yang sifatnya membangun demi kesempurnaan tesisi ini di masa mendatang, Terima kasih.
Medan, 15 Agustus 2018 Penulis,
Pryo Utomo NIM. 167038018
ABSTRAK
Linear Feedback Shift Register (LFSR) merupakan salah satu algoritma untuk membangkitkan bilangan acak semu (Pseudorandom Number) yang sering diterapkan pada pembangkitan kunci pada sistem kriptografi. Namun bilangan yang dibangkitkan memiliki perulangan periode dalam deretan bilangan yang dihasilkan. Yaitu deret periode bilangan selanjutnya mengikuti deret periode bilangan sebelumnya. Hal ini menyebabkan adanya titik kelemahan pada algoritma LFSR yang dapat digunakan kriptanalis. LFSR memiliki panjang maksimum deret periode bilangan. Pada umumnya penentuan panjang maksimum periode bilangan ditentukan dengan cara pemilihan fungsi feedback menggunakan Primitve Polynomial. Berdasarkan hal tersebut penelitian ini mencoba mengkombinasikan metode antara fungsi feedback LFSR dengan waktu lokal sistem (localtime system) dimana waktu yang terus berjalan memungkinkan untuk memberikan seed yang terus berubah pada LFSR. Tujuannya adalah untuk meningkatkan panjang periode maksimum Linear Feedback Shift Register yang telah ada sebelumnya. Hasil pengujian pada register 4 bit sebanyak 32 kali menunjukkan deret bilangan yang dibangkitkan dari hasil modifikasi LFSR dengan waktu lokal sistem memperoleh pembangkitan deret bilangan tanpa adanya perulangan periode. Begitu juga dengan register 5 bit sebanyak 64 kali, register 6 bit sebanyak 128 kali, register 7 bit sebanyak 256 kali dan register 8 bit sebanyak 512 kali juga memperoleh pembangkitan deret bilangan tanpa adanya perulangan periode.
Sedangakan dari hasil uji keacakan menggunakan Run Test diperoleh nilai yang dibangkitkan telah lulus uji keacakan dengan hasil rata-rata p-value 0,379.
Kata kunci: bilangan acak semu, LFSR, waktu lokal sistem, panjang periode maksimum
ENHANCEMENT OF PERIOD LENGTH MAXIMUM LINEAR FEEDBACK SHIFT REGISTER USING
LOCAL TIME SYSTEM
ABSTRACT
Linear Feedback Shift Register (LFSR) is one algorithm to generate pseudorandom numbers that are often applied to key generation in cryptographic systems. But the generated numbers have period repetitions in the resulting number sequence. That is the sequence of periods of the next number following the sequence of periods of the previous number. This causes a weakness in the LFSR algorithm that can be used by cryptanalysts. LFSR has a maximum length of a period number. In general, determining the maximum length of a number period is determined by selecting the feedback function using Primitive Polynomial. Based on this, this research tries to combine the method between the LFSR feedback function and the system local time (local time system) where time continues to run it is possible to provide a seed that is constantly changing in the LFSR. The aim is to increase the maximum length of the Linear Feedback Shift Register before. The test results on the 4-bit register in 32 times show the sequence generated the number from the modified LFSR with the system local time obtaining a sequence of number generation without any period of repetition. Likewise with the register of 5 bits as many as 64 times, registers 6 bits as many as 128 times, registers 7 bits as many as 256 times and registers 8 bits as many as 512 times also get a sequence of number generation without any period repetition. While the results of the randomization test using Run Test obtained the generated value has passed the randomization test with the results of an average p-value of 0.379.
Keywords: pseudo random number, LFSR, system localtime, maximum period length.
i
DAFTAR ISI
DAFTAR ISI ... i
DAFTAR TABEL ... iii
DAFTAR GAMBAR ... iv
BAB I PENDAHULUAN... 1
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 3
1.3 Tujuan Penelitian ... 3
1.4 Batasan Masalah... 4
1.5 Manfaat Penelitian ... 4
BAB II KAJIAN TEORI ... 5
2.1 Teori Bilangan ... 5
2.1.1 Pembagi Bersama Terbesar (PBB) ... 6
2.1.2 Aritmatika Modulo ... 6
2.1.3 Kongruen ... 6
2.1.4 Chinese Remainder Problem ... 7
2.2 Operasi Exclusive- OR (XOR) ... 7
2.3 Bilangan Acak ... 8
2.3.1 Pembangkit Bilangan Acak ... 9
2.3.2 Sifat Pembangkit Bilangan Acak ... 9
2.3.3 Pemanfaatan Pembangkit Bilangan Acak Semu ... 10
2.3.4 Cryptographically Secure Pseudo-Random Number Generator (CRPRNG) ... 11
2.4 Uji Statistik NIST... 12
2.5 Algoritma Linear Feedback Shift Register ... 14
2.6 Sistem Waktu Lokal ... 17
BAB III METODE PENELITIAN ... 19
3.1 Tahapan Penelitian ... 19
3.2 Waktu Penelitian ... 20
3.3 Rancangan Pembangkitan Bilangan Acak Semu ... 20
3.4 Pengujian Pembangkitan Bilangan Acak Semu ... 22
3.5 Analisis Keacakan Bilangan ... 23
BAB IV HASIL DAN PEMBAHASAN ... 24
4.1 Implementasi Sistem ... 24
4.2 Hasil Pembangkitan Bilangan Acak ... 24
4.3 Analisis kinerja algoritma ... 28
4.4 Uji Statistik Bilangan Acak Semu ... 30
4.4.1 Uji Runtun (The Run Test) ... 30
4.4.2 Uji Histogram ... 31
BAB V KESIMPULAN DAN SARAN ... 33
5.1 Kesimpulan ... 33
5.2 Saran ... 33
DAFTAR PUSTAKA ... 35
LAMPIRAN. ... 37
iii
DAFTAR TABEL
Tabel 2.1 Simbol Kongruen ... 6
Tabel 2.2 Tabel Kebenaran XOR ... 7
Tabel 2.3 Beberapa Fungsi mMaksimum Feedback Polynomial... 16
Tabel 3.1 Pengujian Pembangkitan Bilangan Acak Semu... 23
Tabel 4.1 Hasil Bilangan Acak Semu 4 Bit ... 26
Tabel 4.2 Frekuensi Bilangan yang Dibangkitkan dengan Waktu Lokal Sistem... 27
Tabel 4.3 Hasil Perbandingan Ppanjang Periode Maksimum ... 30
Tabel 4.4 Hasil Runs Test Bilangan Acak Semu ... 31
DAFTAR GAMBAR
Gambar 2.1 Contoh Skema LFSR ... 14
Gambar 2.2 LFSR dengan (a) Fibonacci LFSRs dan (b) Galois LFSRs ... 15
Gambar 2.3 Bilangan Acak Semu dengan 3 Bit Fibonacci LFSR ... 16
Gambar 2.4 Pergeseran Bit pada Algoritma LFSR 4-bit Register ... 17
Gambar 3.1 Tahapan Penelitian ... 19
Gambar 3.2 Flowchart Pembangkitan LFSR dengan Waktu Lokal Sistem ... 21
Gambar 3.3 Ilustrasi Proses Pembangkitan LFSR dengan Waktu Lokal Sistem ... 22
Gambar 4.1 Tampilan Simulasi dengan Program Python v.3.6 ... 24
Gambar 4.2 Hasil Bilangan Acak Semu dengan Program Python v.3.6 ... 26
Gambar 4.3 Perbandingan Periode Bilangan Acak Semu 4 Bit ... 28
Gambar 4.4 Perbandingan Periode Bilangan Acak Semu 5 Bit ... 29
Gambar 4.5 Hasil Runs Test dari Register 4 Bit ... 30
Gambar 4.6 Perbandingan Histogram Register 4 Bit ... 31
Gambar 4.7 Perbandingan Histogram Register 6 Bit ... 32
BAB I PENDAHULUAN
1.1 Latar Belakang
Pembangkit bilangan acak adalah hal yang dilakukan untuk menghasilkan bilangan yang tidak dapat diprediksi dengan sequence berdasarkan bilangan dari hasil perhitungan dengan komputer sehingga angka tersebut muncul secara acak. Banyak aspek yang membutuhkan bilangan acak dalam mengolah suatu informasi, baik untuk keperluan simulasi, pemainan elektrik hingga kriptografi sebagai sistem pengamanan informasi.
Beberapa metode untuk mendapatkan suatu keacakan sendiri telah dilakukan pada zaman dahulu yang dilakukan menggunakan benda-benda seperti tongkat, batu, ataupun tulang hewan yang dilemparkan ke atas dan dijatuhkan ke tanah lalu seiring waktu ada juga yang menggunakan dadu, kocokan kartu maupun lemparan koin sebagai metode mendapatkan keacakan tersebut.
Dalam dunia komputer saat ini, dikenal beberapa algoritma untuk membangkitkan bilangan acak. Hal ini lebih dikenal dengan Pembangkit Bilangan Acak Semu atau sering disebut dengan Pseudo-Random Number Generator (PRNG). PRNG tersebut menghasilkan bilangan acak berdasarkan perhitungan matematika. Salah satu contohnya seperti Linear Feedback Shift Register. Namun Keacakan bilangan yang dihasilkan disini tidak sepenuhnya acak karena pembangkitan bilangannya dapat diulang kembali berdasarkan perhitungan matematika tersebut seperti yang dijelaskan oleh Ward (2011). Oleh karena itu PRNG dapat dikatakan tidak dapat menghasilkan perhitungan (computation) yang benar-benar deret bilangan acak secara sempurna (pseudo-random).
Pada bidang kriptografi, telah banyak algoritma kriptografi seperti stream cipher yang dipadukan dengan algoritma pembangkit bilangan acak semu dengan harapan menghasilkan ciphertext yang lebih sulit ditembus oleh para kriptanalis.
Kelsey et al. (1998) menjelaskan terdapat beberapa klasifikasi untuk menyerang kriptografi yang menggunakan pembangkit bilangan acak semu yaitu Direct Cryptanalytic Attack, Input-Based Attacks dan State Compromise Extension Attacks.
Oleh karena itu pemilihan algoritma pembangkit yang tepat akan menentukan tingkat pertahanan pada algoritma kriptografi karena keacakan suatu kunci merupakan tujuan utama proses pembangkit kunci kriptografi agar semakin sulit ditebak bahkan dengan komputasi yang rumit.
Basham III et al (2010) menjelaskan pembangkit bilangan acak yang digunakan dalam kriptografi memiliki syarat yang penting, yaitu lolos uji keacakan statistik dan tahan terhadap serangan yang bertujuan untuk memprediksi bilangan acak yang dihasilkan. Pembangkit semacam ini disebut Cryptographically Secure Pseudo Random Generator (CSPRNG). Adapun beberapa penelitian terkait penggunakan CSPRNG sebagai pembangkit kunci pada kriptografi seperti yang telah dilakukan oleh Aïssa et al (2014) tentang implementasi pembangkit Blum Blum Shub pada enkripsi pesan, Rahimov et al (2011) tentang Kriptografi PRNG berdasarkan kombinasi LFSR dan Chaotic Logistic Map, dan masih banyak lagi.
Seperti yang telah disebutkan sebelumnya, pembangkit bilangan acak semu (Pseudo-Random Number Generator) terutama Linear Feedback Shift Register (LFSR) sepenuhnya tidak menghasilkan bilangan yang benar-benar acak dan ini membuat suatu kelemahan bagi kriptografi yang menggunakan PRNG sebagai pembangkit kunci karena pesan akan terbobol apabila kriptanalis menemukan pola dari pembangkit bilangan acak semu yang digunakan sebagai kunci. Pada algoritma Linear Feedback Shift Register bilangan yang dibangkitkan selalu akan mengulang mengikuti pola pada periode bilangan sebelumnya dan perulangan periode bilangan tersebut memiliki panjang maksimum periode apabila mengikuti fungsi Primitive Polynomial LFSR. Pola urutan bilangan akan mengulang kembali apabila maksimum periode bilangan tercapai seperti yang telah dijelaskan pada penelitian Abinaya & Prakasam (2014) tentang hasil analisa jarak maksimum LFSR dan metode BBS pada aplikasi kriptografi. Adapun panjang maksimum periode LFSR dapat dihitung dengan 2n-1 dimana n adalah jumlah register bit yang tersusun baik dengan teknik Fibonacci LFSR (External Feedback) ataupun dengan Galois LFSR (Internal Feedback).
Seed merupakan salah satu komponen terpenting dalam membangkitkan bilangan acak. Seed berfungsi sebagi input nilai awal (initial state) pada algoritma
3
PRNG. Seed sendiri haruslah bersifat rahasia sebab apabila seed awal dapat diketahui maka nilai acak semu yang dibangkitkan dapat diketahui. Waktu yang terus berjalan memberikan nilai yang juga terus berubah. waktu yang terus bergerak dapat kita lihat pada waktu lokal (localtime) pada suatu mesin/perangkat yang telah terdapat fungsi waktu yang nilainya terus berubah secara cepat. Berdasarkan nilai yang terus berubah tersebut, peneliti ingin mencoba memanfaatkan nilai tersebut sebagai seed untuk diterapkan pada pembangkit bilangan acak semu LFSR. Dengan demikian peneliti berharap perubahan nilai yang digunakan untuk seed dapat meningkatkan keamanan kriptografi dengan mengoptimalkan bilangan acak semu yang muncul dan tidak tergantung dengan panjang maksimum bilangan yang dibangkitkan oleh LFSR sehingga semakin menyulitkan kriptanalis terutama dengan melakukan serangan berdasarkan kunci yang menggunakan pembangkit acak semu.
1.2 Rumusan Masalah
Pembangkit bilangan acak semu seperti algoritma Linear Feedback Shift Register (LFSR) merupakan salah satu cara untuk membangkitkan kunci yang akan diterapkan pada kriptografi. Namun pada algoritma Linear Feedback Shift Register bilangan yang dibangkitkan selalu akan mengulang mengikuti pola pada periode bilangan yang dibangkitkan pada periode sebelumnya dan perulangan periode bilangan tersebut memiliki panjang maksimum bilangan sesuai mengikuti susunan register Primitive Polynomial LFSR. Untuk itu diperlukan suatu cara untuk meningkatkan panjang periode maksimum bilangan yang dibangkitkan dengan meningkatkan panjang periode maksimum algoritma LFSR dengan waktu lokal sistem (localtime) dari mesin dalam menentukan kunci sehingga semakin menyulitkan kriptanalis terutama dengan melakukan serangan berdasarkan kunci yang menggunakan pembangkit acak semu.
1.3 Tujuan Penelitian
Tujuan yang ingin dicapai dalam penelitian ini mengacu pada rumusan masalah adalah sebagai berikut :
1) Meningkatkan panjang periode maksimum bilangan acak semu pada algoritma Linear Feedback Shift Register menggunakan waktu lokal sistem dalam menentukan kunci pada sistem kriptografi.
2) Menganalisis hasil bilangan acak semu dari hasil peningkatan panjang periode maksimum Linear Feedback Shift Register dengan waktu lokal sistem
1.4 Batasan Masalah
Adapun batasan dari perumusan masalah di atas adalah waktu lokal (localtime) yang digunakan merupakan nilai waktu dalam satuan milidetik dengan perhitungan waktu lokal sistem yang dihitung sejak 1 Januari 1970 00.00.00 UT yang digunakan pada mesin yang menjalankan algoritma Linear Feedback Shift Register.
1.5 Manfaat Penelitian
Adapun manfaat dari penelitian adalah menghasilkan bilangan acak semu tanpa mengikuti aturan periode panjang maksimum bilangan algoritma Linear Feedback Shift Register yang terbatas sehingga semakin menyulitkan kriptanalis terutama dengan melakukan serangan berdasarkan kunci yang menggunakan pembangkit acak semu.
BAB II KAJIAN TEORI
2.1 Teori Bilangan
Teori bilangan merupakan pembagian dari matematika murni yang mempelajari tentang sifat-sifat bilangan bulat. Selain itu teori bilangan mengandung berbagai masalah terbuka yang dapat mudah mengerti meskipun dilakukan bukan oleh ahli matematika.
Teori Bilangan terkadang disebut sebagai "Ratu Matematika" karena tempatnya yang mendasar dalam disiplin ilmu. Para pemuka teori mempelajari bilangan prima dan juga sifat benda yang dibuat dari bilangan bulat (misalnya bilangan rasional) atau didefinisikan sebagai generalisasi bilangan bulat (misalnya bilangan bulat aljabar).
Yan (2002) menyebutkan teori bilangan atau dalam penggunaan aritmatika yang lebih tua, adalah cabang matematika murni yang terutama ditujukan untuk mempelajari bilangan bulat . Menurut Teori bilangan, dalam matematika, terutama teori sifat bilangan bulat, seperti persamaan, pembagian, primality, additive dan multiplicativity, dan lain-lain.
Teori bilangan memiliki hubungan yang sangat kuat dengan bilangan bulat.
Bilangan bulat adalah bilangan yang tidak mempunyai pecahan desimal, misalnya adalah 3, -23, 512, -10 dan sebagainnya. Teori bilangan bulat dalam matematika diskrit memberikan penekanan dengan sifat pembagian. Berdasarkan sifat-sifat yang dimiliki oleh bilangan bulat kemudian melahirkan konsep-konsep bilangan lain seperti bilangan prima dan aritmatika modulo dan salah satu algoritma penting dari sifat pembagian ini adalah algoritma Euclidean. Kemudian bilangan-bilangan turunan dari sifat bilangan bulat akhirnya memainkan peran yang penting dalam bidang ilmu Kriptografi, yaitu ilmu yang mempelajari kerahasiaan pesan.
Matematika diskrit adalah cabang matematika yang mengkaji objek-objek diskrit yaitu suatu obejek yang terdiri dari sejumlah berhingga elemen yang berbeda atau elemen-elemen yang tidak berkesinambungan. Himpunan Bilangan Integer adalah
bilangan yang dianggap sebagai objek diskrit. Kebalikan dari himpunan bilangan integer himpunan bilangan riil (real) yaitu suatu objek kontinu. Di dalam matematika kita mengenal fungsi diskrit dan fungsi kontinu. Fungsi diskrit sering dijabarkan dengan sekumpulan titik-titik yang membentuk suatu diagram, sedangkan fungsi kontinu sering digambarkan dengan garis melengkung yang membentuk kurva.
2.1.1 Pembagi Bersama Terbesar (PBB)
Pembagi Bersama Terbesar (PBB) adalah suatu metode yang menggunakan algoritma Euclidean. Algoritma ini sudah dikenal sejak berabad-abad yang lalu yang ditemukan oleh Euclid, seorang matematikawan yunani yang menuliskan algoritmanya tersebut dalam bukunya yang terkanal yang berjudul Element sehingga disebut dengan Algoritma Euclidean.
Secara formal algoritma Euclidean dirumuskan sebagai berikut.
1. Jika x=0 maka y adalah PBB (x,y);
tetapi jika x≠0, lanjutkan ke langkah 2.
2. Bagilah “x” dengan “y” dan misalkan “z” adalah sisanya.
3. Ganti nilai “x” dengan nilai “y” dan nilai “y” dengan nilai “z”, lalu ulang kembali ke langkah 1.
2.1.2 Aritmatika Modulo
Dalam komputasi integer, bilangan modulo (modular arithmethic) memainkan peran yang penting khususnya digunakan pada system kriptografi. Operator yang digunakan adalah mod. Operator mod, jika digunakan pada pembagian bilangan bulat memberikan sisa pembagian sebagai kembaliannya. Sebagai contoh 23 mod 10 meberikan hasil = 2 dan sisa = 3. Maka 23 mod 10 = 3.
2.1.3 Kongruen
Kadang – kadang dua buah bilangan bulat a dan b, mempunyai sisa yang sama jika dibagi dengan bilangan bulat positif m. Kita katakan bahwa a dan b kongruen dalam modulo m dan dilambangkan sebagai berikut :
Tabel 2.1 Simbol Kongruen
a ≡ b (mod m) a ≡/ b (mod m) notasi ‘≡’ dibaca kongruen ‘≡/’ dibaca tidak kongruen
Sebagai contoh 23 mod 5 = 3 dan 18 mod 5 = 3, maka 23 ≡ 18 (mod 5).
7 2.1.4 Chinese Remainder Problem
Terdapat suatu masalah seperti berikut "Tentukan sebuah bilangan bulat yang bila dibagi dengan 5 menyisakan 3, bila dibagi 7 menyisakan 5, dan bila dibagi 11 menyisakan 7." Pertanyaan tersebut diajukan oleh seorang matematikawan china yang bernama Sun Tse pada abad pertama, Pertanyaan tersebut dapat dirumuskan sebagai berikut :
X ≡ 3 (mod 5) ; X ≡ 5 (mod 7) ; X ≡ 7 (mod 11)
Teorema Chinese Remainder berikut akan digunakan untuk menyelesaikan sistem di atas. Misalkan m1,m2,…,mn adalah bilangan bulat positif sedemikian sehingga PBB (mi, mj) = 1 untuk i≠j. Maka sistem kongruen lanjar :
X ≡ ak (mod mk) (2.1)
Persamaan diatas mempunyai sebuah solusi unik untuk modulo m = m1 . m2 . m. Solusi akan dicari sebagai berikut. Solusi modulo tersebut m = 5 . 7 . 11 = 5 . 77 = 11 . 35.
Karena 77 x 3 ≡ 1 (mod 5), 55 x 6 ≡ 1 (mod 7), dan 35 x 6 ≡ 1 (mod 11), maka solusi untuk permasalahan sistem kongruen diatas adalah
X ≡ ((3x77x3)+(5x55x6)+(7x35x6)) (mod 385) ≡ 3813 (mod 385)
≡ 348 (mod 385)
2.2 Operasi Exclusive- OR (XOR)
Operasi XOR merupakan operasi logika dengan membandingkan dua buah bit (bitwise) yang apabila pada salah satu bit nya bernilai “True”, maka hasil akhir operasi XOR tersebut adalah “True”. Namun, bila kedua bit yang akan dibandingkan bernilai “False”
atau keduanya bernilai “True maka hasil akhir operasi XOR tersebut adalah “False”.
Berikut ini adalah tabel kebenran dari operasi XOR.
Tabel 2.2 Tabel Kebenaran XOR
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
Operasi XOR banyak diimplementasikan pada berbagai bidang, salah satunya adalah pada pembangkit bilangan acak semu seperti Linear Feedback Shift Register (LFSR) dimana pada setiap isi sel dari register ditunjuk sebagai operasi XOR digunakan sebagai hasil subset dari isi sel baru pada sel paling kiri. Selain itu dalam dunia kriptografi terdapat beberapa algoritma yang menggunakan operasi XOR dalam proses enkripsinya. Contohnya seperti algoritma One Time Pad merupakan termasuk cipher aliran (stream cipher). Algoritma OTP menghasilkan keystream ciphertext berdasarkan operasi XOR antara plaintext dan kunci.
2.3 Bilangan Acak
Menurut Kamus Besar Bahasa indonesia, acak memili arti “tanpa pola / tidak dapat diprediksi” atau dalam bahasa inggris disebut dengan “Random”. Kemudian kata ini diserap kedalam bahasa Indonesia sehingga muncullah istilah “Kerandoman (Randomness)” yang memiliki arti sesuatu hal yang memiliki sifat keacakan ataupun tidak dapat diprediksi. Munir (2015) menjelaskan bilangan acak adalah bilangan yang tidak dapat diprediksi kemunculan keluarannya (UnpredicTabel).
Keacakan itu sendiri dapat ditafsirkan seperti hasil lemparan koin yang adil dengan sisi yang telah berlabel "0" dan "1", dengan setiap lemparan memiliki kemungkinan 50% untuk menghasilkan "0" atau "1". Selain itu, setiap lemparan merupakan bebas dari pengaruh lain yang berarti hasil lemparan koin sebelumnya tidak memberi pengaruh pada lemparan koin selanjutnya. Bilangan acak secara umum dapat digunakan untuk berbagai tujuan. Misalnya untuk permainan seperti permainan dadu, statistik, simulasi komputer, perjudian, dan lain-lain kemudian seiring perkembangan komputer, bilangan acak banyak digunakan di dalam berbagai bidang terutama pada kriptografi misalnya untuk pembangkitan parameter kunci pada algoritma kunci-publik, pembangkitan initialization vector (IV) pada algoritma kunci-simetri, dan sebagainya.
Namun kerandoman yang dikenal pada komputer tidak benar-benar menghasilkan deret bilangan acak secara sempurna (semu). Hal ini disebabkan deret bilangan acak tersebut dihasilkan dari perhitungan matematika dalam kata lain diambil urutan yang dihasilkan berasal dari pembangkitan bilangan yang dapat diulang kembali. Pembangkit deret bilangan acak semacam itu disebut pseudo-random number generator (PRNG).
9 2.3.1 Pembangkit Bilangan Acak
Pembangkit bilangan acak pada sistem komputer dapat diperoleh dari dua cara, yaitu menggunakan True Random Number Generator (TRNG) dan Pseudo Random Number Generator (PRNG).
1) True Random Number Generator (TRNG)
True Random Number Generator (TRNG) memperoleh keacakan dari suatu fenoma alam / fisik dan kemudian mengenalkannya kedalam komputer. Untuk itu pada pembangkit ini membutuhkan suatu perangkat keras yang mampu membaca suatu kejadian yang bersumber dari external komputer seperti berasal dari suara, gerakan, hingga fenomena alam seperti cuaca. TRNG dipercaya memiliki tingkat keacakan yang sangat bagus dibandingkan dengan PRNG. Hal ini disebabkan gejala fisik yang merupakan sumber dari TRNG merupakan hal yang sangat sulit diprediksi. Namun terdapat kelamahan pada pembangkit bilangan acak ini yaitu peralatan perangkat keras yang digunakan proses pembangkitan bilangan acak sangat mahal oleh karena itu pembangkit bilangan acak TRNG masih jarang digunakan.
2) Pseudo Random Number Generator (PRNG)
Pseudo Random Number Generator (PRNG) menjadi salah satu alternatif pengganti TRNG. PRNG membangkitkan bilangan acak berdasarkan perhitungan matematika yang diterapkan di perangkat lunak. Kata “Pseudo”
dalam PRNG mengartikan bahwa pembangkit bilangan acak ini tidak menghasilkan bilangan yang benar-benar acak. Perhitungan matematika yang digunakan PRNG hanya akan menjadikan pembangkit bilangan acak ini melakukan perhitungan secara berulang-ulang untuk menghasilkan urutan angka yang terlihat acak. PRNG menggunakan satu atau lebih input dan membangkitkan banyak bilangan Pseudorandom. Input PRNG disebut dengan seed. Pada konteks yang membutuhkan hal yang tidak dapat diprediksi seed itu sendiri haruslah bersifat rahasia. Hingga saat ini telah banyak bermunculan algoritma pembangkit bilangan acak semu. Contoh pembangkit acak semu yang paling terkenal adalah Linear Congruential Generators (LCG).
2.3.2 Sifat Pembangkit Bilangan Acak
Pembangkit bilangan acak yang baik memiliki sifat-sifat sebagai berikut :
1) Independent
Independent yang dimaksudkan adalah setiap bilangan acak yang dibangkitkan memiliki variabel yang bebas dan tidak terikat dari kententuan yang ada.
2) Uniform
Uniform yang dimaksudkan adalah bilangan acak yang dibangkitkan memiliki distribusi probabilitas yang sebisa mungkin merata pada semua bilangan yang akan dibangkitkan.
3) Dense
Dense Distribution Probabilitas memungkinkan bilangan yang dibangkitkan mengikuti syarat probabilitas 0 dan 1
4) Efficient
Pembangkit bilangan acak harus memiliki nilai bilangan yang sesuai dan dapat berjalan terus menerus
2.3.3 Pemanfaatan Pembangkit Bilangan Acak Semu
Pembangkitan bilangan acak dibutuhkan di beberapa bidang khususnya penerapan pada sistem komputer seperti keamanan komputer, simulasi dan modeling gejala yang kompleks, statistik, pemilihan data dari dataset yang besar, dan lain-lain. Adapun beberapa pemanfaatan dari PRNG adalah sebagai berikut :
1) Simulasi
Pada aplikasi simulasi selalu membutuhkan model yang seperti terlihat nyata dari gejala-gejala alam seperti permasalahan ekonomi, jalan raya reaksi nuklir dan model-model lainnya.
2) Sample Statistik
Sampel yang digunakan terkadang membutuhkan koleksi data yang besar dan sampel acak akan memberi kemungkinan ketelitian pada uji statistik.
3) Kriptografi
Kunci publik pada sistem kriptografi menggunkan data acak dengan jumlah yang sangat besar. misalnya RSA membutuhkan bilangan prima yang acak dan OTP membutuhkan bilangan integer yang acak untuk panjang keystream dan lain-lain.
11 4) Program Komputer
Banyak algoritma komputer yang membutuhkan rangkaian bilangan yang acak dan bilangan acak tersebut dapat digunakan sebagi masukan pengujian keefektifan algoritma.
5) Analisa Bilangan
Banyak masalah yang begitu sulit utnuk dipecahkan (butuh pemecahan masalah yang cepat) kurang lebih dapat mengandalakan teknik bilangan acak.
6) Permainan
Banyak aplikasi yang menggunakan bilangan acak seperti pengambilan keputusan, perjudian maupun permainan pada komputer.
Kriptografi menjadi bidang kelimuan yang paling bergantung pada pembangkit bilangan untuk mendapatkan kunci. Kriptografi yang salah satu teknik keamanan komputer menyebabkan penggunaan pembangkit bilangan acak semu ini sangat diperhatikan. Pembangkit bilangan acak yang digunakan pada kriptografi dibutuhlan untuk keperluan seperti menghasilkan kata kunci yang baik, pembangkitan inisialisasi vektor (Vector Initialize) pada hampir seluruh algoritma kriptografi dan lain-lain. Para pelaku kejahatan dalam usaha memecahkan algoritma kriptografi asimetrik biasanya juga berusaha memecahkan kunci yang biasa menggunakan pembangkit bilangan acak semu. Dengan memecahkan pembangkit bilangan acak, seperti menemukan pola bilangan yang muncul sehingga dapat memprediksi bilangan yang keluar, maka tidak langsung telah berhasil memecahkan keamanan kriptografi.
2.3.4 Cryptographically Secure Pseudo-Random Number Generator (CRPRNG) Cryptographically Secure Pseudo-Random Number Generator (CSPRNG) sejatinya merupakan Pseudo Random Number Generator namun memiliki sifat-sifat yang cocok untuk digunakan pada kriptografi. Banyak algoritma PRNG belum tentu termasuk kelompok CSPRNG. Salah satu contoh penyebabnya adalah apabila nilai bilangan tertentu didapatkan atau diketahui maka bilangan selanjutnya yang akan dihasilkan dapat terprediksi dalam artian algoritma PRNG tersebut memiliki tingkat keacakan yang rendah sehingga nilai yang muncul dapat dengan mudah terpolakan.
Terdapat 2 syarat utama yang harus dipenuhi oleh PRNG ketika akan digunakan pada kriptografi. yaitu:
1) CSPNRG harus memiliki properti yang lulus uji keacakan secara statistik.
2) CSPNRG tidak dapat ditembus dengan berbagai serangan bahkan jika sebagian initial state maupun running state telah diketahui.
Apabila PRNG tersebut belum memenuhi 2 syarat tersebut maka algoritma PNRG itu bukanlah tergolong CSPRNG walaupun PRNG tersebut dapat mengeluarkan deret bilangan yang terlihat acak. Berikut standar-standar untuk menguji statistik CSPNRG :
1) FIPS186-2
2) NIST SP 800-90 : Hash_DRBG, HMAC_DRBG, CTR_DRBG and Dual_EC_DRBG.
3) ANSIX9.17-1985 Appendix C 4) ANSIX9.31-1998 Appendix A.2.4
5) ANSI X9.62-1998 Annex A.4, obsoleted by ANSI X9.62-2005, Annex D (HMAC_DRBG).
2.4 Uji Statistik NIST
Berbagai tes statistik dapat diterapkan untuk mengurutkan, membandingkan dan mengevaluasi urutan yang benar-benar acak. Keacakan merupakan hal yang memiliki sifat probabilistik. Dengan begitu sifat keacakan dapat digolongkan dan dijelaskan pada kondisi probabilitas seperti hasil statistik yang dirumuskan dengan hipotesis (H0) atau (Ha) yang mendakan urutan bilangan acak memiliki batas yang menyatakan persetujuan atau penolakan hipotesis yang menyatakan acak atau tidak.
Dalam melakukan uji keseragaman dan kebebasan terdapat suatu perbedaan asumsi dimana bilangan tersebut saling bebas dan bilangan tersebut seragam dengan urutan bilangan yang dibangkitkan dengan persamaan tertentu sehingga menghasilkan urutan yang deterministik dengan periode perulangan yang deterministik pula. Hal ini yang menyebabkan terdapat banyak sekali uji empiris-statistik yang bisa dilakukan untuk membuktikan hasil uji dari kedua asumsi tersebut dan apabila lolos dari bebrapa uji empiris-statistik tersebut juga tidak menjamin bahwa suatu pembangkit bilangan random merupakan pembangkit yang sempurna (L’Ecuyer, 1997).
Kriptografi menempatkan perhatian yang besar pada statistik pada pembangkit bilangan acak semu. Rentetan bilangan yang dibangkitkan harus tidak dapat dibedakan dari rangkaian bilangan acak yang dibangkitkan secara TRNG karena apabila terjadi
13
penyimpangan keacakan, penyerangan oleh kriptanalis berkemungkinan berhasil. NIST (National Institute of Standards and Technology) telah mengembangkan deratan uji statistik yang cocok untuk menguji pembangkit yang akan digunakan pada sistem kriptografi. Adapun beberapa deratan uji statistik yang dikembangkan oleh NIST yaitu :
1) The Frequency (Monobit) Test, berfokus mengevaluasi proporsi Nol dan Satu pada seluruh rangkaian.
2) Frequency Test within a Block, berfokus mengevaluasi proporsi Satu dalam blok M-bit
3) The Runs Test, Mengukur total angka yang berjalan pada rangkaian, dimana yang berjalan adalah rangkaian yang tidak diputuskan dari bit yang identik.
4) Tests for the Longest-Run-of-Ones in a Block, menaksir Satu dalam blok M-bit yang berjalan terpanjang
5) The Binary Matrix Rank Test, berfokus mengevaluasi peringkat pemisahan sub- matriks keseluruhan rangkaian.
6) The Discrete Fourier Transform (Spectral) Test, mendeteksi ciri-ciri secara berkala pada rangkaian yang diuji yang akan mengindikasikan penyimpangan dari anggapan keacakan
7) The Non-overlapping Template Matching Test, mendeteksi pembangkit yang menghasilkan terlalu banyak pemberian pola non-periode yang terjadi
8) The Overlapping Template Matching Test, menghitung angka yang terjadi dari target string sebelum ditetapkan
9) Maurer's "Universal Statistical" Test, menghitung bilangan bit diantara pola yang cocok
10) The Linear Complexity Test, mengevaluasi panjang Linear feedback register (LFSR)
11) The Serial Test, menentukan apakah angka yang terjadi dengan melengkapi pola 2m m-bit kira-kira sama dengan yang diharapkan pada rangkaian acak
12) The Approximate Entropy Test, seperti serial test berfokus pada frekuensi semua kemungkinan yang melengkapi pola m-bit yang melewati keseluruhan rangkaian
13) The Cumulative Sums (Cusums) Test, menghitung maksimal ekskursi (dari Nol) acak yang didefinisikan dengan perhitungan kumulatif digit yang ditentukan (- 1,+1) pada rangkaian
14) The Random Excursions Test, menghitung jumlah angka pada putaran yang memenuhi K pada perhitungan kumulatif yang berjalan secara acak dan
15) The Random Excursions Variant Test. menghitung jumlah angka setiap waktu yang awal partikular yang dikunjungi pada perhitungan kumulatif yang berjalan secara acak.
2.5 Algoritma Linear Feedback Shift Register
Suatu Linear Feedback Shift Register (LFSR) adalah suatu algoritma yang digunakan untuk membangkitkan bilangan acak semu berdasarkan hasil sekuens bit biner.
Kriptografi stream cipher sering menggunakan Algoritma Linear Feedback Shift Register (LFSR) sebagai pembangkit aliran kuncinya. LFSR menggunakan cara kerja Register geser umpan balik (feedback shift register) atau FSR untuk menghaislkan bilangan acak. FSR tersebut terdiri dari dua bagian, yaitu :
1) Register geser, yaitu barisan bit-bit (bn, bn-i, ...., b3, b2, b1) yang panjangnya n (disebut juga register geser n-bit).
2) Fungsi umpan balik, yaitu fungsi yang menerima input dari register geser dan mengembalikan nilai fungsi ke register geser.
Gambar 2.1 Contoh Skema LFSR
Kunci rahasia pada LFSR biasanya ditentukan oleh sebarisan sel register yang ditentukan oleh vektor inisialisasi. Tingkah laku register diatur oleh sebuah counter (clock). Sel dari register digeser (shift) ke kanan sejauh satu posisi pada setiap saat, dan dilakukan perhitungan operasi XOR terhadap subset dari isi sel dan hasilnya ditempatkan pada sel paling kiri. Selama prosedur update ini, satu bit paling kanan dari output biasanya diturunkan untuk mengosongkan sel di barisan register.
Terdapat dua tipe dalam merancang fungsi feedback yaitu dengan Fibonacci LFSRs dan Galois LFSRs. Kedua tipe tersebut akan memberikan periode bilangan yang
15
sama apabila menggunakan fungsi yang sama hanya saja perbedaannya terdapat pada penyunan gerbang XOR yang mempengaruhi hasil bit feedback. Terdapat suatu set dari LFSR yaitu shift register cascade. Metode ini menggunakan Operator XOR yang dihubungkan secara bersamaan dengan suatu teknik tertentu sehingga merubah perlakuan dari LFSR sebelumnya dalam hingga menyerupai waterfall yang menciptakan aliran stream baru. Sifat Tingkah laku dan sifat yang saling terkait ini biasanya dilakukan dengan menggunakan satu LFSR untuk mengontrol LFSR setelahnya. Sebagai contoh, satu register mungkin melangkah lebih dulu dua fase jika output register di depannya adalah 1 dan maju satu langkah jika hasil =0. Beberapa konfigurasi yang berbeda mungkin dan pemilihan parameter tertentu akan menghasilkan tingkat keamanan yang baik.
(a)
(b)
Gambar 2.2 LFSR dengan (a) Fibonacci LFSRs dan (b) Galois LFSRs Susunan Primitve Polynomial adalah suatu susunan yang telah ditetapkan untuk mendapatkan hasil periode bilangan yang maksimum. Maksimum bilangan yang muncul akan mengikuti persamaan 2n-1. Contohnya 3 bit register akan menghasilkan maksimum 7 periode bilangan.
Tabel 2.3 Beberapa Fungsi mMaksimum Feedback Polynomial
Bits Feedback Polynomial Max Periode
(2n-1)
3 X3 + X2 + 1 7
4 X4 + X3 + 1 15
5 X5 + X3 + 1 31
6 X6 + X5 + 1 63
7 X7 + X6 + 1 127
8 X8 + X6 + X5 + X4 + 1 255
9 X9 + X5 + 1 511
Gambar 2.3 Bilangan Acak Semu dengan 3 Bit Fibonacci LFSR
Adapun beberapa penelitian yang mengembangkan algoritma LFSR sebagai bagian dari sistem kriptografi dapat dilihat pada penelitian yang dilakukan oleh Som &
Ghosh (2012) yang mengembangkan Sistem kriptografi stream cipher berdasarkan LFSR. Hal ini Ini memberikan tingkat keamanan yang sama atau kadang-kadang bahkan lebih baik pada kompleksitas waktu yang minimal. Rahimov et al (2011) juga pernah melakukan penelitian yang mengkombinasikan LFSR dan Chaotic Logistic Map pada untuk digunakan pada Cryptographic PRNG dimana hasil urutan bilangan acak diuji secara ketat menggunakan uji coba NIST suite. Hasil pengujian statistik mendorong dan menunjukkan bahwa PRNG yang diusulkan memiliki sifat kriptografi yang sempurna dan karenanya dapat digunakan dalam desain cipher aliran baru.
Berikut langkah-langkah dari algoritma Linear Feedback Shift Register : 1) Tentukan barisan Register geser yang panjangnya n (register geser n- bit) 2) Tentukan fungsi umpan balik berupa koneksi input register yang terhubung
dengan gerbang XOR.
111
011
011 100
010 101
110
17
Misalkan kita menggukan 4-bit register dan menggunakan fungsi umpan balik dengan polinomial X4+X+1, maka barisan bit acak kita hasilkan sebagai berikut:
Gambar 2.4 Pergeseran Bit pada Algoritma LFSR 4-bit Register Barisan blok bit acak yang dihasilkan : 0111 1011 0101 ...dst atau dalam basis 10: 7 11 5 ...dst.
2.6 Sistem Waktu Lokal
Dalam dunia komputer terlebih dalam pemograman komputer, konsep waktu merupakan hal yang sangat penting. sistem waktu dapat diukur dengan "Clock System"
yang biasanya diimplementasikan dari hitungan sederhana jumlah detik yang terjadi sejak tanggal dimulai. Hal ini disebut dengan epoch. Pada sistem UNIX dan POSIX, pengaturan sistem waktu dihitung berdasarkan jumlah detik yang telah terlewati sejak awal UNIX epoch yaitu pada 1 Januari 1970 00.00.00 UT, dengan pengecualian untuk detik kabisat. Berbeda dengan sistem yang menerapkan versi 32-bit dan 64-bit Windows API. sistem waktu (Systemtime) dilakukan dengan perhitungan jumlah detik 100 nanosecond sejak 1 Januari 1601 00.00.00 UT yang diwakilkan sebagai nilai tahun, bulan, hari, jam, menit, detik, milidetik.
Sistem waktu dapat dikonverikan menjadi waktu kalender yang dapat dibaca manusia dengan lebih mudah. misalnya waktu sistem UNIX 1.000.000.000 detik dapat diterjemahkan menjadi waktu kalender 9 September 2001 01.46.40 UT. Selain itu Sistem waktu dapat menangani penyesuaian zona waktu, DST (Daylight Saving time), waktu kabisat, dan sistem waktu lokal yang telah diterapkan pada Subrutin Library yang menangani konversi waktu.
UNIX Stamps time merupakan suatu cara untuk menyesuaikan informasi waktu aplikasi dinamis dan terdistribusi baik secara online maupun di sisi klien. Waktu UNIX stamps time melakukan proses dengan melacak waktu sebagai jumlah total yang tersisa yang dihitung dimulai pada zaman UNIX yaitu pada 1 januari 1970 di UTC. Namun karena stamp time bekerja dengan overflow 32-bit, sistem UNIX menyimpan tanggal epoch hingga pada tanggal 19 januari 2038 atau dikenal dengan Y2038.
Pada sistem waktu lokal, UTC menjadi standar waktu untuk menjaga skala waktu dapat tersinkron dengan baik di seluruh dunia. UTC menggunakan dua komponen waktu yaitu International Atomic Time (ITA) dan Universal Time (UT1).
UTC digunakan untuk menunjukkan perbedaan waktu yang relatif pada suatu wilayah yang dapat dinyatakan dengan UTC+n atau UTC-n dimana n adalah perbedaan jam pada suatu wilayah. Universal Time menggunakan GMT yang digunakan sebagai zona waktu. misalkanya Waktu Indonesia Barat (WIB) jam 07.00 WIB setara dengan jam 00.00 GMT dimana berdasarkan satndar UTC Waktu Indonesia Barat (WIB) memiliki standar UTC+7.
BAB III
METODE PENELITIAN
3.1 Tahapan Penelitian
Gambar 3.1 Tahapan Penelitian Adapun tahapan-tahapan penelitian secara umum adalah berikut :
1) Studi literatur
Pada tahapan ini dikumpulkan bahan penelitian dari berbagai sumber pustaka, seperti buku, jurnal (baik cetak maupun online), prosiding, majalah, artikel dan sumber lain yang relevan. Disamping itu juga melakukan konsultasi dengan dosen pembimbing dalam penyususan dan penulisan tesis.
Studi literatur
Pembangkitan bilangan acak semu LFSR dengan waktu lokal sistem
Pengujian keacakan bilangan acak semu
Analisis bilangan acak semu
Hasil dan kesimpulan
2) Pembangkitan bilangan acak semu
Pada proses ini dilakukan dengan membangkitkan bilangan acak semu dengan memodifikasi algoritma LFSR dengan waktu lokal mesin sehingga menghasilkan peningkatan panjang periode maksimum.
3) Pengujian keacakan bilangan acak semu
Pengujian keacakan dilakukan untuk mendapatkan validitas bahwa bilangan yang dibangkitkan dari hasil peningkatan panjang periode maksimum LFSR dengan waktu lokal sistem lolos dari uji statistik bilangan acak semu.
4) Analisis bilangan acak semu
Proses analisis bertujuan untuk mencari perbandingan antara hasil bilangan acak semu dengan meningkatkan panjang periode maksimum LFSR dengan waktu lokal sistem dan hasil bilangan acak semu tanpa peningkatan panjang periode maksimum LFSR dengan waktu lokal sistem
5) Hasil dan kesimpulan
Memaparkan hasil perbandingan dan menyimpulkan hasil penelitian yang telah dilakukan.
3.2 Waktu Penelitian
Waktu yang digunakan untuk melakukan penelitian ini diperkirakan ± 6 (enam) bulan mulai dari studi literatur hingga memaparkan dan menyimpulkan hasil penelitian yang dilakukan.
3.3 Rancangan Pembangkitan Bilangan Acak Semu
Adapun peningkatan panjang periode maksimum yang dibuat pada penelitian ini adalah dengan memodifikasi algoritma Linear Feeedback Shift register dengan cara menggabungkan waktu lokal sistem yang berjalan yaitu dengan mengganti sumber nilai bit input yang sebelumnya berasal dari umpan balik (feedback) LFSR digantikan dengan nilai bit yang berasal dari nilai waktu lokal mesin. Pada awalnya nilai yang muncul pada waktu lokal sistem berupa angka desimal. Oleh karena itu, untuk mendapatkan nilai bit 1 dan 0 maka nilai yang muncul dilakukan perhitungan modulus 2 (mod 2). Setelah itu nilai bit tersebut akan dilakukan proses XOR dengan nilai bit output register.
21
Selain itu terdapat modifikasi dalam pengambilan seed awal yang secara otomatis diambil dari nilai waktu lokal mesin ketika progam dijalankan. Berikut ini adalah flowchart pada proses pembangkitan bilangan acak semu dari algoritma Linear Feedback Shift Register yang telah dimodifikasi dengan waktu lokal sistem dari mesin yang membangkitkan bilangan acak.
Gambar 3.2 Flowchart Pembangkitan LFSR dengan Waktu Lokal Sistem
Berdasarkan flowchart di atas, nilai bit input dipengaruhi oleh nilai waktu yang terus bergerak dari waktu lokal mesin. Pada saat pembangkitan bilangan acak semu dilakukan, maka pada saat itu juga nilai waktu lokal yang muncul terpilih sebagai bit input. Untuk mendapatkan nilai waktu yang terus berubah dengan cepat dari localtime maka peneliti memilih nilai dalam milidetik yang dihitung sejak 1 Januari 1970 00.00.00 UT. Adapun proses pembangkitan bilangan acak semu LFSR menggunakan localtime, peneliti mensimulasikan proses pembangkitan dengan bahasa pemograman Python v.3.6.
Gambar 3.3 Ilustrasi Proses Pembangkitan LFSR dengan Waktu Lokal Sistem 3.4 Pengujian Pembangkitan Bilangan Acak Semu
Pengujian bertujuan untuk mendapatkan hasil percobaan guna mengumpulkan data yang diperlukan untuk melakukan analisa terkait hasil bilangan acak semu yang dibangkitkan dengan meningkatkan panjang periode maksimum algoritma Linear Shift Register dengan waktu lokal sistem. Pembangkitaan nilai bilangan acak semu ditentukan dengan menghitung barisan bit yang terdapat pada kolom register.
Kemudian proses pembangkitan bilangan acak semu akan dilakukan iterasi hingga “N“
kali. Adapun jumlah digit bit dan range bilangan yang dapat dimunculkan dapat dilihat pada tabel berikut :
23
Tabel 3.1 Pengujian Pembangkitan Bilangan Acak Semu
Pengujian
ke- Jumlah digit bit Range bilangan Banyak N bilangan yang dibangkitkan
Probabilitas kemunculan bilangan
1 4 bit 0 – 15 32 kali 1 : 16
2 5 bit 0 – 31 64 kali 1: 32
3 6 bit 0 – 63 128 kali 1 : 64
4 7 bit 0 - 127 256 kali 1 : 128
5 8 bit 0 - 255 512 kali 1 : 256
3.5 Analisis Keacakan Bilangan
Analisis keacakan bilangan perlu dilakukan untuk mengetahui apakah hasil peningkatan panjang periode maksimum algoritma Linear Feedback Shift Regeister dengan waktu lokal sistem sudah memenuhi tujuan yang diharapkan peneliti. Selain itu juga perlu dilakukan pengujian statistik pada bilangan acak semu yang dibangkitkan untuk memastikan apakah bilangan dibangkitkan telah lulus sehingga dapat digunakan pada sistem kriptografi.
BAB IV
HASIL DAN PEMBAHASAN
4.1 Implementasi Sistem
Adapun progam yang digunakan untuk membantu mensimulasikan pembangkitan bilangan acak semu menggunakan bahasa pemograman Python v.3.6. Berikut adalah tampilan awal progam pembangkitan bilangan acak semu LFSR dengan waktu lokal sistem.
Gambar 4.1 Tampilan Simulasi dengan Program Python v.3.6 4.2 Hasil Pembangkitan Bilangan Acak
Pada tahapan ini, pengujian dilakukan dengan membangkitkan bilangan acak semu sebanyak 2Nyang mana N adalah jumlah probabilitas kemunculan angka. Proses pembangkitan bilangan acak dilakukan dengan waktu jeda yang berbeda-beda. Hal ini bertujuan untuk mencegah nilai waktu yang berurut apabila menggunakan iterasi secara otomatis di sistem komputer. Seperti yang telah dijelaskan sebelumnya, modifikasi bilangan acak semu LFSR dengan waktu lokal sistem dilakukan pada Seed awal dan bit input. Berikut hasil tampilan bilangan acak semu yang dibangkitkan dengan meningkatkan panjang periode maksimum algoritma LFSR dengan waktu lokal sistem menggunakan jumlah digit register sebanyak 4 bit.
25
Gambar 4.2 Hasil Bilangan Acak Semu dengan Program Python v.3.6 Berikut tabel yang menunjukkan hasil distribusi bilangan acak semu yang dibangkitkan sebanyak 32 kali dengan panjang register 4 bit.
Tabel 4.1 Hasil Bilangan Acak Semu 4 Bit Bilangan acak semu (1 – 16)
4 10 5 2 1 0 0 0 8 4 10 5 2 9 12 6
Bilangan acak semu (17 – 32)
11 5 2 9 12 14 15 15 15 15 7 11 5 10 5 2
Setelah mendapatkan bilangan acak dari percobaan menggunakan register 4 bit, kemudian dengan cara yang sama peneliti mencoba membangkitkan bilangan acak semu dengan percobaan jumlah bit yang telah diterangkan pada Bab III. Adapun kumpulan hasil dari semua bilangan acak semu yang dibangkitkan dapat dilihat pada tabel berikut :
27 Tabel 4.2 Frekuensi Bilangan yang Dibangkitkan dengan Waktu Lokal Sistem
Register 4 bit Register 5 bit Register 6 bit Register 7 bit Register 8 bit Bilangan Frekuensi Bilangan Frekuensi Bilangan Frekuensi Bilangan Frekuensi Bilangan Frekuensi
0 – 1 2 – 3 4 – 5 6 - 7 8 – 9 10 - 11 12 - 13 14 - 15
4 4 7 2 3 5 2 5
0 – 3 4 - 7 8 - 11 12 - 15 16 - 19 20 - 23 24 – 27 28 – 32
6 6 7 9 6 9 9 12
0 – 3 4 - 7 8 - 11 12 - 15 16 - 19 20 - 23 24 – 27 28 – 31 32 – 35 36 – 39 40 – 43 44 – 47 48 – 51 52 – 55 56 – 59 60 – 63
15 7 8 6 6 7 5 10
7 7 5 9 8 7 10 11
0 – 7 8 – 15 16 – 23 24 – 31 32 – 39 40 – 47 48 – 55 56 – 63 64 – 71 72 – 79 80 – 87 88 – 95 96 – 103 104 – 111 112 – 119 120 – 127
4 16 14 22 10 17 16 21 16 20 13 15 26 10 20 16
0 – 15 16 – 31 32 – 47 48 – 63 64 – 79 80 – 95 96 – 111 112 – 127 128 – 113 114 – 159 160 – 177 176 – 191 192 – 207 208 – 223 224 – 239 240 – 255
19 24 33 27 41 34 31 35 24 35 42 39 18 47 35 28
Total 32 Total 64 Total 128 Total 256 Total 512
4.3 Analisis kinerja algoritma
Berdasarkan penjelasan Bab sebelumnya, penelitian ini bertujuan untuk menghasilkan bilangan acak dengan meningkatkan panjang periode maksimum bilangan dari bilangan acak semu yang dibangkitkan oleh algoritma LFSR.
(a) (b)
Gambar 4.3 Perbandingan Periode Bilangan Acak Semu 4 Bit (a) Localtime LFSR dan (b) LFSR
Dapat dilihat pada grafik diatas, masing-masing algoritma melakukan percobaan dengan membangkitkan bilangan acak semu menggunakan register 4 bit sebanyak 32 kali. Pada masing-masing grafik terdapat dua warna latar yang berbeda yang bertujuan untuk mempermudah melihat perbedaan panjang periode pembangkitan bilangan. Pada Gambar 4.7 (b) terdapat periode yang berulang terhadap algoritma LFSR dimana pola bilangan yang dibangkitkan pada urutan ke-1 sampai dengan urutan ke-15 yang ditandai dengan latar berwarna biru sebagai periode pertama dan berulang kembali pada urutan ke-16 sampai ke-30 yang ditandai dengan latar berwarna merah sebagai periode kedua dan begitu seterusnya. Hal ini menjelaskan bahwa terdapat suatu pola urutan pembangkitan bilangan acak semu memiliki panjang maksimum periode sebesar 15 kali yang apabila pembangkitan bilangan telah mencapai maksimum periode maka bilangan yang muncul setelahnya akan mengulang kembali mengikuti angka pada periode sebelumnya. Berbeda dengan pada Gambar 4.7 (a) dimana terdapat pola yang
0 2 4 6 8 10 12 14 16
1 4 7 10 13 16 19 22 25 28 31 34
Localtime LFSR
0 2 4 6 8 10 12 14 16
1 4 7 10 13 16 19 22 25 28 31 34
LFSR
Angka
Urutan
Angka
Urutan
29
tidak beraturan yang dapat dilihat pada perbedaan grafik antara latar warna biru dan latar warna merah. Hal ini menunjukkan belum adanya perulangan periode pembangkitan bilangan yang dimulai dari urutan 1 hingga urutan ke 32. Jadi dapat kita simpulkan peningkatan panjang periode maksimum algoritma LFSR dengan sistem waktu lokal mempengaruhi output bilangan dari LFSR dimana tidak ada lagi terdapat pola yang mengikuti periode sebelumnya.
(a) (b)
Gambar 4.4 Perbandingan Periode Bilangan Acak Semu 5 Bit (a) Localtime LFSR dan (b) LFSR
Hasil yang serupa juga terjadi pada percobaan menggunakan register 5 bit, 6 bit, 7 bit dan 8 bit. Gambar 4.4 menunjukkan perbandingan hasil pembangkitan bilangan acak semu menggunakan register 5 bit dimana pada Gambar 4.8 (a) terdapat pola yang tidak beraturan dari pembangkitan ke-1 hingga ke-64. Berbeda dengan Gambar 4.8 (b) dimana memiliki panjang maksimum 31 kali sehingga pembangkitan ke-1 hingga ke- 31 (periode pertama latar warna biru) berulang pada pembangkitan ke-32 hingga ke-62 (periode kedua latar warna merah). Berdasarkan hasil tersebut menunjukkan terdapat perulangan pola periode bilangan apabila membangkitkan bilangan acak semu menggunakan algoritma LFSR. Untuk melihat hasil perbandingan panjang periode bilangan yang dibangkitkan pada register 6 bit, 7 bit dan 8 bit dapat dilihat pada Lampiran A.
0 5 10 15 20 25 30 35
1 6 11 16 21 26 31 36 41 46 51 56 61 66
Localtime LFSR
0 5 10 15 20 25 30 35
1 6 11 16 21 26 31 36 41 46 51 56 61 66
LFSR
Angka
Urutan
Angka
Urutan
Tabel 4.3 Hasil Perbandingan Ppanjang Periode Maksimum Jumlah
Register LFSR Localtime
LFSR
4 bit 15 32 lebih
5 bit 31 64 lebih
6 bit 63 128 lebih
7 bit 127 256 lebih
8 bit 256 512 lebih
4.4 Uji Statistik Bilangan Acak Semu 4.4.1 Uji Runtun (The Run Test)
Uji Runtun (The Run Test) digunakan sebagai metode pengujian untuk melihat adanya runtun barisan tanda-tanda yang identik yang didahului atau diikuti oleh sebuah tanda yang berbeda. Adapun hasil Run Test dari sample bilangan acak semu yang dibangkitkan dapat dilihat dengan bantuan aplikasi SPSS yang merupakan aplikasi khusus untuk menghitung suatu nilai statistik. Dengan menggunakan taraf nyata α = 0,05 maka hipotesis H0 dapat diterima apabila nilai p-value > α. Berikut adalah hasil Uji Runtun dari register 4 bit :
Runs Test
Bilangan Acak Semu
Test Valuea 6,5
Cases < Test Value 17
Cases >= Test Value 15
Total Cases 32
Number of Runs 15
Z -,519
Asymp. Sig. (2-tailed) ,604 a. Median
Gambar 4.5 Hasil Runs Test dari Register 4 Bit
Dapat dilihat pada gambar hasil SPSS diatas dibagi 2 Case berdasarkan Test Value 6,5 yang merupakan Median dari keseluruhan bilangan acak semu yang dibangkitkan. Dari total N= 32 maka didapatkan nilai n (n < median) = 17; (m ≥ median) = 15; total Run (R) = 15 dan nilai p-value = 0,604 maka peneliti dapat membuktikan Hipoteis H0 dapat diterima karena nilai p-value > α.
31
Tabel 4.4 Hasil Runs Test Bilangan Acak Semu
Register 4 bit Register 5 bit Register 6 bit Register 7 bit Register 8 bit LFSR Local
time LFSR Local
time LFSR Local
time LFSR Local
time LFSR Local time
Jumlah (N) 32 32 64 64 128 128 256 256 512 512
n < median 16 17 32 29 64 64 128 128 256 254
m ≥ median 16 15 32 35 64 64 128 128 256 258
Runs (R) 13 15 33 30 61 57 125 121 253 268
p-value 0,208 0,604 1,00 0,489 0,478 0,156 0,616 0,316 0,723 0,330 Rata-rata Localtime LFSR = 0,379
4.4.2 Uji Histogram
Berikut ini adalah perbandingan distribusi frekuensi antara bilangan acak semu dari pembangkit LFSR dan peningkatan panjang periode maksimum LFSR. Adapun hasil dari perbandingan tersebut dapat dilihat pada gambar berikut :
(a)
(b)
Gambar 4.6 Perbandingan Histogram Register 4 Bit (a) Localtime LFSR dan (b) LFSR
0 1 2 3 4 5 6 7 8
0 – 1 2 – 3 4 – 5 6 - 7 8 – 9 10 - 11 12 - 13 14 - 15
Localtime LFSR
0 1 2 3 4 5 6 7 8
0 – 1 2 – 3 4 – 5 6 - 7 8 – 9 10 - 11 12 - 13 14 - 15
LFSR
Banyak Angka
Frekuensi
Banyak Angka
Frekuensi