Các trình nhắn tin, các trang web giao thức HTTPS, quyền hạn trong các dịch vụ Internet, lưu trữ tệp an toàn và đôi khi thậm chí là đồng hồ báo thức - tất cả những thứ này đều sử dụng PGP. Nhưng rốt cuộc thì nó là gì? Wikipedia đưa ra định nghĩa sau:
Pretty Good Privacy ( PGP ) là một chương trình mã hóa cung cấp quyền riêng tư và xác thực mật mã cho truyền thông dữ liệu . PGP được sử dụng để ký , mã hóa và giải mã văn bản, email , tệp, thư mục và toàn bộ phân vùng đĩa và để tăng cường bảo mật cho truyền thông email. Phil Zimmermann đã phát triển PGP vào năm 1991.
PGP và phần mềm tương tự tuân theo tiêu chuẩn OpenPGP (RFC 4880), một tiêu chuẩn mở để mã hóa và giải mã dữ liệu . Các phiên bản hiện đại của PGP có thể tương tác với GnuPG và các hệ thống tương thích OpenPGP khác.
Nói thì rất rõ ràng, nhưng chúng ta hãy cùng xem nó hoạt động như thế nào.
Hãy tưởng tượng rằng chúng ta có người dùng A và người dùng B. Họ cần bắt đầu giao tiếp, nhưng theo cách mà không ai có thể tìm ra nội dung thư từ của họ. Đây chính là lúc mã hóa phát huy tác dụng.
Các hệ thống hiện đại sử dụng Rjindael (hiện tại là AES), DES, RC4 và một số thuật toán khác.
Tôi sẽ không đi sâu vào chi tiết về công việc của họ. Tất cả những gì bạn cần biết về họ là nếu bạn cung cấp cho họ dữ liệu đầu vào và một khóa, bạn sẽ nhận được một mảng byte được mã hóa, có thể đảo ngược bằng cùng một khóa. Giống như ổ khóa, chúng mở và đóng, nhưng nếu không có khóa, gần như không thể làm như vậy (không có cách hiệu quả nào để phá vỡ các thuật toán này). Các thuật toán mã hóa như vậy được gọi là thuật toán mã hóa đối xứng.
Và đó là câu trả lời, phải không? Hãy để người dùng A đưa chìa khóa của mình cho người dùng B. Sau đó, bạn có thể mã hóa thư từ của mình từ cả hai phía và không ai biết họ viết gì cho nhau.
Tất nhiên, nếu cả hai người dùng quen biết nhau ngoài đời thực, người này có thể đưa cho người kia ổ đĩa flash có chìa khóa.
Nhưng trên Internet, điều này là không thể, người dùng không phải là hai, và một dịch vụ có thể phục vụ hàng triệu người dùng khác nhau mỗi ngày. Ngoài ra, không phải lúc nào cũng có thể cung cấp khóa mã hóa cá nhân của bạn cho tất cả những người mà bạn trao đổi trực tiếp trong một cuộc họp.
Vì việc truyền khóa riêng của bạn từ cùng một AES cũng giống như xâm phạm bảo mật của bạn, nên câu hỏi đặt ra là - làm thế nào người dùng A có thể truyền khóa của mình cho người dùng B một cách an toàn?
Giải pháp là ký khóa và email bằng một khóa khác! Nhưng chỉ có khóa thứ hai này sẽ là từ thuật toán mã hóa bất đối xứng. Bản chất giống như trong đối xứng, nhưng bây giờ, không có khóa duy nhất từ ổ khóa - có hai khóa. Một là "công khai", dữ liệu chỉ có thể được mã hóa bằng khóa đó, và khóa thứ hai là "riêng tư", có thể giải mã dữ liệu được xử lý bởi khóa công khai của cặp khóa đó.
Quá trình này cho phép bạn tự do công bố khóa công khai của mình mà không ảnh hưởng đến tính bảo mật.
Đây là cơ sở cho nguyên tắc hoạt động của “Chữ ký điện tử”.
Chúng cần thiết để người dùng B của dữ liệu có thể chắc chắn rằng dữ liệu đã được mã hóa bằng khóa thuộc về người dùng A và ngược lại.
Chữ ký được tạo ra từ hàm băm của dữ liệu gốc và được đính kèm vào gói tin được gửi đi.
Người nhận giải mã chữ ký bằng khóa công khai, so sánh với hàm băm của dữ liệu đã nhận và nếu khớp thì người gửi là người dùng thực sự chứ không phải kẻ lừa đảo.
Được rồi, chúng ta đã tìm ra cách thực hiện bắt tay (bắt tay là quá trình hình thành kênh truyền thông an toàn).
Bây giờ, hãy tưởng tượng rằng giữa người dùng A và B có một người dùng khác là C.
“C” là kẻ tấn công cần biết thông tin chi tiết về giao tiếp của A và B.
Anh ấy tạo ra hai cặp khóa để ký và hai khóa nữa để mã hóa dữ liệu.
Đối với người dùng A, anh ta giới thiệu mình là người dùng B và đối với người dùng B, anh ta giới thiệu mình là người dùng A. Thực tế là trong thế giới Internet, người ta không thể chắc chắn 100% rằng chữ ký điện tử và khóa kết quả là chính hãng.
Vậy, nếu kịch bản như vậy thực sự có thể xảy ra, thì A và B của chúng ta có an toàn không?
Có sự cứu rỗi! Bây giờ, chúng ta đã đến chủ đề chính - “Mạng lưới tin cậy”.
Mạng này bao gồm thực tế là tất cả người dùng đều biết khóa công khai của chữ ký điện tử của nhau và mỗi thành viên của mạng có thể được hỏi: "Khóa này, được người dùng B gửi cho tôi, có thuộc về anh ta hay không chứ không phải của kẻ xâm nhập nào đó?"
Trong trường hợp này, một mạng lưới tin cậy có thể rất hiệu quả ngay cả với số lượng người tham gia ít, vì nếu một người biết người kia, người thứ ba, bằng cách hỏi người đầu tiên, sẽ biết khóa công khai của người thứ hai. Giống như rễ cây sồi, Web of Trust được đan xen, cho phép người dùng chia sẻ dữ liệu.
Bây giờ, người dùng C của chúng ta không thể mạo danh người dùng khác nữa. Chỉ khi anh ta thử, người dùng A, hỏi bất kỳ thành viên mạng nào, sẽ nhận ra rằng có người đang đứng giữa anh ta và người dùng B và chặn tin nhắn.
Bây giờ, chúng ta hãy kết hợp tất cả những khái niệm này thành một sơ đồ đơn giản.
Người dùng A và người dùng B đều ở trong cùng một mạng tin cậy và muốn bắt đầu giao tiếp an toàn.
“A” yêu cầu nhiều thành viên trong mạng cung cấp khóa công khai của 'B'. Sử dụng khóa này, anh ta gửi yêu cầu bắt tay đến người dùng B. Đến lượt mình, “B” tìm hiểu khóa công khai của người dùng A, tạo khóa đối xứng để giao tiếp thêm và sử dụng khóa công khai của người dùng A, gửi khóa đối xứng trở lại.
Tất cả các tin nhắn trong chương trình này cũng được ký bằng chữ ký điện tử.
Với phương thức giao tiếp này, không có sự can thiệp từ bên ngoài nào có thể xảy ra và người dùng của chúng tôi cuối cùng có thể bắt đầu trao đổi thư từ.
Không có ích gì khi sử dụng phương án này theo cách thủ công - nó đã được tích hợp sẵn vào tất cả các giao thức truyền thông Internet có thể có trên trình duyệt và ứng dụng của bạn.
Không có hệ thống nào là hoàn hảo. Các cuộc tấn công MITM (Man in the middle, trong trường hợp này là một cách làm giả chứng chỉ bằng cách xác minh khóa giả với chữ ký được trình duyệt của người dùng nạn nhân tin cậy) vẫn đang được thực hiện cho đến ngày nay.
Nhưng nếu bạn thấy “ổ khóa màu xanh lá cây” gần thanh địa chỉ của trình duyệt, dữ liệu của bạn đang nằm trong tay an toàn của thuật toán PGP.