GNU Privacy Guard

GNU Privacy Guard

Oleh : Kamas Muhammad <kamas(@t)its.ac.id>

GPG (GNU Privacy Guard) adalah suatu software enkripsi yang mengimplementasikan RFC2440. Penggunaan program ini biasanya ditemui pada enkripsi email atau sebagai digital signature. Model enkripsi yang digunakan adalah PKI(Public Key Infrastructure). Dengan demikian seseorang pasti mempunyai sepasang kunci yaitu Private Key dan Public Key. Tulisan ini membahas secara ringkas beberapa penggunaan umum GPG yang biasa dilakukan.

Private/Public Key

Private Key adalah kunci enkripsi yang hanya boleh diakses oleh pemilik kunci, sedangkan public key sebisa mungkin harus disebarkan seluas-luasnya. Penyebaran public key ini dapat dilakukan secara manual, yakni dengan cara mendownload dari web seseorang, atau seseorang dapat juga mengirimkan public keynya ke suatu keyserver yang menyimpan public key banyak orang seperti pgp.mit.edu atau www.keyserver.net. Semua orang dapat mencari/mendownload public key milik orang lain untuk digunakan di kemudian hari.

Private key digunakan untuk mendekrip chiper text yang ditujukan kepada sang pemilik, atau menandatangani suatu dokumen/file yang dikirimkan kepada orang lain. Bagaimana dengan public key? Key inilah yang digunakan oleh orang lain untuk mengenkrip file teks yang ditujukan kepada sang pemilik key, atau untuk memeriksa/verifikasi keaslian dokumen yang telah ditandatangani oleh pemilik private key.

Ilustrasi Pemakaian

Sebagai contoh, mari kita bayangkan bahwa Sokam akan mengirim email yang berisi puisi cinta kepada kekasihnya, Wawa. Sebelum Sokam dapat mengenkrip puisi cintanya, dia harus memiliki public key Wawa. Sokam dapat meminta Wawa untuk mengirimkan public keynya melalui email, atau mencari di keyserver bila Wawa sudah mensubmitnya. Dengan menggunakan public key itulah maka Sokam dapat mengenkripsi puisi cintanya untuk kemudian dikirimkan kepada Wawa.

Wawa menerima puisi cinta dari Sokam dalam bentuk yang terenkripsi. Untuk membacanya Wawa perlu mendekrip teks itu. Selain Wawa tidak ada orang lain yang dapat mendekrip puisi cinta itu, karena hanya Wawalah yang mempunyai private keynya. Bila private key Wawa jatuh ke tangan orang lain, maka orang itu juga dapat mendekrip segala macam email terenkripsi yang ditujukan kepadanya. Maka dari itu Wawa harus menyimpan private keynya secara baik dan aman.

Pada kasus di atas, ada kemungkinan bahwa yang mengirimkan puisi cinta itu bukanlah Sokam, namun orang lain yang berpura-pura menjadi Sokam. Bukankah email itu dienkrip? Ya, memang. Namun karena enkripsi menggunakan public key sebagai kunci enkripsinya maka siapa pun yang mempunyai public key wawa dapat mengenkrip teks untuk Wawa. Oleh karena itu ada baiknya bila Sokam juga menandatangani emailnya. Untuk membubuhkan digital signature, kita harus menggunakan private key, dan bukan public key. Pada saat menerima email puisi cinta itu, Wawa harus memverifikasi bahwa digital signature yang terdapat di sana benar-benar asli milik Sokam dengan menggunakan public key milik Sokam. Dengan begitu wawa boleh merasa yakin bahwa puisi itu benar-benar dikirim oleh Sokam.

Instalasi

Pada beberapa distro program ini terinstall secara otomatis/default. Bila pada distro anda pgp belum terinstall, maka anda dapat mencari paket yang sesuai dengan distro yang anda pakai, atau mungkin menginstall manual dari source code yang bisa didownload dari http://www.gnupg.org/download/index.html.en.

Penggunaan

Penggunaan yang akan dibahas di sini singkat saja, hanya mencakup beberapa hal yang biasa digunakan yaitu:

1. Pembuatan Keypair.
2. Export Public Key.
3. Import Public Key.
4. Mengenkrip teks.
5. Mendekrip teks.
6. Menandatangani suatu file
7. Verifikasi tandatangan.

Interface command line program ini adalah gpg. Penggunaannya ditentukan oleh beberapa parameter yang kita berikan di command line.

1. Pembuatan Keypair

Sebelum menggunakan fasilitas yang ditawarkan oleh gpg, anda harus membuat keypair(pasangan private dan public key) terlebih dahulu.

[sokam@yudowati 17:54 sokam]$ gpg –gen-key
gpg (GnuPG) 1.2.4; Copyright (C) 2003 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) RSA (sign only)
Your selection?

Di sini anda dapat memilih algoritma yang digunakan untuk membuat keypair. Penggunaan DSA(2) atau RSA(4) terbatas pada digital signature dan tidak dapat digunakan untuk mengenkrip suatu teks. Pilih DSA and ElGamal dengan memasukkan angka “1” atau cukup dengan menekan tombol [Enter].

DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)

Pada bagian ini anda dapat memilih panjang kunci (dalam bit) yang digunakan sebagai kunci. Panjang key untuk DSA adalah 1024, dan yang anda pilih adalah panjang kunci ELG-E. Aturan umum yang berlaku adalah semakin pendek ukuran key yang anda pakai maka semakin mudah key itu dicrack oleh orang lain, namun dapat dikomputasi lebih cepat oleh komputer. Semakin panjang ukuran key, kamungkinan cracking semakin sulit, namun komputasinya juga memakan daya yang cukup besar. Untuk saat ini key dengan panjang 1024 bit dianggap sudah cukup kuat. Anda dapat memasukkan angka 768 atau 2048 untuk mengubah nilainya, namun bila anda memilih 1024 maka anda cukup menekan tombol [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)

Masukkan lama berlaku key anda. Lama waktu dapat mempunyai satuan hari, minggu, bulan, atau tahun. Bila anda memilih defaultnya (0) maka key anda akan berlaku seumur hidup atau sampai anda kehilangan private key anda. he..he..he.. Berapa pun masa berlaku yang anda pilih, anda akan dimintai konfirmasi mengenai pilihan anda.

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

Real name: Kamas Muhammad
Email address: kamas@entahlah.com
Comment: sokam
You selected this USER-ID:
“Kamas Muhammad (sokam) <kamas@entahlah.com>”

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

Berikutnya anda harus memberi input minimal pada Real name dan Email address. Teks yang anda masukkan pada bagian Comment akan muncul di dalam tanda kurung. Masukkan huruf “O” dan tekan [Enter] bila anda sudah selesai.

You need a Passphrase to protect your secret key.

Enter passphrase:

Masukkan passphrase anda. Passphrase ini dimasukkan dua kali. Ingat, jangan memasukkan passphrase yang mudah ditebak, tapi anda harus bisa mengingatnya.

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.
++++++++++.++++++++++++++++++++…+++++++++++++++++++++++++..++++++++++.+++++
.++++++++++++++++++++..++++++++++.++++ ++++++++++++++++++++++++++..+++++
………………………………………………………………….
….. .+++++
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.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++++++
++++++++++++++++.++++++++++++++++++++++ ++++.+++++++++++++++…………
……………………………………………………………..++++
+^^^
public and secret key created and signed.
key marked as ultimately trusted.

pub 1024D/7D2597DD 2004-12-13 Kamas Muhammad (sokam) <kamas@entahlah.com>
Key fingerprint = DB9A F0A9 31E2 ED77 3AFF  3D26 ADD5 B92F 7D25 97DD
sub 1024g/FE6B4921 2004-12-13

Karakter acak yang muncul seperti pada cuplikan di atas menunjukkan proses pembuatan keypair. Setelah proses ini selesai, maka hasilnya akan ditampilkan di bawah. Pada contoh di atas key yang baru dibuat mempunyai sidik jari DB9A F0A9 31E2 ED77 3AFF  3D26 ADD5 B92F 7D25 97DD, dengan UserID 7D2597DD.

2. Export Public Key

Seperti yang tadi sempat disebutkan bahwa public key harus didistribusikan(entah dengan cara apa) kepada orang lain. Untuk itu kita harus mengexport public kita.

[sokam@yudowati 18:53 sokam]$ gpg –export -a kamas@entahlah.com
—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v1.2.4 (GNU/Linux)

mQGiBEG9e+MRBACCNz0Ikx4jouFT1Z3dY8mGwiDVxJuATRr7SpHCA+endBjR9d1R
zd9MLD5eyvHtVIeeii8oFNCHw7WA6wREblvcRrNPqHjmkR2lIlKI4QEosQsaAN/8
fy5eLlWZvrZjjepVde6kSuiM4ClN2tuTgplXDjwBGattWcTh5OgL1qyUIwCg3kF9
+mvEE7V0aZNe96kz8FkOlc0D/RzEdtkJWqblZ7CHmR85seybul/EWFUYv+4r0xfx
wF5dtr2G1VOauZWM6y5TcrsvHHzdtQYZhbZ9tqPZ8J64+00GKdHR/7ZyBbB6iAo8
DOxON1x/euGHNcsp2q1VSvXsbQ6phb6bMZMj47AbDwzrrX/djX+F58ajRsf+yCIW
Wf+TA/wLpNwUUAwltNv+k1JfG8Xb3Xi6Uif97n9biFPE//cIZ8v3XshObiQg9KRR
BHtcZR++UN21gtAtmooO54Ymo6EMqfOw6dEuQL1lykcKPEcU8graBZMMA8/pVMMM
OuOsCzEGFdp12SpS5YbTBoRYYh5Gt6BK8MK28Z3M2LA5WHHh97YAAAArS2FtYXMg
TXVoYW1tYWQgKHNva2FtKSA8a2FtYXNAZW50YWhsYWguY29tPoheBBMRAgAeBQJB
vXvjAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJELmv46iRqkXy4QEAmQGGoOnW
7i0PqsP4QsXbEsCOoKr4AKCVyejE2rGcjMs73n44YMANAlWsFrkBDQRBvXvrEAQA
+l30skBL33SJjpq63WIVt9Td64TBlACbdHdg51t/hNL/1sO54Q4d6xFCUvhcZnA3
L6b9+KHz2Z15k19/DVV35Yo0jQiM5V9gim4PPnLO7UwNyANeD6da6lrjsCcKZx4F
rHjM5iKU/z5VT2cAgeiMhPMA0XkmsKPQaGdjFV69f1cAAwUD/iWWZUkpEkpfh+HE
v8rtP6kPJ64s2gBivtQGnRJysUfOQJ2tSXlyajveZmwYuHRVMmDMDo9YEajtakqL
j5Q+FYwvWWoM8CXNgN5WBjEiBFFCOvx2IhqbiZajqQ7pv9+UiyFyjmSODb4eEmSj
vvA+8VLq1L9YcBHLl/tdTEXBkRAFiEkEGBECAAkFAkG9e+sCGwwACgkQua/jqJGq
RfJy7QCgnzANWiq4N7ljv8wbPDLYONFV5LAAoNTexQryWjGYBW+UVhD7mBBmi+uD
=HMhm
—–END PGP PUBLIC KEY BLOCK—–

Blok text di atas adalah public key kamas@entahlah.com. Pilihan (-a) digunakan untuk mengexport key dalam bentuk text. Tanpa pilihan itu maka key akan diexport dalam bentuk binary. Penasaran? Silakan coba ulangi perintah di atas tanpa opsi -a. Hasilnya takkan menyakiti siapa pun.

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.

3. Import Public Key

Sebelum anda dapat mengenkrip teks untuk orang lain atau memverifikasi tanda tangan orang lain anda harus mengimport public key orang itu. Pada contoh ini sokam mengimport public key milik wawa yang telah didownload dan disimpan pada file pkwawa.asc.

[sokam@yudowati 19:05 sokam]$ gpg –import < pkwawa.asc
gpg: key 6A31E44C: public key “Purwaning <wawa@sayang.com>” imported
gpg: Total number processed: 1
gpg: imported: 1

Sekarang, pada daftar key dapat kita lihat bahwa kita memiliki 2 key yakni milik kamas dan wawa.

[sokam@yudowati 19:08 sokam]$ gpg –list-key
/home/sokam/.gnupg/pubring.gpg
——————————
pub 1024D/7D2597DD 2004-12-13 Kamas Muhammad (sokam) <kamas@entahlah.com>
sub 1024g/FE6B4921 2004-12-13

pub 1024D/6A31E44C 2004-12-13 Purwaning <wawa@sayang.com>
sub 1024g/F0F8A1D0 2004-12-13

4. Mengenkrip Teks

Misal kita mempunyai sebuah file dengan nama fileteks.txt. Isi file ini sebelum dienkrip bila dilihat dengan cat tampak seperti di bawah ini.

[sokam@yudowati 19:13 sokam]$ cat fileteks.txt
Tak kuasa ku menahan jenuh ini
Kian lama kian menyesak menyiksa
Dalam hampa

Sebaiknya kau biarkan ku memilih
Agar tiada kendala antara kita
Yang menjadi penyesalan

Kuingin memahami segala yang menjadi beban di benakmu
Hilangkanlah prasangka seolah kumengekang keinginan
Yang kau pendam

Kini file teks di atas akan dienkrip untuk wawa@sayang.com

[sokam@yudowati 19:16 sokam]$ gpg -e -r wawa@sayang.com -a fileteks.txt

Perintah di atas memiliki beberapa opsi yaitu:

* -e/–encrypt: mengenkrip suatu file.
* -r/–recipient: tujuan pesan. Pilihan ini menentukan public key mana yang digunakan untuk mengenkrip pesan kita. Pada contoh di atas tujuannya adalah wawa@sayang.com.
* -a/–armor: output enkripsi dalam bentuk ascii/text, bukan binary.

Hasilnya adalah sebuah file dengan nama fileteks.txt.asc yang isinya adalah sebagai berikut.

[sokam@yudowati 19:16 sokam]$ cat fileteks.txt.asc
—–BEGIN PGP MESSAGE—–
Version: GnuPG v1.2.4 (GNU/Linux)

hQEOA9QUeAPw+KHQEAP5AbYFeQGqYOOEZe+NW+QOzAASegaTe5aX/l9tVr5+CnHR
YGlDDfSiH6+usTLqsxTDnnh7gczlLk89hYPIiFCVoXz56396wN7gGhGwNIdiiC4P
j+3WjuaarT7I/ykftPDLAv5B6SWZOclrj0xs9JT4UpSBs/zkHSuA1IHBWcwVrDID
/2xtGghcRj1uant3TWmeesHicvy6BaE8tq5xzyrM4y8DQHWc/Q6XGFolUcvhghwn
OYuaeM9KcchZ360tzQFuU0qDRkbnLpf9Y0ukvJG6yZ364pHTYIltvrdHxqnOZQTa
+NHIGitD7ec5bz7rbRj5lS557SsuIswUIN1wdjAbWCru0sBCAZ/OvlZDKCTAvN9s
rXW127sEZtL11/NvU9pX47qKaWbjSN6/B71zCScMOrncjt39nRacfHJZHjC/uMAR
soCt6UQj7tTvBu+RkopjBp4f4QyiNXbj5hICmfV4VtO81tzXWkBM3d+uvSkstqBg
RIrO3A2XC73OGp6CHwWfP6sBPkTtnljiX/x8BhhZZga1fJ563KToShBqPqsffy6h
PMf2ncqvU/sxA/ZmpWZ4VZdvBqVusfB322aG8Sft2n0eHpbr28PUG0PPJiz65O23
mYrLSDXJvXqSfiThfTies0Lm8NrP5/WE0qkT+ibQiBh0aqpK6Rk+hbE8xhf/9cAh
b0cCCYRQ
=uUMQ
—–END PGP MESSAGE—–

Dapat kita lihat bahwa hasilnya sudah tidak bisa lagi dibaca. Puisi romantis itu kini telah menjadi huruf acak yang hanya Wawa saja yang dapat membukanya.

5. Mendekrip teks

Teks yang dikirim oleh Sokam ke Wawa adalah teks yang telah dienkrip, sehingga bila di tengah jalan ada orang yang iseng mengintip, maka mungkin dia hanya bisa membaca mantra pengusir nyamuk yang takkan jelas suaranya bila dia tetap nekat membacanya.

Wawa pun akan menerima teks yang persis sama, yaitu dalam bentuk yang terenkrip. Hanya saja, karena Wawa mempunyai private key dari public key yang digunakan oleh Sokam mengenkrip puisinya maka dia dapat membaca isi file itu. Berikut adalah keluaran dekrip teks yang dilakukan oleh Wawa.

[wawa@yudowati 19:30 wawa]$ gpg –decrypt fileteks.txt.asc

You need a passphrase to unlock the secret key for
user: “Purwaning <wawa@sayang.com>”
1024-bit ELG-E key, ID F0F8A1D0, created 2004-12-13 (main key ID 6A31E44C)

Enter passphrase: ******
user: “Purwaning <wawa@sayang.com>”
1024-bit ELG-E key, ID F0F8A1D0, created 2004-12-13 (main key ID 6A31E44C)

gpg: encrypted with 1024-bit ELG-E key, ID F0F8A1D0, created 2004-12-13
“Purwaning <wawa@sayang.com>”
Tak kuasa ku menahan jenuh ini
Kian lama kian menyesak menyiksa
Dalam hampa

Sebaiknya kau biarkan ku memilih
Agar tiada kendala antara kita
Yang menjadi penyesalan

Kuingin memahami segala yang menjadi beban di benakmu
Hilangkanlah prasangka seolah kumengekang keinginan
Yang kau pendam

Untuk mendekrip teks itu Wawa perlu memasukkan passphrase yang digunakan saat dia membuat keypair. Bila passphrase yang dimasukkan salah maka file itu tidak dapat didekrip. Bila yang passphrase yang dimasukkan benar maka seperti yang tampak pada potongan teks di atas, Wawa dapat membaca puisi yang dikirim oleh Sokam.

6. Menandatangani Suatu File

Selain dienkrip, suatu file juga dapat ditandatangani sehingga nantinya dapat diperiksa apakah file/teks yang diterima benar-benar dikirim oleh orang yang diharapkan atau tidak. Puisi sokam bila ditandatangani tanpa dienkrip akan tampak seperti di bawah ini.

[sokam@yudowati 19:55 sokam]$ gpg -u 7D2597DD –clearsign fileteks.txt

You need a passphrase to unlock the secret key for
user: “Kamas Muhammad (sokam) <kamas@entahlah.com>”
1024-bit DSA key, ID 7D2597DD, created 2004-12-13

Enter passphrase: *****

[sokam@yudowati 20:03 sokam]$ cat fileteks.txt.asc
—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

Tak kuasa ku menahan jenuh ini
Kian lama kian menyesak menyiksa
Dalam hampa

Sebaiknya kau biarkan ku memilih
Agar tiada kendala antara kita
Yang menjadi penyesalan

Kuingin memahami segala yang menjadi beban di benakmu
Hilangkanlah prasangka seolah kumengekang keinginan
Yang kau pendam

—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBvZFBrdW5L30ll90RAqtsAJ94Mg5X4g8szoIlPhWenHld/Rh/AwCfYNyf
XvI3bQEJ4C5Itu2S4Kz5Ga0=
=Yi1E
—–END PGP SIGNATURE—–

Parameter (-u) digunakan untuk menentukan username yang digunakan untuk menandatangani file yang kita sebutkan. Parameter ini tidak dibutuhkan bila default-key telah dikonfigurasi pada ~/.gnupg/options. Yang dipakai untuk menandatangani adalah private key, jadi kita tidak bisa menandatangani suatu teks dengan menggunakan public key orang lain. –clearsign adalah pilihan untuk menandatangani dalam bentuk clear text.

7. Verifikasi Tandatangan

Setelah ditandatangani oleh pengirim, penerima juga harus memverifikasi tandatangan yang dibubuhkan pada file itu. Kini Wawa akan memeriksa apakah yang mengirim file itu benar-benar Sokam.

[wawa@yudowati 20:11 wawa]$ gpg –verify signed.asc
gpg: Signature made Mon Dec 13 19:55:29 2004 WIT using DSA key ID 7D2597DD
gpg: Good signature from “Kamas Muhammad (sokam) <kamas@entahlah.com>”

Output “Good Signature” merupakan tanda bahwa tandatangan yang dibubuhkan benar-benar dari sokam.

Lain-lain

Seperti yang telah disinggung di atas, gpg biasa digunakan dalam pengiriman email. Banyak Mail User Agent (MUA) yang telah mendukung penggunaannya, namun ada juga yang tidak/belum mengimplementasikan fungsi pgp ini. Beberapa mail client yang dapat menjalankan gpg adalah Mutt, Mozilla-thunderbird(plugin enigmail), Pine, The Batt, dan beberapa MUA lain yang daftarnya dapat dilihat pada http://www.gnupg.org/related_software/frontends.en.html. MUA yang belum mendukung gpg antara lain: MS Outlook, MS Outlook Express, dan lain-lain.

Selamat mencoba, semoga sukses.

dongkrak
BOC Banner

2 Comments

  • noveardi says:
    February 15, 2011 at 3:29 pm

    Mas. bli mau tanya kok di cPanel ku GNU Key nya ga ada ya cuma ada
    -password protect direc
    -IP Deny Manager
    -Hot Link Protection
    -Leech Protect
    -GNU PG key nya ga adaa

    tolong dibantu ya

    thanks

  • Nangning says:
    March 1, 2009 at 2:21 am

    Fyuh … lieur euih… Bagus bagi yg tahu hehehehe.

Leave A Response

Promo Hosting

Promo 3 Tahunan Web Hosting

Mendapatkan 3 tahun kontrak web hosting hanya dengan bayar harga setahun, gratis domain name hingga beri cashback ke pelanggan. Stock sangat terbatas dan bilamana tercukupi maka promo akan kami akhiri. Segera klaim paket web hosting 3 tahunan nya di halaman Promo Hosting 3Tahunan.

Web Hosting Cpanel
Web Hosting LiteSpeed
Web Hosting CloudLinux
Web Hosting PHP
Web Hosting Linux