• Tidak ada hasil yang ditemukan

Teknik-Teknik Pembangkitan Bilangan Acak

N/A
N/A
Protected

Academic year: 2021

Membagikan "Teknik-Teknik Pembangkitan Bilangan Acak"

Copied!
6
0
0

Teks penuh

(1)

Teknik-Teknik Pembangkitan Bilangan Acak

Anton Rifco Susilo

1)

1) Jurusan Teknik Informatika ITB, Bandung 140132, email: if14046@students.if.itb.ac.id

Abstract Perkembangan teknologi informasi dalam dua dekade terakhir ini berlangsung dengan sangat cepat. Banyaknya penemuan yang tercipta memungkinkan dua orang atau lebih untuk berkomunikasi dengan lebih cepat, efisien, dan murah. Kenyataan ini mendorong para insinyur untuk menciptakan suatu mekanisme yang menjamin keamanan dan integritas pesan yang dikomunikasikan. Mekanisme tersebut pada umumnya terimplementasi dalam suatu algoritma kriptografi (penyandian). Beberapa algoritma sangat bergantung kepada mekanisme pembangkitan bilangan acak yang baik, misalnya pada pembangkitan kunci acak algoritma One-time pad. Dalam makalah ini akan dijelaskan beberapa teknik pembangkitan bilangan acak, baik melalui media algoritma, maupun dengan bantuan beberapa fenomena alam (melalui media hardware sensor) thermal noise, efek photoelectric, dan fenomena quantum lainnya

Kata Kunci: Random Number Generator, Hardware Random

1. PENDAHULUAN

Bilangan acak berarti suatu bilangan yang diambil dari sekumpulan bilangan dimana tiap-tiap elemen dari kumpulan bilangan ini mempunyai peluang yang sama untuk terambil (U.S Federal Standard

1037C Number 1). Misalkan kumpulan bilangan

berjumlah n, maka masing-masing elemen mempunyai peluang 1/n untuk terambil. Jika jumlah bilangan yang akan diambil lebih dari satu, maka masing-masing proses pengambilannya harus bersifat bebas secara statistik (statistically

independent)

Proses pengambilan bilangan acak ini sendiri merupakan suatu random event (peristiwa acak), yang berarti peristiwa dimana proses dan hasilnya ”tidak dapat” diprediksi. Penggunaan kata ”tidak dapat” disini tidak menga cu pada penolakan sepenuhnya atas aksi. Ilmuwan terkenal, Albert Einstein pernah mengatakan bahwa ”God doesn’t

play dice with the universe”, yang berarti bahwa

tidak ada peristiwa (event) apapun yang tidak dapat diprediksi dan dimodelkan, hanya pengetahuan kita saja yang terbatas . Misalnya saja pada peristiwa pelemparan koin. Orang awam akan mengatakan bahwa sisi selanjutnya yang akan muncul bersifat acak sepenuhnya. Padahal seandainya kita

mengetahui sisi mana dari koin yang terlihat sebelum dilempar serta jumlah Newton gaya yang diberikan terhadapnya, maka kita dapat mengetahui sisi mana yang akan muncul selanjutnya. Trik ini telah dipelajari dan dipertunjukan oleh ahli matematika, Diaconis.

Selanjutnya dalam makalah ini, nilai keteracakan suatu bilangan yang dibangkitkan oleh suatu proses pengacakan bergantung pada tingkat kesulitan untuk memprediksi bilangan yang akan dibangkitkan selanjutnya. Pengertian tersebut membagi bilangan acak menjadi dua tipe, yakni Bilangan Acak Sepenuhnya (Trully Random ), dan Bilangan Acak Semu (Pseudo-Random). Makalah ini akan mengambil fokusnya pada tipe kedua, Bilangan acak sepenuhnya.

2. TUJUAN PEMBANGKITAN BILANGAN ACAK

Pembangkitan bilangan acak sangat diperlukan dalam kehidupan sehari-hari. Misalnya saja, ketika melakukan transaksi pada mesin ATM, data-data perbankan yang kita masukan akan dienkripsi dengan menggunakan algoritma kuci publik sebelum dikirimkan pada komputer utama. Dalam hal ini, bilangan acak diperlukan untuk pemilihan kunci enkripsinya. Contoh lainnya ialah dalam suatu pemilihan umum, seringkali diadakan proses perhitungan cepat (quick count) dengan cara mengambil contoh acak dari para pemilih. Selengkapnya tujuan dari pembangkitan bilangan acak ialah :

• Penggunaan pada kunci untuk ekripsi data, misalnya pada algoritma One-time pad

• Pembangkitan Initialization Vector (IV) pada algoritma enkripsi cipher-block

• Pengambilan data sampel untuk kepentingan statistic dan permodelan

• Penentuan nomor pemenang pada undian lotere (lotteries), dan lain-lain

Penentuan aksi yang akan dilakukan

Non-Playing Character pada video games

(2)

3. PEMBANGKIT BILANGAN ACAK

Seperti yang telah dijelaskan pada pendahuluan, bahwa pembangkit bilangan acak terbagi menjadi dua tipe, yakni Pembangkit Bilangan Acak Semu, dan pembangkit Bilangan Acak Sepenuhnya.

3.1. Pembangkit Bilangan Acak Semu (PBAS) Pembangkit Bilangan Acak Semu menggunakan rutinitas algoritma yang mengimplementasikan rumus matematika untuk menghasilkan bilangan yang terlihat acak. Mengapa digunakan kata ”terlihat” sebelum kata acak ialah karena sebenarnya bilangan yang dihasilkan semua algoritma pada tipe ini merupakan suatu barisan yang dapat diprediksi dengan mudah jika kita mengetahui variabel inisiasinya (deterministic). Selain itu, bilangan acak yang dihasilkan PBAS ini bersifat perodik, dalam artian bahwa setiap beberapa baris, bilangan ini akan berulang. Di luar kelemahannya ini, PBAS mempunyai kelebihan kecepatan dalam menghasilkan barisan bilangan acak. Hal ini dikarenakan dalam , dalam pembangkitannya PBAS hanya menggunakan rutinitas algoritma, sehingga tidak dibutuhkan sesi

interfacing dengan perangkat keras komputer seperti yang dilakukan oleh pembangkitan tipe kedua.

Dengan sifat -sifat seperti yang disebutkan di atas, maka aplikasi yang cocok untuk menggunakan PBAS ialah aplikasi yang membutuhkan barisan bilangan acak yang besar secara cepat, serta dimana barisan bilangan yang samadapat dibangkitkan di lain kesempatan. Contoh dari aplikasi seperti itu ialah permodelan dan statistik.

Beberapa algoritma pembangkitan bilangan acak semu ialah Linear Congruential Generator (LCG), dan Blum Blum Shub (BBS).

Algoritma LCG mempunyai rumus :

xn = (axn-1 + b) mod m

dimana

x

n = bilangan acak deret ke-n

x

n-1 = bilangan acak sebelumnya

a = faktor pengali

b = increment factor

m = modulus factor

Misalnya saja, diberikan suatu aturan BCG dimana

xn = (7xn-1 + 11) mod 17, dimana X0 = 0

maka barisan 10 bilangan yang dihasilkan ialah :

n xn 0 0 1 11 2 3 3 15 4 14 5 7 6 9 7 6 8 2 9 8 Barisan : 0113151479628

3.2. Pembangkit Bilangan Acak Penuh (PBAP) Sebaliknya dari PSAB, Pembangkit bilangan acak penuh menghasilkan barisan bilangan dari ekstraksi fenomena aktivitas fisika dan kemudian mengirimkannya kepada komputer melalui interface dengan port serial ataupun parallel. Beberapa fenomena fisika yang digunakan ialah waktu dekomposisi dari materi radioaktif, seperti yang digunakan pada layanan Hotbits yang diberikan laboratorium FormiLabs, ataupun gangguan (noise) dari suatu perangkat elektronis (resistor, semikonduktor). Bahkan, hampir semua fenomena yang sering terjadi pada kehidupan sehari-hari yang kita jalani juga dapat dijadikan sumber untuk menghasilkan barisan bilangan acak, misalnya saja jumlah gelembung udara pada akuarium ikan, jumlah bintang yang terlihat pada suatu malam, dan lain-lainnya.

Permasalahan dari penentuan fenomena yang dapat dijadikan sumber untuk PBAP adalah apakah sumber itu dapat dibaca oleh suatu perangkat keras untuk kemudian dikirim pada komputer. Bahkan, seandainya sudah diimplementasikan suatu hardware yang dapat membacanya, untuk kemudian ditransmisikan pada komputer, masih ada kemungkinan bahwa komunikasi ini gagal sehingga merusak bit yang ditransmisikan. Selain itu, permasalahan lainnya ialah apakah fenomena yang terjadi dapat diatur aktivitasnya dengan suatu

trigger yang dimanipulasi. Sesungguhnyafenomena

tersebut tidaklah bersifat benar-benar acak. Selalu ada suatu formula yang dapat menjelaskan bagaimana ia berperilaku, hanya saja formula ini sangat kompleks dan sulit untuk mendapatkan nilai parameternya. Misalnya saja pada fenomena pelemparan koin, seorang ahli matematika bernama Diaconis pernah mendemokan penelitiannya dalam memprediksi sisi mata uang mana yang akan keluar pada suatu sesi pelemparan. Parameter yang ia butuhkan ialah sisi mata uang sebelum dilempar, dan jumlah gaya yang diberikan pada saat

(3)

pelemparan., tentunya dengan memasukan faktor gravitasi yang ada. Terbukti bahwa, dengan perhitungan sederhana yang dibuat, ia dapat memprediksi semua sesi pelemparan. Tetapi untuk fenomena lainnya, mungkin kekuatan berpikir manusia tidak sanggup menjangkaunya. Kita tidak akan dapat memprediksi jumlah gelembung yang akan muncul di suatu akuarium berisi ikan, kecuali kita mengetahui bagaimana formula dan keterhubungan gaya-gaya antara air, ikan, udara di dalamnya, serta gesekan yang terjadi. Dan hal tersebut sangatlah sukar diprediksi jika kita tidak menyebutnya dengan mustahil.

Karena PBAP ini selalu menghasilkan bilangan yang benar-benar acak, tidak atau sangat susah ditentukan dengan suatu trigger (non-deterministic), serta tidak bersifat periodik (sangat sulit menentukan bagaimana perilaku fenomena tersebut terulang), maka akan sangat cocok digunakan pada aplikasi yang membutuhkan kepercayaan penuh pada bilangan acak yang dihasilkan. Aplikasi semacam itu ialah pada permainan judi, penentuan nomor pemenang pada permainan lotere, dan aktivitas enkripsi pada kriptografi.

Paradigma lainnya pada pembagkitan bilangan acak ialah dengan menggabungkan rutinitas pembangkitan bilangan acak penuh dengan semu. Secara sederhana maksudnya ialah setelah PBAP berhasilkan menghasilkan barisan bilangan acak, ia akan dijadikan suatu umpan (seed) dalam suatu algoritma PBAS. Misalnya saja algoritma PBAS yang digunakan adalah algoritma sederhana

xn = (PBAP() – ke n % 10) * 2 dimana :

xn ialah bilangan acak index ke-n

PBAP() ke n berarti bilangan acak yang dihasilkan PBAP pada index ke n

dan bilangan acak dari PBAP yang dihasilkan ialah : 11 0 2 1 9 7

maka bilangan acak baru yang dihasilkan ialah : 2 0 4 2 18 14

3.3. Perbandingan PBAS dengan PBAP

Berdasarkan karakterisktik masing-masing tipe pembangkit bilangan acak, kita dapat memberikan perbandingan antara keduanyan.

Karakteristik PBAS PBAP Efisiensi Sangat baik Sangat buruk Deterministic Det erminstic Nondeterministic Periode Periodik Tidak periodik

Dari tabel perbandingan tersebut, kita dapat menganalisa aplikasi apa saja yang harus menggunakan PBAS dan mana yang harus menggunakan PBAP Aplikasi Faktor Kecepatan Pembangkit paling sesuai Lotere dan pengundian Tidak terlalu penting PBAP Permainan dan judi Tidak terlalu penting PBAP Pengambilan sampel acak

Penting PBAP dan PBAS

Simulasi dan permodelan Sangat Penting PBAS Aplikasi kriptografi Penting PBAP Tujuan hiburan dan seni Tidak terlalu

penting PBAP dan PBAS

Pada aplikasi pengambilan nomor pemenang pada permainan lotere, haruslah menggunakan Pembangkit Bilangan Acak Penuh. Kita tidak ingin ada suatu pihak yang dapat mengatur nomor mana yang akan keluar. Pada permainan kartu digital, pengocokan kartu (shuffling) mengharuskannya agar tidak ada pemain yang mengetahui urutan penumpukan kartu yang ada. Prinsip keadilan pada permainan tersebut hanya akan berlaku jika PBAP diterapkan. Pada aplikasi kriptografi, enkripsi dilakukan untuk membuat data tidak bisa dibaca oleh orang yang tidak berwenang. Jika PBAS yang digunakan dan ada seorang yang berusaha untuk melakukan crack dengan teknik bruteforce, maka dijamin bahwa orang tersebut akan mendapatkan data yang sebenarnya, walaupun membutuhkan proses yang cukup lama.

Untuk menentukan tipe pembangkit bilangan acak mana yang paling sesuai untuk suatu kasus, kita harus menentukan faktor apakah dibutuhkan kecepatan dalam prosesnya, jumlah bilangan acak yang dibutuhkan, dan nilai kepercayaan terhadap

(4)

bilangan acak. Secara mendasar jika dibutuhkan kecepatan dan jumlah barisan bilangan yang banyak, maka gunakan PBAS, dan jika dibutuhkan kepercayaan yang tinggi terhadap bilangan acak, maka gunakan PBAP. Namun, jika faktor-faktor tersebut saling bertentangan, maka penuhi faktor yang paling mendesak.

4. IMPLEMENTASI PEMBANGKIT BILANGAN ACAKi

Dalam makalah ini, penulis mengimplementasikan sebuah pembangkit bilangan acak yang menjadikan aktivitas sistem komputer seperti, processor, physical memory (RAM), virtual memory,

pembacaan harddisk, penulisan harddisk, internet

download, dan internet upload sebagai sumber

bilangan acaknya. Masing-masing parameter bersifat tidak terikat, dalam artian dapat dijadikan sumbernya ataupun tidak. Terdapat sebuah

checkboxi yang mengatur apakah parameter tersebut

dimasukan dalam perhitungan atau tidak.

Aktivitas processor ialah persentase penggunaan processor pada waktu yang bersangkutan. Aktivitas

Physical dan Virtual memory adalah persentase

penggunaannya. Aktivitas Pembacaan dan Penulisan Disk adalah kecepatan aktivitas disk dalam Byte / second. Internet download dan upload adalah aktivitas internet dalam bytes receives / second dan bytes sent / second.

Aplikasi ini diimplementasikan dalam lingkup pengembangan bahasa C# dengan Visual Studio 2005 sebagai editornya. Pembacaan state dari masing-masing elemen komputer tersebut dilakukan dengan menggunakan API System.Diagnostics dan

System.Management.

Prosedur pembangkitan bilangan acak pada aplikasi tersebut ialah :

1. Membaca state masing-masing elemen komputer yang termasuk dalam check-box

2. Masing-masing nilai yang dihasilkan dari elemen tersebut akan masuk ke dalam sebuah algoritma sederhana. Yaitu :

double i = 1.00; for(each element) { if(checked()) i += randOperation(d,state()) }

Dimana fungsi randOperation() adalah suatu fungsi yang mengoperasikan salah satu dari operasi perkalian, pembagian, penambahan, pengurangan, dan modulo. Operasi tersebut dipilih secara random dengan fungsi rand() bahasa pemrograman. Dan fungsi

state() adalah fungsi yang membaca state dari

masing-masing elemen.

3. Mengubahnya menjadi mode binary jika

checkbox binary dipilih

4. Menampilkannya kepada pengguna

Sebagai informasi, aplikasi dapat menampilkan kedudukan terakhir dari elemen komputer yang ada. Informasi ini dapat ditampilkan dengan cara menekan tombol yang bertuliskan “Show Info”. Tampilan dari informasi tersebut sebagai berikut :

Secara berurutan berisi nama processor , model processor, nama user yang sedang log dalam sistem operasi, aktivitas CPU (processor), sejarah penggunaan CPU dalam bentuk Grid Chart,

aktivitas penggunaan virtual memory, physical memory, sejarah penggunaan physical memory,

aktivitas disk (pembacaan dan penulisan), aktivitas

(5)

Secara teknis, nilai dari masing-masing elemen processor akan ditentukan seberapa banyak task yang sedang berjalan. Jika sedang multi-tasking, maka nilai bilangan yang dihasilkan akan besar. Sebaliknya, jika tidak ada aktivitas yang dilakukan, maka bilangan yang dihasilkan akan kecil dan bahkan mencapai 0. Untuk itu, penulis menambahkan satu fungsi randOperation()dengan tujuan agar nilai bilangan yang dihasilkan tidak dapat atau sulit diprediksi hanya dari mengetahui jumlah task yang sedang dijalankan. Berikut ini akan ditampilkan laporan penggunaan aplikasi dalam beberapa kondisi :

Sumber

Multitask 5 Bilangan

Acak

Processor(Intel

Pentium4 2.8

G)

3

428, 750,

-137, 260, -75

10

-523, -823, 0,

429, 429

Physical

Memory

(1500MB

Visipro DDR1)

3

10, 0, 360,

350, 10

10

-389, 409,

410, 400, 10

Virtual

Memory

(2110MB)

3

10, 0, 10, 266,

256

10

288, 289, 299,

298, 0

Disk Read (B /

second)

3

10, 0, 10, 10,0

10

0, 0, 0, 10, 10

Disk Write (B /

second)

3

-10457801,

2352126, 0, 0,

0

10

487386, 0,

-14612572, 0, 0

Semua

Komponen

3

377, 13183, 6,

17574, -27486

10

162,

-591,

19014, -267,

19014, -267,

19

5. KESIMPULAN

Saat ini, banyak aktivitas digital yang membutuhkan pembangkitan bilangan yang acak. Untuk itu, dibuatlah sebuah aplikasi yang dapat menyediakan bilangan yang tidak berulang atau acak. Berdasarkan nilai keteracakannya, pembangkit ini dibagi menjadi dua jenis, yakni Pembangkit Bilangan Acak Semu dan Pembangkit Bilangan Acak Penuh. Kita dapat mengkombinasikan keduanya untuk digunakan pada berbagai situasi yang sesuai, yakni gunakan pembangkit pertama jikadiperlukan kecepatan dan jumlah barisan bilangan acak yang besar, dan gunakan pembangkit kedua jika dibutuhkan kepercayaan yang tinggi terhadap bilangan acak ini.

6. DAFTAR REFERENSI

[1] AB. Format, “Manuscript Format”, Proc. Of

SITIA, Jun 2002, Surabaya, Indonesia, pp.6-9.

[2] Munir, Rinaldi. Diktat Kuliah IF5054 Kriptografi. Institut Teknologi Bandung. 2005 [3] LavaRnd, Terms & Definitions :

Pseudo-Random Number Generator http://www.lavarnd.org/faq/prng.html (diakses pada September 2007)

[4] Ferguson, Niels dan Schneider, Bruce. Practical Cryptography, John Wiley. 2003

[5] Introduction to Randomness and Random Number http://www.random.org/randomness/ (diakses pada September 2007)

[6] Davis, Robert. Hardware Random Number Generator, sebuah tulisan yang dipresentasikan pada 15th Australian Statistics Conference

(6)

i Aplikasi dapat didownload pada http://s.itb.ac.id/~claudio135/kripto

Referensi

Dokumen terkait

Filtering bekerja pada layer aplikasi sehingga berfungsi sebagai firewall packing filtering yang digunakan untuk melindungi jaringan local dari serangan atau

Hasil survey menunjukkan bahwa di Desa Meuasah Kulam, Crak Mong dan Pulo Raya cocok untuk dikembangkan budidaya air payau dengan jenis biota kepiting bakau ( Scylla serrata ),

Dalam pandangan Umar, pemberian bagian zakat kepada golongan muallaf pada awalnya adalah dilakukan karena melihat yang ada pada saat itu, yaitu kondisi mental para

Sedangkan yang ketiga tentang bagaimana pembebanan tanggung jawab pidananya apabila tindak pidana korupsi ini dilakukan oleh korporasi ditentukan pada ayat (7)

Menurut asumsi peneliti bahwa jenis makanan yang sehat dan anaknya tidak sulit makan 33 responden (62,3%) karena mungkin pengetahuan orang tua tentang variasi makanan

Diabetes mellitus merupakan gangguan metabolisme kronik yang ditandai dengan tingginya konsentrasi glukosa di dalam darah atau disebut juga hiperglikemia, yang disebabkan

Untuk sahabat-sahabat yang paling mendukung, Dedek Murni Rezeki Hutapea terimakasih untuk semua hal yang pernah kita jalani dan kita bagi berdua, terimakasih

Tipe rumahtangga dalam penelitian ini adalah rumahtangga yang dikepalai pria (RTKP) dan rumahtangga yang dikepalai wanita (RTKW). RTKP dimana yang menjadi kepala keluarga