Ada 2 jenis kriptografi yang umum digunakan yaitu Kriptografi Simetris dan Kriptografi Asimetris. Dalam Kriptografi simetris, kunci yang digunakan untuk membungkus pesan (Enkripsi) dan yang digunakan untuk membuka pesan (Dekripsi) adalah kunci yang sama. Sedangkan dalam Kriptografi Asimetris, Kunci yang digunakan untuk membungkus pesan dan membuka pesan adalah kunci yang berbeda. Dalam Kriptografi Asimetris, Jika kita ingin membungkus sebuah pesan maka kita harus menggunakan Kunci Publik (Public Key) dan bila kita ingin membuka pesan tersebut maka kita harus membukanya dengan pasangan kunci dari Kunci Publik tesebut alias Kunci Privat (Private Key). Dalam Kriptografi Asimetris pun ada 2 Algoritma yang biasa digunakan yaitu RSA (Riverst Shamir Adleman) dan ECC (Elliptic Curve Cryptography).
Pada kesempatan kali ini saya akan membahas bagaimana cara mengenkripsi dan mendekripsi pesan dengan menggunakan RSA dan OpenSSL.
Mari kita siapkan bahannya terlebih dahulu:
- File pesanrahasia.tx yang di dalamnya berisi sebuah pesan.
- Sebuah Sertifikat digital (.p12) →sksosbud.p12
Enkripsi
- Convert file .p12 (sksosbud.p12) menjadi File Kunci Privat dengan nama sksos.key.pem menggunakan perintah OpenSSL. Caranya:
openssl pkcs12 -in sksosbud.p12 -passin pass:sksos -out sksos.key.pem -nocerts -passout pass:sksos
sksosbud.p12 yang diconvert menjadi private key Penjelasan:
* pkcs12 adalah tipe filenya sedangkan -in adalah inputan file.
* -passin adalah sebuah perintah yang diikuti argumen pass:<password>.
* -out adalah file keluarannya
* -nocerts adalah syntax untuk tidak mengeluarkan certificate-nya.
* -passout adalah output file yang diikuti dengan pass:<password> - Convert file .p12 (sksosbud.p12) menjadi File Kunci Publik dengan nama sksos.crt.pem menggunakan perintah OpenSSL. Caranya:
openssl pkcs12 -in sksosbud.p12 -passin pass:sksos -out sksos.crt.pem -clcerts -nokeys
Convert sksosbud.p12 menjadi Public Key Penjelasan:
* pkcs12 adalah tipe filenya sedangkan -in adalah inputan file.
* -passin adalah sebuah perintah yang diikuti argumen pass:<password>.
* -out adalah file keluarannya.
* -clcerts adalah perintah untuk mengeluarkan hanya client certificates.
* -nokeys adalah perintah untuk tidak mengeluarkan private key-nya.
Sampai tahap ini kita sudah mempunyai 4 file yaitu sksosbud.p12, sksos.key.pem, sksos.crt.pem dan pesanrahasia.txt.

- Tahap selanjutnya adalah mengenkripsi file pesanrahasia.txt dengan menggunakan kunci publik sksos.crt.pem. Caranya:
cat pesanrahasia.txt | openssl rsautl -encrypt -pubin -inkey sksos.crt.pem > cipher.txt
percobaan untuk mengenkripsi pesan - Dari pesan di atas, kita mendapatkan pesan error yaitu “Unable to load Public Key“. Maksudnya adalah Public Key tidak dapat digunakan untuk mengenkripsi pesan. Penyebabnya adalah Public Key yang kita generate sebelumnya itu tidak memenuhi standard. *CMIIW*
- Untuk itu, kita akan mencoba untuk men-generate kembali sebuah Public Key tapi kali ini dari Private Key yang sudah ada. Caranya:
openssl rsa -in sksos.key.pem -pubout -out sksos.pub.pem
Pembuatan Ulang Public Key namun kali ini dari file sksos.key.pem dan bukan dari sksos.p12 Penjelasan:
* -in adalah perintah untuk inputan yang diikuti dengan sebuah file, dalam hal ini adalah Private Key (sksos.key.pem)
* -pubout adalah perintah untuk keluaran Kunci Publiknya.
* -out adalah perintah untuk nama file keluarannya yang diikuti nama filenya. - Kita akan memeriksa isi kunci publik dari sksos.pub.pem yang baru saja kita buat. Caranya:
openssl rsa -in sksos.pub.pem -pubin -text -noout
perintah untuk melihat isi dari Kunci Publik Penjelasan:
* -in adalah perintah untuk inputan yang diikuti dengan sebuah file
* -pubin adalah publik key yang ada di dalam file ini
* -text adalah perintah untuk mencetak isi kunci publik tadi dalam bentuk text
* -noout adalah perintah untuk tidak mencetak kunci publik keluar dari file ini - Sekarang kita akan mencoba kembali untuk mengenkripsi pesanrahasia.txt dengan kunci publik namun kali ini kunci publik yang digunakan adalah sksos.pub.pem. Caranya:
cat pesanrahasia.txt | openssl rsautl -encrypt -pubin -inkey sksos.pub.pem > cipher.txt
Proses mengenkripsi pesanrahasia.txt Penjelasan:
* rsautl merupakan sebuah utilitas untuk penandatanganan, verifikasi, enkripsi, dan dekripsi.
* -encrypt merupakan perintah untuk mengenkripsi dengan kunci publik.
* -pubin merupakan inputan dari kunci publik
* -inkey merupakan sebuah perintah yang setelahnya diikuti oleh file kunci (dalam hal ini adalah sksos.pub.pem)
* chiper.txt merupakan nama file hasil enkripsi dari pesanrahasia.txt - Untuk benar membuktikan apakah cipher.txt merupakan pesan yang sudah tersenkripsi, kita jalankan perintah berikut:
cat cipher.txt
Pesan sudah tidak terbaca
Dekripsi
Kalau tadi kita sudah berhasil mengenkripsi sebuah pesan, maka kali ini kita akan mencoba untuk mendekripsinya. Masa iya pesan yang sudah dienkripsi tidak bisa di dekripsi? Tidak bisa dibaca dong pesannya. Proses dekripsi pada kriptografi Asimetris merupakan sebuah proses untuk membuka pesan yang terenkripsi dengan menggunakan pasangan kunci (kunci Privat).
Kalau pada contoh enkripsi di atas kita sudah berhasil mengenkripsi pesanrahasia.txt menjadi cipher.txt, sekarang kita akan mencoba untuk mendekrispinya dan mencari tahu apa sih isi cipher.txt tersebut. Berikut ini adalah langkah-langkah untuk mendekripsinya:
- cat cipher.txt | openssl rsautl -decrypt -inkey sksos.key.pem

Proses dekripsi pesan Penjelasan:
* -decrypt adalah perintah untuk mendekripsi
* -inkey merupakan sebuah perintah yang setelahnya diikuti oleh file kunci (dalam hal ini adalah sksos.key.pem) - Karena ini proses dekripsi maka setelah -inkey yang diletakkan adalah Kunci Privat. Kalau pada contoh enkripsi, setelah -inkey maka yang diletakkan adalah kunci publik.
- Saat ingin membuka pesan dengan menggunakan kunci privat, kita akan diminta untuk memasukkan password dari kunci privat tersebut. Kenapa kunci privat di password? karena kunci privat itu sifatnya rahasia dan hanya dimiliki oleh si empunya kunci (tidak boleh dibagikan), bukan seperti kunci publik yang bebas disebarluaskan.
- Voila!!! setelah memasukkan password dari kunci privat secara benar maka pesan pun akan langsung terdekripsi. isi pesannya ternyata adalah “Hai Apa Kabar?“.
Itu tadi sedikit tentang proses enkripsi dan dekripsi dengan menggunakan perintah Openssl dan RSA. Se,oga postingan ini bisa sedikit memberi tambahan informasi buat kalian ya.
🙂
Catatan
- Pesan yang sudah terenkripsi hanya dapat dibuka oleh kunci privat yang memang merupakan pasangan kuncinya. Selain itu maka tidak bisa.
- Kalau salah memasukkan password dari Kunci Privat maka pesan tidak akan terbuka dan akan muncul pesan error seperti berikut:

Salah memasukkan password dari Kunci Privat
