Phần lớn câu trả lời này được trích xuất từ tài liệu Arch Wiki và tài liệu GnuPG . Bất kỳ khuyến nghị nào trong câu trả lời này hoàn toàn là ý kiến của tôi, và nên được thực hiện với một tấn muối.
Tạo khóa PGP
GUI
Mở ứng dụng Mật khẩu và Khóa (còn gọi là seahorse
) và nhấp +
(hoặc đi tới Tệp -> Mới hoặc nhấn CtrlN) để xem:
Chọn khóa PGP và nhập thông tin của bạn. Tôi đang mạo danh Chỉ huy Byte:
RSA và 2048 bit là tốt cho hầu hết các mục đích. Nếu bạn chỉ muốn sử dụng nó để ký, hãy chọn tùy chọn RSA (chỉ ký) từ menu thả xuống, nhưng bạn không cần phải - điều này có thể được xử lý bằng cách sử dụng khóa con . Bạn có thể để lại nhận xét. Giữ một ngày hết hạn trên chìa khóa của bạn cũng hữu ích. Nhấn vào đây Create.
Nhập một mật khẩu dài phù hợp (và ý tôi là dài , ví dụ của tôi là ngắn, IMO) và nhấp Ok:
Seahorse dường như không có bất kỳ phản hồi nào, không giống như CLI. Đợi một lúc, làm bất cứ điều gì bạn muốn làm, trong khi nó tập hợp entropy và tạo một khóa. Nó có thể mất một thời gian. Sau đó, bạn sẽ thấy khóa của họ trong phần Khóa PGP :
CLI
Để tạo khóa từ dòng lệnh, chỉ cần chạy gpg --gen-key
. Nó sẽ hỏi bạn các chi tiết giống như GUI đã làm:
$ 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) <heinrichh@duesseldorf.de>"
Real name: Byte Commander
E-mail address: byte@command.er
Comment:
You selected this USER-ID:
"Byte Commander <byte@command.er>"
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 <byte@command.er>
sub 2048R/0E2F4FD8 2015-09-28 [expires: 2016-09-27]
Lưu ý cách GnuPG cho chúng ta biết nó cần nhiều entropy hơn. Ước gì cá ngựa cũng vậy. Nhưng một lần nữa, có cảm giác như GnuPG đang hành động như Oliver Twist. : P
Xuất bản chìa khóa của bạn
Bây giờ, chúng tôi cần lấy khóa công khai của mình ra khỏi đó, để mọi người có thể xác minh mọi thứ bằng cách sử dụng nó.
GUI
Quay trở lại danh sách các khóa PGP trong seahorse
ứng dụng (xem ảnh chụp màn hình cuối cùng). Chọn (các) khóa bạn muốn xuất và trong menu Từ xa , chọn Khóa đồng bộ hóa và Xuất bản :
Các Syncnút sẽ bị vô hiệu hóa nếu bạn chưa chọn một máy chủ để phát hành tới. Làm như vậy, bằng cách nhấp vào Key Serversnút:
Tôi đã chọn máy chủ của Ubuntu.
Bây giờ, bạn có thể nhấp vào Syncnút và xuất bản nó tới máy chủ khóa của Ubuntu (xin lỗi vì spam, Ubuntu!).
CLI
Với CLI, bạn cần ID khóa của khóa bạn muốn xuất bản. Đây là dòng cuối cùng của đầu ra khi tạo khóa ( 8AE670A6
). Nếu bạn không nhớ nó là gì, chỉ cần chạy gpg --list-keys
. Xuất bản:
$ gpg --keyserver pgp.mit.edu --send-keys 8AE670A6
gpg: sending key 8AE670A6 to hkp server pgp.mit.edu
Xin lỗi, MIT .
Ký kết
Tôi chưa biết phương pháp GUI thuận tiện để ký tài liệu.
Khi bạn đã tạo tệp bạn muốn đăng nhập, hãy đi đến thiết bị đầu cuối. Hãy thử gpg --list-keys
:
$ gpg --list-keys
/home/muru/.gnupg/pubring.gpg
---------------------------
pub 2048R/F7878B0C 2015-09-28 [expires: 2016-09-26]
uid Byte Commander <byte@command.er>
sub 2048R/345B9A4F 2015-09-28 [expires: 2016-09-26]
Bạn có thể ký vào tệp bằng hai phương pháp:
Ký bằng mã hóa
$ gpg --sign --output examples.sig examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
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 <byte@command.er>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28
Nếu bạn đang ở trong phiên làm việc trên máy tính để bàn, rất có thể bạn sẽ được chào đón bằng lời nhắc mật khẩu đồ họa. Ví dụ: trong Gnome:
Nếu người nhận có khóa công khai của bạn, họ có thể xác minh hoặc nhận nội dung được giải mã:
$ 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 <byte@command.er>"
$ 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 <byte@command.er>"
Ký kết với Cleartext
Bạn có thể không muốn mã hóa nội dung, ví dụ như khi gửi thư. Trong trường hợp đó, sử dụng --clearsign
tùy chọn:
$ gpg --clearsign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
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-----
Ký, với một tệp riêng cho chữ ký (chữ ký tách rời)
Cuối cùng, đối với một số tệp, bạn không thể có chữ ký trong tài liệu. Ví dụ: đóng gói các tệp hoặc siêu dữ liệu cho kho lưu trữ, cả hai đều có nội dung có tính chất cụ thể không dễ dàng cho phép chữ ký nhúng. Trong trường hợp này, bạn sử dụng --detached-sig
tùy chọn:
$ gpg --output examples.desktop.sig --detach-sign examples.desktop
You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
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 <byte@command.er>"
Ghi chú
Trong mã hóa + ký và chữ ký tách rời, đầu ra của gpg
là nhị phân. Bạn có thể có dữ liệu được mã hóa cơ sở đầu ra G64PG bằng cách sử dụng --armor
tùy chọn (ASCII-bọc thép).
Tự động hóa
Để ký kịch bản, bạn có thể:
- sử dụng cụm mật khẩu trống cho khóa
- tùy thuộc vào phiên bản GnuPG của bạn, hãy gửi cụm mật khẩu qua
stdin
. Xem bài viết Unix & Linux này để biết một số tùy chọn.