zero-knowledge password proof หรือ ZKPP เป็นวิธีการแนวหนึ่งในการจะตรวจสอบความถูกต้องของผู้ใช้งาน (authentication) แปลตรงตัวคือ การตรวจสอบรหัสผ่านโดยไม่ต้องอาศัยความรู้ (ฟังแล้วน่าสับสนดีนะครับ) สรุปใจความง่ายๆ คือ ทำอย่างไรจึงจะตรวจสอบได้ว่า ผู้ใช้งานรู้ข้อความลับ โดยที่ไม่จำเป็นต้องพูดมันออกมา แรงบันดาลใจของหลักการนี้ก็คือ หากเราพูดรหัสผ่านออกมา อาจจะมีคนแอบฟัง แล้วขโมยไปใช้ได้ (ดักฟัง) ว่าแล้วก็เริ่มต้นกันเลยดีกว่า (อาจจะได้เข้าใจมากขึ้น)
เพื่อประกอบความเข้าใจ ลองดูตัวอย่างดูละกันครับ โจทย์สมมุติของเราคือ นาย A ต้องการจะตรวจสอบว่านาย B รู้เลขรหัสผ่านหรือไม ่โดยมีข้อแม้ว่าต้องไม่พูดหรือเขียนเลขนี้ออกมา (กล่าวอีกนัยหนึ่งคือ รู้กันเพียงสองคนเท่านั้น ห้ามทิ้งหลักฐานใดๆ ที่คนอื่นจะตรวจสอบได้)
หลักการดังกล่าว อาจจะฟังดูแล้วเหมือนเป็นไปไม่ได้ แต่ไม่ยากครับ สมมุติว่าเลขรหัสลับระหว่าง A และ B มีค่าเป็น 3 (เพื่อความสะดวกในการอธิบาย) วิธีการคือ
| B |
| A |
เพื่อความสะดวก ขอเสนอตัวอย่างอย่างๆ ที่คิดค้นโดยผู้เขียนละกันครับ ขอเน้นย้ำอย่างนึงก่อนว่า วิธีการนี้ใช้เพื่อประกอบการอธิบายเท่านั้น ไม่ควรนำไปใช้งานจริง เพราะหากต้องการที่จะทำให้ปลอดภัยจริงๆ แล้ว จะต้องมีการสุ่มที่ดีและมีรหัสผ่านที่มีความยาวพอสมควร
อธิบายง่ายๆ อย่างงี้ละกันครับ
สมมุตว่า password เป็นตัวเลข 4 ตัวมีค่าระหว่าง 1 ถึง 9 และทั้งผู้ใช้งานเลือกเครื่องคอมพิวเตอร์ต่างก็รู้รหัสผ่าน เครื่องคอมพิวเตอร์จะสุ่มตัวอักษรขึ้นมา 4 ชุด ชุดละ 10 ตัว และเลือกตัวอักษรที่ตรงกับตัวเลขทั้ง 4 จากตัวอักษรแต่ละชุด แล้วจำไว้ จากนั้นจึงส่งตัวอักษรทั้ง 4 ชุดนี้ ไปให้ผู้ใช้งาน ผู้ใช้งานก็จะเลือกตัวอักษรในทำนองเดียวกัน ทำการสลับ และส่งกลับมาให้เครื่องคอมพิวเตอร์ หากตัวอักษรทั้ง 4 ตัวเหมือนกัน (โดยไม่สนใจลำดับ) แสดงว่าผู้ใช้งานทราบรหัสผ่าน
ตัวอย่าง
สมมุติว่ารหัสผ่าน คือ {1, 2, 5, 7}.
เครื่องคอมพิวเตอร์สร้างตัวอักษรทั้ง 4 ชุด และส่งมาให้ผู้ใช้งาน
1 2 3 4 5 6 7 8 9
S[1]: T H I S I S 1 S T
S[2]: R A N D O M 2 N D
S[3]: E X A M P L E 3 1
S[4]: 4 T H N U M B E R
Password: [BATP]
ในกรณีนี้ รหัสผ่านที่ถูกต้อ จะประกอบด้วยตัวอักษร “TAPB” ในลำดับใดก็ได้ (เช่น “PATB” or “BATP”). เราจะพบว่า เราสามารถตรวจสอบรหัสผ่านได้ โดยไม่จำเป็นต้องพูดมันออกมา
| Comment1 | ||
| ขั้นตอนที่ 4 ต้องเป็น A เป็นคนเขียนเครื่องหมายหรือเปล่าครับ | ||
| From:sang <> | Date: 2006-12-08 15:01:02 | |
| Comment2 | ||
| ถูกต้องครับ A ต้องเป็นคนเขียน ขอบคุณครับ | ||
| From:เกริก <> | Date: 2006-12-08 15:34:36 | |
| Comment3 | ||
| กพรีตรภถ่ รนยี่ | ||
| From:ถุภถีภถ <ภไถภี> | Date: 2007-06-28 09:36:17 | |
| Comment4 | ||
| ใช่ challenge and response รึเปล่าครับ | ||
| From:knot <knot> | Date: 2008-03-27 00:31:50 | |