Tutorial GPG Encryption - Open Source Lab -->

Tutorial GPG Encryption

Kembali lagi dengan LabComp, kali ini saya akan membagikan tutorial cara enkripsi pesan dengan GPG. Tapi tahukah kalian apa itu GPG ? GPG (GNU Privacy Guard) yang merupakan sebuah implementasi dari kriptografi dengan menggunakan kunci publik (public key). Hal ini memungkinkan untuk melakukan transmisi informasi di antara beberapa pihak secara aman, serta dapat digunakan untuk memverifikasi orisinalitas asal dari pesan tersebut. Di tutorial ini kita akan membahas bagaimana cara GPG bekerja serta cara implementasinya. Tentunya kita akan menggunakan distro linux Ubuntu 16.04 versi server.

Cara GPG Bekerja

Permasalahan yang sering dihadapi oleh banyak pengguna adalah bagaimana cara melakukan komunikasi dengan aman dan melakukan validasi pada identitas lawan komunikasinya. Banyak cara dan metodologi yang mencoba untuk menjawab kebutuhan di atas, setidaknya untuk melakukan transfer password atau kredensial pengguna via medium yang tidak aman.

Memastikan Hanya Pihak Yang Diinginkan Yang Dapat Membaca Pesan

Untuk memastikan hanya pihak yang kita inginkan, yang dapat membaca pesan, GPG mengandalkan konsep keamanan yang dikenal dengan enkripsi kunci publik (public key encryption). Pada intinya adalah pemisahan tahap enkripsi dan dekripsi pada saat pengiriman ke dalam 2 bagian yang terpisah. Dengan cara ini kita bisa dengan bebas mendistribusikan bagian yang dienkripsi, selama yang bagian dekripsi diamankan.

Hal ini juga memungkinkan kita untuk melakukan yang disebut one-way message transfer atau pengiriman pesan satu arah yang dapat dibuat dan dienkripsi oleh siapa saja, tapi hanya dapat didekripsi oleh pihak / penerima tertentu saja – pengguna yang mempunyai kunci privat untuk dekripsi. Jika kedia pihak (pengirim dan penerima) membuat sepasang kunci (publik dan privat) dan saling memberikan kunci tersebut, maka mereka dapat mengenkripsi pesan satu sama lain. Jadi, satu pihak mempunyai kunci privat masing – masing dan kunci publik lawan komunikasinya.

Memvalidasi Identitas Pengirim

Keuntungan lain dari sistem ini adalah pihak pengirim pesan dapat menandatangani (sign) pesan dengan kunci privat. Kunci publik yang ada di penerima pesan dapat digunakan untuk memverifikasi tanda tangan digital itu dikirim oleh pengguna yang mana.

Membuat Kunci GPG (GPG Keys)

GPG sendiri secara default sudah terpasang di sebagian besar distribusi linux. Jikapun tidak terpasang, lakukan ini di Ubuntu (atau Debian).

sudo apt-get update
sudo apt-get install gnupg

Menggunakan GPG untuk mengenkripsi, kita membutuhkan sepasang kunci publik dan privat. Gunakan perintah di bawah ini:

gpg --gen-key

Lalu isilah beberapa pertanyaan yang akan muncul dan digunakan untuk mengonfigurasi kunci kita:
  • Please select what kind of key you want: (1) RSA and RSA (default)
  • What keysize do you want? 4096
  • Key is valid for? 1y (akan kadaluarsa setelah 1 tahun. Untuk percobaan isilah dengan angka 3 saja tanpa embel y atau apapun.)
  • Is this correct? y
  • Real name: nama anda
  • Email address: email@anda.com
  • Comment: opsional, komentar ini akan muncul di signature
  • Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
  • Enter passphrase: Masukkan password yang aman dan cukup kompleks
Pada poin ini, GPG akan membuat kunci dengan menggunakan entropi. Entropi menjabarkan jumlah yang tak dapat diprediksi yang ada pada sistem. GPG membutuhkan entropi untuk menciptakan kunci yang aman. Proses ini mungkin akan membutuhkan waktu yang lama, tergantung dari seberapa aktif sistem kita dan keysize yang kita pilih. Untuk menciptakan tambahan entropi, kita dapat menggunakan sebuah perangkat bantu yang disebut haveged.

Membuat Revocation Certificate

Kita membutuhkan cara untuk melakukan invalidasi dari kunci kita. Hal ini kita butuhkan jika ada kebocoran keamanan atau misalkan kita kehilangan secret key. Hal ini harus dilakukan sesaat setelah membuat kunci, bukan saat membutuhkan.

gpg --output ~/revoke.crt --gen-revoke email@anda.com

Beberapa pertanyaan akan muncul. Isi sesuai dengan keperluan kita. Jangan lupa untuk mengubah akses ke file "revoke.crt"

chmod 600 ~/revoke.crt

Cara Mengimpor Kunci Publik Pengguna Lain

GPG akan sedikit tak berguna jika kita tidak menerima kunci publik lain dari pihak yang kita inginkan untuk saling berkomunikasi. Kita dapat mengimpor kunci publik lawan komunikasi kita dengan cara:

gpg --import nama_file_kunci_publik

Juga ada kemungkinan dari lawan komunikasi kita untuk mengupload kunci mereka ke public key server. Server ini digunakan orang dari berbagai penjuru dunia untuk saling bertukar kunci. Key server yang paling populer adalah milik MIT. Kita dapat mencari seseorang berdasarkan nama dan email address di https://pgp.mit.edu/

Kita juga dapat melakukan pencarian via CLI:

gpg --keyserver pgp.mit.edu --search-keys parameter_pencarian

Cara Memverifikasi dan Menandatangani Kunci

Sementara kita dapat mendistribusikan kunci publik secara bebas, hal terpenting adalah untuk mampu mengecek kunci tersebut milik siapa pada saat melakukan transmisi kunci publik.

Bagaimana cara kita untuk mengetahui bahwa seseorang yang memberikan kita kunci publik adalah pihak yang valid atau benar. Kita bisa saja ada di sebelah orang yang membuka dan bertukar kunci. Tapi dalam berbagai kasus, kita tidak dapat selalu bertukar kunci dengan pertemuan secara fisik. Hal ini menjadi dilema mengingat bisa saja kita menerima kunci yang salah. jadi kita harus dapat memverifikasi kunci tersebut.

Cara untuk memvalidasi siapa pemilik kunci adalah dengan cara membandingkan fingerprint dari kunci. Cara ini memberikan kita keyakinan bahwa duabelah pihak menggunakan kunci publik yang sama.

gpg --fingerprint email@anda.com

Outputnya :

pub   4096R/13D8BEE1 2017-05-28 [expires: 2018-05-28]

      Key fingerprint = AE4B A611 34A0 07A5 E67F  AAAA BBBB CCCC DDDD 00FF

uid                  Nama Pengguna (Pesan Terenkripsi) <email@anda.com>
sub   4096R/BDC79CED 2017-05-28 [expires: 2018-05-28]

Kita bisa bandingkan string ini dengan milik pihak lawan komunikasi.

Tandatangani Kunci Pihak Lain

Menandatangani kunci memberitahukan ke software kita bahwa kita mempercayai kunci tersebut.

gpg --sign-key email@domain.com

Ketika kita menandatangani kunci, maka kita memverifikasi bahwa kita mempercayai pihak yang mengklaim kunci itu. Ini dapat membantu pihak lain untuk mempercayai pihak tersebut juga. Jika seseorang telah mempercayai kita dan mereka melihat kita sudah menandatangani kunci miliknya.

gpg --output ~/signed.key --export --armor email@domain.com

Kita akan diminta untuk mengisi passphrase lagi. Setelah itu, public key yang sudah ditandai akan tampil. Kirimkan public key yang telah ditandai ini ke lawan komunikasi kita, maka mereka dapat mendapatkan semacam tanda persetujuan ketika dua belah pihak saling berinteraksi.

Ketika mereka menerima kunci tersebut, mereka dapat mengimportnya. Menambahkan informasi yang tadi kita buat ke dalam database GPG mereka. Mereka akan mengetikkan ini:

gpg --import ~/signed.key

Cara Untuk Menyebarluaskan Kunci Publik

Dengan metode yang kita jabarkan di atas, maka kita dapat menyebarkan public key kita. Untuk memberikan kunci kita, lakukan ini :

gpg --output ~/kuncisaya.key --armor --export email@anda.com

Output

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

aeoweOdoasdJg/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPxxxxxxxxxxxxxxxxxxxxx
. . .

Kita bisa mengirimkan file public key ini lewat beberapa medium. Untuk mempublikasikan kunci tersebut via key server :

gpg --list-keys&nbsp;email@anda.com
gpg --send-keys --keyserver pgp.mit.edu key_id

Mengenkripsi dan Mendekripsi Pesan dengan GPG

Berikut ini cara mengenkripsi pesan atau file di linux:

gpg --encrypt --sign --armor -r person@email.com nama_file

Command di atas akan mengenkripsi dengan kunci publik penerima, tandai dengan private key kita sendiri untuk menjamin bahwa pesan itu memang dari kita. Output dari pesan akan menjadi raw bytes, dan nama berkas atau file akan menjadi nama file aslinya dengan ekstensi .asc

Kita juga sebaiknya mengikutsertakan “-r” ke dua dengan email kita jika kita ingin melihat pesan yang kita enkrip sendiri. karena pesan akan dienkripsi dengan kunci publik masing – masing puhak, dan akan dapat didekripsi oleh kunci privat terkait.

Untuk dapat mendekripsi file lakukan ini:

gpg nama_file.asc

Pemeliharaan Kunci

Berikut ini beberapa cara pemeliharaan (maintenance) kunci.

Daftar kunci di GPG database:

gpg –list-keys

Informasi dari kunci akan kadaluarsa jika kita bergantung pada informasi dari key server. Kita tidak ingin bergantung pada kunci yang sudah di revoke, karena bisa jadi kunci tersebut sudah diretas atau memang sudah tidak valid. 


gpg --refresh-keys
gpg --keyserver key_server --refresh-keys

Menggunakan GPG secara benar akan membantu kita untuk berkomunikasi secara aman. Hal ini sangat penting mengingat saat ini informasi begitu mudah disadap oleh pihak lain yang tidak berkepentingan. Terutama jika pekerjaan kita sering sekali untuk mengirim dan menerima pesan yang mengandung informasi yang sangat sensitif, sehingga penting sekali buat kita untuk mengetahui dan belajar kriptografi, dan mampu melakukan berbagai cara untuk mengenkrip dan dekrip pesan atau file.

0 Response to "Tutorial GPG Encryption"

Post a Comment