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.
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.
Menggunakan GPG untuk mengenkripsi, kita membutuhkan sepasang kunci publik dan privat. Gunakan perintah di bawah ini:
Lalu isilah beberapa pertanyaan yang akan muncul dan digunakan untuk mengonfigurasi kunci kita:
Beberapa pertanyaan akan muncul. Isi sesuai dengan keperluan kita. Jangan lupa untuk mengubah akses ke file "revoke.crt"
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:
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.
Outputnya :
Kita bisa bandingkan string ini dengan milik pihak lawan komunikasi.
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.
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:
Output
Kita bisa mengirimkan file public key ini lewat beberapa medium. Untuk mempublikasikan kunci tersebut via key server :
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:
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.
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.
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
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 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