Sebagian besar jawaban ini diambil dari Arch Wiki dan dokumentasi GnuPG . Setiap rekomendasi dalam jawaban ini sepenuhnya adalah pendapat saya, dan harus diambil dengan satu ton garam.
Membuat kunci PGP
GUI
Buka aplikasi Kata Sandi dan Kunci (alias seahorse
), dan klik +
(atau buka File -> Baru , atau tekan CtrlN) untuk melihat:
Pilih kunci PGP , dan masukkan detail Anda. Saya meniru Byte Commander:
RSA dan 2048 bit baik untuk sebagian besar keperluan. Jika Anda hanya ingin menggunakannya untuk penandatanganan, pilih opsi RSA (sign only) dari menu drop-down, tetapi Anda tidak perlu melakukannya - ini dapat ditangani dengan menggunakan subkunci . Anda dapat meninggalkan komentar. Menjaga tanggal kedaluwarsa pada kunci Anda juga berguna. Klik Create.
Masukkan kata sandi panjang yang sesuai (dan maksud saya panjang , contoh saya pendek, IMO), dan klik Ok:
Kuda laut tampaknya tidak memiliki umpan balik, tidak seperti CLI. Tunggu sebentar, lakukan apa pun yang ingin Anda lakukan, sambil mengumpulkan entropi dan membuat kunci. Mungkin butuh beberapa saat. Setelah itu, Anda akan melihat kunci mereka di bagian Kunci PGP :
CLI
Untuk menghasilkan kunci dari baris perintah, jalankan saja gpg --gen-key
. Ini akan meminta Anda untuk rincian yang sama seperti yang dilakukan GUI:
$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
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)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 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) 1y
Key expires at Tuesday 27 September 2016 03:45:19 PM IST
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 E-mail Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"
Real name: Byte Commander
E-mail address: [email protected]
Comment:
You selected this USER-ID:
"Byte Commander <[email protected]>"
Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
passphrase not correctly repeated; try again.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 186 more bytes)
.....+++++
+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 80 more bytes)
....+++++
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 83 more bytes)
...+++++
gpg: key 8AE670A6 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: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2016-09-26
pub 2048R/8AE670A6 2015-09-28 [expires: 2016-09-27]
Key fingerprint = 82D9 0644 B265 8E75 1E01 538B B479 3CF4 8AE6 70A6
uid Byte Commander <[email protected]>
sub 2048R/0E2F4FD8 2015-09-28 [expires: 2016-09-27]
Perhatikan bagaimana GnuPG memberi tahu kami bahwa dibutuhkan lebih banyak entropi. Berharap kuda laut juga. Tapi sekali lagi, rasanya seperti GnuPG bertindak seperti Oliver Twist. : P
Menerbitkan kunci Anda
Sekarang, kita perlu mendapatkan kunci publik di luar sana, sehingga orang dapat memverifikasi hal-hal yang menggunakannya.
GUI
Kembali ke daftar kunci PGP di seahorse
aplikasi (lihat tangkapan layar terakhir). Pilih tombol yang ingin Anda ekspor, dan di menu Remote , pilih Kunci Sinkron dan Publikasikan :
The SyncTombol akan dinonaktifkan jika Anda belum memilih server untuk mempublikasikan ke. Lakukan dengan mengklik Key Serverstombol:
Saya memilih server Ubuntu.
Sekarang, Anda dapat mengklik Synctombol dan menerbitkannya ke server kunci Ubuntu (maaf untuk spam, Ubuntu!).
CLI
Dengan CLI, Anda memerlukan ID kunci dari kunci yang ingin Anda terbitkan. Ini adalah baris terakhir dari output saat membuat kunci ( 8AE670A6
). Jika Anda tidak ingat apa itu, jalankan saja gpg --list-keys
. Untuk menerbitkan:
$ gpg --keyserver pgp.mit.edu --send-keys 8AE670A6
gpg: sending key 8AE670A6 to hkp server pgp.mit.edu
Maaf, MIT .
Menandatangani
Saya belum tahu metode GUI yang nyaman dalam menandatangani dokumen.
Setelah Anda membuat file yang ingin Anda tandatangani, pergilah ke terminal. Coba gpg --list-keys
:
$ gpg --list-keys
/home/muru/.gnupg/pubring.gpg
---------------------------
pub 2048R/F7878B0C 2015-09-28 [expires: 2016-09-26]
uid Byte Commander <[email protected]>
sub 2048R/345B9A4F 2015-09-28 [expires: 2016-09-26]
Anda dapat menandatangani file menggunakan dua metode:
Masuk dengan enkripsi
$ gpg --sign --output examples.sig examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
gpg: Invalid passphrase; please try again ...
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
Jika Anda berada di sesi desktop, kemungkinan Anda akan disambut dengan prompt kata sandi grafis. Misalnya, dalam GNOME:
Jika penerima memiliki kunci publik Anda, mereka dapat memverifikasinya, atau mendapatkan konten yang didekripsi:
$ gpg --verify examples.sig
gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
$ gpg --decrypt examples.sig
[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content
gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
Masuk dengan cleartext
Anda mungkin tidak ingin mengenkripsi konten, misalnya, ketika mengirim surat. Dalam hal ini, gunakan --clearsign
opsi:
$ gpg --clearsign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
$ cat examples.desktop.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJWCRAaAAoJEGUZkqX3h4sMBWsH/1yw+G0v5Ck+T3PBS90SkvC8
5C0FJeGVr0AgYQohhsE3zEGQ7nn53N7JsvNlF6VccvN99DZIp18JbrJ+qs5hWjtg
KU/ACleR5dvVrJgfjppkuC8Q3cAudvqciKlLjA7Xycr3P49oCNCy8k/ue2TrgCvS
mMb5IS/kqpO7wrOMBAR0c/2CjQsA91S1/YK7DbuUqeNgEzW1grsI7XZPhiDGpAib
D20HWrbdLhklAEJuo1EvuOIggW6MF6ksxDoVapsUzQalD0TWEq6OnvzIS5qhITrc
XaDPQJpiHyCyINnL5aZCUwr2uon7osJ+2a8Ahp1REpzIZTdND9jA5NWSel5+yAs=
=ZrtB
-----END PGP SIGNATURE-----
Penandatanganan, dengan file terpisah untuk tanda tangan (tanda tangan terpisah)
Terakhir, untuk beberapa file, Anda tidak dapat memiliki tanda tangan di dokumen. Misalnya, mengemas file, atau metadata untuk repositori, keduanya memiliki konten yang bersifat khusus yang tidak mudah memungkinkan tanda tangan tertanam. Dalam hal ini, Anda menggunakan --detached-sig
opsi:
$ gpg --output examples.desktop.sig --detach-sign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <[email protected]>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
$ gpg --verify examples.desktop.sig examples.desktop
gpg: Signature made Monday 28 September 2015 03:35:55 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <[email protected]>"
Catatan
Dalam enkripsi + penandatanganan dan dalam tanda tangan terpisah, output dari gpg
adalah biner. Anda dapat memiliki data yang disandikan GnuPG keluaran base64 menggunakan --armor
opsi (ASCII-lapis baja).
Otomatisasi
Untuk penandatanganan skrip, Anda dapat:
- gunakan frasa sandi kosong untuk kunci
- tergantung pada versi GnuPG Anda, kirim frasa sandi melalui
stdin
. Lihat posting Unix & Linux ini untuk beberapa opsi.
rsa
yang dengan mudah memungkinkan penandatanganan data tanpa kesulitan dengan semua hal GPG. Itu mungkin menjadi sangat berguna begitu saya mulai menerbitkan dan mengemas perangkat lunak secara nyata, tetapi mungkin terlalu banyak untuk tujuan saya saat ini. Jadi sampai saat itu mungkin akan kedaluwarsa! :)Buat kunci asimetris dengan gpg
Gunakan gpg untuk menandatangani file Anda (kunci pribadi Anda digunakan)
Uji file tanda tangan (kunci publik Anda digunakan)
Contoh output
sumber