Lý do tại sao điều này là không thể, như những người khác đã nêu, rằng một tin nhắn đã ký không thể bị giả mạo. Tất nhiên, kẻ tấn công có thể ký bất kỳ tin nhắn nào, nhưng chỉ với khóa riêng thuộc khóa công khai/chứng chỉ của chính họ.
Vì vậy, những gì xảy ra là:
- Alice ký tin nhắn bằng khóa riêng của cô ấy, cho biết khóa/chứng chỉ công khai của cô ấy;
- Alice mã hóa tin nhắn đã ký bằng khóa công khai của Bob (vì PGP sử dụng ký-rồi-mã hóa);
- Bob nhận được tin nhắn và giải mã nó bằng khóa riêng của mình;
- Bob lấy ID khóa của Alice và tra cứu khóa/chứng chỉ công khai của cô ấy, phát hiện ra đó là cô ấy;
- Bob xác minh rằng chữ ký dưới thư là của Alice.
Bây giờ Malory (MitM sử dụng tên thông thường) rõ ràng có thể gửi tin nhắn được mã hóa cho Bob, tuy nhiên cô ấy không thể giải mã tin nhắn của Alice vì cô ấy không có khóa riêng của Bob.
Liên quan đến việc tạo chữ ký: Malory có thể đặt chữ ký của chính mình và thay đổi ID nhưng sau đó tin nhắn sẽ không phải từ Alice.
Tất nhiên, điều này yêu cầu Bob phải biết trước khóa công khai/chứng chỉ của Alice, nếu không, Malory có thể tạo một cặp khóa và gửi khóa công khai/chứng chỉ cho Bob, mạo danh Alice. Với PGP, niềm tin đó được tạo ra bằng cách sử dụng một trang web tin cậy.
Vì trang web tin cậy đó chưa bao giờ an toàn như vậy đối với PGP, nên bạn nên thiết lập niềm tin trực tiếp, ví dụ:. bằng cách gửi chứng chỉ qua thư và sau đó xác minh dấu vân tay chính qua điện thoại. PGP đã được thiết kế với mục đích này (ví dụ: thiết lập một hệ thống dấu vân tay dễ xác minh và yêu cầu sự tin cậy rõ ràng đối với các khóa/chứng chỉ công khai trong kho lưu trữ ủy thác).