Hallo welocme back bareng saya Bayu Aji. Kali ini saya akan membuat simple tutorial enkripsi RSA mengggunakan gpg, bagi Anda pengguna Linux pasti tidak asing dengan gpg, gpg adalah software atau tools untuk mengankan data Anda singkatnya menggunakan prinsip asymmetric encryption, yaitu enkripsi dan dekripsi menggunakan dua key yang berbeda. Sama seperti openssl untuk pemograman client server
Okok jika Anda belum mempunyai gpg Anda dapat mendownload melalui tautan di bawah
Tautan : https://github.com/gpg/gnupg
Untuk cara compaile dan configurasinya Anda dapat membaca dokumentasi atau user manual pada tautan yang tertaut. Jika Anda menggunakan Linux tak usah khawatir, Linux biasanya otomatis terinstall gpg. Jadi Anda dapat menggunakan nya secara langsung setau saya seperti itu, jika bingung Anda dapat menggunakan command gpg --opsi
contoh : "gpg --help"
gpg (GnuPG) 2.2.27
libgcrypt 1.8.8
Copyright (C) 2021 Free Software Foundation, Inc.
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /home/uyab/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Syntax: gpg [options] [files]
Sign, check, encrypt or decrypt
Default operation depends on the input data
Commands:
-s, --sign make a signature
--clear-sign make a clear text signature
-b, --detach-sign make a detached signature
-e, --encrypt encrypt data
-c, --symmetric encryption only with symmetric cipher
-d, --decrypt decrypt data (default)
--verify verify a signature
-k, --list-keys list keys
--list-signatures list keys and signatures
--check-signatures list and check key signatures
--fingerprint list keys and fingerprints
-K, --list-secret-keys list secret keys
--generate-key generate a new key pair
--quick-generate-key quickly generate a new key pair
--quick-add-uid quickly add a new user-id
--quick-revoke-uid quickly revoke a user-id
--quick-set-expire quickly set a new expiration date
--full-generate-key full featured key pair generation
--generate-revocation generate a revocation certificate
--delete-keys remove keys from the public keyring
--delete-secret-keys remove keys from the secret keyring
--quick-sign-key quickly sign a key
--quick-lsign-key quickly sign a key locally
--quick-revoke-sig quickly revoke a key signature
--sign-key sign a key
--lsign-key sign a key locally
--edit-key sign or edit a key
--change-passphrase change a passphrase
--export export keys
--send-keys export keys to a keyserver
--receive-keys import keys from a keyserver
--search-keys search for keys on a keyserver
--refresh-keys update all keys from a keyserver
--import import/merge keys
--card-status print the card status
--edit-card change data on a card
--change-pin change a card's PIN
--update-trustdb update the trust database
--print-md print message digests
--server run in server mode
--tofu-policy VALUE set the TOFU policy for a key
Options:
-a, --armor create ascii armored output
-r, --recipient USER-ID encrypt for USER-ID
-u, --local-user USER-ID use USER-ID to sign or decrypt
-z N set compress level to N (0 disables)
--textmode use canonical text mode
-o, --output FILE write output to FILE
-v, --verbose verbose
-n, --dry-run do not make any changes
-i, --interactive prompt before overwriting
--openpgp use strict OpenPGP behavior
(See the man page for a complete listing of all commands and options)
Examples:
-se -r Bob [file] sign and encrypt for user Bob
--clear-sign [file] make a clear text signature
--detach-sign [file] make a detached signature
--list-keys [names] show keys
--fingerprint [names] show fingerprints
Nah Anda dapat memperlajari setiap command atau baris perintah. Kemudian Anda dapat langsung mencobanya. Berikut adalah caranya
Implementasi
Anda dapat mencobanya dengan teman Anda atau menggunakan 2 device sekaligus. Selanjutnya Anda dapat membuat atau configurasi terlebih dahulu, berikut adalah caranya
Configurasi
gpg --full-gen-key
Gunakan perintah gpg --full-gen-key untuk membuat key (kunci terelebih dahulu) Anda dapat melihat gambar di bawah ini
Anda akan memilih algoritma enkripsi apa yang akan digunakan. Di gpg ada beberapa opsi yang bisa Anda pilih yaitu :
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(14) Existing key from card
Pilih sesuai dengan minat Anda. Untuk tutorial ini menggunakan RSA jika Anda ingin menggunakan yang lain silahkan
Setelah Anda memilih algoritma yang akan digunakan Anda dapat memilih ukuran key nya. Disini terdapat 2 opsi default
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)
Nah Anda dapat memilih ukuran bit key, bebas saya memilih 1024 bit length, selanjutnya proses memilih batas expired kunci Anda di gpg terdapat banyak opsi yang bisa Anda pilih berikut adalah opsinya
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
Anda dapat memilih berapa lama kunci Anda expired? Untuk opsi memilihnya Anda bisa menggunakan format seperti ini <n> opsi contohnya
<n>y
1y
Nah setelah itu akan muncul sebuah pemberitahuan bahwa kunci Anda akan berlaku habis pada masa "Key expires at Min 02 Okt 2022 09:24:07 WIB" Selanjutnya Anda akan memvalidasi configurasi apakah sudah benar? Jika dirasa sudah benar maka tinggal ketik y
y
Sesi selanjutnya Anda akan memverifikasi identitas kunci, lebih jelasnya lihat gambar di bawah ini
Anda dapat mengisikan nama Anda, alamat email dan komentar pada bagian komentar Anda dapat memilih bebas tidak diisi juga tidak masalah. Fungsi dari komen untuk identifikasi kunci yang Anda gunakan jika kasus saya tidak usah diisi. Hal yang terpenting adalah nama dan alamat email, untuk verifikasi identitas Anda. Selanjutnya klik O untuk okay
O
Klik O untuk okay. NAh proses sudah selesai, sekarang Anda akan mendapatkan sebuah public key dan private key. Dsiclaimer Anda dapat share kode public key Anda, private key Anda harap disimpan dengan baik jangan sampai private key Anda diketahui orang lain. Sebagai contoh
pub rsa1024 2021-10-02 [SC] [expires: 2022-10-02]
fingerprint Anda
uid uyab89 <Email Anda>
sub rsa1024 2021-10-02 [E] [expires: 2022-10-02]
"gpg --armor --export <finger_print>"
Finger_print ganti dengan fingerprint yang Anda dapat. Yang terletak pada
pub rsa1024 2021-10-02 [SC] [expires: 2022-10-02]
21q3443242ioaidoasdpadiapd (contoh)
contoh :
gpg --armor --export 21q3443242ioaidoasdpadiapd
Anda dapat copy paste hasil export tersebut kemudian simpan dengan ektensi bebas, biasanya ektensi .asc dan setelah itu Anda dapat memabgikan key tersebut ke siapa saja. Lihat gambar
-----BEGIN PGP PUBLIC KEY BLOCK-----
mI0EYVhr/gEEAJ5QgOdcBtCJhE92givr1PSRiShE6snstzoXr3uFPBX3ESLFWrDo
PQNiRMWUy/7D8Bs9sdkhivKK9HkAWU/CzMssjt7q8ocWt/+9+AJIlUD8DHQbqA9K
TxW/WXCv1qfTwX5e4y1CB04uMmdhNkKss6QVcfxjJBOp1QTJ1McbnNDVABEBAAG0
H3V5YWI4OSA8YmF5dS5hamkxMzgxQGdtYWlsLmNvbT6I1AQTAQoAPhYhBDs9N64I
DWsnem5zvOEqFhwfB7Q5BQJhWGv+AhsDBQkB4TOABQsJCAcCBhUKCQgLAgQWAgMB
Ah4BAheAAAoJEOEqFhwfB7Q5rhgD/1un4xTv4MXv6o2olauC+HshVT0w+HzkUX+3
9Y7xzi+3A8IDyqZw6kC6L7U5uXZADYGAFQQ6tOa7cAUxsR/DThzXmRZJtQs4tymt
ghaMHkNLUEVP7aO8sTT/+HmTDNbmuNCslibqyZMfJDK8pzyyP6+W/bTsM59snT3x
gTpjQDIDuI0EYVhr/gEEALiuIjvr/R8H5mm/s4laGjoDyddHaLcb9xYCI6VqILpe
P6oNQQSttSLzB3HMpeDc7uSOtMIYkIEqE5+bZ95fAT3jQr2lNKFxmZrNnemgWYeL
SeU5/4qRw5ZAe7OyqWlPAWpQdD/UbCjC3/HPLA7gcyxovVdD5iDXOIzzGYA+0u5V
ABEBAAGIvAQYAQoAJhYhBDs9N64IDWsnem5zvOEqFhwfB7Q5BQJhWGv+AhsMBQkB
4TOAAAoJEOEqFhwfB7Q55JMD/i7jJRTNwAaAE7fztAXWkHGvsKUFHlFul4jmklEV
2arBdOxOK+bOphtPr1NLMy+k/uIdZM02WWxjF1EYR35Fd4CypI4XbYM6l2RMOnWh
eeNX2UPe0s1anje3x7UrBy6UmelzsUzIh0EzYnqQcXWLSIpw9j+bE0FSaQEIz7XV
2vNI
=FG5P
-----END PGP PUBLIC KEY BLOCK-----
JIka Anda ingin mengerimkan pesan saya secara privat, bisa Anda copy paste key public saya kemudian Anda dapat berinteraksi secara enkripsi dengan saya
Interaksi
A. Enkripsi
OKok tahap selanjutnya interaksi. Anda dapat mencoba bersama teman atau dengan 2 device Anda sendiri berikut adalah cara mengirimkan pesand dan mendekrispsi pesan dengan gpg
Cara mengirimkan pesan enkripsi pertama Anda dapat menggunakan command curl dan perintah gpg import, perhatikan perintah di bawah ini. Gunakan perintah
gpg --import namafile.ascatau
Kemudian akan menampilkan informasi mengenai gpg dari reciver (penerima) kemudian Anda dapat menggunakan perintah untuk mengirim isi pesan Anda ke penerima, gunakan perintah di bawah inicurl -s tautan.gpg | gpg --import
gpg -a --encrypt -r "recive email"
atau
gpg --armor --encrypt -r 'recive email'
Perinatah tersebut akan mengenkripsi pesan Anda dengan RSA -r adalah untuk reciver diikuti dengan email. Selanjutnya tekan Y untuk mengirimkan pesan
Isikan pesan Anda bebas. Kemudian untuk mengirimkan pesan tersebut Anda dapat melakukan kombinasi tombol ctrl+d untuk mengirimkan pesan
ctrl+d
Untuk mengirimkan pesan ke lawan bicara. Copy dan paste enkripsi tersebut ke lawan bicara. Kemudian akan menerima pesan dari kita
B. Cara mendekrispi
Anda dapat menggunkan perintah gpg --decrypt dikuti dengan enkripsi RSA untuk mengubah RSA menjadi plaintext
gpg -- decrypt
diikuti dengan key RSA
Kemudian masukan password (private key) Anda. Maka enkripsi tersebut akan di dekripsi menjadi sebuah plaintext
Nah itu adalah fungsi implemtasi dasar dari gpg. Gpg dapat kirim melalui email ada beberapa aplikasi yang bisa di support contoh :
- Thunderbird
Cara export private key
Anda dapat export key Anda dengan perintah gpg --armor --export-secret-key <finger_print>
gpg --armor --export-secret-keys <finger_print>
Ganti <finger_print> dengan fingerprint Anda kemudian Anda dapat menyimpan dengan eketensi .asc atau pun yang lain contoh
gpg --armor --export-secret-keys bablabala
Itu adalah implentasi dasar dari gpg, jika Anda tertarik Anda dapat mempelajarinya di dokumentasi gpg. Software ini dapat Anda pelajari dan dicustom sesuai Anda. Sekian terima kasih