June 4, 2013 thumb GPG (GNU Privacy Guard)

Setelah sekian lama tidak menulis, akhirnya bisa meluangkan sedikit waktu disela-sela kesibukan. oke, kali ini saya ingin membahas sedikit tentang GPG, alias GNU Privacy Guard alias Metode Enkripsi dengan prinsip gembok dan kunci. wih apa itu ? kalo tertarik silakan di simak.

GPG (GNU Privacy Guard) adalah suatu software enkripsi yang mengimplementasikan RFC2440. Penggunaan program ini biasanya ditemui pada enkripsi email atau sebagai digital signature (Tanda Tangan Digital). Model enkripsi yang digunakan adalah PKI (Public Key Infrastructure).  bentuk public key infrastructure menghasilkan dua buah kunci yaitu Private Key dan Public Key, dimana menurut saya Private Key adalah Kuncinya dan Public Key adalah Gemboknya.

Private key adalah kunci yang hanya diketahui oleh pemiliknya sedangkan public key adalah kunci yang sebisa mungkin disebar seluas-luasnya. untuk menyebarkan public key, bisa dilakukan dengan memasang ke server, menampilkan di website atau dimasukan kedalam key server seperti pgp.mit.edu atau www.keyserver.net. cara paling efektif adalah menyimpanya di keyserver, dimana setiap orang dapat mencari/mendownload dan menyimpan public key orang lain untuk digunakan suatu hari nanti.

ilustrasinya seperti ini, Huda memiliki sebuah Kue ultah yang akan diberikan kepada Safitri. dia berencana memberikan kejutan dengan meletakan bingkisan ini tepat di depan pintu rumahnya tepat pukul 12 malam. akan tetapi huda ragu, apakah nantinya aman jika bingkisan itu diletakan di depan rumah, jangan-jangan bukan safitri yang mengambil melainkan adheknya yang doyan banget sama makan, bisa-bisa kue ultahnya gak sampe ke safitri. oleh karena itu, huda menyimpan bingkisan kue ultah dalam sebuah kotak (Encryption). supaya hanya safitri yang bisa membukanya huda memasang gembok (Public Key) yang mana kuncinya (Private Key) hanya dimiliki oleh Safitri. dengan demikian siapapun yang menemukan kotak tersebut tidak akan bisa membukanya karena telah digembok (Public Key) dengan gembok milik safitri.

ilustrasi diatas mengibaratkan dimana Kotak adalah Encryption-nya, Gembok sebagai Public Key dan Kunci sebagai Private Key. sekarang kita coba contoh penggunaanya. Huda memiliki sebuah file bernama cinta.txt, dimana dalam file tersebut terdapat puisi cinta huda kepada safitri. rencananya file tersebut akan dikirimkan melalui MMS ke handphone safitri, masalahnya adalah, siapa tahu waktu dikirim mms, ternyata yang membuka bukan safitri, tapi ibunya, wah bisa malu dong. oleh karenya huda melakukan enkripsi (Pembungkusan Kotak) menggunakan public key (Gembok) milik safitri. kemudian dikirimkan kepada handphone safitri. jika ternyata yang menerima orang lain, tentu saja tidak bisa dibuka. jikalau dipaksa dibuka, paling-paling cuma berisi mantra pengusir jin dan jun. sedangkan jika safitri ingin membacanya, safitri bisa melakukan pembukaan file enkripsi (Dencryption) menggunakan private key-nya. sehingga bisa file asli bisa terbaca seperti semula.

oke demikianlah ilustrasi diatas, ketika safitri tidak tahu siapa yang mengirim kado bingkisan. apakah itu benar-benar huda ataukah orang lain. tentu saja hal ini harus di verivikasi siapa pengirimnya. pada kasus ini, sebelum huda membungkus Kadonya maka Huda menambhkan disana sebuah ucapan Untuk Sayang dari Sayang, Huda… :D, plus disana diberikan sebuah cap jempol milik huda, sehingga nantinya safitri tinggal mencocokan cap jempol tersebut dengan fotokopi ktp huda yang dimiliki safitri. nah inilah yang dinamakan Digital Signature. sebelum melakukan enkripsi maka disertakan pula Digital Signature pada file cinta.txt yang dienkripsi. sehingga ketika file tersebut dapat diverivikasi siapa pengirimnya. pada kasus ini Cap Jempol yang digunakan untuk menanda tangani adalah Private Key milik Huda, sedangkan Fotokopi KTP Huda yang dimiliki oleh safitri, adalah Public Key Huda.

sehingga dapat disimpulkan seperti ini, untuk penggunaan GPG ini maka : safitri memiliki Public Key dan Private Key, kemudian huda juga memiliki Public Key dan Private Key. untuk bisa saling berkomunikasi maka, safitri memberikan Public Key-nya kepada huda, dan huda memberikan Public Key-nya kepada safitri. jika huda ingin mengirim sesuatu pada safitri, huda menggunakan Public Key (Gembok) Safitri untuk mengenkripsi (Kotak) kemudian menyertakan Digital Signature (Cap Jempol)  menggunakan Private Key Huda. ketika data diterima safitri, safitri membuka file dengan Private Key (Kuncimiliknya sendiri. kemudian untuk memastikan bahwa file ini asli huda yang mengirim, maka safitri melakukan pengecekan Digital Signature (Cap Jempol) yang disertakan dalam file tersebut menggunakan Public Key (Fotokopi KTP) Huda.

oke, kira-kira seperti itu ilustrasinya, sekarang kita coba praktekan. dari penjelasan diatas maka ada  5 hal yang akan kita lakukan.

  1. Membuat Private Key dan Public Key. (Pair Key).
  2. Export Public Key.
  3. Import Public Key.
  4. Mengenkripsi Teks.
  5. Mendenkripsi Teks.
  6. Menandatangani Suatu File (Digital Signature)
  7. Memverivikasi Tanda Tangan.

1. Membuat Private Key dan Public Key.

untuk membuat private key dan public key anda membuthkan sebuah software bernama GPG Generator, hampir semua distribusi linux menyertakan dalam paket default. cukup ketikan perintah berikut untuk memulai membuat sebuah pair.

goblooge@goblooge-PC ~ $ gpg –gen-key

gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection?

disini kita bisa memilih metode untuk membuat sebuah pair key, terlihat ada 4 buah yang bisapilihan. untuk (3) dan (4), hanya bisa digunakan untuk membuat digital signature saja sedangkan (1) dan (2) dapat digunan untuk enkripsi dan digital signature.  algoritmanya pun bisa dipilih, mau Elgamal dan DSA atau RSA dan RSA. biasanya yang dipakai adalah RSA dan RSA. kalau bingung langsung saja pilih 1 dan tekan enter.

RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)

berikutnya kita ditanya seberapa panjang algoritma RSA yang ingin kita buat. default nilainya adalah 2048 bit, nilai maksimal adalah 4096, semakin panjang semakin aman, tapi akan semakin lama untuk melakukan denkripsi. tapi dengan panjang 2048 saja, orang butuh waktu 5 tahun untuk bisa melakukan cracking menggunakan brute force. jadi pilih defaultnya saja, langsung tekan enter.

Please specify how long the key should be valid.

0 = key does not expire

<n> = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0)

berikutnya seberapa lama kunci ini akan dianggap valid, atau istilahnya pair key ini expired datenya kapan. kalau may 2 hari bisa masukan 2, kalau mau 2 minggu masukan saja 2w (2 weeks), kalau mau masukan 5 bulan, masukan 5m (5 month), dan kalau mau 10 tahun, masukan 10y (10 years), kalau mau gak pernah Expired Date masukan 0, artinya akan terus dipakai sampai mungkin kunci private anda hilang :D. sebagai default saya pilih 0, jadi langsung saja tekan enter.

Key does not expire at all Is this correct? (y/N)

setelah itu anda akan ditanya apakah anda yakin dengan setting ini, jika yakin ketikan y, jika tidak maka silakan ketikan n, dan anda akan ditanyai mulai dari awal. karena saya sudah yakin saya ketikan y. lalu tekan enter.

You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: “Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”

Real name: Nurul Huda

Email address:goblooge@gmail.com

Comment: Kunci Private Seumur Hidup

You selected this USER-ID: “Nurul Huda (Kunci Private Seumur Hidup) <goblooge@gmail.com>”

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

berikutnya kita akan ditanya tentang ID dari pair key milik kita. masukan saja seperti yang saya lakukan, jika sudah benar ketikan O lalu tekan enter.

We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.

berikutnya anda akan diminta untuk memasukan password anda dua kali, silakan masukan password anda, kemudian anda akan diminta untuk menggerakan mouse, mengetikan keyboard dan lain-lain sehingga komputer dapat membangkitkan Random Generator, silakan ketikan keyboard secara ngawur, gerakan mouse secara ngawur juga, supaya komputer dapat membangkitkan Random Generator dengan baik. tunggu sampai selesai dan akhirnya pair key telah tercipta. 

gpg: key 903A23B5 marked as ultimately trusted public and secret key created and signed.

gpg: checking the trustdb gpg: 3 marginal(s) needed,1 complete(s) needed,

PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f,2u

pub 2048R/903A23B5 2013-05-05

Key fingerprint = 960D C67E A101 48B7 75B0 877C DC01 683D 903A 23B5

uid Nurul Huda (Kunci Private Seumur Hidup) <goblooge@gmail.com> sub 2048R/3A7F23C5 2013-05-05

disini tampak bahwa pair key ini memiliki ID 903A23B5 dan Fingerprint (Signature Key)  960D C67E A101 48B7 75B0 877C DC01 683D 903A 23B5.

2. Export Public Key

seperti yang dikatakan tadi, public key harus didistribusikan kesemua orang entah bagaimanapun caranya. sekarang kita export public key kita untuk didistribusikan. ketikan perintah berikut :

goblooge@goblooge-PC ~ $ gpg –export -a goblooge@gmail.com
—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v1.4.11 (GNU/Linux)

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
/mSi
=DLir
—–END PGP PUBLIC KEY BLOCK—–

 

Blok text di atas adalah public key goblooge@gmail.com. Pilihan (-a) digunakan untuk mengexport key dalam bentuk text. Tanpa pilihan itu maka key akan diexport dalam bentuk binary. jika anda ingin mencoba, Silakan coba ulangi perintah di atas tanpa opsi -a. Hasilnya akan menjadi file binary.

Teks itu dapat kita distribusikan melalui segala macam media seperti website, melalui email, atau disubmit key keyserver agar dapat diakses oleh orang lain dengan mudah.

Oke demikian sedikit ilmu yang bisa saya bagi, untuk tutorial import public key, enkripsi dan denkripsi text dapat dibaca di “Mengimport, Enkripsi dan Denkripsi pada GNU PG (Versi 2)” , sedangkan untuk digital signature dan verivikasinya dapat dilihat di “Signature dan Verivikasi pada GPG (versi 3)“, Salam.

Comments

total comments