RSS

Bertukar Data secara Aman dengan GNU Privacy Guard

07 Jun

Berkirim data secara aman antara dua orang atau lebih menjadi penting jika data tersebut bersifat rahasia. Metode Pretty Good Privacy memungkinkan kita melakukan enkripsi data sekaligus membuktikan keaslian data.

Anda dan teman Anda hendak ber­kirim e-mail berisi data pen­ting. Agar lebih aman, Anda perlu memastikan bahwa identitas pengirim e-mail adalah benar adanya. Ini mirip seperti kita hendak melakukan layanan perbankan lewat telepon. Saat kita tersambung dengan petugas layanan pelangan (customer  service), pertama kita akan ditanya nama lengkap kita.  Tentu saja hal ini tidak cukup karena siapapun bisa mengaku sebagai orang tertentu di telepon. Oleh karena itu, kita akan ditanya nomor rekening kita. Tidak cukup sampai disitu, kita mungkin akan ditanya nama orang tua kandung atau bahkan nomor PIN. Untuk nomor PIN, biasanya dimasukkan lewat penekanan tombol di telepon.

Setelah Anda telah yakin identitas pe­ngirim sudah tepat, Anda pun dapat meng­­enkripsi e-mail yang akan dikirim. Pesan ini hanya bisa dibuka oleh seorang penerima yang mengetahui password dan “identitas” pengirim. Dengan demikian, kerahasiaan e-mail bisa dimaksimalkan. Tentu saja, titik lemah dari sistem ini tetap ada, yaitu pada aman tidaknya password yang digunakan.Pada artikel ini, Anda akan dipandu untuk menggunakan program bernama gpg, singkatan dari GNU Privacy Guard. Gpg adalah implementasi dari standar OpenPGP (Pretty Good Privacy). Ada dua versi gpg yang umum digunakan, yaitu versi 1 dan 2. Tulisan ini akan merujuk pada versi 2, tetapi secara teknis penggunaan keduanya tidak memiliki perbe­daan yang signifikan.

Seperti biasa, prompt # menunjukkan perintah dikerjakan sebagai user root, sementara prompt $ berarti boleh dikerjakan sebagai user biasa. Anda tidak perlu menggunakan distribusi (distro) tertentu untuk mempraktikkan tutorial ini, tetapi disarankan untuk menggunakan versi terbaru dari distribusi favorit Anda. De­ngan asumsi, distribusi Anda menggunakan program RPM dan Yum untuk manajemen paket. Periksa apakah gpg versi 2 sudah ter-install dengan perintah:

$ rpm -qa | grep gnupg2
Apabila tidak ada output yang muncul, lakukan instalasi dengan perintah:
# yum install gnupg2

Membuat pasangan kunci publik dan kunci privat
Langkah awal dalam penggunaan Gnu­PG adalah membuat kunci publik dan kunci rahasia. Kunci publik nantinya Anda pertukarkan dengan rekan yang akan membuka pesan Anda. Sementara itu, kunci rahasia (kadang disebut juga kunci privat) tetap Anda pegang (simpan).
Perintah berikut akan memulai proses pembuatan pasangan kunci:

$ gpg2 –gen-key
Akan muncul pilihan tipe kunci seperti berikut:
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?

linux2Pengelola key GPG  GPA (GNU Privacy Assistant) adalah GUI (Graphical User Interface) untuk program GnuPG (GNU Privacy Guard) yang berfungsi untuk mengelola key GPG Anda.

Untuk saat ini, ketik “1” dan [Enter]. Pilihan ini memungkinkan kita melakukan signing (penandatanganan suatu file) serta enkripsi. Dua pilihan lainnya hanya memungkinkan Anda melakukan sign.

DSA keypair will have 1024 bits.
ELG keys may be between 1024 and 4096
bits long.
What keysize do you want? (2048)

Pertanyaan ini meminta Anda menentukan panjang kunci. Secara teoritis, semakin panjang bit suatu kunci akan semakin baik. Namun di sisi lain, kunci dengan bit terlalu panjang akan relatif memperpanjang waktu enkripsi. Jadi kita ambil jalan tengahnya dan menerima angka 2048 bit. 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)

Berapa lama Anda ingin pasangan kunci Anda berlaku? Hal ini sangat subyektif. Seperti layaknya KTP atau passport yang punya masa berlaku, pasangan kunci PGP juga bisa diset agar otomatis “kadaluarsa”  setelah periode tertentu. Contohnya jika Anda mengetik “1m”, maka pasangan kunci tersebut akan kadaluarsa setelah satu bulan. Untuk praktik, dipilih 0 alias berlaku selamanya hingga dibuat menjadi kadaluarsa dengan suatu mekanisme tertentu. Gpg akan mengonfirmasi pilihan ini, cukup jawab dengan “y”.

Berikutnya, berturut-turut akan diminta untuk memasukkan nama lengkap Anda, alamat e-mail, serta komentar. Untuk apa sebenarnya data-data ini? Tujuannya adalah untuk menciptakan user id. Contohnya, jika Anda ketik nama “John Doe” dengan alamat e-mail “john.doe@gmail.com”, akan tercipta user id “John Doe <john.doe@gmail.com>”. Selanjutnya, user id ini akan digunakan untuk mengidentifikasi pasangan kunci Anda. Periksa kembali data yang Anda masukkan, lalu ketik “O” untuk melanjutkan ke layar berikutnya. Di sini Anda akan diminta memasukkan passphrase (beberapa kata) sebanyak dua kali. Passphrase ini pada dasarnya adalah password yang melindungi akses kunci privat yang Anda miliki. Anda disarankan menggunakan kombinasi angka dan huruf (agar lebih tinggi tingkat keamanannya) dengan panjang minimal 8 karakter.

Terakhir adalah penciptaan pasangan kunci itu sendiri. Akan ada pesan seperti berikut:

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.

Inti dari pesan di atas adalah program gpg membutuhkan bantuan Anda untuk menciptakan rangkaian bit acak. Anda dapat mengetik tombol keyboard secara acak, membaca beberapa file, memutar musik atau video, dan seterusnya. Karena manusia dapat bertindak secara tidak terduga, ini bisa menjadi acuan yang tepat bagi komputer untuk menghasilkan bilangan acak. Hasilnya, pasangan kunci yang tercipta pun bisa unik. Pada akhir proses, akan tampil pesan kurang lebih seperti ini:

gpg: key 1779C641 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:   1  signed:   0
trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2009-08-24
pub   1024D/1779C641 2009-08-17
[expires: 2009-08-24]
Key fingerprint = 1506 249C 4845
AEBD F3E5  3863 868A 920E 1779 C641
uid          John Doe <john.doe@gmail.com>
sub   2048g/3892297F 2009-08-17 [expires:
2009-08-24]

Perhatikan hal-hal dasar berikut:
l Key ID untuk pasangan kunci ini adalah 1779C641. Key ID digunakan untuk mereferensi pasangan kunci, alternatifnya adalah nama pemilik kunci (dalam hal ini John Doe).

l Fingerprint adalah semacam identitas unik bagi suatu kunci, bisa dilihat pada deretan angka heksadesimal di sebelah kanan “Key fingerprint =”. Dalam beberapa kasus, key ID dari dua pasang kunci bisa saja sama, tetapi fingerprint-nya pas­ti akan berbeda. Apabila Anda perhatikan, key ID adalah delapan digit terakhir angka dari fingerprint.

Setiap pihak yang terlibat dalam pertukaran data tersebut harus membuat pasangan kunci ini. Samapi tahap ini berarti Anda telah siap untuk melakukan pertukaran data dengan rekan Anda secara aman.

Ekpor dan Impor Key
Proses export atau import key diperlukan agar salah satu pihak mengenali identitas temannya, dalam hal ini bisa pengirim atau penerima.

Nantinya, pada kasus penge­cekan tanda tangan digital, si penerima data mengimpor kunci publik dari si pengirim data, dengan demikian identitas pengirim dapat dikenali oleh si penerima. Namun, berbeda untuk kasus enkripsi/decryption data, di sini si pengirim harus mengimpor kunci publik milik penerima data. Misalnya John akan mengirim kunci publiknya pada Bob. User John mengekspor dulu kuncinya dengan perintah:

$ gpg2 –export -a -o /tmp/gpg/john.key
‘John Doe’
Opsi -o memberitahukan ke file mana hasil ekspor dituliskan. Adapun  opsi -a akan menjadikan hasil ekspor dalam file ASCII. Lalu sebagai user Bob, impor file ini dilakukan dengan perintah:

$ gpg2 –import /tmp/gpg/john.key
gpg: key 1779C641: public key “John Doe
<john.doe@gmail.com>” imported
gpg: Total number processed: 1
gpg:               imported: 1

linux3
Telah Memilki tanda tangan digital   Pada tab “Signatures” dapat Anda lihat contoh suatu key yang telah memiliki “tanda tangan” dengan key milik kita

Langkah berikut ini opsional, tetapi disarankan untuk dilakukan agar kunci milik John dipercaya oleh Bob. Hal ini sekaligus akan meredam beberapa peringatan dari program GnuPG akibat suatu kunci dianggap belum bisa dipercayai. Proses ini disebut sebagai key signing.

Di sini diasumsikan bahwa user Bob sudah membuat pasangan kunci miliknya sendiri. Bob memberikan tanda digital pada John dengan perintah:

$ gpg2 –sign-key ‘John Doe’
Pada prompt, jawab dengan “y” jika Anda yakin ingin menandatangani kunci milik John. Selanjutnya, Bob akan mengekspor kunci ini dengan perintah:
$ gpg2 –export -a -o /tmp/gpg/john-signed.
key ‘John Doe’
Adapun John akan mengimpor kunci yang sudah disetujui oleh Bob dengan:
$ gpg2 –import /tmp/ gpg/john-signed.key
Kini John siap mengirim pesan pada Bob.

Tanda tangan digital pada file

Ada dua hal yang bisa dilakukan untuk memastikan bahwa data terkirim oleh pengirim yang valid. Pertama adalah membubuhkan tanda tangan digital pada data yang dikirim. Ini sama saja seperti Anda menandatangani dokumen misalnya curriculum vitae atau kuitansi. Hal tersebut menandakan bahwa dokumen tersebut setidaknya sudah Anda baca dan dinyatakan berasal dari Anda.

Cara kedua adalah dengan melakukan enkripsi data. Cara ini tentu saja lebih aman karena keseluruhan data tidak akan bisa dibaca kecuali oleh orang yang berhak. Misalnya, John hendak mengirim file teks berisi perintah:

$ cat /tmp/gpg/pin.txt
Pin saya: 3412
John menandatanganinya dengan mengetik perintah:
$ gpg2 –clearsign /tmp/gpg/pin.txt
Anda akan diminta untuk mengetikkan passphrase yang Anda tetapkan saat membuat pasangan kunci pertama kali. Apabila benar, akan tercipta file /tmp/gpg/pin.txt.asc dengan isi kurang lebih seperti ini

linux4
Membuat pasangan key Generate key digunakan untuk membuat pasangan key publik dan privat melalui GPA.

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

Pin saya: 3412
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v2.0.10 (GNU/Linux)

iEYEARECAAYFAkqJpkYACgkQho
qSDhd5xkHM3gCfdU8pZxirW3
VX0BPC9319QZCp
qhMAnRI9udu0P9uvFiHN85/v/r6HEG1A
=ZVgr
—–END PGP SIGNATURE—–
Bisa Anda lihat bahwa pesan asli Anda sekarang sudah termodifikasi. Bagian yang dibatasi oleh kata “Begin” dan “End PGP Signature” adalah tanda tangan digital kita berdasar kunci yang kita miliki. File pin.txt.asc inilah yang lalu John kirimkan ke Bob, bisa lewat e-mail atau media lain. Saat Bob menerima file ini, dia cukup mengetik:
$ gpg2 –verify /tmp/gpg/pin.txt.asc
gpg: Signature made Mon 17 Aug 2009
12:50:40 PM WIT using DSA key ID
0114B3C1
gpg: Good signature from “John Doe <john.
doe@gmail.com>”
Ini menandakan bahwa file memang beras
al dari John. Jika Anda tidak melakukan key
signing, maka akan ada pesan peringatan
seperti ini:
gpg: WARNING: This key is not certified
with a trusted signature!
gpg:          There is no indication that the
signature belongs to the owner.

linux5
Key milik linus di Public key server MIT Pada website pgp.mit.edu memiliki fasilitas untuk mencari public keymilik seseorang.

Data Encryption dan Decryption
Sering kali data yang dikirim bersifat rahasia, sehingga  tanda tangan digital tidak memdai untuk memastikan hanya penerima  pesan tertentu yang berhak membukanya. Untuk itu, digunakan fasilitas enkripsi. Anda harus mengimpor kunci publik dari si penerima pesan.

Mirip seperti bagian sebelumnya, disarankan agar kunci publik ini di-sign dengan kunci publik milik pengirim. Simak pada bagian ekspor dan impor key jika Anda lupa detail prosedurnya. Misalnya, John akan mengirim pesan pada Bob. Dalam hal ini, John sudah mengimpor kunci publik milik Bob. File yang dienkripsi tetap sama, yaitu pada direktori /tmp/gpg/ bernama pin.txt. Ketikkan pe­rintah:

$ gpg2 –encrypt /tmp/gpg/pin.txt

Akan muncul pertanyaan siapa calon penerima file yang dienkripsi:

linux6
Enigmail Program enigmail dirancang untuk dapat bekerja sama dengan mail client Thunderbird untuk memudahkan operasi PGP dengan aktivitas berkirim e-mail.

Enter the user ID.  End with an empty line:
Ketikkan Bob Doyle. GnuPG akan memberi konfirmasi dengan pesan:

Current recipients:
2048g/C735F160 2009-08-17 “Bob Doyle
<bob.doyle@gmail.com>”
Karena kita hanya mengirim ke satu penerima, berikutnya tekan [Enter]. Maka akan tercipta file pin.txt.gpg di direktori /tmp/gpg/. File terenkripsi inilah yang perlu Anda kirim ke user Bob, misalnya lewat e-mail. Sebagai user Bob, untuk membuka file ini berik perintah berikut ini.
$ gpg –decrypt /tmp/gpg/pin.txt.gpg
Pesan berikut akan muncul:
You need a passphrase to unlock the secret
key for
user: “Bob Doyle <bob.doyle@gmail.com>”
2048-bit ELG-E key, ID C735F160, created
2009-08-17 (main key ID 98DAAE2D)
Enter passphrase:
Masukkan passphrase milik Bob. Apabila benar, pesan akan menjadi:
gpg: encrypted with 2048-bit ELG-E key, ID
C735F160, created 2009-08-17
“Bob Doyle <bob.doyle@gmail.com>”
Pin saya: 3412

Jika diinginkan, Anda pun dapat meng­enkripsi sekaligus melakukan men-sign-nya secara bersamaan:
$ gpg2 –encrypt –sign -a /tmp/gpg/pin.txt
Opsi -a akan menghasilkan file terenkripsi, tetapi  dalam bentuk file teks. Ini berbeda dengan sebelumnya yaitu hasil enkripsi adalah file biner. Anda secara berturut-turut akan ditanyakan:

Passphrase milik pengirim
Nama penerima

Hasilnya adalah file yang menggunakan nama sama, tetapi berakhiran “.asc”. Berikut ini adalah petikan isi file teks berisi pesan terenkripsi tersebut.
—–BEGIN PGP MESSAGE—–
Version: GnuPG v1.4.9 (GNU/Linux)

hQIOA6q7M6nHNfFgEAf8DBPE3wT
seKcGtL1k4XOtp9CD4kcuSTVfB2Z
tviLlVoM3
HS5gKnUDn1I4wgR7CA2DcGTPe1Ji
0vNUJ7mS6YyhVt27R/vWbwnrqpU7r0
rnJZVp

Si penerima (Bob) cukup mengetik perintah
yang sama:

$ gpg2 –decrypt /tmp/gpg/pin.txt.asc
Akan muncul prompt menanyakan passphrase Bob. Apabila benar, pesan akan ter-decrypt sekaligus menunjukkan tanda tangan milik pengirim (John).

 
Tinggalkan komentar

Ditulis oleh pada 7 Juni 2011 in Security, Tips and Trick

 

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: