.:: zero-knowledge password proof (ZKPP) ::.

[Printer Friendly]
ผู้เขียน/โดย : เกริก ภิรมย์โสภา (Krerk Piromsopa)
เขียนเมื่อ/ปรับปรุง : 2006-12-08 15:35:14
มีผู้เยี่ยมชมทั้งสิ้น : 3333

zero-knowledge password proof หรือ ZKPP เป็นวิธีการแนวหนึ่งในการจะตรวจสอบความถูกต้องของผู้ใช้งาน (authentication) แปลตรงตัวคือ การตรวจสอบรหัสผ่านโดยไม่ต้องอาศัยความรู้ (ฟังแล้วน่าสับสนดีนะครับ) สรุปใจความง่ายๆ คือ ทำอย่างไรจึงจะตรวจสอบได้ว่า ผู้ใช้งานรู้ข้อความลับ โดยที่ไม่จำเป็นต้องพูดมันออกมา แรงบันดาลใจของหลักการนี้ก็คือ หากเราพูดรหัสผ่านออกมา อาจจะมีคนแอบฟัง แล้วขโมยไปใช้ได้ (ดักฟัง) ว่าแล้วก็เริ่มต้นกันเลยดีกว่า (อาจจะได้เข้าใจมากขึ้น)

ตัวอย่าง

เพื่อประกอบความเข้าใจ ลองดูตัวอย่างดูละกันครับ โจทย์สมมุติของเราคือ นาย A ต้องการจะตรวจสอบว่านาย B รู้เลขรหัสผ่านหรือไม ่โดยมีข้อแม้ว่าต้องไม่พูดหรือเขียนเลขนี้ออกมา (กล่าวอีกนัยหนึ่งคือ รู้กันเพียงสองคนเท่านั้น ห้ามทิ้งหลักฐานใดๆ ที่คนอื่นจะตรวจสอบได้)

หลักการดังกล่าว อาจจะฟังดูแล้วเหมือนเป็นไปไม่ได้ แต่ไม่ยากครับ สมมุติว่าเลขรหัสลับระหว่าง A และ B มีค่าเป็น 3 (เพื่อความสะดวกในการอธิบาย) วิธีการคือ

ขั้นตอนที่ 1. A เตรียมกระดาษมาสัก 10 แผ่น ขนาดเท่ากันส่งให้ B

          

ขั้นตอนที่ 2. B นับกระดาษให้ถึงเลขที่เป็นความลับ แล้วก็ทำเครื่องหมายไว้ที่มุมด้านหนึ่ง (อย่าให้ใครเห็นหล่ะ)

   B       

ขั้นตอนที่ 3. ให้ B พลิกด้านหลังของกระดาษแล้วส่งกลับให้ A

          

ขั้นตอนที่ 4. A นับกระดาษให้ถึงเลขที่เป็นความลับ แล้วก็ทำเครื่องหมายไว้ที่มุมด้านหนึ่ง (อย่าให้ใครเห็นอีกเช่นกัน)

   A       

ขั้นตอนที่ 5. สลับกระดาษทั้ง 10 ใบ (ในทำนองเดียวกับการสลับไพ่
ขั้นตอนที่ 6. หากมี กระดาษใบไหน ที่มีเครื่องหมายทั้งสองด้าน แปลว่าทั้งสองคนรู้รหัสลับตรงกัน หาก เครื่องหมายที่ทำไว้อยู่ที่กระดาษคนละใบกัน เราก็รู้เพียงว่าทั้งสองคนไม่ทราบรหัสผ่านที่ตรงกัน อย่างไรก็ตาม เราจะไม่ทราบเลยว่ารหัสที่ถูกต้องนั้นคืออะไร

ประยุกต์ใช้งาน

หลังจากตัวอย่าง คิดว่าคงจะทราบหลักการกันคร่าวๆ แล้ว วิธีการนี้มีข้อดีคือ ทนต่อการดักฟังหรือแอบดูได้ดี คำถามคือ แล้วเราจะประยุกต์ใช้งานหลักการนี้ กับระบบ Authentication ใน computer ได้อย่างไร การประยุกต์ใช้งานหลักการนี้กับระบบ password ของ computer ถูกนำเสนอครั้งแรกในปี 1992 [1] หลักการค่อนข้างจะละเอียดซับซ้อนและต้องอาศัยความรู้คณิตศาสตร์พอสมควร

เพื่อความสะดวก ขอเสนอตัวอย่างอย่างๆ ที่คิดค้นโดยผู้เขียนละกันครับ ขอเน้นย้ำอย่างนึงก่อนว่า วิธีการนี้ใช้เพื่อประกอบการอธิบายเท่านั้น ไม่ควรนำไปใช้งานจริง เพราะหากต้องการที่จะทำให้ปลอดภัยจริงๆ แล้ว จะต้องมีการสุ่มที่ดีและมีรหัสผ่านที่มีความยาวพอสมควร

อธิบายง่ายๆ อย่างงี้ละกันครับ



สมมุตว่า 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”). เราจะพบว่า เราสามารถตรวจสอบรหัสผ่านได้ โดยไม่จำเป็นต้องพูดมันออกมา

สรุป/ขีดจำกัด

โดยสรุปแล้ว หลักการของ ZKPP คือการตรวจสอบรหัสลับโดยไม่เขียนหรือกล่าวรหัสนั้นออกมาโดยตรง อย่างไรก็ตามในทางปฏิบัตินั้น เราจำเป็นจะต้องมีข้อความหรือ key สุ่มที่ใช้ร่วมกันในการสื่อสารก่อน หลักการนี้ ปัจจุบันเป็นพื้นฐานของระบบการตรวจสอบรหัสผ่านสมัยใหม่ เช่น SSH เป็นต้น

ที่มา: หนังสือ Computer Security ฉบับร่าง โดย Krerk Piromsopa และ Richard Enbody

References

1. S. M. Bellovin and M. Merritt. Encrypted Key Exchange: Password-Based Protocols Secure Against Dictionary Attacks. Proceedings of the IEEE Symposium on Research in Security and Privacy, Oakland, May 1992.

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


ความเห็น:

โดย
Email:
** เนื่องจากปัญหา SPAM ความเห็นของคุณจะถูก post เมื่อได้รับการตรวจสอบจาก Administrator **