Kriptografi part 5

Nah, lho apaan ini? Kok tiba-tiba part 5?….

Haha… sebenarnya rencananya semua jurnal mata kuliah saya kasih part sesuai dengan jumlah assignment yang diberikan dosen. Sampai saat ini, sudah ada 5 assignment yang sudah diberikan dosen yaitu dua buah tugas besar dan tiga buah tugas kecil. Sekarang adalah deadline tugas kecil 3, yang temanya Kriptografi RSA. Kami “dipersilahkan” (ga buat juga ga apa-apa tapi ga dapet nilai) untuk membuat program yang dapat melakukan enkripsi dan dekripsi RSA. Apa itu algoritma RSA? cek aja di sini : http://en.wikipedia.org/wiki/RSA. Sebenarnya saya ingin menjelaskan ke pembaca juga tapi karena ga ada LaTeX di wordpress, saya jadi malas….

Yah, intinya, RSA adalah algoritma yang “katanya” saat ini paling aman digunakan untuk kriptografi. RSA menggunakan kunci asimetri, berbeda dengan Vigenere Cipher dan sebangsanya yang kuncinya simetri. Jadi, kunci enkripsi dan dekripsi RSA berbeda. Kunci ini sendiri ditentukan menggunakan teori bilangan yang melibatkan dua buah bilangan prima p,q dan perkaliannya, yaitu n. Konon, jika n ini berhasil difaktorkan, maka akan sangat mudah mendapatkan kunci dekripsinya (karena kunci enkripsi dilepas secara umum ke publik) yang sifatnya rahasia. Namun kekuatan algoritma RSA adalah dari besarnya bilangan prima p dan q yang dijadikan masukan untuk menghitung n. Semakin besar bilangannya, makin bagus. Saat ini, standar penggunaan RSA adalah dengan n sepanjang 2048 bit (256 byte).

Nah, tugas kecil yang diberikan pada kami adalah tugas untuk mengimplementasikan algoritma ini. Karena n minimal 256 byte, maka bilangan prima p dan q paling tidak 16 byte. Dalam bahasa pemrograman, struktur data primitif dengan kapasitas 16 byte itu tidak ada. Double precision Integer biasanya sepanjang 64 bit, alias 8 byte. Untuk menampung data integer sebesar hingga 256 byte ini, tentunya kita tidak bisa menggunakan struktur data primitif biasa.

Nah, untungnya komunitas open source mengembangkan pustaka GMP (GNU Multi Precision). Dalam GMP ada kelas BigInt yang bisa menampung nilai integer, berapapun besarnya. Untuk yang tertarik, bisa cek di http://gmplib.org/ untuk source code dan binary untuk C++. Karena tugas kami (kelompok saya) menggunakan C# kami menggunakan pustaka .NET yang sebenarnya hanya pembungkus pustaka GMP untuk C++ tadi. Pustaka versi .NET ini bisa dilihat di :http://www.emilstefanov.net/Projects/GnuMpDotNet/. Emil Stefanov ini orang Berkeley divisi Sains Komputer. Proyek-proyek yang dipost di webnya unik-unik, misalnya ini :  http://www.emilstefanov.net/Projects/RangeSearchTree.aspx, yang sepertinya bisa digunakan dalam pengembangan game.

Nah, berkat GMP inilah, akhirnya tugas saya bisa selesai. Untuk pembaca yang penasaran, saya tampilkan bilangan prima yang digunakan untuk  tugas saya ini:

Bilangan Prima

Bilangan Prima

Kalo gambarnya diliat, agak besar juga lho. Tadinya mau copy paste, tapi sayangnya wordpress tidak bisa memformat tulisan sepanjang itu…

5 thoughts on “Kriptografi part 5

  1. Saya Rizky Maulana Nugraha, Pak…
    Primality testnya menggunakan Rabbin-Millet test, pak. Sebenarnya itu sudah ada di source-code GMP. Jadi kami tinggal pakai saja.
    hehe… saya masih blogger baru, Pak. Jadi belum berani pasang nama. Nanti saya tulis saja di About.
    Makasih sudah komentar, pak…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s