Pretty Good Privacy – PGP là gì? Sử dụng PGP để liên lạc email an toàn

Trong bài viết này, Tri Thức Software sẽ giải thích PGP là gì, nó khác với S/MIME như thế nào và tại sao việc mã hóa và ký điện tử email lại quan trọng hơn bao giờ hết.

PGP là gì?

Pretty Good Privacy (PGP) là một chương trình mã hóa cung cấp xác thực và bảo mật mật mã.

Nếu không thực hiện các biện pháp phòng ngừa, email vẫn là một trong những phương thức liên lạc kém an toàn nhất. Để giữ cho thư từ của bạn được bảo mật và không thể bị xâm phạm, PGP cung cấp một phương pháp mạnh mẽ để mã hóa và ký điện tử email của bạn.

PGP sử dụng sự kết hợp giữa mã hóa đối xứng (một khóa duy nhất để mã hóa và giải mã nội dung tin nhắn) và mã hóa bất đối xứng (cặp khóa công khai/riêng tư). Tin nhắn được mã hóa bằng mã hóa đối xứng để tăng hiệu quả, trong khi mã hóa bất đối xứng được sử dụng để trao đổi khóa đối xứng một cách an toàn, giải mã nó ở phía người nhận và xác minh chữ ký số.

Mỗi người dùng có một cặp khóa:

  • Khóa công khai là khóa được chia sẻ với người khác và được sử dụng để mã hóa tin nhắn gửi cho bạn.
  • Khóa riêng tư là loại khóa được giữ bí mật và dùng để giải mã các tin nhắn bạn nhận được cũng như ký các tin nhắn bạn gửi đi.

Khi bạn gửi một tin nhắn được mã hóa bằng khóa công khai của người khác, chỉ có khóa riêng của họ mới có thể giải mã được tin nhắn đó. Tương tự, khi bạn ký một tin nhắn bằng khóa riêng của mình, bất kỳ ai có khóa công khai của bạn đều có thể xác minh rằng tin nhắn đó đến từ bạn và chưa bị thay đổi.

PGP so với S/MIME: Sự khác biệt là gì?

Trong một bài đăng trên blog trước đó, tôi đã giải thích cách thức hoạt động của S/MIME, chức năng của nó, cũng như cách yêu cầu và cấu hình nó. Cả PGP và S/MIME đều cung cấp mã hóa email và chữ ký số, nhưng chúng khác nhau về kiến ​​trúc và cách sử dụng.

  • S/MIME : Sử dụng chứng chỉ X.509 do Tổ chức cấp chứng chỉ (CA) đáng tin cậy cấp trong mô hình Cơ sở hạ tầng khóa công khai (PKI). Nó được quản lý tập trung và thường được tích hợp vào các nền tảng email doanh nghiệp như Outlook. S/MIME cho phép mã hóa và ký điện tử email bằng mật mã khóa công khai.
  • PGP : Sử dụng mô hình mạng lưới tin cậy, trong đó người dùng tự xác thực khóa của nhau bằng cách sử dụng các tệp văn bản được mã hóa ASCII ( .asc). Đây là một hệ thống phi tập trung, nghĩa là không cần cơ quan trung ương. Mặc dù PGP cung cấp tính linh hoạt cao hơn, nhưng nó cũng liên quan đến việc quản lý khóa thủ công, điều này có thể phức tạp hơn đối với người dùng.

Nhìn chung, S/MIME dễ triển khai hơn vì nó được tích hợp sẵn trong nhiều nền tảng email doanh nghiệp và cho phép quản lý chứng chỉ thông qua một cơ quan trung ương. Mặt khác, PGP phổ biến hơn đối với những người quan tâm đến quyền riêng tư vì tính chất phi tập trung và tính minh bạch mà nó mang lại.

PGP cung cấp tính bảo mật, toàn vẹn, xác thực và không thể phủ nhận (thường được nhóm lại thành bộ ba CIANA) cho giao tiếp email, tương tự như S/MIME. Tuy nhiên, tính không thể phủ nhận trong PGP dễ bị thách thức hơn, đặc biệt nếu khóa riêng bị xâm phạm hoặc liên kết yếu với một danh tính có thể xác minh được. Vì PGP là phi tập trung, thường không có cơ quan nào đứng sau để chứng minh rằng một khóa cụ thể thuộc về một người cụ thể. Ví dụ, nếu ai đó tuyên bố, “Đó không phải là tôi, người khác đã sử dụng khóa của tôi” , thì rất khó để bác bỏ. Ngược lại, S/MIME dựa vào các Tổ chức cấp chứng chỉ (CA) có thể thực hiện xác minh danh tính (ví dụ: kiểm tra hộ chiếu hoặc quyền sở hữu công ty), cung cấp sự đảm bảo pháp lý mạnh mẽ hơn trong những trường hợp như vậy. Đây là nơi mà phương pháp tập trung của S/MIME có thể mang lại lợi thế.

Tại sao nên mã hóa và ký email bằng PGP?

  1. Hãy bảo mật email của bạn: Hầu hết email được gửi dưới dạng văn bản thuần, nội dung tin nhắn thực tế của bạn được lưu trữ mà không được mã hóa trên máy chủ của nhà cung cấp email. Điều đó có nghĩa là nhà cung cấp, hoặc bất kỳ ai có quyền truy cập vào hệ thống của họ, đều có thể đọc nội dung email của bạn. Mặc dù email thường được truyền qua các kết nối được mã hóa bằng TLS, nhưng điều này chỉ bảo vệ tin nhắn trong quá trình truyền tải, chứ không phải khi lưu trữ. Khi tin nhắn đến máy chủ thư của người nhận, nó thường được lưu trữ mà không được mã hóa và nhà cung cấp đó có thể truy cập được. Một số nhà cung cấp có thể quảng cáo mã hóa đầu cuối trong hệ sinh thái của riêng họ, nhưng các khóa mã hóa thường được quản lý bởi nhà cung cấp, chứ không phải bởi bạn. Điều này có nghĩa là nhà cung cấp, hoặc bất kỳ ai có quyền truy cập vào hệ thống của họ, đều có khả năng đọc hoặc giải mã email của bạn. Mã hóa PGP đảm bảo rằng chỉ người nhận dự định mới có thể giải mã tin nhắn của bạn, ngay cả khi nhà cung cấp email bị xâm phạm hoặc bị chính phủ giám sát hoặc có cửa hậu.
  2. Ngăn chặn giả mạo : Bằng cách ký email bằng khóa riêng của bạn, người nhận có thể xác minh rằng tin nhắn đến từ bạn và không bị thay đổi trong quá trình truyền tải. Điều này giúp bảo vệ chống lại các cuộc tấn công trung gian hoặc giả mạo.
  3. Bảo vệ chống lại các cửa hậu của chính phủ : Ở nhiều quốc gia, chính phủ đã gây áp lực hoặc buộc các công ty công nghệ phải cài đặt cửa hậu vào dịch vụ của họ, những cách thức ẩn giấu để các cơ quan chức năng truy cập dữ liệu người dùng. Ngay cả khi bạn không làm gì sai, sự tồn tại của những cửa hậu này có nghĩa là các cuộc liên lạc riêng tư của bạn có thể bị truy cập mà bạn không hề hay biết. Mã hóa PGP là mã hóa đầu cuối và do người dùng kiểm soát, có nghĩa là ngay cả nhà cung cấp email của bạn cũng không thể giải mã tin nhắn của bạn, và cơ quan chính phủ cũng vậy, trừ khi họ có được khóa riêng tư của bạn.
  4. Thiết lập danh tính kỹ thuật số : Khóa PGP công khai của bạn đóng vai trò như một chữ ký số duy nhất gắn liền với danh tính của bạn. Khi càng nhiều người xác minh và liên kết khóa của bạn với bạn, thì việc kẻ mạo danh gửi email giả mạo dưới tên bạn càng trở nên khó khăn hơn. Như tôi đã giải thích trong bài viết trước về S/MIME, đặc biệt là trong bối cảnh xác thực email gửi đi, việc ký tên vào tin nhắn một cách nhất quán giúp xây dựng lòng tin. Nếu một tin nhắn đột nhiên thiếu chữ ký thông thường của bạn, người nhận có thể coi đó là một dấu hiệu đáng ngờ và chọn bỏ qua nó, ngay cả khi nó vượt qua quá trình xác thực gửi đi cho miền gửi.

Thiết lập liên lạc email an toàn với OpenPGP

OpenPGP là tiêu chuẩn được sử dụng rộng rãi nhất để mã hóa email. Có rất nhiều công cụ và ứng dụng thân thiện với người dùng hỗ trợ nó, chẳng hạn như GPG Suite và nhiều plugin email khác nhau (ví dụ: Mailvelope). Trong bài viết này, chúng ta sẽ sử dụng công cụ dòng lệnh GnuPG (GNU Privacy Guard), thường được gọi là GPG, là tiện ích được sử dụng rộng rãi nhất để tạo và quản lý khóa PGP.

Lưu ý : Các bước dưới đây sử dụng PGP/Inline, chỉ mã hóa và ký phần nội dung văn bản gốc. Điều này nhằm giúp bạn làm quen với GnuPG. Có những cách dễ dàng hơn để sử dụng PGP, bạn sẽ tìm hiểu thêm ở phần sau của bài viết này. Nhưng trước tiên, hãy cùng tìm hiểu những điều cơ bản!

1. Cài đặt GnuPG (GNU Privacy Guard) bằng trình quản lý gói của bạn.

  • Linux (dựa trên Debian): sudo apt-get install gnupg
  • MacOS (thông qua Homebrew): brew install gnupg
  • Windows: winget install -e --id GnuPG.Gpg4win hoặc tải trực tiếp GPG4Win từ https://gpg4win.org.

2. Tạo cặp khóa

Chạy lệnh sau:

gpg --full-generate-key
  1. Chọn RSA và RSA để mã hóa
  2. Chọn kích thước khóa mong muốn (ví dụ: 4096 bit để tăng cường bảo mật)
  3. Đặt ngày hết hạn (không nên chọn không có ngày hết hạn nếu muốn sử dụng vĩnh viễn)
  4. Nhập tên và địa chỉ email của bạn khi được yêu cầu.
  5. Hãy đặt một mật khẩu mạnh để bảo vệ khóa riêng tư.

Sau khi hoàn tất, các khóa của bạn sẽ được lưu trữ trong kho khóa GPG. Bạn có thể xem cặp khóa đã tạo, bao gồm cả khóa công khai và khóa riêng tư tương ứng Fingerprint, bằng cách chạy các lệnh sau để liệt kê các khóa công khai và khóa riêng tư.

  • Hiển thị khóa công khai:
gpg --list-keys
  • Hiển thị khóa riêng tư:
gpg --list-secret-keys

3. Xuất khóa công khai của bạn

Những người khác sẽ cần khóa công khai của bạn để xác minh chữ ký số của bạn và/hoặc để gửi cho bạn các tin nhắn được mã hóa. Bạn có thể chia sẻ khóa công khai của mình thông qua trang web hoặc các kênh đáng tin cậy khác.

  • Xuất khóa công khai:
gpg --armor --export [email protected] > pgp-publickey.asc

4. Mã hóa tin nhắn

  1. Lưu khóa công khai của người nhận: nano pgp-publickey.asc(dán toàn bộ khối khóa công khai và lưu tệp bằng tổ hợp phím Ctrl+O, Enter, Ctrl+X)
  2. Nhập khóa công khai:gpg --import pgp-publickey.asc
  3. Xác minh thông tin Fingerprinttừ các nguồn đáng tin cậy như trang web của người nhận hoặc chữ ký email:gpg --fingerprint [email protected]
  4. Soạn tin nhắn của bạn:nano message.txt
  5. Mã hóa tin nhắn bằng khóa công khai của người nhận: gpg --encrypt --armor --recipient [email protected] message.txt, thao tác này sẽ tạo ra một tệp tin được mã hóa bằng ASCII, ví dụ:message.txt.asc
  6. Kết quả sẽ trông như thế này:
-----BEGIN PGP MESSAGE-----
hQIMAxOeBV
-----END PGP MESSAGE-----

5. Ký tên vào tin nhắn

  1. Ký điện tử vào tin nhắn đã mã hóa bằng khóa riêng của bạn: gpg --clearsign --local-user Fingerprint message.txt.asc(Thay thế Fingerprintbằng dấu vân tay khóa thực tế của bạn)
  2. Nhập mật khẩu khóa riêng tư của bạn. Thao tác này sẽ tạo ra một tập tin được mã hóa ASCII đã ký, ví dụ:message.txt.asc.asc
  3. Kết quả đầu ra sẽ có dạng như sau:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
- -----BEGIN PGP MESSAGE-----
hQIMAxOeBV
- -----END PGP MESSAGE-----
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEocmn9wnTqI
-----END PGP SIGNATURE-----
  1. Giờ đây, bạn có thể sao chép và dán tin nhắn đã được ký và mã hóa này vào ứng dụng email của mình, và sẵn sàng gửi đi để liên lạc qua email một cách an toàn.

6. Mã hóa tệp đính kèm (bổ sung)

  1. Mã hóa tệp đính kèm bằng khóa công khai của người nhận:gpg --encrypt --recipient [email protected] attachment.extension
  2. Thao tác này sẽ tạo ra một tập tin được mã hóa, ví dụ:attachment.extension.gpg
  3. Bạn có thể đính kèm .gpgtệp vào email.

7. Người nhận xác minh chữ ký điện tử của bạn

  1. Người nhận đã nhập khóa công khai của bạn.
  2. Họ dán đoạn văn bản nhận được vào một tệp có tên làsignedmessage.asc
  3. Để xác minh chữ ký: gpg --verify signedmessage.asc(thông điệp được ký bằng PGP bao gồm siêu dữ liệu xác định dấu vân tay khóa của bạn; GPG sau đó quét kho khóa của người nhận để tìm khóa công khai tương ứng của bạn nhằm xác minh chữ ký)
  4. Quá trình xác minh thành công sẽ trông như sau:
gpg: Good signature from "Your Name <[email protected]>"

8. Người nhận giải mã tin nhắn

  1. Người nhận phải có khóa riêng của họ trên hệ thống cục bộ.
  2. Họ dán nội dung được mã hóa bằng PGP vào một tệp có tên là…encryptedmessage.asc
  3. Để giải mã tin nhắn: gpg --decrypt encryptedmessage.asc(tin nhắn được mã hóa bằng PGP bao gồm siêu dữ liệu hiển thị dấu vân tay khóa của người nhận mà tin nhắn được mã hóa bằng; sau đó GPG sẽ quét kho khóa của người nhận để tìm khóa riêng phù hợp cần thiết để giải mã)
  4. Sau khi nhập mật khẩu cho khóa riêng của người nhận, quá trình giải mã thành công sẽ hiển thị như sau:
gpg: encrypted with rsa4096 key, ID ABCD1234....
This is the decrypted message content.

9. Người nhận giải mã tệp đính kèm (bổ sung)

  1. Người nhận phải có khóa riêng của họ trên hệ thống cục bộ.
  2. Để giải mã tệp đính kèm: gpg --decrypt -o attachment.extension attachment.extension.gpg(tệp đính kèm được mã hóa bằng PGP bao gồm siêu dữ liệu hiển thị dấu vân tay khóa của người nhận mà tệp được mã hóa bằng; sau đó PGP sẽ quét kho khóa của người nhận để tìm khóa riêng phù hợp cần thiết để giải mã)
  3. Sau khi nhập mật khẩu cho khóa riêng của người nhận, tệp đính kèm sẽ được giải mã như sau:attachment.extension

Đơn giản hóa việc sử dụng PGP

Phương án 1: Sử dụng GnuPG với tập lệnh bash dòng lệnh (PGP/Inline)

Mặc dù việc làm quen với gpgcác lệnh là điều tốt, tôi đã phát triển một tập lệnh bash giúp đơn giản hóa quá trình mã hóa, giải mã, ký và xác minh chữ ký PGP/Inline . Nó hoạt động trơn tru miễn là GnuPG được cài đặt trên hệ thống của bạn, có sẵn tại đây trên kho lưu trữ GitHub của tôi . Tôi cũng đã tạo một tập lệnh bash riêng để quản lý các khóa PGP, bao gồm tạo khóa, nhập và xuất. Bạn có thể tải xuống từ cùng kho lưu trữ tại đây.

Phương án 2: Sử dụng ứng dụng email (MUA) có chức năng PGP (PGP/MIME)

Ứng dụng Thunderbird MUA cung cấp giải pháp tích hợp chỉ dành cho PGP/MIME, giúp đơn giản hóa việc ký, mã hóa và giải mã. Nó cũng cung cấp tùy chọn công bố (thông qua keys.openpgp.org) và tìm kiếm các khóa công khai PGP có sẵn để mã hóa thông qua WKD hoặc keys.openpgp.org.

PGP/MIME so với PGP/Inline

Có nhiều định dạng khác nhau để áp dụng PGP, bao gồm PGP/MIME và PGP/Inline :

  • PGP/MIME (tiêu chuẩn được ưu tiên, tương thích với HTML) mã hóa và ký toàn bộ tin nhắn, bao gồm cả tệp đính kèm và tất cả siêu dữ liệu liên quan (ví dụ: dòng tiêu đề, phần đầu trang và người nhận).
  • PGP/Inline (chủ yếu là phương pháp cũ) chỉ mã hóa và ký phần nội dung văn bản gốc, các tệp đính kèm có thể được mã hóa riêng biệt .gpg.

LƯU Ý : Bạn có thể sử dụng PGP/Inline trong bất kỳ dịch vụ chuyển văn bản nào (ví dụ: các ứng dụng/nhà cung cấp email, WhatsApp, Signal) bằng cách sao chép và dán các tin nhắn đã ký và mã hóa dưới dạng văn bản thuần, ngay cả khi PGP/Inline không được hỗ trợ, chẳng hạn như trong Thunderbird.

Đơn giản hóa việc chia sẻ khóa công khai PGP

Thiết lập thư mục khóa web PGP (WKD)

Nếu bạn muốn sử dụng PGP, tốt nhất nên công bố khóa công khai của mình trong WKD. Nếu bạn đã có máy chủ web HTTPS đang chạy trên cùng tên miền với email của mình, bạn có thể công bố khóa công khai thông qua WKD. Điều này cho phép các chương trình email hỗ trợ WKD tự động tìm thấy khóa của bạn qua HTTPS hoặc nhập bằng GnuPG ( gpg --locate-keys [email]).

Nó hoạt động như thế nào?

Nếu ai đó muốn gửi cho bạn một email được mã hóa PGP bằng trình quản lý thư hỗ trợ WKD, trình quản lý thư (MUA) sẽ kiểm tra xem tên miền của bạn có bật WKD hay không. Nếu tìm thấy khóa công khai PGP của bạn, khóa đó sẽ tự động được thêm vào kho khóa của người gửi. Điều này cho phép người gửi mã hóa tin nhắn của họ bằng khóa công khai PGP của bạn và gửi một cách an toàn, mà không cần thêm bước nào. Nó cũng giúp người gửi dễ dàng tìm thấy khóa công khai của bạn hơn bằng cách sử dụng GnuPG với lệnh:gpg --locate-keys [email]

So sánh cài đặt nâng cao và cài đặt trực tiếp

Có hai cách để thiết lập WKD:

  • Phương pháp đầu tiên là phương pháp nâng cao , tùy chọn này khó cấu hình hơn và cần chứng chỉ đáng tin cậy do CA ký cho tên openpgpkeymiền phụ:
    • Triển khai nâng cao:https://openpgpkey.domain.com/.well-known/openpgpkey/domain.com/
  • Phương pháp thứ hai là phương pháp trực tiếp , phương pháp này dễ hơn vì không cần thêm bất kỳ bản ghi DNS nào:
    • Thực hiện trực tiếp:https://domain.com/.well-known/openpgpkey/
Thực hiện trực tiếp
  1. Nếu bạn định triển khai phương pháp trực tiếp, hãy tạo cấu trúc thư mục sau trên máy chủ web của bạn bên trong .well-knownthư mục:https://domain.com/.well-known/openpgpkey/hu/
  2. Sau khi tạo thư mục, hãy thêm một policy tệp trống để thông báo cho khách hàng biết rằng bạn đã thiết lập dịch vụ WKD:https://domain.com/.well-known/openpgpkey/policy
  3. Lấy uid đã được băm:gpg --with-wkd-hash --fingerprint [email]or[fingerprint]
  4. Xuất UID đã được mã hóa:gpg --export --no-armor [email]or[fingerprint] > [hasehd-uid]
  5. Di chuyển tệp đã tạo vào /hu/thư mục và kiểm tra xem tệp có thể tải xuống được hay không bằng cách sử dụng liên kết ví dụ bên dưới:https://domain.com/.well-known/openpgpkey/hu/hacabazoakmnagxwmkjerb9yehuwehbm
  6. Kiểm tra WKD của bạn:gpg --auto-key-locate clear,nodefault,wkd --locate-external-keys [email]
  7. Kiểm tra WKD của bạn bằng các công cụ kiểm tra trực tuyến: https://miarecki.eu/tools/wkd-checker/ , https://www.webkeydirectory.com/
  8. Tìm khóa WKD:gpg --locate-keys [email]

QUAN TRỌNG : Luôn xác minh Fingerprintchủ sở hữu chìa khóa từ các nguồn đáng tin cậy, chẳng hạn như trang web hoặc chữ ký email của họ, hoặc thông qua xác minh trực tiếp.

Tóm Lại

PGP vẫn là một trong những công cụ hiệu quả nhất để bảo mật liên lạc email. Bằng cách sử dụng mã hóa mạnh và chữ ký số, nó giúp bảo vệ tin nhắn của bạn khỏi sự giám sát, giả mạo và mạo danh, ngay cả trên các mạng hoặc nhà cung cấp email không đáng tin cậy. Mặc dù không dựa vào các cơ quan tập trung như S/MIME, PGP trao quyền cho cá nhân kiểm soát an ninh và quyền riêng tư của chính họ thông qua mô hình tin cậy phi tập trung. Nếu gặp bất kỳ khó khăn nào trong quá trình thực hiện, bạn có thể liên hệ banquyenphanmem.com hoặc gọi số 028.22443013 để được trợ giúp. Với các hướng dẫn trên, chúng tôi hy vọng bạn đã giải quyết được nhu cầu của mình một cách nhanh chóng và hiệu quả.

Bài viết liên quan

zalo-icon
phone-icon