2nd

2 Muharram – Jum’at

entry - quote  :“
dari yang kecil kita tahu yang besar ”

entry – vocab  : 

an intriguing rump session aside conference building
commence my crypto-discovery

Enak juga bisa ngerasain tidur siang…tapi gw masih belom
bisa ngeliat dengan jelas karena lensa kacamata gw patah….hmmpp..
 

RSA (2)

Melanjutkan hal kemarin tentang blok operasi pada RSA maka
pada tulisan ini akan diberikan sedikit gambaran bagaimana sebenarnya RSA
diimplementasikan di dunia nyata.

 RSA Laboratories, sebuah perusahaan
yang didirikan oleh para penemu RSA, mengeluarkan sebuah dokumen yang disebut Public Key Cryptography Standard
(PKCS). PKCS itu seperti RFC pada dunia computer. PKCS sendiri terdiri dari
banyak seri, yang mendefinisikan masing-masing fitur kriptografi. Nah untuk RSA
itu sendiri didefinisikan pada PKCS nomor 1 (ya iyalah, masa anak emasnya
ditaruh di nomor dua).

Jadinya gampang kan kalau mau buat aplikasi RSA, liat aja PKCS 1. Paling ngga kita tidak akan
melakukan kesalahan2 bodoh yang dapat membuat aplikasi kita tampak kurang gagah apalagi sampai mengurangi
keamanan dari user. Terlepas bahwa RSA Laboratories berasal dari Amerika yang
penting kan ilmunya (klo kita berdebat masalah politik ataupun “teori konspirasi” mah ga
bakalan ada ujungnya, malah akan membuat kita berkhayal yang ngga2 en
aplikasinya malah gak jadi nantinya).

Oke lanjut ya.. 

PKCS 1 sendiri udah 3 kali terbit, edisi revisi terakhir
adalah PKCS 1 versi 2.1 yang dikeluarkan pada 14 Juni tahun 2002. Lha kok
“revisi”?

Revisi karena PKCS 1 perlu disesuaikan dengan perkembangan
jaman terutama untuk mengantisipasi serangan terhadap RSA itu sendiri. Nah setelah 5 tahun setengah diterbitkan
sepertinya belum ada versi PKCS yang baru. Oleh karena itu yang akan dibahas
adalah versi 2.1 ini.

Isu utama yang
melingkupi versi 2.1 ini adalah pada apa yang disebut “plaintext-aware encryption”. Maksudnya adalah ternyata kita perlu
mendesain plaintext yang akan
dioperasikan dengan RSA sedemikian rupa agar tidak dapat di-crack dengan mudah oleh orang yang tidak
berhak. Kenapa begitu? Bukankah cukup dengan mengoperasikan pada blok bit yang
lebih besar akan membuat frekuensi analisis jadi sia-sia.

 RSA itu kan public-key. Layanan dalam public-key kan berbeda. Protokol yang
digunakan tentunya berbeda juga. Skenario serangan juga akan berbeda. Nah
ternyata RSA dapat diserang dengan lebih mudah jika ia telah diimplementasikan
menjadi protokol. Silakan baca paper James Manger pada LNCS 2139 tahun 2001
halaman 230-238. Klo googling cari aja dengan keyword “chosen ciphertext
attack+oaep+james manger+pdf”.

Klo ketemu kata
yang disebut “oracle” maka boleh sih
dibayangin sosok Oracle di file The Matrix.
Semula gw meragukan oracle tapi ternyata oracle
itu mungkin kok.
Ntar kita bahas di lain waktu yang lebih pas.

 
PKCS 1 versi 2.1

RSAES-OAEP is parameterized by the choice of
hash function and mask generation

function. This choice should be fixed for a
given RSA key
.

 Kalimat
diatas gw kutip dari PKCS 1 versi 2.1. Jadi ada 2 kata kunci yang penting yaitu
hash function” dan “masking”.

 Tanpa mengesampingkan item
yang lain, ada 2 item utama pada PKCS
1 ini. Pertama adalah pengadopsian kunci privat yang memungkinkan proses
dekripsi dilakukan lebih cepat melalui skema Chinese Remainder dan yang kedua adalah Pengkodean pesan sebelum
dienkripsi (pengadopsian plaintext-aware).
Nah pengkodean pesan itu dilakukan
dengan bantuan fungsi hash dan masking.
Penjelasan mengenai bagaimana skema Chinese
Remainder
digunakan dapat dilihat pada sub bagian 3.2 RSA private key pada
PKCS 1 versi 2.1. Sekarang kita fokuskan pembahasan pada desain pesan yang
menerapkan plaintext-aware encryption.

 
RSAES-OAEP

Nama
keren dari pengkodean pesan itu adalah RSAES-OAEP. Jangan tertipu oleh namanya
yang nyentrik. RSAES-OAEP adalah singkatan dari RSA Encryption Scheme-Optimal
Asymmetric Encryption Padding. Jadi intinya adalah “padding”. Sebelum pesan diproses melalui formula M^e (mod N) maka M
di-padding sedemikian rupa supaya
oke-punya. Cara padding-nya tentu ga
sembarangan karena operasi RSA itu sendiri itu udah cukup membebani prosesor
dan memori komputer maka padding
haruslah efisien tapi tetap Aman
(makanya namanya Optimal). Penjelasan
yang lain mengenai skema signature/tanda-tangan
ataupun mengenai PKCS 1 versi 1.5 dapat dibaca di dokumen PKCS 1 versi 2.1.

 Klo gambarnya gak
muncul, tolong liat Figure 1:EME-OAEP encoding operation
dari PKCS 1 versi 2.1 ya (mudah2an ada di halaman 19) …en ga usah bingung
dengan apa itu EME-OAEP, itu mah cuma nama alias aja.

 

Kotak yang
bersambung-sambung tersebut melambangkan oktet-oktet heksadesimal yang saling
meyambung (concate). M adalah pesan.
Pesan yang biasanya berupa string dikonversi terlebih dahulu menjadi oktet-oktet
heksadesimal melalui skema OS2IP (lihat halaman 9 dari pkcs 1 v 2.1). PS adalah
oktet nol yang digenerate oleh kita (panjangnya menyesuaikan panjang pesan dan
modulus) dan lhash adalah hasil
fungsi hash dari label yang kita berikan terhadap pesan. Panjang dari lhash adalah panjang output dari suatu
fungsi hash, kita sebut saja hlen. Fungsi
hash dapat dipilih dari 6 algoritma hash berikut, MD2, MD5, SHA-1, SHA-256,
SHA-384, SHA-512. Panjang dari nilai modulus penerima kita lambangkan dengan k, dimana nilai modulus tersebut
direpresentasikan dalam oktet heksadesimal (oktet heksadesimal itu dua digit
nilai heksa, misal 00h itu 1 oktet).Trio kwek-kwek tersebut kita sebut aja
dengan DB. Karena panjang dari lhash adalah hlen maka panjang dari DB
adalah k-hlen-1.

Kemudian kita
perlu menggenerate sebuah seed dengan
panjang sama dengan panjang hlen. Seed tersebut dimasukkan ke fungsi
pembangkit masking (Masking Generation Function-MGF) dimana
outputnya adalah oktet pseudorandom
dengan panjang k-hlen-1. Hasil dari
MGF yang pertama kemudian di-XOR dengan DB menghasilkan apa yang kita sebut
saja maskedDB.

Kemudian maskedDB dimasukkan lagi ke MGF sehingga
dihasilkan oktet pseudorandom dengan
panjang hlen. Hasil MGF ke-2 ini
di-XOR dengan nilai seed sehingga
menghasilkan apa yang kita sebut aja maskedSeed.

Nah tinggal tambah 1 oktet 00 didepan gabungan maskedSeed dan maskedDB kita dapatkan pesan yang sudah di-encode dan siap untuk dimasukkan ke operasi RSA.

 

Dapat kita lihat bahwa Keamanan dari RSAES-OAEP bergantung
pada kerandoman output dari fungsi hash yang digunakan. Dengan tumbangnya MD5 maka kita harus berhati-hati
dalam memilih fungsi hash. Sebaiknya gunakan SHA, klo bisa mulai SHA-256.

 Note :
- MGF adalah fungsi deterministik yang sepenuhnya
bergantung pada input.
MGF didasarkan pada fungsi hash. Karakteristik
keamanan yang diberikan oleh MGF adalah “Jika diberikan sebagian dari output
maka tidak mungkin memperkirakan bagian output yang lainnya”.
- PKCS 1 versi
2.1 ini juga masih menyediakan dukungan terhadap PKCS 1 versi 1.5, tapi
penggunaan versi 1.5 tidaklah disarankan untuk aplikasi baru. Pengkodean versi 1.5 hanya untuk mengatasi isu
kompatibilitas dengan aplikasi yang sudah lama.

One Response to “2nd”

  1. echa elia Says:

    yeeeeee

Leave a Reply