PGP sử dụng bốn loại khóa bao gồm: khóa đối xứng phiên một lần, khóa công khai, khóa riêng tư và khóa đối xứng dựa trên cụm từ mật khẩu (passphrase).
1. Tạo khóa phiên (Session key generation)
Mỗi khóa phiên liên quan đến một tin nhắn duy nhất và chỉ được dùng cho mục đích mã hóa và giải mã tin nhắn đó. Nhắc lại rằng mã hóa/giải mã tin nhắn được thực hiện bằng thuật toán mã hóa đối xứng. Vì cần khóa 128-bit, các số ngẫu nhiên 128-bit được tạo ra bằng CAST-128.
Đầu vào của bộ sinh số ngẫu nhiên bao gồm: khóa 128-bit (là số ngẫu nhiên từ nhập liệu phím của người dùng) và hai khối 64-bit được coi là bản rõ cần mã hóa. Sử dụng chế độ CFB, hai khối bản mã 64-bit được tạo ra và nối lại với nhau để hình thành khóa phiên 128-bit. Thuật toán sử dụng dựa trên tiêu chuẩn ANSI X12.17.
2. Bộ nhận diện khóa (Key Identifiers)
Có thể có nhiều cặp khóa công khai/riêng tư cho mỗi người dùng. Mỗi cặp cần một ID định danh. Key ID liên quan đến mỗi khóa công khai bao gồm 64 bit ít quan trọng nhất. Nghĩa là, Key ID của khóa công khai KUa là (KUa mod 264). Độ dài này đủ lớn để xác suất trùng lặp Key ID rất nhỏ.
Key ID cũng được dùng cho chữ ký số PGP vì người gửi có thể dùng một trong nhiều khóa riêng tư để mã hóa bản tóm tắt tin nhắn và người nhận cần biết khóa nào đã được sử dụng.
3. Vòng khóa (Key Rings)
Key ID rất quan trọng cho hoạt động của PGP. Có thể thấy hai Key ID được chứa trong bất kỳ tin nhắn PGP nào hỗ trợ cả bảo mật và xác thực.
Các khóa này cần được lưu trữ và tổ chức có hệ thống để sử dụng hiệu quả. Thiết kế của PGP là cung cấp một tập cấu trúc dữ liệu tại mỗi nút: một để lưu các cặp khóa công khai/riêng tư mà nút đó sở hữu, và một để lưu khóa công khai của người dùng khác được biết tại nút này.
Có thể hình dung vòng khóa như một bảng, mỗi hàng đại diện cho một cặp khóa công khai/riêng tư của người dùng. Mỗi hàng bao gồm:
- Timestamp: Thời gian tạo cặp khóa này.
- Key ID: 64 bit ít quan trọng nhất của khóa công khai cho mục này.
- Public Key: Phần khóa công khai của cặp.
- Private Key: Phần khóa riêng tư của cặp.
- User ID: Thường là địa chỉ email của người dùng.
Vòng khóa riêng tư có thể được đánh chỉ mục bằng User ID, Key ID hoặc cả hai. Nhưng vì lý do bảo mật, giá trị khóa không được lưu trực tiếp trong vòng khóa mà là một phiên bản mã hóa của nó, cần thủ tục passphrase để giải mã.