nien.lam at gmail dot comCác phiên bản cũ: 1.3 (051229), 1.2 (050604), 1.1 (050104), 1.0 (041223)
GnuPG có thể hoạt động trên nhiều môi trường: GNU/Linux, FreeBSD, OpenBSD, NetBSD, các phiên bản Windows, MacOS X,...
Bản mới nhất của tài liệu này có thể được tìm thấy ở http://labang.sourceforge.net.
./configure make make installCó thể xem các tuỳ chọn cấu hình với lệnh
./configure --help.
Trên Windows, có thể giải nén vào c:\gnupg; nếu cài đặt vào một thư mục không phải c:\gnupg, cần thay đổi các đường dẫn trong tập tin gnupg-w32.reg (bằng Notepad chẳng hạn), rồi chạy lệnh
start c:\đường\đến\gnupg-w32.regSau đó cần thêm thư mục cài đặt GnuPG (
c:\gnupg hoặc nơi đã chọn khác) vào biến môi trường PATH: trên Windows 95/98/ME biên tập tập tin c:\autoexec.bat (các đường dẫn cách nhau bằng dấu ;), trên Windows NT/2000/XP vào Control Panel --> System Properties --> Advanced tab --> Environment Variables --> System variables.
gpg --gen-keyQuá trình tạo khoá sẽ đưa ra một số câu hỏi:
Sau khi tạo khoá xong, bạn nên tạo chứng nhận thu hồi ngay (xem 8.3).
gpg --output mypubkey.gpg --export uidsẽ xuất ra khoá công khai ở dạng nhị phân. uid có thể là Real Name hoặc địa chỉ email có ở căn cước người dùng hoặc căn cước khoá (xem 9.1).
Để thuận tiện cho việc trao đổi qua email hoặc xuất bản trên web, khoá công khai có thể được bọc lớp vỏ ASCII. Nói chung, bất cứ các kết quả xuất nào từ GnuPG (khoá, tài liệu mã hoá, chữ kí) cũng đều có thể bọc lớp vỏ ASCII với tuỳ chọn --armor.
gpg --armor --output mypubkey.txt --export uidTập tin mypubkey.txt có dạng
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.4 (GNU/Linux) [...] -----END PGP PUBLIC KEY BLOCK-----Chép toàn bộ nội dung tập tin này, gồm cả các dòng bắt đầu với "-----" vào trang web hoặc nội dung email để công bố khoá công khai.
Lưu ý: Có thể xuất khoá riêng tư theo cách này, với tuỳ chọn --export-secret-keys thay vì --export. Khi công bố khoá, cần kiểm tra dòng đầu tiên chứa chữ PUBLIC hay PRIVATE và dĩ nhiên không công bố khoá riêng tư.
Có thể chọn một số khoá để xuất thành một xâu khoá con mới:
gpg --armor --export key1 key2 key3 key4 > keys1-4.asc
gpg --import pubkeypubkey là khoá công khai cần nhập, có thể ở dạng nhị phân hoặc ASCII. Với khoá dạng ASCII, GnuPG chỉ đọc những dòng nằm trong khối tạo bởi
BEGIN PGP PUBLIC KEY BLOCK và END PGP PUBLIC KEY BLOCK.
Khoá công khai có thể mang căn cước người dùng giả mạo, do đó nó cần được xác thực (validated) sau khi nhập.
gpg --edit-key uidsẽ vào chế độ dòng lệnh nội tại (uid có thể là Real Name hoặc địa chỉ email trong căn cước người dùng của khoá vừa nhập):
Command>Nên kiểm tra đối chiếu dấu vân tay của khoá (lệnh
fpr) với người chủ (qua điện thoại, gặp gỡ...) trước khi kí (lệnh sign) khoá để xác thực. Ý nghĩa của việc kí khoá là để xác nhận khoá thuộc đúng người mà nó nói là nó của người đó. Khoá đã kí có thể được kiểm tra (lệnh check) để liệt kê các chữ kí có trên nó - mỗi căn cước người dùng có một hoặc nhiều chữ kí tự thân (self-signature) cũng như chữ kí của từng người đã xác thực khoá.
Ngoài ra, có thể kiểm tra dấu vân tay và kí khoá theo cách sau:
gpg --fingerprint uid gpg --sign-key uidTrong trường hợp có nhiều khoá riêng tư, có thể chỉ định khoá riêng tư nào được dùng để kí với khoá công khai của người khác:
gpg --default-key khoá_riêng_tư_muốn_dùng --sign-key uidKhoá công khai sau khi được xác thực có thể được gửi lại lên key server (xem 8.4), góp thêm một đường liên hệ tin tưởng vào khoá đó. Cần lưu ý là việc công bố khoá công khai của người khác lên key server công cộng nên được sự đồng ý của người đó.
gpg --import /đường/dẫn/secring.pgpđể nhập xâu khoá riêng tư. Và rất có thể sẽ cần nhập xâu khoá công khai:
gpg --import /đường/dẫn/pubring.pgpNgoài ra, cũng có thể nhập từng khoá thay vì nhập cả xâu khoá.
Tuy nhiên, việc nhập khoá hay xâu khoá không phải là giải pháp tốt nếu thao tác trên máy tính không phải của chính người dùng. Khi đó, có thể chép các xâu khoá vào thiết bị lưu trữ ngoài (đĩa mềm, CD,...) và trực tiếp dùng chúng bằng các tuỳ chọn --keyring xâu_khoá_công_cộng hoặc --secret-keyring xâu_khoá_cá_nhân (có thể thêm tuỳ chọn --no-default-keyring để không dùng các xâu khoá mặc định). Nếu không ghi rõ đường dẫn cho các xâu khoá thì chúng sẽ được tìm trong thư mục nhà (~/.gnupg nếu không dùng --homedir).
Tuỳ chọn --encrypt được dùng để mã hoá tài liệu.
gpg --output doc.gpg --encrypt --recipient uid docTài liệu cần mã hoá là doc và tài liệu xuất đã được mã hoá là doc.gpg;
--recipient chỉ định khoá công khai được dùng, có thể dùng nhiều --recipient.
Giải mã tài liệu với tuỳ chọn --decrypt.
gpg --output doc --decrypt doc.gpgQuá trình này dùng khoá riêng tư và cần nhập cụm từ vượt.
Để giải mã tài liệu với xâu khoá bên ngoài:
gpg --secret-keyring xâu_khoá --output doc --decrypt doc.gpg
Tài liệu cũng có thể được mã hoá mà không cần khoá công khai, được dùng khi muốn bảo mật tài liệu.
gpg --output doc.gpg --symmetric doc Enter passphrase:Cụm từ vượt ở đây nên khác với từ vượt dùng bảo vệ khoá riêng tư.
gpg --output doc.sig --sign docTài liệu doc sẽ được nén trước khi kí và kết quả xuất doc.sig ở dạng nhị phân.
Một tài liệu đã được kí có thể được kiểm tra chữ kí (--verify) hoặc vừa kiểm tra chữ kí và vừa khôi phục tài liệu (--decrypt).
gpg --output doc --decrypt doc.sig
--clearsign gói tài liệu trong chữ kí dạng ASCII mà không làm thay đổi tài liệu (vẫn có thể đọc được văn bản đã kí).
gpg --clearsign docsẽ được tập tin doc.asc có dạng
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [...] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFByvLH4+iEI365Zq8RAmiEAKCDEv6WDgjfTrWND4mmmHNm2r/2QwCg0+M+ Qo5/YuYlQonM50WUDvNfGAg= =DnKK -----END PGP SIGNATURE-----Dùng tuỳ chọn
--verify để xác minh chữ kí.
gpg --output doc.sig --detach-sig docViệc xác minh chữ kí cần cả tài liệu và chữ kí tách rời.
gpg --verify doc.sig doc
gpg -sear uid docvới
s: sign, e: encrypt, a: armor, và r: recipient. Bỏ tuỳ chọn a nếu muốn tạo tập tin nhị phân.
~/.gnupg/pubring.gpg):
gpg --list-keys
gpg --list-sigs
--list-keys, nhưng kèm các chữ kí
gpg --fingerprint
--list-keys, nhưng kèm các dấu vân tay
gpg --delete-key uid
~/.gnupg/secring.gpg):
gpg --list-secret-keys
gpg --delete-secret-key uid
gpg --edit-key uidhiển thị khoá công khai cho dù khoá riêng tư có hay không. Cột đầu tiên cho biết loại khoá (
pub: khoá công khai chính (public master signing key), sub: khoá công khai phụ (public subordinate key)). Cột thứ hai cho biết chiều dài bit, loại (D: khoá DSA, g: khoá ElGamal chỉ dùng mã hoá, và G: khoá ElGamal có thể dùng cho mã hoá và kí), và ID của khoá. Cột thứ ba và thứ tư cho biết ngày tạo và ngày hết hạn của khoá. Tiếp theo các khoá là danh sách căn cước người dùng.
Lệnh toggle chuyển qua lại giữa khoá công khai và khoá riêng tư, nếu cả hai cùng có mặt. Thông tin ở khoá riêng tư được hiển thị tương tự như ở khoá công khai. Từ sec cho biết khoá riêng tư chính (private master signing key) và sbb cho biết khoá riêng tư phụ (private subordinate key).
Chữ kí trên căn cước người dùng có thể được kiểm tra bằng lệnh check từ menu của lệnh gpg --edit-key.
adduid, có ích khi cần nhiều căn cước, thí dụ căn cước riêng cho nơi làm việc, cho hoạt động xã hội, cho gia đình, dùng nhiều địa chỉ email với khoá...
Thêm khoá phụ (subkey): addkey. Giao diện tương tự như khi tạo cặp khoá đầu tiên. Khoá phụ có ích lợi vì đối với khoá công khai chủ, mỗi lần thay đổi cần được tái xác thực, là việc có thể khó khăn và mất thời gian; trong khi khoá phụ có thể được thay đổi dễ dàng và việc thay đổi định kì khoá phụ là điều tốt. Nếu một khoá phụ bị phá thì chỉ những tài liệu mã hoá với khoá đó bị lộ.
Khi khoá phụ hay căn cước người dùng được phát sinh, nó được tự kí với khoá kí chủ, do đó quá trình này đòi cung cấp cụm từ vượt.
Xoá căn cước người dùng và khoá phụ: trước hết cần chọn căn cước hoặc khoá phụ muốn thao tác bằng các lệnh tương ứng uid hoặc key với đối số là số thứ tự của căn cước hoặc khoá phụ. Các lệnh này có trạng thái bật/tắt (lặp lại lệnh để bỏ chọn hoặc chọn lại). Nếu không có đối số nào được đưa ra, tất cả căn cước người dùng hoặc khoá phụ sẽ bị bỏ chọn. Sau khi được chọn, các căn cước người dùng hoặc khoá phụ được xoá bằng các lệnh tương ứng deluid và delkey.
Trong việc quản lí xâu khoá tại chỗ, xoá các thành phần của khoá là cách tốt để loại bỏ những thông tin không cần thiết khỏi khoá công khai của người khác. Tuy nhiên xoá căn cước người dùng và khoá phụ của chính khoá mình thì không luôn là cách hay vì nó gây rắc rối cho việc phân phối khoá. Theo mặc định, khi một người nhập khoá công khai mới được cập nhật của bạn nó sẽ được trộn lẫn với phiên bản cũ của khoá công khai của bạn trên xâu khoá của anh ta, nếu nó tồn tại. Các thành phần từ hai khoá đó sẽ được kết hợp, do đó nó sẽ phục hồi lại những gì mà bạn đã xoá. Trong trường hợp này để cập nhật đúng đắn khoá, người dùng cần phải xoá phiên bản cũ của khoá trước khi nhập khoá mới. Điều này đặt thêm một gánh nặng cho anh ta. Hơn nữa khi bạn gửi khoá lên key server, quá trình hoà trộn xảy ra không thay đổi được. Do đó, khi cập nhật khoá của chính mình người dùng nên thu hồi các thành phần khoá thay vì xoá chúng.
revkey sau khi chọn khoá phụ cần thao tác. Khoá được thu hồi sẽ có chữ kí tự thân báo nó đã được thu hồi. Không như tuỳ chọn dòng lệnh --gen-revoke, việc thu hồi khoá phụ có tác dụng ngay tức thì.
Căn cước người dùng miêu tả người thực sự sở hữu khoá liên hệ, do đó về lí thuyết nó không thể được thay đổi. Tuy vậy trong thực tế các thành tố trong căn cước người dùng có thể được thay đổi trong quá trình sử dụng, như địa chỉ email và lời bình, vì vậy nó làm mất hiệu lực căn cước người dùng.
Quy định kĩ thuật của OpenPGP không hỗ trợ thu hồi căn cước người dùng, nhưng căn cước người dùng có thể được thu hồi hiệu quả bằng cách thu hồi chữ kí tự thân có trên nó. Do đó, vì lí do an toàn, căn cước người dùng không có chữ kí tự thân sẽ không được tin tưởng.
Chữ kí được thu hồi bằng lệnh revsig, sẽ có dấu nhắc để quyết định những chữ kí nào cần thu hồi. Lệnh check liệt kê những chữ kí nào đã bị thu hồi.
Khoá phụ và chữ kí tự thân bị thu hồi sẽ không bị xoá mà có chữ kí tự thân thông báo nó đã được thu hồi. Vì vậy việc thu hồi giúp khoá công khai luôn được giữ nhất quán khi phân phối và nhập với các bản cũ của nó.
expire. Nếu không chọn khoá nào thì khoá chính sẽ được cập nhật.
trust. Trong thực tế, mức tin tưởng mang tính chủ quan. Ví dụ A đã kí khoá của B và B đã kí khoá của C và D. Do đó khoá của B thì xác thực đối với A; nhưng A có thể không tin tưởng B xác thực đúng đắn các khoá anh ta kí, khi đó A sẽ không chấp nhận các khoá của C và D là xác thực nếu chỉ dựa trên chữ kí của B. Mô hình mạng lưới tin tưởng giúp kiểm tra khả năng xác thực khoá bằng cách liên hệ mỗi khoá trong xâu khoá một với mức độ tin tưởng của bạn vào người chủ khoá. Có các mức tin tưởng:
Trong mô hình mạng lưới tin tưởng, một khoá K được xem là xác thực khi nó thoả mãn 2 điều kiện:
gpg --output my-revocation.asc --gen-revoke mykeyidtrong đó mykeyid là ID của cặp khoá chính, my-revocation.asc là chứng nhận thu hồi được phát sinh. Nếu không có tuỳ chọn
--output, kết quả sẽ được xuất ra standard output. Chứng nhận này thường ngắn, do đó nó có thể được in ra và giữ ở một nơi an toàn.
Chứng nhận thu hồi có thể được công bố để báo cho người khác biết khoá công khai không còn được sử dụng. Trường hợp này gặp khi người dùng quên cụm từ vượt, khoá riêng tư bị mất hoặc lộ,...
Vì hầu hết các keyserver không chấp nhận chứng nhận thu hồi ở dạng "trần trụi", nên chứng nhận này cần được nhập vào gpg và gửi khoá đã bị thu hồi lên keyserver:
gpg --import my-revocation.asc gpg --keyserver certserver.pgp.com --send-keys mykeyidKhoá công khai bị thu hồi vẫn có thể được dùng để xác minh chữ kí trong quá khứ, nhưng không thể được dùng để mã hoá thông điệp gửi đến người chủ. Nó cũng không ảnh hưởng đến việc giải mã thông điệp cũ nếu người dùng vẫn còn khoá riêng tư.
Gửi khoá lên key server:
gpg --keyserver key_server --send-keys uidLấy khoá từ key server hoặc kiểm tra chữ kí mới:
gpg --keyserver key_server --recv-keys uidCó thể liệt kê nhiều uid cùng lúc khi thực hiện các lệnh này.
Nếu không biết rõ uid, có thể tìm (rồi sau đó nhập) khoá:
gpg --keyserver key_server --search-keys từ_cần_tìmtrong đó từ_cần_tìm có thể chứa khoảng trắng.
Nhiều key server công cộng có tại các tên miền pgp.net và keyserver.net; dùng lệnh "host -la <domain>" hay "dig @<server> axfr <domain>" để có danh sách mới nhất. Danh sách key server công cộng cũng được liệt kê ở http://keyserver.kjsl.com/~jharris/keyserver.html. Một số ví dụ là wwwkeys.eu.pgp.net, pgp.mit.edu, pgp.nic.ad.jp... (pgp.nic.ad.jp có thể dùng với cổng 80 - cổng thông thường của key server là 11371.)
Vì các key server được đồng bộ hoá cơ sở dữ liệu nên chỉ cần gửi khoá công khai lên một server và thường trong vài giờ khoá sẽ có mặt ở hầu hết các server. Điều đó cũng làm cho việc dỡ bỏ hay xoá một khoá đã gửi khỏi key server là điều không khả thi; thay vào đó, người dùng huỷ bỏ khoá cũ bằng cách tải chứng nhận thu hồi lên key server. Trong trường hợp quên cụm từ vượt hoặc mất khoá riêng tư để tạo chứng nhận thu hồi, người dùng có thể áp dụng cách sau để báo cho người khác biết một khoá công khai không còn được sử dụng: tạo một khoá mới, tự kí (đừng tải lên key server vào lúc này), thêm ID người dùng là "Key revoked -- do not use" vào khoá đó, cho ID này làm ID người dùng chính, tự kí nó, kí khoá công khai cũ (nếu bị mất thì lấy nó từ key server) với khoá mới này, tải khoá công khai cũ lên key server, xoá ID người dùng "Key revoked -- do not use" khỏi khoá mới, và tải khoá mới lên key server.
Ngoài ra cũng có báo cáo về việc bị nhận spam email do địa chỉ email bị tiết lộ khi gửi khoá lên key server công cộng. Cách giải quyết chủ yếu dựa trên phần mềm lọc spam cho email vì người dùng và key server cũng không làm được gì nhiều trong chuyện này.
--with-colons cho ra căn cước khoá dài.
= theo ngay trước căn cước người dùng.
<) để biểu thị chế độ địa chỉ email.
+ ở ngay trước từ đầu tiên: phải có tất cả các từ đó, không cần theo thứ tự, không phân biệt hoa/thường. Từ gồm chuỗi chữ cái, số, dấu gạch dưới và mọi kí tự 7 bit.
~/.gnupg; trên Windows là C:\gnupg\.
Tuỳ chọn sau yêu cầu GnuPG tạo xâu khoá (và các tập tin khác) tại một nơi khác:
--homedir /my/path/Tuỳ chọn này khác với
--keyring ở chỗ mục đích của --keyring là chỉ định thêm một tập tin xâu khoá khác vào danh sách xâu khoá đang dùng. Nếu chỉ muốn sử dụng xâu khoá này, thêm tuỳ chọn --no-default-keyring cùng với --keyring.
gpgsplit --no-split --secret-to-public secret.gpg >publickey.gpgTrước hết nên xuất khoá riêng tư và chỉ tạo khoá công khai từ nó; tuy nhiên, dùng cả xâu khoá riêng tư vẫn được.