PGP (Pretty Good Privacy) ใช้คีย์ 4 ประเภท ได้แก่ คีย์สมมาตรแบบครั้งเดียว (One-time Session Symmetric Keys), คีย์สาธารณะ (Public Keys), คีย์ส่วนตัว (Private Keys) และคีย์สมมาตรแบบพาสเฟรซ (Passphrase-based Symmetric Keys)
การสร้างคีย์เซสชัน (Session Key Generation)
คีย์เซสชันแต่ละอันเกี่ยวข้องกับข้อความเพียงข้อความเดียว และใช้เพื่อวัตถุประสงค์การเข้ารหัสและถอดรหัสข้อความนั้นเท่านั้น จำไว้ว่าการเข้ารหัส/ถอดรหัสข้อความทำด้วยอัลกอริทึมการเข้ารหัสแบบสมมาตร (Symmetric Encryption) เนื่องจากต้องการคีย์ 128 บิต จำนวนสุ่ม 128 บิตจึงถูกสร้างขึ้นโดยใช้ CAST-128
อินพุตของตัวสร้างเลขสุ่มประกอบด้วยคีย์ 128 บิต (เป็นเลขสุ่มจากการป้อนแป้นพิมพ์ของผู้ใช้) และบล็อก 64 บิต 2 บล็อก ที่ถือเป็นเพลนเท็กซ์ (Plaintext) ที่จะเข้ารหัส โดยใช้โหมด CFB (Cipher Feedback) จะได้บล็อกไซเฟอร์เท็กซ์ 64 บิต 2 บล็อก ซึ่งต่อกันเป็นคีย์เซสชัน 128 บิต อัลกอริทึมที่ใช้ขึ้นอยู่กับมาตรฐาน ANSI X12.17
ตัวระบุคีย์ (Key Identifiers)
อาจมีคู่คีย์สาธารณะ/ส่วนตัวมากกว่าหนึ่งคู่ต่อผู้ใช้ แต่ละคู่ต้องมี ID ประจำตัว ตัวระบุคีย์ที่เกี่ยวข้องกับคีย์สาธารณะแต่ละอันประกอบด้วย 64 บิตน้อยที่สุด (Least Significant 64 Bits) นั่นคือ Key ID ของคีย์สาธารณะ KUa คือ (KUa mod 264) ความยาวนี้เพียงพอที่จะทำให้ความน่าจะเป็นของ Key ID ซ้ำกันน้อยมาก
Key ID ยังใช้สำหรับลายเซ็นดิจิทัลของ PGP เช่นกัน เนื่องจากผู้ส่งอาจใช้คีย์ส่วนตัวใดคีย์หนึ่งจากหลายคีย์เพื่อเข้ารหัส Message Digest และผู้รับต้องรู้ว่าคีย์ไหนถูกใช้
วงแหวนคีย์ (Key Rings)
Key IDs มีความสำคัญต่อการทำงานของ PGP สามารถเห็นได้ว่ามี Key ID 2 ตัวในข้อความ PGP ใดๆ ที่ให้ทั้งความลับและการยืนยันตัวตน
คีย์เหล่านี้ต้องจัดเก็บและจัดระเบียบอย่างเป็นระบบ เพื่อใช้งานได้อย่างมีประสิทธิภาพและมีประสิทธิผลโดยทุกฝ่าย รูปแบบที่ PGP ใช้คือการจัดเตรียมโครงสร้างข้อมูลชุดหนึ่งที่แต่ละโหนด หนึ่งสำหรับจัดเก็บคู่คีย์สาธารณะ/ส่วนตัวที่โหนดนั้นมี และอีกหนึ่งสำหรับจัดเก็บคีย์สาธารณะของผู้ใช้คนอื่นที่รู้จักที่โหนดนี้
สามารถมองวงแหวน (Ring) ว่าเป็นตาราง โดยแต่ละแถวแทนคู่คีย์สาธารณะ/ส่วนตัวหนึ่งคู่ที่ผู้ใช้นี้มี แต่ละแถวประกอบด้วย:
- Timestamp: วันที่/เวลาที่สร้างคู่คีย์นี้
- Key ID: 64 บิตน้อยที่สุดของคีย์สาธารณะสำหรับรายการนี้
- Public Key: ส่วนคีย์สาธารณะของคู่
- Private Key: ส่วนคีย์ส่วนตัวของคู่
- User ID: โดยทั่วไปคืออีเมลของผู้ใช้
วงแหวนคีย์ส่วนตัว (Private Key Ring) สามารถจัดทำดัชนี (Index) ได้โดย User ID, Key ID หรือทั้งสอง แต่เพื่อความปลอดภัย ค่าของคีย์จะไม่ถูกเก็บในวงแหวนคีย์โดยตรง แต่เก็บรูปแบบเข้ารหัสซึ่งต้องใช้กระบวนการผ่านพาสเฟรซเพื่อถอดรหัส