Monday, December 24, 2007

Hack 0x06 : Random Number Generator

Oleh Dendi Suhubdy A.K.A Cron of NuLL

Random number generator (RNG) atau pembangkit bilangan acak, kerap kali diimplementasikan di dalam berbagai algoritma kriptografi. Contohnya saja pada algoritma kriptografi Deffie-Helman yang memerlukan bilangan prima sebagai input. Nah, cara yang paling efektif untuk mendapatkan suatu bilangan prima acak adalah dengan cara melakukan pembangkitan bilangan acak kemudian mengetes apakah bilangan yang dibangkitkan itu berupa bilangan acak atau tidak. Sekarang pertanyaannya adalah……apa algoritma untuk melakukan pembangkitan bilangan acak tersebut?


Yupzzz, Anda dapat menggunakan rand() atau Math.Random() pada C++ atau System.Random pada C# (red. C sharp) atau java.util.Random pada Java. Namun, jika Anda memeriksa algoritma yang digunakan oleh fungsi-fungsi tersebut, Anda akan menemukan bahwa itu adalah RNG yang lambat…..masih ada cara untuk mempercepatnya beberapa CPU clock cylces…lagipula baru-baru ini ditemukan security flaw pada fungsi rand() sehingga bilangan acak ini dapat dibangkitkan kembali (artinya tidak benar-benar acak) dan ini merupakan ancaman yang serius untuk dunia kriptografi.

Kalau Anda adalah orang yang haus akan ilmu hacking dan matematika diskrit…….inilah jawabannya……..

Algortima pertama adalah R250/5231 yang diciptakan oleh Kirkpatrick dan Stoll yang dipublikasikan di A Very Fast Shift-Register Sequence Random Number Generator, J. Computational Physics, vol 40, pp. 517-526.

Algoritma yang kedua adalah Mersenne Twister yang diciptakan pada tahun 1996 oleh Matsumora dan Nishimura.

Source codenya dapat di compile dengan gcc v3.3…….atau kalau Anda benar-benar kreatif, ubahlah source code ini sesuai dengan keinginan Anda……tetapi jangan lupa pada kontribusi orang-orang yang menciptakan algoritma ini. Upzzzzzzzz, gw lupa kalau source code java dan C#nya juga ada. Berikut linknya dari semua source codenya.


0 comments:

Template by - Abdul Munir | Daya Earth Blogger Template