ก่อนอื่นจุดของคำศัพท์: สิ่งที่คุณอธิบายคือการเข้ารหัสแบบสมมาตรและกุญแจที่ใช้ร่วมกันระหว่างผู้เข้าร่วมมักรู้จักกันในชื่อรหัสลับ “ ไพรเวตคีย์” มักจะหมายถึงส่วนของคีย์ในการเข้ารหัสคีย์สาธารณะซึ่งมีผู้เข้าร่วมเพียงคนเดียวเท่านั้นที่รู้
มีวิธีการเผยแพร่คีย์ลับอยู่สองวิธี: สามารถส่งในรูปแบบที่ปลอดภัยทางร่างกายหรือสามารถส่งโดยใช้การเข้ารหัสรูปแบบอื่น ๆ โดยทั่วไปการเข้ารหัสคีย์สาธารณะ
มีวิธีการแลกเปลี่ยนคีย์ลับที่ไม่ต้องการช่องทางการสื่อสารลับ Diffie-Hellman ที่สำคัญที่สุดคือโปรโตคอลการแลกเปลี่ยนคีย์. หลักการของ Diffie-Hellman คือผู้เข้าร่วมแต่ละคนสร้างคู่กุญแจของตนเองและมีการดำเนินการทางคณิตศาสตร์ที่สร้างจำนวนมากจากกุญแจสาธารณะหนึ่งกุญแจและกุญแจส่วนตัวหนึ่งอัน การดำเนินการทางคณิตศาสตร์นี้มีคุณสมบัติที่น่าสนใจมาก: จำนวนมากสามารถสร้างได้จากกุญแจส่วนตัวของอลิซและกุญแจสาธารณะของบ๊อบหรือจากกุญแจส่วนตัวของบ๊อบและกุญแจสาธารณะของอลิซ คุณได้หมายเลขเดียวกันทั้งสองวิธี ดังนั้นอลิซและบ๊อบจึงแลกเปลี่ยนกุญแจสาธารณะของตนและทั้งสองฝ่ายรู้จำนวนมากซึ่งสามารถใช้เป็นรหัสลับได้ ผู้ดักฟังสามารถค้นหาทั้งกุญแจสาธารณะได้ แต่เป็นไปไม่ได้ที่จะหากุญแจสาธารณะจำนวนมากจากคนเดียว
การแลกเปลี่ยนคีย์ Diffie-Hellman ช่วยให้ทั้งสองฝ่ายแลกเปลี่ยนความลับได้ไม่ว่าใครจะฟังก็ตาม อย่างไรก็ตามมันไม่ได้พิสูจน์ตัวตนของ Alice กับ Bob หรือในทางกลับกัน ดังนั้นจึงเป็นการตอบโต้กับการโจมตีแบบคนกลาง : มัลลอรี่ทำการแลกเปลี่ยนกุญแจกับอลิซ (ซึ่งเชื่อว่าเธอกำลังคุยกับบ๊อบ) และแยกกับบ๊อบ (ซึ่งเชื่อว่าเขากำลังคุยกับอลิซ) และตัดสินใจหรือ อย่างน้อยก็รู้ความลับ
เมื่อผู้โจมตีสามารถสกัดกั้นและฉีดข้อความจำเป็นต้องมีการเข้ารหัสเพิ่มเติมสำหรับผู้เข้าร่วมเพื่อรับรองความถูกต้องซึ่งกันและกัน (ผู้โจมตีที่แฝงอย่างมีประสิทธิภาพหมายถึงโปรโตคอลการขนส่งพื้นฐานให้การรับรองความถูกต้อง) วิธีที่ง่ายสำหรับผู้เข้าร่วมแต่ละคนที่จะรู้ว่ากุญแจสาธารณะของกันและกันอยู่แล้ว ถ้า Alice รู้จักรหัสสาธารณะของ Bob:
- อลิซสามารถรับรองความถูกต้องของบ๊อบโดยส่งการท้าทายให้เขา: ค่าสุ่ม ( nonce ) เข้ารหัสด้วยกุญแจสาธารณะของบ๊อบ ถ้าบ๊อบสามารถถอดรหัสค่านั้นแล้วส่งกลับอลิซก็รู้ว่าเธอกำลังคุยกับบ็อบอยู่
- บ๊อบสามารถรับรองความถูกต้องกับอลิซโดยส่งข้อความที่ลงชื่อด้วยกุญแจสาธารณะของเขา อลิซตรวจสอบลายเซ็นเพื่อตรวจสอบว่าเธอกำลังพูดคุยกับบ็อบจริงๆ
มีหลากหลายรูปแบบที่ใช้หนึ่งในวิธีการเหล่านี้ (หรือยังตัวแปรอื่น) ในทิศทางเดียวและวิธีเดียวกันหรือแตกต่างกันในทิศทางอื่นหรือรับรองความถูกต้องในทิศทางเดียวเท่านั้น ตัวอย่างเช่นSSL / TLS (เลเยอร์การเข้ารหัสสำหรับโปรโตคอล -s จำนวนมากเช่น HTTPS, SMTPS, IMAPS ฯลฯ ) สามารถใช้การเข้ารหัสหลายชุดที่แตกต่างกันและมักจะรับรองความถูกต้องของเซิร์ฟเวอร์กับลูกค้า แต่สามารถรับรองความถูกต้องของไคลเอ็นต์ได้เช่นกัน Diffie-Hellman ช้าและยุ่งยากสำหรับแอปพลิเคชั่นนี้ ขั้นตอนวิธีการกันอย่างแพร่หลายมากที่สุดกับการจัดจำหน่ายที่สำคัญของประชาชนเป็นอาร์เอส
แน่นอนว่าอลิซและบ๊อบอาจไม่รู้จักกุญแจสาธารณะของกันและกันมาก่อน ดังนั้นพวกเขาจึงพึ่งพาโซ่ไว้ใจแทน: บ๊อบส่งกุญแจสาธารณะของอลิซไปพร้อมกับคำแถลงที่ลงนามจากบุคคลที่สามที่ยืนยันว่ากุญแจนี้เป็นกุญแจสาธารณะของบ๊อบจริงๆ ลงนามคำสั่งนี้เรียกว่าใบรับรองและ partie ที่สามเป็นผู้ออกใบรับรอง บ๊อบอาจเป็นที่รู้จักของบุคคลที่สามหรือข้อมูลประจำตัวอาจได้รับการยืนยันโดยบุคคลที่สี่เป็นต้น ในที่สุดห่วงโซ่แห่งความไว้วางใจนี้ (…บัตรกำนัลสำหรับบัตรกำนัลของ Dominique สำหรับชาร์ลีผู้มอบบัตรกำนัลให้ Bob) จะต้องไปถึงปาร์ตี้ที่รอนที่บ๊อบไว้วางใจซึ่งหมายความว่าบ็อบมีกุญแจสาธารณะของรอนและไว้วางใจรอน
มีโปรโตคอลที่ไม่ต้องอาศัยการเข้ารหัสคีย์สาธารณะ โดยเฉพาะอย่างยิ่งโพรโทคอลKerberosถูกใช้ในเครือข่ายทั้งบน unix และ Windows เพื่อสร้างการเชื่อมต่อระหว่างไคลเอนต์และเซิร์ฟเวอร์ Kerberos ใช้เซิร์ฟเวอร์การรับรองความถูกต้องกลางที่เรียกว่าศูนย์กระจายคีย์ (KDC) KDC จะต้องมีรหัสผ่านของผู้ใช้ที่เก็บไว้ในฐานข้อมูลและโดยปกติแล้วไคลเอนต์จะแจ้งให้ผู้ใช้ใส่รหัสผ่าน เพื่อหลีกเลี่ยงการเปิดเผยรหัสผ่านโปรโตคอลไม่ได้ใช้รหัสผ่านโดยตรง แต่แฮชการเข้ารหัสลับหรือโดยทั่วไปฟังก์ชั่นที่ได้รับมาคีย์ที่ใช้กับรหัสผ่าน
ด้วยความลับที่ใช้ร่วมกันนี้ลูกค้าและ KDC สร้างช่องทางที่ปลอดภัยและ KDC ส่ง "ตั๋ว" ให้กับลูกค้า ตั๋วมีเซสชั่นคีย์ (เช่นคีย์ลับที่สร้างขึ้นใหม่) รวมถึงสำเนาของคีย์ที่เข้ารหัสด้วยคีย์สมมาตรอื่นที่ใช้ร่วมกันระหว่าง KDC และเซิร์ฟเวอร์ที่ไคลเอนต์ต้องการติดต่อ จากนั้นไคลเอ็นต์ส่งต่อสำเนาที่เข้ารหัสนี้ไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ถอดรหัสข้อความนี้เพื่อรับคีย์เซสชันและสร้าง nonce ที่เข้ารหัสด้วยคีย์เซสชันและส่งกลับไปยังไคลเอ็นต์ จากนั้นไคลเอ็นต์จะเริ่มต้นช่องสัญญาณที่ปลอดภัยด้วยเซิร์ฟเวอร์เข้ารหัสด้วยคีย์เซสชันและเริ่มต้นด้วยการแสดงว่าสามารถถอดรหัส nonce: สิ่งนี้พิสูจน์ตัวตนของลูกค้าไปยังเซิร์ฟเวอร์ จัดตั้งเซสชั่น Kerberos เป็นตัวแปรของโปรโตคอล Needham-ชโรเดอ
¹ ในแง่ที่ว่า cryptographers ได้พยายามอย่างหนัก แต่วิธีที่ดีที่สุดที่พวกเขาค้นพบคือต้องใช้พลังงานในการคำนวณที่ไม่น่าเชื่อ