Senin, 08 April 2019

Bermain enkripsi asimetrik dengan RSABoy

Internet, HTTP dan HTTPS


Internet erat kaitannya dengan kehidupan sehari-hari kita saat ini. Internet adalah sebuah sistem global yang saling terhubung yang biasanya menggunakan Transmission Control Protocol (TCP) / Internet Protocol (IP) untuk menghubungkan setiap perangkat.*

Internet dapat juga dikatakan sebagai sebuah sarana untuk komunikasi. Dalam komunikasi, sudah pasti menyertakan data-data. Untuk memudahkan transfer data-data tersebut yang biasanya terjadi melalui browser, maka dibuat protokol Hypertext Transfer Protocol (HTTP) yang merupakan turunan dari TCP/IP. **

Secara sederhana, HTTP ini mengatur komunikasi antara web browser dan web server. HTTP menggunakan clear text format. Penggunaan clear text format dalam mengirimkan data, tentu saja ini tidak aman. Jika saja ada orang yang berhasil meng-intercept pengiriman data ini, maka dia akan dapat melihat/menguasai data-data yang dikirimkan. Teknik intercept ini dalam dunia hacking biasanya disebut dengan Man in The Middle Attack.

Untuk membuat komunikasi aman, maka dibuatlah protokol HTTPs dimana penambahan S adalah sigkatan dari secure dimana data-data yang dikirimkan sudah di enkripsi sehingga orang-orang yang mencoba mendapatkan data tersebut tidak akan dapat membaca data tersebut. Pada tempat lain, penerima data perlu men-dekrip data tersebut sehingga dapat menbaca informasi yang dikirimkan.

Hampir semua proses tersebut diatas; enkripsi, dekripsi, kemanana komunikasi dinamakan dengan cryptografi.***


Enkripsi Simetrik dan Asimetrik


Sampai saat ini, ada 2 jenis enkripsi; simetrik dan asimetrik.

Pada enkripsi simetrik, kata kunci yang digunakan untuk enkrip dan dekrip adalah sama. Sehingga penerima dan pengirim harus saling mengirimkan kata kuncinya.

Pada enkripsi asimetrik, kata kunci yang digunakan tidak perlu dibagi kepada penerima. Begitu juga sebaliknya. Enkripsi ini menggunakan pasangan publick dan private key. Enkripsi ini lazim juga disebut dengan public-key encription/cryptography. Enkripsi jenis ini sangat praktis digunakan untuk berbagai macam keperluan karena pengirim tidak perlu mengirimkan kata-kuncinya kepada setiap orang yang menerimanya.

Enkripsi asimetrik dapat dijelaskan dengan contoh kehidupan nyata seperti berikut;
- Diketahui; si Anu dan si Budi ingin mengirimkan satu batang emas kepada si Anu.
- Untuk membuat transaksi ini aman, maka si Anu membeli sebuah gembok (pasti disertai kunci)
- Si Anu menyampaikan kepada si Budi; "Kalau kamu ingin mengirimkan emas kepada saya, tolong masukkan kedalam kotak yang kamu punya dan tutup dengan gembok saya ini", sambil memberikan gembok yang telah dibelinya.
 - Sehari setelah itu, si Budi pergi membeli emas dan meletakkan emas tersebut kedalam kotak dengan nama dia dan menutup kotak dengan gembok yang diberikan si Anu.
- Si Budi pergi ke kantor pos dan mengirimkan kotak tersebut kepada alamat si Anu.
Dengan contoh diatas, maka emas yang dikirim akan aman sampai di tujuan walaupun pak pos bisa melihat kotaknya.


Bermain dengan RSABoy


Sekitar satu tahun yang lalu, saya pernah membuatkan sebuah aplikasi sederhana yang saya beri nama RSABoy. Source code dapat dilihat pada https://github.com/nitzaalfinas/RSABoy

Mari mulai bermain-main RSABoy untuk dapat memahaminya melalui contoh kasus;

1. Disuatu kota Hoax, hiduplah Bolang yang mempunyai pendengaran tajam dan Batman kuat tetapi sudah cukup tua. Mereka adalah super hero yang baru saja kenal dan ingin saling bahu membahu menumpas kejahatan. Dikota ini banyak sekali informasi invalid yang beredar di masyarakat.

2. Untuk dapat berkomunikasi dengan aman dan tanpa hoax, maka mereka harus saling bertukan gembok. Eh... public key.

2.a. Bolang mengeksekusi perintah:
$ rsaboy.jar '{"command": "generate_key", "filename": "Bolang"}'

2.b. Batman mengeksekusi command:
$ rsaboy.jar '{"command": "generate_key", "filename": "Batman"}'

Perintah-perintah diatas menghasilkan private key dan public key. Bolang.priv.pem, Bolang.pub.pem, Batman.priv.pem, Batman.pub.pem.

3. Kemudian mereka saling bertukar public key.

4. Setelah satu minggu mereka berkenalan dan saling tukar gembok, eh... public key, maka tibalah saat yang ditunggu tunggu. Si Bolang mendengar sebuah keributan pencurian banteng di jalan Rabbit.

5. Dengan sigap si Bolang mengeksekusi perintah untuk mengirimkan pesan kepada si Batman.
Untuk mengirimkan perintah ini, Bolang perlu menggunakan gembok, eh... public key Batman. Perintah yang dijalankan adalah seperti berikut;

$ rsaboy.jar '{"command": "encrypt", "message": "Criminals are in action on Rabbit Road", "pubkey_file": "Batman.pub.pem"}' SKl21Quj/bGR1HMRNrc/qiNAFXIU8RAhBfJdQNmSwgHLKw1KFVfu78+jcQ8UAsXtG6hd8ih9y+Kpdu8aDSxGIh4MNaTBlibfuODdvjhRvBJEr+iX6rzN+2q3+2bwD/gyckePhdGyXNGEmQXTUCf9RWrsVur4gRNdzl5xiE/jQxDhrBo5IN8okTLYJ/5AQNQh2Ic7Rm91M4N70wOM/M0FWzrwFmBTFuQ3pC2+ZeMJfHR5KQ3EP1dNo4xA8GDjgSkE6fmkyWhbQspT3cLUKCHFfna9N+m8x0icbZ7MYFnzTREWrgewpNjuTFH9hmxnLQ7DWulyOlgR48V0RPQBCVr8Dg==

Setelah mendapatkan enkripsinya, maka dia perlu menempatkan dalam kotak bertanda Bolang. Atau dalam kata yang lebih rumit adalah memberikan tanda tangan atau signature.
Memberikan tanda tangan harus dilakukan dengan private key si Bolang sendiri. Perintahnya adalah seperti berikut:

$ rsaboy.jar '{"command": "sign", "message": "Criminals are in action on Rabbit Road", "privkey_file": "Bolang.priv.pem"}' btT3N2EFuokJUqXfW0IN9MrGe0pi/FuvQ3sFE987/B2OKHuzZnrLl0YVfRp1i3O4Nnrhf9AfCI9ELxQQ2OENDIPQa2iA8/hKEh23IwzZyYBCQGRHc6Gzreoo5OA3IvsXABtJLXJKaNJuKvwpIl0/lTMyqbxZt7Etbfh+LsOovXzSRlDwwvOWLPk5XF8b9UFJm9IWar/EsXhO4Ee6Me49nGc7CDApwzOvv1mufn36MyrdrmQGW6W9YYme58ZBWzYu9/UmH97JLcyXS/X6uYk/iXqWUC81uBO/QA0VpaaUkVXmwvKYLSHhzrEF5ubUrYsxGT/QSkbLK2IwPBD4kDYJUg==

Setelah itu, Bolang mengirimkan signature dan kata-kata yang sudah ter-enkripsi kepada Batman.

6. Batman menerima pesan dan langsung men-dekrip pesan yang diberikan menggunakan private key, eh... kunci Batman.

$ rsaboy.jar '{"command": "decrypt", "message": "SKl21Quj/bGR1HMRNrc/qiNAFXIU8RAhBfJdQNmSwgHLKw1KFVfu78+jcQ8UAsXtG6hd8ih9y+Kpdu8aDSxGIh4MNaTBlibfuODdvjhRvBJEr+iX6rzN+2q3+2bwD/gyckePhdGyXNGEmQXTUCf9RWrsVur4gRNdzl5xiE/jQxDhrBo5IN8okTLYJ/5AQNQh2Ic7Rm91M4N70wOM/M0FWzrwFmBTFuQ3pC2+ZeMJfHR5KQ3EP1dNo4xA8GDjgSkE6fmkyWhbQspT3cLUKCHFfna9N+m8x0icbZ7MYFnzTREWrgewpNjuTFH9hmxnLQ7DWulyOlgR48V0RPQBCVr8Dg==", "privkey_file": "Batman.priv.pem"}' 
Criminals are in action on Rabbit Road

Untuk mengetahui apakah benar ini pesan bukan hoax dan memang benar dikirimkan oleh sahabat super heronya yaitu Bolang, maka Batman harus memverifikasi dengan perintah berikut:

$ rsaboy.jar '{"command": "verify", "message": "Criminals are in action on Rabbit Road", "signature":"btT3N2EFuokJUqXfW0IN9MrGe0pi/FuvQ3sFE987/B2OKHuzZnrLl0YVfRp1i3O4Nnrhf9AfCI9ELxQQ2OENDIPQa2iA8/hKEh23IwzZyYBCQGRHc6Gzreoo5OA3IvsXABtJLXJKaNJuKvwpIl0/lTMyqbxZt7Etbfh+LsOovXzSRlDwwvOWLPk5XF8b9UFJm9IWar/EsXhO4Ee6Me49nGc7CDApwzOvv1mufn36MyrdrmQGW6W9YYme58ZBWzYu9/UmH97JLcyXS/X6uYk/iXqWUC81uBO/QA0VpaaUkVXmwvKYLSHhzrEF5ubUrYsxGT/QSkbLK2IwPBD4kDYJUg==", "pubkey_file": "Bolang.pub.pem"}' 
true

7. Ternyata benar, dan si Batman ganti sempak dulu sebelum mulai beraksi....



------------------------------------------------------

*) https://en.wikipedia.org/wiki/Internet
**) https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.2.0/com.ibm.cics.ts.internet.doc/topics/dfhtl_conintro.html
***) https://www.educba.com/cryptography-vs-encryption/


1 komentar:

  1. Machinists adjusted their mills and lathes manually, directing the sharp edge of the chopping tool toward the appropriate section of the workpiece utilizing levers or wheels. This is kid bathroom shower curtain still a typical approach, and skilled machinists can machine supplies with a excessive level of precision. Tracers and patterns additionally be|may also be|can be} used to extend accuracy and repeatability. And if you require an element with a singular or complicated form, have the ability to|you probably can} at all times rely on Ideal Machining & Supply for customized CNC milling that can meet your exact specifications. We can tailor our customized CNC milling providers to your distinctive manufacturing processes and include three-axis and five-axis milling. Whether you require a prototype or a completely functioning product for the tip user, in a position to} complete the job quickly assist you|that will assist you|that can assist you} keep up along with your tight manufacturing schedules.

    BalasHapus

Apa itu blockchain

Blockchain adalah sebuah database bersama yang datanya tidak dapat diubah. Blockchain  memfasilitasi proses pencatatan transaksi dan pelacak...