Năm 1991, Pretty Good Privacy (PGP) xuất hiện và kể từ đó nó được sử dụng để làm thước đo tiêu chuẩn trong việc bảo mật email.
Vậy PGP là gì? Cách thức hoạt động của nó ra sao?
Những vướng mắc đó sẽ được BKHOST giải đáp ở bài viết dưới đây.
Mã hóa PGP là gì?
PGP là viết tắt của cụm từ Pretty Good Privacy. Đây là một chương trình được các doanh nghiệp sử dụng phổ biến để mã hóa và giải mã các file qua Internet như email, file văn bản, đa phương tiện,… Ngoài ra nó còn được dùng để xác thực các tin nhắn bằng chữ ký số.
PGP được xuất bản lần đầu tiên vào năm 1991 bởi Philip R. Zimmermann. Ban đầu nó được tung ra thị trường dưới dạng phần mềm miễn phí. Sau một thời gian nó trở thành một sản phẩm thương mại có chi phí thấp.
Hiện tại phần mềm miễn phí ban đầu và các phiên bản thương mại của PGP không còn khả dụng. Quyền sở hữu phần mềm này đã qua nhiều lần đổi chủ, người sở hữu đầu là Zimmerman, tiếp đến là PGP Inc. – công ty mà Philip R. Zimmermann đã thành lập để marketing PGP. Năm 1997, Network Associates Inc. (NAI) đã mua lại PGP Inc. Ngoài ra có nhiều công ty đã marketing một số hoặc trọn gói công nghệ PGP như Broadcom, Intel, McAfee Associates, Symantec…
Năm 1996, Lực lượng Chuyên trách về Kỹ thuật Liên mạng (Internet Engineering Task Force – IEFT) đã tạo ra một phiên bản mới của PGP được gọi là OpenPGP Working Group (OpenPGP). Phiên bản mã nguồn mở này đã loại bỏ được vấn đề liên quan tới xuất mật mã và đảm bảo bất cứ ai cũng có thể dùng công cụ mã hóa. GNU Privacy Guard (GPG) là việc triển khai tiêu chuẩn OpenPGP và nó được xuất bản theo Giấy phép Công cộng GNU (GPL).
Tuy nhiên, kể từ tháng 4 năm 2020, nhãn hiệu thương mại Pretty Good Privacy (PGP) đã bị loại bỏ. Thay vào đó nó được xem là một giao thức cho việc triển khai đặc tả OpenPGP.
PGP hoạt động như thế nào?
PGP sử dụng một biến thể của hệ thống public key (khóa công khai). Trong hệ thống này mỗi người sẽ có một public key và một private key (khóa riêng tư). Khi một ai đó muốn gửi tin nhắn cho người khác họ sẽ dùng public key PGP của người đó để mã hóa tin nhắn. Người nhận sau khi nhận được tin nhắn sẽ mã hóa nó bằng private key PGP của họ.
Mã hóa toàn bộ thư bằng public key sẽ tốn khá nhiều tài nguyên vì thế PGP sử dụng thuật toán mã hóa khóa đối xứng để mã hóa thông điệp sau đó mới dùng public key để mã hóa mã khóa đối xứng đó. Tất cả thông điệp được mã hóa và khóa mã hóa đối xứng đều được gửi tới người nhận. Lúc này người nhận sẽ dùng private key của họ để giải mã khóa ngắn sau đó dùng khóa đó để giải mã thông điệp.
Chương trình PGP khi mới ra đời được cung cấp trong hai phiên bản:
- Rivest-Shamir-Adleman (RSA) và Diffie – Hellman. Phiên bản RSA sử dụng IDEA (thuật toán mã hóa dữ liệu quốc tế) để tạo khóa ngắn, thông báo và sử dụng RSA để mã hóa khóa ngắn.
- Phiên bản Diffie-Hellman dùng CAST để mã hóa thông điệp và dùng Diffie-Hellman mã hóa khóa ngắn.
Bên cạnh mã hóa PGP còn cho phép sử dụng chữ ký số. Với chữ ký điện tử PGP sử dụng một thuật toán để tạo ra hashing (hàm băm) từ tên người dùng và chữ ký. Hashing (hàm băm) sẽ được mã hóa bằng private key của người gửi, người nhận sẽ dùng public key của người gửi để mã hóa hashing. Phiên bản RSA dùng thuật toán MD5 để tạo hashing trong khi đó Diffie-Hellman lại dùng thuật toán SHA – 1.
Cách nhận PGP
Để có được PGP người dùng phải tải xuống hoặc mua và cài đặt nó trên hệ thống máy tính của mình. Giao diện của nó tương thích với chương trình email của người dùng. Public key mà PGP cung cấp phải được đăng ký với server public key PGP để những người trao đổi tin nhắn với người dùng có thể tìm thấy public key.
Phần mềm PGP hỗ trợ giao thức OpenPGP sẽ là một ứng dụng độc lập như GPG hoặc cũng có thể là chương trình plugin, applet, front – end. Hầu hết các trường hợp PGP được đóng gói như một phần của trình duyệt web hoặc email client.
Khái niệm PGP
PGP phụ thuộc những khái niệm để người dùng dễ dàng truy cập và chia sẻ public key cũng như truyền tải thông tin mật mã qua hệ thống và các mạng. Dưới đây là một số thuật ngữ quan trọng liên quan tới PGP:
- Alice và Bob: Đây là tên của hai người xuất hiện trong các ví dụ minh họa việc trao đổi mật mã.
- Web of trust: Thuật ngữ này được dùng để mô tả cách thức thiết lập độ tin cậy trong public key. Người dùng PGP có thể trao gửi niềm tin cho người nắm giữ chìa khóa mà họ tương tác. Nếu họ cảm thấy tin tưởng họ sẽ sẵn sàng ký vào các khóa đó để xác thực cặp khóa và người nắm giữ nó. Ví dụ như nếu Alice tin tưởng vào mức độ Bob xem xét các public key thì Alice cũng sẽ đặt niềm tin vào những public key đó.
- Implicit trust: Thuật ngữ này dùng để chỉ cho niềm tin ngầm được thiết lập qua web of trust, chẳng hạn như việc Alice ký cặp public key với Bob. Hành động đó cho thấy Alice đã kiểm tra những thứ liên quan tới Bob như public key, private key, địa chỉ email…
- Explicit trust: Đây là một loại tin cậy khác cũng được tạo nên từ web of trust. Nó xảy ra khi một người dùng chung thứ ba là Carlos tin tưởng vào phán đoán của Alice về những cá nhân nắm chìa khóa mà cô ấy đã ký, trong đó có Bob. Từ niềm tin đó, Carlos chấp nhận cặp public key của Alice và Bob.
- Key signing: Là chức năng PGP cho phép một người thông báo rằng “tôi tin rằng khóa này thuộc về người này”. Zimmermann (người tạo ra PGP) nhấn mạnh cần xác minh những điều sau: khóa bạn đang ký, danh tính người giữ chìa khóa, quyền sở hữu email và khóa cá nhân, ASCII armor, Session key.
PGP được sử dụng để làm gì?
Chức năng đầu tiên của PGP là mã hóa. Nó cho phép mã hóa thông tin hoặc dữ liệu nhạy cảm kể cả đó là file, email hay SMS. Người dùng PGP sẽ mã hóa để bảo mật dữ liệu và nó chỉ có thể được giải mã bằng private key của người nhận. Ngoài ra PGP còn xác thực chữ ký điện tử, người dùng sẽ sử dụng public key của người ký để xác thực chữ ký đó.
Nhìn chung phần mềm PGP giúp người dùng thực hiện những giao dịch PGP cơ bản như tạo cặp public key, thu hồi cặp public key, chỉ định server public key, mã hóa và giải mã dữ liệu, ký điện tử vào SMS hoặc file, xác thực chữ ký điện tử,…
PGP được dùng chủ yếu để mã hóa hoặc ký chữ ký điện tử ở file, email. Tuy nhiên, nó còn có vai trò quan trong trong những việc như mã hóa và ký số truyền trong các ứng dụng SMS, mã hóa và ký kỹ thuật số ổ đĩa…
Những thách thức của PGP
PGP là phần mềm giúp người dùng bảo mật thông tin khi trao đổi với người khác thông qua SMS hay email… Mặc dù mang lại lợi ích rất lớn nhưng việc triển khai và sử dụng PGP vẫn gặp nhiều thách thức bởi:
- Khả năng sử dụng: PGP gây ra bất lợi cho người dùng vì nó khó sử dụng cho dù ở dòng lệnh hay trong GUI.
- Độ phức tạp: Nhiều người dùng mới cảm thấy khó hiểu các thuật ngữ, khái niệm liên quan tới PGP và cả quy trình hoạt động của nó.
- Cơ sở hạ tầng phi tập trung: Việc sử dụng web of trust có thể khiến con số tham gia hạn chế.
PGP vs OpenPGP vs GPG
Vào những năm 1990 PGP được coi là phần mềm độc quyền và trở nên phổ biến với các tổ chức và chuyên gia máy tính. Tuy nhiên đến năm 1996 khi được công bố như một tiêu chuẩn thông tin thì PGP được đổi tên thành OpenPGP và năm 1998 chuyển sang tiêu chuẩn IETF.
PGP không chỉ là phần mềm miễn phí được Zimmermann phát triển mà còn được sử dụng để mô tả cho bất cứ phần mềm nào có sự hỗ trợ của giao thức OpenPGP. Còn với GPG là mã nguồn mở được xem là triển khai đầu tiên của OpenPGP.
Lịch sử của PGP
PGP ra mắt lần đầu tiên vào năm 1991 và vào thời điểm đó nó được xem là tiêu chuẩn bảo mật email tốt nhất. Trải qua quá trình phát triển đã có sự thay đổi về chủ sở hữu và nhiều phiên bản mới ra đời. Dưới đây là tóm lược lịch sử của PGP:
- 1991: Phát hành phiên bản PGP đầu tiên bởi Zimmermann.
- 1993: Cơ quan Hải quan Hoa Kỳ điều tra Zimmermann với cáo buộc xuất khẩu bom, đạn, phần mềm mã hóa mạnh sang nước khác nhưng không có giấy phép.
- 1995: Để tránh bị khởi tố vì xuất khẩu PGP, Zimmermann đã xuất bản tất cả mã nguồn PGP dưới dạng sách.
- 1996: Cơ quan Hải quan kết thúc điều tra hình sự với Zimmermann và không đưa ra bất cứ cáo buộc nào.
- 1996: IETF xuất bản RFC 1991 như một giao thức thông tin.
- 1997: Phiên bản 0.0.0 của chương trình GPG được ra mắt.
- 1997: Phiên bản cập nhật toàn bộ PGP được xuất bản với tên gọi đầu tiên là PGP 3, sau đó đổi thành PGP 5.
- 1997: NAI mua lại PGP lnc (công ty của Zimmermann), Zimmermann và nhóm PGP được thuê làm nhân viên của NAI.
- 1999: Phiên bản 1.0.0 của chương trình GPG ra mắt.
- 2000: Townsend Security hợp tác với NAI và phát triển PGP cho máy tính lớn.
- 2002: NAI tuyên bố không hoạt động trên PGP và chào bán PGP.
- 2002: Cựu thành viên nhóm PGP thành lập PGP Corp. và mua tài sản PGP từ NAI.
- 2007: IETF xuất bản OpenPGP (phiên bản mã nguồn mở của PGP).
- 2010: Symantec mua lại PGP Corp.
- 2010: Hãng sản xuất chip lớn nhất thế giới Intel đã mua lại McAfee (trước đây là NAI) và sản phẩm McAfee E-Business Server. Năm 2013 Intel chuyển McAfee E-Business Server cho Software Diversified Services (nhà cung cấp phần mềm máy tính lớn cho doanh nghiệp).
Tổng kết về PGP
Mã hóa PGP thực sự rất cần thiết để bạn bảo mật email. Tuy nhiên để đảm bảo an toàn bạn hãy cài đặt private key ở chế độ riêng tư. Hy vọng với những thông tin có được về PGP bạn sẽ biết cách dùng nó cho bản thân và tổ chức của mình.
Nếu bạn có thắc mắc về PGP, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.
- pgp encryption
- pgp public key
- mã hóa pgp