Pembelajaran seterusnya; berkaitan tajuk di atas.
Pelajaran dan perkara baru bagi saya, sebab ada ternampak orang lain sediakan kunci PGP miliknya. Tertanya-tanya juga, apa ke bendanyalah kunci PGP ini, ya?
Archwiki
pun menjadi rujukan. Menurut [1] Archwiki
yang mengambil petikan dari [2] laman web rasmi GnuPG
:-
GnuPG
ialah pelaksanaan penuh dan percuma bagi standardOpenPGP
sebagaimana ditakrifkan olehRFC4880
(juga dikenali sebagaiPGP
).GnuPG
membenarkan anda untuk menyulitkan dan menandatangani data serta komunikasi anda; ia dibangunkan dengan ciri-ciri sebuah sistem pengurusan kunci yang serba boleh berserta modul-modul akses bagi semua jenis direktori kunci awam.GnuPG
, juga dikenali sebagaiGPG
, ialah sebuah alat perintah baris dengan ciri-ciri yang memudahkan integrasi dengan aplikasi lain. Banyak aplikasi frontend dan libraries yang tersedia.GnuPG
juga menyediakan sokongan untukS/MIME
danSecure Shell (ssh)
.
GPG
. Saya akan teruskan kepada penggunaan berdasarkan dapatan dan kegunaan untuk diaplikasikan oleh diri saya sendiri yang kebanyakannya diperolehi dari Archwiki
dan [3] manual gpg
.Saya akan menyentuh tentang:-
Singkatan Opsyen | Opsyen penuh |
---|---|
-a | --armor |
-b | --detach-sign |
-d | --decrypt |
-e | --encrypt |
-k | --list-keys / --list-public-keys |
-K | --list-secret-keys |
-o | --output |
-r | --recipient |
-s | --sign |
-u | --local-user |
gpg --full-gen-key
gpg -k
1pub rsa3072 2021-08-04 [SC]
2 A752DBD8BB275BCA537667D90E98A0530779BF34
3uid [ultimate] Pn Raihan (Contoh) <e-mel@wraihan.com>
4sub rsa3072 2021-08-04 [E]
gpg -k --keyid-format 0xlong
1pub rsa3072/0x0E98A0530779BF34 2021-08-04 [SC]
2 A752DBD8BB275BCA537667D90E98A0530779BF34
3uid [ultimate] Pn Raihan (Contoh) <e-mel@wraihan.com>
4sub rsa3072/0xF045B53A25EB1904 2021-08-04 [E]
gpg -K
gpg -K --keyid-format 0xlong
1sec rsa3072/0x0E98A0530779BF34 2021-08-04 [SC]
2 A752DBD8BB275BCA537667D90E98A0530779BF34
3uid [ultimate] Pn Raihan (Contoh) <e-mel@wraihan.com>
4ssb rsa3072/0xF045B53A25EB1904 2021-08-04 [E]
gpg --edit-key key-id / user-id
adduid
.key-id / user-id
sama ada dalam bentuk:-ID kunci
$ gpg --edit-key 0x0E98A0530779BF34
Cap jari
$ gpg --edit-key A752DBD8BB275BCA537667D90E98A0530779BF34
ID pengguna
iaitu nama / alamat e-mel.$ gpg --edit-key "Pn Raihan"
$ gpg --edit-key e-mel@wraihan.com
ASCII
.gpg -a -o output_sec.asc --export-secret-keys key-id
output_sec.asc
yang mengandungi kriptogram kunci peribadi inilah yang boleh diimport ke dalam aplikasi lain seperti klien e-mel Thunderbird
. Jangan import kunci awam pula, ya! Memang gagallah ceritanya. Nama pun kunci peribadi (personal key), yang hang pergi import kunci awam tu kenapa Raihan weh? :laughing: Lepas tu duk kepelikan sendiri tak ketahuan punca. Rupa-rupanya salah import. Heh!gpg -a -o output_pub.asc --export key-id
output_pub.asc
ini boleh diimport ke dalam aplikasi web seperti GitHub
, GitLab
dan sebagainya. Jangan import kunci peribadi (rahsia) pula di tempat-tempat ini, ya!gpg --import contoh.asc
contoh.asc
(dalam format ASCII
).gpg --delete-secret-and-public-key key-id
gpg --delete-keys key-id
gpg --search-keys user-id / key-id
gpg --recv-keys key-id
gpg -o test-E.sig -r recipient-key-id -s -e test.txt
test.txt
ialah dokumen yang mengandungi mesej rahsia. Fail ini ditandangani dan disulitkan dengan cara di atas, menghasilkan sebuah lagi fail bernama test-E.sig
.recipient-key-id
) yang bermaksud bahawa, kunci penerima mesti ada di dalam keyring. Jika belum ada, kunci penerima perlu diimport terlebih dahulu. 1$ cat test.txt
2Salam dan hai, semua! Apa khabar?
3
4$ gpg -o test-E.sig -s -e test.txt
5You did not specify a user ID. (you may use "-r")
6
7Current recipients:
8
9Enter the user ID. End with an empty line:
10gpg: no valid addressees
11gpg: test.txt: sign+encrypt failed: No user ID
12
13$ gpg --import 0xB0AD752D5C7CA57D.asc
14gpg: key B0AD752D5C7CA57D: public key "En Ayusri (Contoh) <e-mel@ydomain.com>" imported
15gpg: Total number processed: 1
16gpg: imported: 1
17
18$ gpg -k --keyid-format 0xlong
19~/.gnupg/pubring.kbx
20-------------------------------
21pub rsa3072/0x0E98A0530779BF34 2021-08-04 [SC]
22 A752DBD8BB275BCA537667D90E98A0530779BF34
23uid [ultimate] Pn Raihan (Contoh) <e-mel@wraihan.com>
24sub rsa3072/0xF045B53A25EB1904 2021-08-04 [E]
25
26pub rsa3072/0xB0AD752D5C7CA57D 2021-08-04 [SC]
27 AA72C11FDEB0D9B61053F0A8B0AD752D5C7CA57D
28uid [ unknown] En Ayusri (Contoh) <e-mel@ydomain.com>
29sub rsa3072/0xA4756D32359086D7 2021-08-04 [E]
default-key
(jika memiliki kunci berasingan sebagai contoh), tambahkan option -u key-id
kepada arahan di atas. 1$ gpg -o test-E.sig -u 0x0E98A0530779BF34 -r 0xB0AD752D5C7CA57D -s -e test.txt
2gpg: A4756D32359086D7: There is no assurance this key belongs to the named user
3
4sub rsa3072/A4756D32359086D7 2021-08-04 En Ayusri (Contoh) <e-mel@ydomain.com>
5 Primary key fingerprint: AA72 C11F DEB0 D9B6 1053 F0A8 B0AD 752D 5C7C A57D
6 Subkey fingerprint: 2316 5967 E33A 8548 9716 C32D A475 6D32 3590 86D7
7
8It is NOT certain that the key belongs to the person named
9in the user ID. If you *really* know what you are doing,
10you may answer the next question with yes.
11
12Use this key anyway? (y/N) y
13
14$ ls | grep test
15test-E.sig
16test.txt
test-E.sig
yang terhasil itu kemudiannya boleh dihantarkan kepada penerima yang dimaksudkan. Setelah itu, penerima perlu menyahsulitkan fail test-E.sig
tersebut untuk membaca mesej asalnya dengan arahan berikut:-gpg -o original.txt -d test-E.sig
VM Windows 10
untuk testing ➡️ Fail yang asalnya ditandatangani dan disulitkan dalam sistem Arch Linux
saya salin (scp
) ke Mesin Maya Windows 10 sebagai penerima.
[unknown]
.
This key is not certified with a trusted signature!
".
Untuk perakui (certify) kunci penghantar, jalankan gpg --edit-key key-id
dan pilih opsyen tandatangan (rujuk manual GPG
). Saya pilih untuk menandatangani kunci tersebut dengan opsyen tsign
.
certify
di atas. Status user-id (uid)
kini bertukar daripada [unknown]
kepada [full]
.
gpg -o test-C.sig --clearsign test.txt
recipient-key-id
bagi cara ini kerana fail tidak dinyahsulitkan dengan cara penuh (melalui opsyen -e
) seperti sebelum ini. Cara ini menghasilkan input di dalam fail test-C.sig
dengan mesej asal juga terkandung di dalamnya sebelum baris tandatangan dalam bentuk Hash
. 1$ gpg -o test-C.sig --clearsign test.txt
2
3$ cat test-C.sig
4-----BEGIN PGP SIGNED MESSAGE-----
5Hash: SHA256
6
7Salam dan hai, semua! Apa khabar?
8-----BEGIN PGP SIGNATURE-----
9
10iQGzBAEBCAAdFiEEp1Lb2LsnW8pTdmfZDpigUwd5vzQFAmEKqUsACgkQDpigUwd5
11vzR5pgv+KFChSML9/KPjcvqVqW5x9xC4XSfFqDlIrkQmeIg/LIIpGr1Y34Gk0Mu5
12gIEMwyR/ijtJQGTRo6pwaBSxKkwSiRh9xFY7FG8KuiBFgC4+nNU58mBs5MXcoyWD
13aKxncZEsl3OYQDS7gKeBfURqNDkHNDmFscP2Kp0Mmlj3+swEorZWw/lI1t5iCOeH
14ylT5ugrctQliMIGBYEu7MK0tr/pTA3odLEPWd3nTgFh8Pfi2jSampdXBHiyxHF+L
15NTbJURLs1Ffla/scPklynNLziXedNOssSidYKOj74kfLa6X4hKirXRH4oyoWYJIt
16LxiIWCcCoPKMTIfSs3U09okwUZ8ChYdx27im3aXYtZrT3H/kmQ2oJPk5zFtdPM7T
174IeLlm47955hJCkHMRm1cLlsb1kOg+arK6U+mKjViLKvG3uGe+SScOs8ATmVMhxv
18KDxYe8xKuNiMZQBJ8X8hugrh8Apz3fXahMSYX+QTcPBs3vWM3XX/JNMZDKo4FY32
198MfqMcTm
20=Jfvq
21-----END PGP SIGNATURE-----
gpg -o test-D.sig -b test.txt
VM Windows 10
. Dapat dilihat, verifikasi hanya boleh berlaku dengan adanya dua fail untuk dibandingkan. Saya bandingkan fail tandatangan dengan fail original.txt
yang sudah dinyahsulitkan sebelum ini. Penghantar mesej yang mahu menggunakan cara ini kena beri dua fail kepada penerima; [1] fail yang mengandungi mesej / teks tanpa penyulitan dan [2] juga fail tandatangan.
1$ cat test.txt
2Salam dan hai, semua! Apa khabar?
3
4$ gpg --verify test-D.sig test.txt
5gpg: Signature made Wed 04 Aug 2021 10:54:22 PM +08
6gpg: using RSA key A752DBD8BB275BCA537667D90E98A0530779BF34
7gpg: Good signature from "Pn Raihan (Contoh) <e-mel@wraihan.com>" [ultimate]
8
9$ cat test.txt
10Salam dan hai,semua! Apa khabar?
11
12$ gpg --verify test-D.sig test.txt
13gpg: Signature made Wed 04 Aug 2021 10:54:22 PM +08
14gpg: using RSA key A752DBD8BB275BCA537667D90E98A0530779BF34
15gpg: BAD signature from "Pn Raihan (Contoh) <e-mel@wraihan.com>" [ultimate]
recipient-key-id
) sepertimana yang sudah diterangkan sebelum ini.semua-pwd.txt
yang mengandungi kata laluan. Ia menghasilkan sebuah lagi fail bernama semua-pwd.txt.asc
sebagai fail tersulit.gpg -a -r recipient-key-id -e semua-pwd.txt
orig-semua-pwd.txt
, di bawah ialah arahannya:-gpg -o orig-semua-pwd.txt -d semua-pwd.txt.asc