GPG Key : Surat Saijah Kepada Adinda

HUBUNGAN CINTA DUA MANUSIA kadang memerlukan rahasia. Momen-momen rahasia, hingga surat-surat rahasia yang hanya bisa dibaca mereka berdua. Dan begitu pula tentang Saijah dan Adinda. Tentu saja, di blog Linux ini, sejoli itu dipisahkan dari Multatuli. Kembali ke soal rahasia, pertanyaan adalah, bagaimana Linux bisa mengenkripsi pesan mereka berdua?

Jawabannya adalah GPG. GPG, GNU Privacy Guard, adalah salah satu alternatif enkripsi yang bisa digunakan. Dapat diterapkan pada dokumen teks biasa, ataupun pengiriman email. Alhasil, kecuali penerima, pihak lain tak mungkin bisa membaca pesan yang tidak ditujukan untuk mereka.

Ada dua hal yang penting dalam GPG. Pertama adalah Private Key, kedua adalah Public Key. Pesan diacak menggunakan public key yang disebar bebas, baru kemudian dikirim. Pihak penerima menerjemahkan kembali pesan teracak itu menggunakan private key yang dimilikinya.

Dalam artikel ini, akan digunakan 2 identitas. Saijah, dengan alamat email saijah@linuxaja.com. Adinda, dengan alamat email adinda@linuxaja.com. Selamat membaca!

Saijah dan Adinda kecil bersama kerbaunya. Setelah remaja, kisah cinta tumbuh berselimut perjuangan melawan kolonial. Cuplikan film dari novel besar karya Multatuli. Pernah dibredel Presiden Suharto

Saijah dan Adinda kecil, bersama kerbaunya. Setelah remaja, kisah cinta tumbuh berselimut perjuangan melawan Belanda. Cuplikan film Max Havelaar. Sempat dibredel beberapa tahun oleh Suharto dan Orba-nya.

Penggunaan GNU Privacy Guard

Dapat dilihat pada lampiran kode dibawah, untuk mengirimkan dokumen rahasia, Saijah perlu membuat GPG key set terlebih dahulu. Untuk jenis kunci DSA dan RSA tidak mendukung enkripsi teks, melainkan hanya berfungsi sebagai penanda dokumen.

[root@linuxaja ~]# gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 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.

gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 1

Sesudah dipilih DSA dan Elgamai, selanjutnya perlu memilih panjang keysize yang dikehendaki oleh Saijah. Semakin besar jumlah bit, proses semakin lama, namun semakin aman.

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

Perlu diinput informasi mengenai berapa rentang waktu keyset akan bisa berfungsi.

Requested keysize is 1024 bits
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) 3m

Terlihat konfirmasi ulang, Saijah mengeset keyset untuk 3 bulan. Diteruskan dengan menginputkan nama, email, keterangan, dan password.

Key expires at Thu 09 May 2013 05:23:56 AM MSD
Is this correct? (y/N) y

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: Saijah
Email address: saijah@linuxaja.com
Comment: Saijah Key
You selected this USER-ID:
    "Saijah (Saijah Key) <saijah@linuxaja.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

Diteruskan dengan proses pengkodean public key dan private key.

gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 8D9524A9 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 2013-05-09
pub   1024D/8D9524A9 2013-02-08 [expires: 2013-05-09]
      Key fingerprint = 979A 75DC 1DD1 221B 6B4E  6219 238C E209 8D95 24A9
uid                  Saijah (Saijah Key) <saijah@linuxaja.com>
sub   1024g/DC05B83F 2013-02-08 [expires: 2013-05-09]

Kini Saijah telah mempunyai set public key dan private key. Public key milik Saijah diperlukan oleh Adinda jika dia hendak mengirimkan pesan teracak kepada Saijah. Maka dari itu public key milih Saijah harus disebarkan kepada publik. Termasuk agar dimiliki oleh Adinda sebagai sarana mengirim pesan teracak untuk Saijah.

Kode dibawah adalah langkah untuk Saijah mendapatkan public keynya sendiri. Sesudah itu, dia bisa meng-copy-paste, membagikan pada siapapun juga, termasuk pada Adinda.

[root@linuxaja ~]# gpg --export -a saijah@linuxaja.com
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)

mQGiBFEUVJwRBACzWTdZxlgTrOXT42oRsrn8iMvD4fPJ88neOsk3KJrJD1cLi6N/
W9ffxWMoIlvMtQhNaNhM20zl/Zr29nQGhwt/bm0J6pMEPJsNStYf8cyo59HD/qs0
sH4YEM7BLbdFYKiI8SfVQUUqm7gKlHQ1LL4FDhE5PQXVsytgfRsDb2hmqwCgkn/J
2KdNNrw+qImFVUxzmyhb2QkD/R327aoMhNrBk/yKcCmGbSqCE/vTzOIXzGGLs7+R
y7z42LgMcSOxkLyIDGB5gEIBP2nlDIhoIxMLs0Y6TZTSbhLw8uaaAbEBz78z2y8m
AOIlMD9qafu1cV3UWCa7UF09eD2jlPe49l9oGLDjt/Fz0LaQwVGVivcU6WgY5fhy
ToYRA/9HOhWp/rHVoLfgfbdUAxR025KB8DlmC+DZan7FTFgvWpzDsZq2tNzFzXrs
x/EyT/OkMOagyltXH6DW8Ki2uaCN1eEeqPJoi92tSb7p7Uwf+YP7rPV98oKsqj8l
RKmpG0QxUqXgMmQzVGUuptnppNJNSPLTGjpaG6jME/AslSkFOLQpU2FpamFoIChT
YWlqYWggS2V5KSA8c2FpamFoQGxpbnV4YWphLmNvbT6IZgQTEQIAJgUCURRUnAIb
AwUJAHanAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECOM4gmNlSSp8t4Anjdk
Han7iOxB5xSEB2zc7WeNln6PAJ4wgLb6evpqcpQ1FA1O4cn12bKhhbkBDQRRFFSc
EAQAwyRTBiqLCSWmM49sy1Qz60jhz5Onkt+kqcoLV+j01X3JPm2JNjyq8ZU77R0/
cYyjQhSAm9pkRb583V2fkYTyeonh8KSZMFOcfjlwNlXSeFervb5FHSUgEDOeKn/y
EUsJZi8mUXmi4uKB+fqsas8lcRtTyZfEoHVCL7Er/wbfpxcAAwUD/2UdNKvw+A3W
fgQzYGSoXLnqw8vxSAyt1iTMLYLIvHNLq1QHrR534zNMsUaiNumzkCfoLt5iAD8I
Q1YMkM6I0snwNu6zHemIG9fJXJx/7tdfW0hftUwn77Al1SF++ev+Bdtb86qvXeU6
eyNzMD6zI88MFODe6hLMT9l7K3GzKBW/iE8EGBECAA8FAlEUVJwCGwwFCQB2pwAA
CgkQI4ziCY2VJKlVZACferx5ktlae1V+LJuXavmkx8xJZqwAnRaq6l9kVmZRMdXb
jDGX/U9FqKc1
=beS9
-----END PGP PUBLIC KEY BLOCK-----

Langkah diatas, mesti dilakukan juga pada sisi Adinda. Adinda membuat keyset-nya sendiri. Kemudian membagikan public key nya kepada Saijah. Agar Saijah pun dapat mengirim & menerima pesan dari Adinda.

Saijah bisa menyalin public key milik Adinda. Menyimpannya dalam bentuk file .asc. Kemudian mengimpornya dengan command dibawah.

[root@linuxaja ~]# nano publickey-adinda.asc
[root@linuxaja ~]# gpg --import < publickey-adinda.asc
gpg: key 09899598: public key "Adinda (Adinda Key) <adinda@linuxaja.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Hasilnya dapat dilihat melalui key listing. Di komputer Saijah telah tersimpan public key milik Adinda yang baru saja diimport, dan juga keyset GPG milik Saijah sendiri.

[root@linuxaja ~]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/8D9524A9 2013-02-08 [expires: 2013-05-09]
uid                  Saijah (Saijah Key) <saijah@linuxaja.com>
sub   1024g/DC05B83F 2013-02-08 [expires: 2013-05-09]

pub   1024D/09899598 2013-02-08 [expires: 2013-08-07]
uid                  Adinda (Adinda Key) <adinda@linuxaja.com>
sub   1024g/38C9F386 2013-02-08 [expires: 2013-08-07]

Nah, ini dia. Saijah hendak menulis pesan lalu mengirimkannya pada Adinda secara teracak. Pesan normal disimpan Saijah dalam file pesansaijahuntukadinda.txt.

[root@linuxaja ~]# cat pesansaijahuntukadinda.txt
Aku tak tahu di mana aku akan mati
Kulihat terbakar rumah Pak Ansu, dibakarnya sendiri karena
ia mata gelap ;

Bila ku mati dalam rumah sedang terbakar, kepingan-kepingan
kayu berpijar jatuh menimpa mayatku ;
Dan di luar rumah orang-orang berteriak melemparkan air pemadam api ;
Aku takkan mendengarnya.

Saijah hendak mengirim pesan kepada Adinda. Maka Saijah harus mengenkripsi pesan rahasianya dengan public key milik Adinda. Konsep ini berlaku sebaliknya. Jika Adinda hendak mengirim pesan terenkripsi pada Saijah, maka Adinda harus menggunakan public key milik Saijah.

Terlihat dibawah, command line untuk enkripsi pesan dari Saijah dengan menggunakan public key milik Adinda.

[root@linuxaja ~]# gpg -e -r adinda@linuxaja.com -a pesansaijahuntukadinda.txt
gpg: 38C9F386: There is no assurance this key belongs to the named user

pub  1024g/38C9F386 2013-02-08 Adinda (Adinda Key) <adinda@linuxaja.com>
 Primary key fingerprint: 9D99 7561 07E4 0DBD 74C3  62EF 2C16 A968 0989 9598
      Subkey fingerprint: 0665 53E5 CC3E 814E 139C  F4C0 78A0 9EB6 38C9 F386

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y

Hasil enkripsi pesan dari Saijah untuk Adinda dengan memakai public key Adinda. Tidak ada lagi yang bisa membacanya. Sudah rahasia.

[root@linuxaja ~]# cat pesansaijahuntukadinda.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.5 (GNU/Linux)

hQEOA3ignrY4yfOGEAP+MxSieof87aYJFImPvO0AqyQag6+VzrKEdDN2kfXq8j7R
BSO66nCXcZCKYoqRPLadBkAg7wbmEAdt2d/rCxqemJ0XPe5ZITFs0ZaazEJ8BbwR
eL/FJmdnHPtxGq8eljsnBCSAdTw4YcTo13GytP7m03buNsygh+xb1GPbaNPHum0D
/0yYczONbn8XH9ta04xT8qbrxfpLrc7XEOCeARDhU0aKrAODVj/+Tw3UtTUQ+yoN
cdPiuG1tUGLzoQKyU8bMiH+LpH5+qySYUsVcV8cTXPRXYKG1dbq8Ywd47AEB29z+
Ahg7fhAkb0UIC7BlnT1S+eAQJwLZQ/+vMtCgsmzsIBx20sBPAcrpM7u4QCQ76H8P
BZllk4KLZwM11P/hqA4hbeYm6ArHjnQxBZdVgkJ4/rq5sZK89ApwP0PPMVWfcexA
144hEDzaRd+AhV0PGu1dl2cP2pGi9lkft4+bh2Wu2YWDSfRiD5qSfPoZ7tNIBzY0
vXMKEzH4/Ebq5jOvO1w3hv4JY+FrcHfvdxffH6Zmw0SaqORAN1GVe9fWorgw63g7
HCqNP9YTtdIjg6rf919wOg00j97ujtVJpZNwOqFJia7JARsyih8a0nUUv/0VfLD2
wUkaVH0qGKizJZOAmzi+qAfD+LF+LQBlZ40+kWGIcElmxMXNF76skhi3CEUmyAcP
zYXyCyBYGvSlUN6de3mg4oy4Xw==
=XFYm
-----END PGP MESSAGE-----

Pesan diatas dikirim pada Adinda. Adinda mendekripsi pesan itu. Kemudian dengan cara yang sama Adinda mengirim pesan kembali pada Saijah. Tentu saja Saijah menerima dalam bentuk teracak, seperti dibawah.

[root@linuxaja ~]# cat pesanadindauntuksaijah.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.5 (GNU/Linux)

hQEOA+XHKercBbg/EAQAs8PpUrc5Zqsqyoiu4oNobMz0m4guEBdFdUcNGZgptU2a
3YJ4BQY4o5mR+eyEG/waYaT7QXcvDKiKAvDcMC0ucFeYHtwt/+2vJFyqRy5CYgH9
x9xK3NHMiC75jSJB2FIe2e82G9tRndP5HoxLBx3eiKCn939xCtMc1QMT9NwC7MgE
AIiurQ4OkHTVJrjJ16Qvd/bsIL+/6Fwjaw40lBqmWKYd553W9sYAdKSifcMosNS/
FfNPuKIq1ZUEInHCjoeJyvsw7gkJ5sQBJ5qW+ZVXmgiz2agaAflHFR3EZ7ksaxtR
uWJBJubhXXDvG1nFZqj4ntx0NBCcAcpvPBuO8FRKLFMo0sALAVYumWBnwpPCSEbF
r9Crsebx/oeRtmn4NMHx4PMRJumKk569qWi/d4CzKlkd5khE7b6Yx0bzYkcqSalJ
HUSXGnkhvKyfw3GNbHxEHtF8guDlHJOIAaHYc8v8JMNXy/+qDGCjpMVcF9EzenhA
gRk2pAvSHzaeh1Zcl4OKnSfdBDhxKQhVW0QsDyxWCA28mX1jrTrG9u+QG13H5Nv4
MrrWE5pNEK6/ynPri26mDROZEQKXyBe2IJDMXN8nhxSqr/hPjTl4g7IcsBqu8fM=
=CWtD
-----END PGP MESSAGE-----

Pesan teracak Adinda kepada Saijah tidak akan bisa dibaca Saijah bila tidak didekripsi. Command line dibawah adalah cara Saijah agar bisa membaca surat dari Adinda.

[root@linuxaja -]# gpg --decrypt pesanadindauntuksaijah.txt.asc

Hasilnya tidak dipublish disini, terlalu rahasia.. Hehehe.. 

Enkripsi dan Penandatanganan Pesan

Apakah pengacakan pesan menyelesaikan problem pengiriman surat secara rahasia? Betul bahwa surat yang dikirim tidak akan terbaca oleh pihak lain karena tidak punya private key. Persoalannya, pun bila Saijah menerima pesan teracak dari Adinda, dan Saijah berhasil mendekripnya, apakah pesan itu benar-benar dikirim dari Adinda? Padahal semua orang bisa mengirim pesan teracak pada Saijah, tidak melulu Adinda, sejauh mempunyai public key milik Saijah untuk mengacak pesan.

Jawaban dari persoalan ini adalah Adinda, selain mengacak pesan menggunakan public key Saijah, juga harus menandatangi pesannya dengan private key milik Adinda sendiri.

Pada contoh dibawah adalah command line untuk melakukan enkripsi sekaligus penandatanganan pesan. Adinda mengacak pesanadindauntuksaijah.txt dengan public key milik Saijah. Selain itu Adinda memberi tanda tangan pada pesan tersebut menggunakan private key nya sendiri.

[root@linuxaja ~]# gpg -a -r saijah@linuxaja.com -e -s -u ED9A93C5 pesanadindauntuksaijah.txt

You need a passphrase to unlock the secret key for
user: "Adinda (Adinda Key) <adinda@linuxaja.com>"
1024-bit DSA key, ID ED9A93C5, created 2013-02-09

gpg: DC05B83F: There is no assurance this key belongs to the named user

pub  1024g/DC05B83F 2013-02-08 Saijah (Saijah Key) <saijah@linuxaja.com>
 Primary key fingerprint: 979A 75DC 1DD1 221B 6B4E  6219 238C E209 8D95 24A9
      Subkey fingerprint: 3808 376F C604 CB49 C64B  EE52 E5C7 29EA DC05 B83F

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y

Dibawah output pesan dari Adinda untuk Saijah yang sudah diacak dan ditandatangani. Sesudahnya Adinda tinggal mengirimkan pesan tersebut kepada Saijah.

[root@linuxaja ~]# cat pesanadindauntuksaijah.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEOA+XHKercBbg/EAQAnOald26OXVtp9vrCHJKvV1lqnTuUKTJ9LtB9nFLqs4Mu
ehQ4GXxsa3q5fBXSyhmoPBa8DIw4KiGDie4c2EZUFWiXr0uNsnO6vEltvRJnbDfb
/n/vUARZOwM3chDJOb8EgrwAsQ69YOhTdWZzVCtsBxqd7ixEfqKqIMM1KhIH2/kD
/RoLARF4oa+OxSZQuO54av2BFi7YhWBdXfDPX5zpvBE1b8g4HzVE5N9WHVHZS+GK
fJUly/EoLMs9t/88UxNSWSGjhE7T9yv5vDSXbUCOCM0awo2CZWq3P7IbG+LcW847
DfJWeA5p8QxxTglogG/PsKzLDMO86zyedVsgQdISD3PE0sCAAYtgN02O0mH0UDRx
KwBE14BWN1jdlJEe8ixodRw7Bdg/2G+K3XLxKWRXyFUgoLrVG2Ppia8BHD0Fr2CR
EfyAyqj9ostX6UDFv3iyRoeFvPXuijFCWFCjMGEeUaPJ89Wj6Wwk/tmrx9rJ8p2J
d1onoXK2kft5TSxMo8qglJLjurEq04ADfyNVPdxne2BfVR0YgQmkdySTk/XoX449
yT2Kgj0mV6khC6dP3k948QJ1nWFmNYWgWcuAEAZQVoJfwJHuAyMRD26xnjZOhskH
29VrilARsgDABDmOOmdNgGGvkvaMszYmPwBUOXBlPzjxejl7qnBbGt5fMahqzEaZ
nvba1vLuvAkbHfGi1zhlw7cF355wucCQnAdblEkV3FbXXoqonXFrMjPmsc7jlTas
8fZ+uy/09r5O70lksTns1JN5MU8=
=BuRY
-----END PGP MESSAGE-----

Setelah Saijah menerima pesan dari Adinda diatas, Saijah melakukan dekripsi agar pesan itu bisa dibaca. Dapat dilihat dibawah, selain pesan menjadi terurai, terdapat signature yang menjelaskan bahwa pesan tersebut benar dikirim oleh Adinda.

[root@linuxaja ~]# gpg --decrypt pesanadindauntuksaijah.txt.asc

You need a passphrase to unlock the secret key for
user: "Saijah (Saijah Key) <saijah@linuxaja.com>"
1024-bit ELG-E key, ID DC05B83F, created 2013-02-08 (main key ID 8D9524A9)

gpg: encrypted with 1024-bit ELG-E key, ID DC05B83F, created 2013-02-08
      "Saijah (Saijah Key) <saijah@linuxaja.com>"
Tak lama setelah akang berangkat ke Sumatra,

aku gelisah dalam jaring rindu asmara.
Setiap menjelang masa datang bulan
wajahmu selalu membayang.
Rasanya seperti menjadi gila.
gpg: Signature made Sat 09 Feb 2013 09:12:31 AM MSK using DSA key ID ED9A93C5
gpg: Good signature from "Adinda (Adinda Key) <adinda@linuxaja.com>"

Implementasi Pada Dekstop Melalui Thunderbird

Jika diatas pengacakan pesan dilakukan melalui shell, sebenarnya hal ini bisa diterapkan dengan gampang pada komunikasi email. Yang diperlukan hanyalah Thunderbird dan addon Enigmail.

Pertama install Thunderbird pada Linux. Lanjutkan dengan install Enigmail sebagai addon. Agar memperingkas pekerjaan, pastikan keyset GPG sudah terinstall pada sistem.

Thunderbird dan Addon

Sesudah email account selesai di setup, maka langkah selanjutnya adalah menulis email. Selalu awali dengan SHIFT + Write agar terbuka jendela versi plaintext. Tulis email secara normal. Pastikan menu Sign dan enkripsi pada OpenPGP telah dicentang. Maka pengacakan teks akan dilakukan otomatis sebelum pengiriman.

Write Email

Semoga bermanfaat!

Catatan Penulis : beberapa petikan diambil dari Saijah dan Adinda dalam Max Havelaar karangan Multatuli. Potongan pesan Adinda diambil dari Nyanyian Adinda untuk Saijah, sebuah sajak karya W.S Rendra.