SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย
ทำความเข้าใจว่า SRP ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์พิสูจน์ตัวตนซึ่งกันและกันได้อย่างไร โดยไม่ต้องให้เซิร์ฟเวอร์จัดเก็บรหัสผ่าน
SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวมและประวัติของ SRP
โพรโทคอลรหัสผ่านระยะไกลแบบปลอดภัย (SRP) พัฒนาโดย Tom Wu ที่มหาวิทยาลัย Stanford และเผยแพร่เป็น RFC 2945 ในปี 2000 ต่อมามีการกำหนดรุ่นปรับปรุงที่เรียกว่า SRP-6a SRP ช่วยให้ยืนยันตัวตนร่วมกันได้โดยอาศัยรหัสผ่านร่วมกัน โดยไม่ส่งรหัสผ่านจริงแม้แต่ในรูปแบบเข้ารหัส
เซิร์ฟเวอร์จัดเก็บค่าตรวจสอบ ไม่ใช่รหัสผ่าน
ระหว่างการลงทะเบียน SRP ไคลเอนต์จะคำนวณค่าตรวจสอบรหัสผ่าน v = g^x mod N โดยที่ x = H(salt || password) และ N คือจำนวนเฉพาะปลอดภัยขนาดใหญ่ เซิร์ฟเวอร์จะจัดเก็บเฉพาะค่าเกลือและค่าตรวจสอบ v แม้ฐานข้อมูลของเซิร์ฟเวอร์จะถูกเจาะ ค่าตรวจสอบที่จัดเก็บไว้ก็ไม่เปิดเผยรหัสผ่านโดยตรง
การสร้างคีย์เซสชันของ SRP
ระหว่างการเข้าสู่ระบบด้วย SRP ทั้งไคลเอนต์และเซิร์ฟเวอร์จะทำการแลกเปลี่ยนลักษณะเดียวกับ Diffie-Hellman ซึ่งสร้างคีย์เซสชันร่วมกัน การคำนวณของแต่ละฝ่ายจะใช้ค่าที่ได้จากรหัสผ่านด้วย ดังนั้นคีย์เซสชันที่ได้จึงคำนวณได้อย่างถูกต้องเฉพาะโดยผู้ที่รู้รหัสผ่านและผู้ที่มีค่าตรวจสอบตามลำดับ
การยืนยันตัวตนร่วมกันใน SRP
SRP ให้การยืนยันตัวตนร่วมกัน โดยไคลเอนต์พิสูจน์ว่าตนรู้รหัสผ่าน และเซิร์ฟเวอร์พิสูจน์ว่าตนมีค่าตรวจสอบที่ถูกต้อง วิธีนี้ป้องกันการโจมตีแบบฟิชชิงที่เซิร์ฟเวอร์ปลอมพยายามเก็บข้อมูลรหัสผ่านได้ เพราะเซิร์ฟเวอร์ปลอมไม่สามารถทำการแลกเปลี่ยน SRP ให้เสร็จสมบูรณ์อย่างถูกต้องได้หากไม่มีค่าตรวจสอบจริง
การคำนวณค่าตรวจสอบ
ค่าตรวจสอบคำนวณเป็น v = g^x mod N โดยที่ x = H(salt || password), g เป็นตัวกำเนิด และ N เป็นจำนวนเฉพาะปลอดภัยขนาด 2048 บิตขึ้นไป ปัญหาลอการิทึมไม่ต่อเนื่องทำให้การกู้คืน x จาก v ไม่สามารถทำได้ในทางคำนวณอย่างมีประสิทธิภาพ การตรวจสอบรหัสผ่านจะทำได้โดยทำการแลกเปลี่ยน SRP ทั้งหมดให้สำเร็จเท่านั้น
การปรับปรุงใน SRP-6a
SRP-6a แก้ไขจุดอ่อนของการออกแบบ SRP-3 และ SRP-6 รุ่นเดิมด้วยการเพิ่มพารามิเตอร์ตัวคูณ k = H(N, g) และปรับลำดับการคำนวณของไคลเอนต์กับเซิร์ฟเวอร์ การเปลี่ยนแปลงเหล่านี้ป้องกันการโจมตีแบบเดาค่าที่ใช้ประโยชน์ได้สองทางบางประเภท และทำให้ส่วนร่วมของเซิร์ฟเวอร์ถูกผูกไว้ตั้งแต่ช่วงต้นของโพรโทคอล
SRP ในระบบที่ใช้งานจริง
SRP ถูกนำไปใช้งานจริงอย่างแพร่หลาย บริษัทแอปเปิลใช้ SRP ในการซิงโครไนซ์พวงกุญแจ iCloud เพื่อให้อุปกรณ์ต่าง ๆ เรียกดูข้อมูลพวงกุญแจได้โดยไม่เปิดเผยรหัสผ่านบัญชีแก่เซิร์ฟเวอร์ของแอปเปิล 1Password ใช้ SRP ในรูปแบบการยืนยันตัวตนเพื่อป้องกันการเปิดเผยข้อมูลรับรองฝั่งเซิร์ฟเวอร์
SRP ป้องกันฟิชชิง
เนื่องจาก SRP สร้างคีย์เซสชันที่ผูกทั้งรหัสผ่านและค่าตรวจสอบของเซิร์ฟเวอร์ไว้ด้วยกัน เซิร์ฟเวอร์ฟิชชิงจึงไม่สามารถทำการจับมือของ SRP ให้เสร็จสมบูรณ์อย่างถูกต้องได้ ผู้ใช้ที่เชื่อมต่อเว็บไซต์ฟิชชิงผ่าน SRP จะยืนยันตัวตนไม่สำเร็จ ทำให้มีคุณสมบัติป้องกันฟิชชิงในตัว ซึ่งไม่มีในการส่งรหัสผ่านแบบดั้งเดิม
ข้อจำกัดของ SRP
SRP ใช้การคำนวณมาก โดยต้องยกกำลังแบบมอดุลาร์กับจำนวนเต็มขนาดใหญ่ (ตั้งแต่ 2048 บิตขึ้นไป) นอกจากนี้ยังนำไปใช้งานให้ถูกต้องได้ยาก เนื่องจากมีจุดผิดพลาดเล็ก ๆ มากมายในการตรวจสอบพารามิเตอร์ ซึ่งเคยทำให้เกิดช่องโหว่ในการใช้งาน โพรโทคอลนี้ยังต้องใช้ช่องทางที่ปลอดภัย (TLS) เพื่อป้องกันการดักฟังแบบพาสซีฟระหว่างการแลกเปลี่ยนเอง
ชุดการเข้ารหัส TLS-SRP
RFC 5054 กำหนดชุดการเข้ารหัส TLS-SRP ที่ผสานการยืนยันตัวตนร่วมกันของ SRP เข้ากับการจับมือของ TLS โดยตรง วิธีนี้ไม่จำเป็นต้องใช้ใบรับรองเซิร์ฟเวอร์ แต่ยังคงให้การยืนยันตัวตนร่วมกันที่มีการเข้ารหัส อย่างไรก็ตาม ในทางปฏิบัติ TLS-SRP ถูกนำไปใช้อย่างจำกัด เนื่องจาก FIDO2 และ OPAQUE ได้เกิดขึ้นในฐานะทางเลือกที่ทันสมัยกว่า
SRP เทียบกับทางเลือกสมัยใหม่
แม้ SRP จะเป็นนวัตกรรมสำคัญ แต่ทางเลือกสมัยใหม่อย่าง OPAQUE ให้หลักประกันด้านความปลอดภัยที่แข็งแกร่งกว่า (มีความต้านทานต่อการคำนวณล่วงหน้า) และ FIDO2/กุญแจผ่านก็กำจัดรหัสผ่านโดยสิ้นเชิง สำหรับระบบใหม่ ควรเลือก OPAQUE หรือ FIDO2 แต่ SRP ยังคงเป็นตัวเลือกที่เหมาะสมสำหรับระบบที่ต้องการการยืนยันตัวตนร่วมกันด้วยรหัสผ่านโดยไม่เสี่ยงต่อฟิชชิง
แบบทดสอบค่าตรวจสอบ SRP
ใน SRP เซิร์ฟเวอร์จัดเก็บอะไรแทนรหัสผ่านของผู้ใช้
ทบทวนบทเรียน: การยืนยันตัวตนด้วย SRP
SRP จัดเก็บค่าตรวจสอบรหัสผ่าน (ไม่ใช่รหัสผ่าน) สร้างคีย์เซสชันร่วมกันผ่านการแลกเปลี่ยนลักษณะเดียวกับ DH และให้การยืนยันตัวตนร่วมกันที่ทนทานต่อฟิชชิง SRP-6a ปรับปรุงรุ่นเดิมให้ทนทานต่อการโจมตีแบบเดาค่า พวงกุญแจ iCloud ของแอปเปิลและ 1Password ใช้ SRP ในระบบที่ใช้งานจริง ส่วน OPAQUE และ FIDO2 เป็นรุ่นต่อยอดสมัยใหม่สำหรับระบบใหม่
คำถามที่พบบ่อย
บทเรียน “SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย”
ทำความเข้าใจว่า SRP ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์พิสูจน์ตัวตนซึ่งกันและกันได้อย่างไร โดยไม่ต้องให้เซิร์ฟเวอร์จัดเก็บรหัสผ่าน คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ปัญหาพื้นฐานของการพิสูจน์ตัวตนด้วยรหัสผ่าน
- SRP: โพรโทคอลรหัสผ่านระยะไกลที่ปลอดภัย
- โพรโทคอล PAKE และคุณสมบัติของโพรโทคอล
- การพิสูจน์ตัวตนแบบไร้รหัสผ่าน: WebAuthn และ FIDO2