หมายเหตุบรรณาธิการ: บทความนี้มาจากหมายเหตุบรรณาธิการ: บทความนี้มาจากAmbi Labs (รหัส: secbitlabs)
บางทฤษฏีน่าสนใจมาก หนึ่งในนั้น ไม่มีความรู้พิสูจน์เลย หลังจากคลำหามานาน บทความนี้เป็นบทความที่สามในชุด "การสำรวจหลักฐานที่ไม่มีความรู้" ข้อความทั้งหมดประมาณ 8,000 คำพร้อมสูตรทางคณิตศาสตร์เล็กน้อย
บทความนี้ได้รับการอัปเดตเป็น Github
And what, Socrates, is the food of the soul? Surely, I said, knowledge is the food of the soul.
บทความนี้ได้รับการอัปเดตเป็น Github
— เพลโต
ชื่อเรื่องรอง
"ความรู้เป็นศูนย์" กับ "ความน่าเชื่อถือ"
เราสามารถเห็นคุณสมบัติทั้งสามนี้ในบทความจำนวนมากที่แนะนำการพิสูจน์ที่ไม่มีความรู้:
ความสมบูรณ์ - ความสมบูรณ์
ความสมบูรณ์ - ความน่าเชื่อถือ
ความรู้เป็นศูนย์ —— ความรู้เป็นศูนย์
แต่มีบทความไม่กี่บทความที่อธิบายเชิงลึกเกี่ยวกับความหมายและข้อมูลเชิงลึกเบื้องหลังคุณสมบัตินี้มีอยู่"ชุดที่ (2) ทำความเข้าใจกับ "การจำลอง"
’ ในบทความ เราได้แนะนำแนวคิดของ “เครื่องจำลอง” บทความแนะนำจำนวนมากหลีกเลี่ยงการพูดถึง "การจำลอง" แต่อาจกล่าวได้ว่า "การจำลอง" เป็นแกนหลักของโปรโตคอลความปลอดภัย เนื่องจากเป็นอาวุธสำคัญในการกำหนด "ความปลอดภัย"
Rather than giving a list of the events that are not allowed to occur, it (the definition of zero-knowledge proof) gives a maximalist simulation condition.
— Boaz Barak
โดยปกติแล้ว เรากำหนดความปลอดภัยในลักษณะที่เราแสดงรายการเหตุการณ์ด้านความปลอดภัยบางอย่างก่อน จากนั้นจึงระบุว่า: หากระบบมีความปลอดภัย จะไม่เกิดเหตุการณ์ด้านความปลอดภัยใด ๆ ที่ระบุไว้
หากต้องการยืมคำพูดของนักวิทยาการเข้ารหัสลับ Boaz Barak เพื่อแปลว่า "การพิสูจน์ด้วยความรู้เป็นศูนย์" ไม่ได้ถูกกำหนดโดยการให้รายการเหตุการณ์ที่ไม่อนุญาตให้เกิดขึ้น แต่ให้ "เงื่อนไขการจำลอง" ที่รุนแรงที่สุดโดยตรง
ที่เรียกว่า "เงื่อนไขจำลอง" หมายถึงการทำให้ "โลกในอุดมคติ" เป็นจริงด้วยวิธี "จำลอง" ทำให้แยกไม่ออกจาก "โลกจริง" และเนื่องจากไม่มีความรู้ใดๆ ในโลกอุดมคติ จึงสรุปได้ว่า ที่โลกแห่งความเป็นจริงตอบสนอง "ความรู้เป็นศูนย์"
เรายังคงวิเคราะห์คุณสมบัติสามประการของระบบโต้ตอบถัดไป (โปรโตคอลความปลอดภัย): "ความสมบูรณ์" "ความน่าเชื่อถือ" และ "ความรู้เป็นศูนย์"
ความสมบูรณ์: อลิซไม่สามารถผ่านการตรวจสอบของ Bob ได้หากไม่มีความรู้
ความสมบูรณ์: อลิซสามารถผ่านการตรวจสอบของ Bob ได้หากเธอมีความรู้
Zero-knowledge: Alice จะไม่เปิดเผยข้อมูลใด ๆ เกี่ยวกับความรู้ในระหว่างการโต้ตอบ
เราจะเห็นว่ามี "ความสมมาตร" ระหว่าง "ความน่าเชื่อถือ" และ "ความสมบูรณ์" ความน่าเชื่อถือรับประกันว่าอลิซผู้มุ่งร้ายจะต้องล้มเหลว ในขณะที่ความสมบูรณ์รับประกันว่าอลิซผู้ซื่อสัตย์จะต้องประสบความสำเร็จ
"ความสมบูรณ์" พิสูจน์ได้ง่ายกว่า ตราบใดที่ Alice ซื่อสัตย์และ Bob ซื่อสัตย์ ทุกคนก็มีความสุข สิ่งนี้เหมือนกับการเขียนโค้ด ป้อนกรณีทดสอบ และเรียกมันว่าวัน
ลองคิดดูว่า "ความน่าเชื่อถือ" ควรนิยามอย่างไร? ข้อตรงกันข้ามของข้อเสนอเรื่องความสมบูรณ์นี้คือ: (ในโลกแห่งความเป็นจริง) ถ้าอลิซสามารถผ่านการตรวจสอบของบ็อบได้ อลิซก็ต้องมีความรู้ หรือ: อลิซรู้ว่า... "ความลับ"!
คำถามต่อไปนี้คือจะพิสูจน์ได้อย่างไรว่าอลิซรู้ "ความลับ"?
นี่ก็ดูเหมือนจะยากเหมือนกันใช่ไหม? หากเราต้องการพิสูจน์ว่าเครื่องรู้ "ความลับ" วิธีที่ง่ายที่สุดคือค้นหา "ความลับ" ในฮาร์ดดิสก์ของเครื่องหรือในหน่วยความจำ แต่สิ่งนี้เปิดเผยความลับ จะทำอย่างไรถ้าเครื่องเป็นกล่องดำ? หรือว่าอลิซ? เราไม่มีทักษะในการอ่านใจจึงเดาความลับในใจเธอไม่ได้
วิธีการกำหนด "รู้"?
"ความรู้เป็นศูนย์" รับรองว่าผู้ตรวจสอบ Bob ไม่มีความสามารถ (คอมพิวเตอร์) ในการ "แยก" ข้อมูลที่เกี่ยวข้องกับ "ความรู้" “ความรู้” ที่สกัดไม่ได้ไม่ได้หมายความว่าไม่มีอยู่จริง "ความน่าเชื่อถือ" รับประกัน "การมีอยู่" ของความรู้
การรับประกันว่า "ความรู้เป็นศูนย์" จะมีความหมายก็ต่อเมื่อมี "ความรู้" อยู่เท่านั้น
บทความนี้จะกล่าวถึง "ความน่าเชื่อถือ" และ "สิ่งที่ควรรู้"เพื่อที่จะวิเคราะห์ "ความรู้" เพิ่มเติม ขั้นแรกเราขอแนะนำโปรโตคอล Schnorr ของระบบที่พิสูจน์ความรู้เป็นศูนย์ที่รัดกุมและใช้กันอย่างแพร่หลาย โปรโตคอลนี้แสดงถึงโปรโตคอลความปลอดภัยระดับใหญ่ ซึ่งเรียกว่าโปรโตคอล Σ-Δ และส่วนขยายของโปรโตคอล Schnorr ก็เป็น "』[1] หนึ่งในเทคโนโลยีหลัก
ชื่อเรื่องรอง
โปรโตคอล Schnorr ขนาดกะทัดรัด
sk = a
PK = aG
อลิซมีหมายเลขลับอยู่ a. เราอาจคิดว่าหมายเลขนี้เป็น "คีย์ส่วนตัว" แล้ว "แมป" ไปยังจุด a*G บนกลุ่มเส้นโค้งวงรี เรียกโดยย่อว่า aG เราถือว่าจุดนี้เป็น "กุญแจสาธารณะ"
โปรดใส่ใจกับคำว่า "การทำแผนที่" ในที่นี้ เราจะแนะนำแนวคิดของ "โฮโมมอร์ฟิซึม" โดยสังเขป มีความสัมพันธ์การทำแผนที่โฮโมมอร์ฟิคระหว่างเขตข้อมูลจำกัดของกลุ่มเส้นโค้งวงรี เราใช้สัญลักษณ์ Zq เพื่อแสดงเขตข้อมูลจำกัด โดยที่จำนวนเฉพาะ q หมายถึงขนาดของเขตข้อมูลจำกัด ซึ่งหมายถึงชุดของจำนวนเต็มตั้งแต่ 0, 1, 2, ..., q-1 บนเส้นโค้งวงรี เราผ่านจุดฐาน G เพื่อสร้าง "กลุ่มวัฏจักร" ซึ่งทำเครื่องหมายเป็น 0G, G, 2G, ..., (q-1)G ซึ่งเป็นเซตของจุดเส้นโค้ง q จุดเส้นโค้งสองจุดใดๆ ก็สามารถดำเนินการ "การดำเนินการไบนารีแบบพิเศษ", G + G = 2G, 2G + 3G = 5G ได้ ดูเหมือนว่าการดำเนินการแบบไบนารีนี้คล้ายกับ "การบวก" ซึ่งเป็นไปตามกฎการแลกเปลี่ยนและการเชื่อมโยง เราจึงใช้เครื่องหมาย + แทน สาเหตุที่เรียกกลุ่มนี้ว่ากลุ่มวัฏจักรคือองค์ประกอบสุดท้าย (q-1)G ของกลุ่มบวกกับ G ล้อมรอบองค์ประกอบแรก 0G ของกลุ่ม
ให้จำนวนเต็ม r ใดๆ บนฟิลด์จำกัด เราสามารถหาจุดที่สอดคล้องกัน rG ในกลุ่มวงกลม หรือแทนค่า r*G ได้ด้วยการคูณแบบสเกลาร์ แต่การคำนวณย้อนกลับนั้น "ยาก" มาก ซึ่งเป็น "ปัญหาการเข้ารหัส" หรือที่เรียกว่าปัญหาลอการิทึมแบบไม่ต่อเนื่อง [2]
กล่าวคือ ถ้าจุด R บนกลุ่มวงกลมวงรีบนเส้นโค้งวงรีถูกกำหนดโดยพลการ เป็นการยากที่จะคำนวณว่าจำนวนเต็มใดในฟิลด์จำกัดตรงกับ R ถ้าฟิลด์จำกัดมีขนาดใหญ่พอ เช่น 256 บิต เราสามารถ ให้ถือว่าการคำนวณย้อนกลับนี้เป็นไปไม่ได้

โปรโตคอล Schnorr ใช้การแมปแบบทางเดียวระหว่างเขตข้อมูลจำกัดและกลุ่มแบบวนรอบอย่างเต็มรูปแบบ และตระหนักถึงโปรโตคอลความปลอดภัยแบบ Zero-Knowledge Proof ที่ง่ายที่สุด: Alice พิสูจน์ให้ Bob เห็นว่าเธอมีรหัสส่วนตัว sk ที่สอดคล้องกับ PK
ขั้นตอนที่ 1: เพื่อให้แน่ใจว่าไม่มีความรู้ อลิซจำเป็นต้องสร้างตัวเลขสุ่ม r ซึ่งใช้เพื่อป้องกันคีย์ส่วนตัวไม่ให้บ๊อบแตก ตัวเลขสุ่มนี้จำเป็นต้องจับคู่กับกลุ่มเส้นโค้งวงรี rG
ขั้นตอนที่ 2: Bob ต้องการให้หมายเลขสุ่มสำหรับการท้าทาย เรียกมันว่า c
ขั้นตอนที่ 3: อลิซคำนวณ z = r + a * c ตามจำนวนความท้าทาย และส่ง z ให้ Bob ในเวลาเดียวกัน และ Bob ตรวจสอบโดยใช้สูตรต่อไปนี้: z*G ?= R + c*PK = rG + ค*(aG )
คุณสามารถดูขั้นตอนการคำนวณของ Bob ในการตรวจสอบ z แบบ "homomorphically" ในขั้นตอนที่สาม หากสูตรนี้เป็นจริง ก็สามารถพิสูจน์ได้ว่าอลิซมีคีย์ส่วนตัว a
แต่ทำไม?
กระบวนการคำนวณและการตรวจสอบของ z นั้นน่าสนใจมาก และมีเทคนิคสำคัญหลายประการ:
ก่อนอื่น Bob จะต้องให้หมายเลขการท้าทาย "สุ่ม" จากนั้น Bob จะตรวจสอบ z ในลักษณะโฮโมมอร์ฟิกบนเส้นโค้งวงรี หากเราถือว่าหมายเลขท้าทาย c เป็นสิ่งที่ไม่รู้ ดังนั้น r+a*c=z จะถือเป็นสมการหนึ่งมิติ โดยที่ r และ a เป็นค่าสัมประสิทธิ์ของสมการ โปรดทราบว่าภายใต้สมมติฐานที่ว่า c ไม่เป็นที่รู้จัก หากต้องสร้าง r + a*x = r' + a'*x ให้เป็นไปตามทฤษฎีบท Schwatz-Zippel [3], r=r' และ a=a ' ทั้งสองถูกจัดตั้งขึ้น กล่าวคือ ภายใต้สมมติฐานที่ว่า c ไม่เป็นที่รู้จัก แทบเป็นไปไม่ได้เลยที่ Alice จะหา r', a' ที่ต่างกันอีกคู่หนึ่งเพื่อคำนวณ z และหลอก Bob หมายเลขท้าทายแบบสุ่ม c นี้ใช้ข้อจำกัดของ r และ a แม้ว่าบ็อบจะเลือกตัวเลขโดยการสุ่ม แต่เนื่องจากอลิซไม่ทราบล่วงหน้า อลิซจึงต้องใช้คีย์ส่วนตัว a เพื่อคำนวณ z คีย์ที่นี่: c ต้องเป็นตัวเลขสุ่ม
นอกจากนี้ หมายเลขสุ่ม r ที่สร้างขึ้นในขั้นตอนแรกของโปรโตคอลยังรับประกันความลับของ a เนื่องจากผลรวมของความลับใด ๆ เมื่อเพิ่มเข้ากับตัวเลขสุ่มที่สอดคล้องกับ "การแจกแจงความสอดคล้อง" ยังคงสอดคล้องกับ "การแจกแจงความสอดคล้อง"
ชื่อเรื่องรอง
พิสูจน์ความรู้เป็นศูนย์
มาดูกันว่าโปรโตคอล Schnorr พิสูจน์คุณสมบัติ "zero-knowledge" ที่อ่อนแอกว่าได้อย่างไร - "SHVZK":
หมายเหตุ: สิ่งที่เราพิสูจน์ที่นี่เป็นเพียงผู้ตรวจสอบที่ซื่อสัตย์เป็นพิเศษ Zero-Knowledge (SHVZK) เท่านั้น SHVZK กำหนดให้พฤติกรรมของ Bob ในข้อตกลงต้องไม่ไร้เหตุผล ตัวอย่างเช่น เขาต้องปฏิบัติตามข้อตกลง และในขั้นที่ 2 ให้ไปที่สายพานลำเลียงเพื่อรับหมายเลขสุ่มใหม่และใช้งานได้ทันที ในความหมายปกติ "ความรู้เป็นศูนย์" ไม่ได้กำหนดข้อกำหนดใดๆ สำหรับบ๊อบ ดังนั้นเราจึงกล่าวว่านี่เป็นคุณสมบัติที่อ่อนแอกว่า แม้ว่าโปรโตคอล Schnorr ในปัจจุบันจะไม่สามารถพิสูจน์ได้ว่า "ความรู้เป็นศูนย์" อย่างสมบูรณ์ แต่ก็สามารถบรรลุเป้าหมายของการไม่มีความรู้โดยสมบูรณ์ได้โดยการเพิ่มขั้นตอนของโปรโตคอล รายละเอียดจะไม่ขยายความในที่นี้ ผู้อ่านที่สนใจโปรดดู [4] เราจะพูดถึงประเด็นนี้อีกครั้งในภายหลังเมื่อเราพูดถึงการเปลี่ยนแปลงของ Fiat-Shamir
ประการแรก "เครื่องจำลอง" จำลอง "โลกในอุดมคติ" ในโลกอุดมคติ การสนทนาระหว่าง Zlice และ Bob จะถูกจำลองขึ้น Zlice ไม่มีความรู้เกี่ยวกับโปรโตคอล Schnorr, sk และ Bob มีคีย์สาธารณะ PK โปรดดูภาพด้านล่าง Bob จำเป็นต้องสร้างหมายเลขสุ่ม c ในขั้นตอนที่สองของโปรโตคอล Schnorr มีข้อกำหนดเพิ่มเติมที่นี่ นั่นคือ Bob สามารถรับหมายเลขสุ่มจาก "หมายเลขสุ่ม" ภายนอกเท่านั้น สายพานลำเลียง" หมายเลขสุ่มแต่ละหมายเลขต้องเป็นหมายเลขสุ่มแบบกระจายครั้งเดียวภายในช่วง 2^k ซึ่งเกิดจากการโยน "เหรียญ" k ครั้งล่วงหน้า Bob ไม่สามารถสร้างตัวเลขสุ่มด้วยวิธีอื่นได้ ซึ่งเป็นเหตุผลว่าทำไมเราต้องการให้ Bob ซื่อสัตย์
นี่คือวิธีที่ Zlice สามารถหลอก Bob ได้:

อารัมภบท: โปรดทราบว่า Zlice ไม่มีความรู้เรื่อง sk ณ จุดนี้ ม้าหมุนหมายเลขสุ่มของ Bob ถูกวางไว้ล่วงหน้าด้วยตัวเลขสุ่ม


ขั้นตอนที่ 2: Zlice สร้างตัวเลขสุ่ม z อีกครั้ง จากนั้นคำนวณ R'=z*G - c*PK และส่ง R' ให้ Bob
ขั้นตอนที่ 3: ในตอนนี้ Bob จะได้รับ c จากสายพานลำเลียงหมายเลขสุ่ม และส่ง c ไปที่ Zlice โปรดทราบว่า c นี้เป็น c ที่ Zlice สร้างขึ้นในขั้นตอนแรกทุกประการ
ขั้นตอนที่ 4: Zlice ส่งหมายเลขสุ่ม z ที่สร้างขึ้นในขั้นตอนที่สามไปให้ Bob และ Bob ดำเนินการตรวจสอบตามสูตรการตรวจสอบของโปรโตคอล Schnorr คุณสามารถตรวจสอบได้ว่าสูตรนี้สร้างขึ้นอย่างสมบูรณ์
คุณสามารถเปรียบเทียบโปรโตคอล Schnorr ได้ใน "โลกแห่งความจริง" ในทั้งสองโลก Bob สามารถผ่านการตรวจสอบได้
แต่ความแตกต่างคือ:
ใน "โลกแห่งอุดมคติ" Zlice ไม่มี sk ในขณะที่ "โลกแห่งความเป็นจริง" Alice มี sk
ใน "โลกแห่งอุดมคติ" z เป็นตัวเลขสุ่มและไม่เกี่ยวข้องกับ sk ในขณะที่ "โลกแห่งความจริง" z คำนวณด้วย sk
ใน "โลกแห่งอุดมคติ" Zlice ใช้พลังพิเศษเพื่อแทนที่ตัวเลขสุ่มของ Bob ใน "โลกแห่งความเป็นจริง" Alice มองไม่เห็นสายพานลำเลียงหมายเลขสุ่มของ Bob และไม่สามารถเปลี่ยนตัวเลขบนสายพานลำเลียงได้
Q
ที่นี่โปรดคิดเกี่ยวกับมัน:
(สองนาทีต่อมา...)
คำตอบคือไม่
หากอลิซรู้หมายเลขสุ่มล่วงหน้า อลิซ (ในโลกแห่งความเป็นจริง) ก็สามารถหลอกบ็อบได้เหมือนที่ตัวจำลอง Zlice ทำ
ชื่อเรื่องรอง
โปรแกรมจำลองการเผชิญหน้า
ในความเป็นจริง คุณสมบัติ 2 ประการของ "ความน่าเชื่อถือ" และ "ความรู้เป็นศูนย์" ก็มีความสมมาตรในอีกมิติหนึ่งเช่นกัน ความน่าเชื่อถือรับประกันได้ว่าอลิซผู้ประสงค์ร้ายจะต้องล้มเหลว และความรู้ที่เป็นศูนย์รับประกันได้ว่าบ็อบผู้ประสงค์ร้ายจะไม่มีวันทำสำเร็จ ที่น่าสนใจคือความสมมาตรนี้จะสะท้อนให้เห็นใน "โลกในอุดมคติ" จำลอง
มาวิเคราะห์คำจำกัดความของความน่าเชื่อถือกัน: การขาดความรู้ของอลิซทำให้การตรวจสอบของบ็อบล้มเหลว ข้อเสนอที่ตรงกันข้ามคือ: การตรวจสอบที่ประสบความสำเร็จของ Bob นำไปสู่ Alice ต้องมีความรู้
เรากลับมาที่เครื่องจำลองอีกครั้งเพื่อทดสอบความรู้ของอลิซใน "โลกในอุดมคติ" ที่สามารถใช้พลังวิเศษได้
โปรดจินตนาการอีกครั้งว่าในเอกภพคู่ขนาน มีโลกสองใบ โลกหนึ่งเรียกว่า "โลกในอุดมคติ" และอีกโลกหนึ่งเรียกว่า "โลกจริง" สิ่งที่น่าสนใจเกี่ยวกับโลกในอุดมคติคือมันถูกจำลองโดย "เครื่องจำลอง" และเครื่องจำลองสามารถใส่ NPC ที่มีพลังพิเศษในโลกในอุดมคติได้ คราวนี้อวตารทั้งสองของอลิซถูกใส่เข้าไปใน "โลกในอุดมคติ" และ "โลกแห่งความจริง" ในเวลาเดียวกัน
สมมติว่า "คุณ" รับบทเป็นบ๊อบ และคุณต้องการทราบว่าอลิซที่คุณกำลังคุยด้วยนั้น "ไว้ใจได้" จริงๆ หรือไม่ "โลกแห่งอุดมคติ" ด้วยความช่วยเหลือจาก NPC ที่มีพลังพิเศษ คุณสามารถ "สกัด" ความรู้ของอลิซจากฝั่งตรงข้ามได้
อะไร...อะไรนะ? เราเพิ่งพิสูจน์ไม่ได้หรือว่า: โปรโตคอลไม่มีความรู้? ความรู้เป็นศูนย์หมายความว่า Bob ไม่สามารถแยกส่วน "ความรู้" ใดๆ ได้ การตีกระดานดำที่นี่ "ความรู้เป็นศูนย์" สำหรับ "โลกแห่งความจริง" สิ่งที่เรากำลังพูดถึงตอนนี้คือ "โลกในอุดมคติ" ที่มีมนต์ขลัง
ขอย้ำอีกครั้งว่าใน "โลกแห่งอุดมคติ" คุณสามารถใช้ NPC ที่มีพลังพิเศษเพื่อดึงความรู้ของอลิซ เพื่อให้แน่ใจว่าอลิซใน "โลกแห่งความเป็นจริง" ไม่สามารถโกงได้ ลองนึกภาพอลิซขี้โกง เธอต้องไม่มีความรู้ และถ้าไม่มีความรู้ NPC ก็ไม่สามารถสกัดสิ่งใดๆ ใน "โลกแห่งอุดมคติ" ได้
อย่างไรก็ตาม ใน "โลกแห่งความจริง" คุณไม่สามารถใช้ NPC ได้ และแน่นอนว่าคุณไม่สามารถเห็นความรู้ของอลิซได้ และจะไม่ขัดแย้งกับธรรมชาติของ "ความรู้ที่ไม่มีศูนย์" เนื่องจากเหตุการณ์ในสองโลกนั้น "แยกไม่ออก" เราจึงสรุปได้ว่าใน "โลกจริง" อลิซต้องมีความรู้
จัดเรียงความคิด: จะพิสูจน์ได้อย่างไรว่าอลิซไม่สามารถโกงในเซสชันแบบโต้ตอบได้ เราจำเป็นต้องกำหนด "อัลกอริทึมการจำลอง" สำหรับเซสชันแบบโต้ตอบนี้ ซึ่งสามารถจำลอง "โลกในอุดมคติ" ซึ่งมีบทบาทพิเศษที่เรียกว่า "ตัวแยก" ซึ่งเป็น NPC ที่เรากล่าวถึงก่อนหน้านี้ มันสามารถส่งผ่าน "พลังพิเศษ" เพื่อ "ดึง" ความรู้ของอลิซ แต่ทำให้อีกฝ่าย "ไม่รู้"หมายเหตุ มหาอำนาจเป็นสิ่งจำเป็น! นี้อยู่ใน "ชุดที่ (2) ทำความเข้าใจกับ "การจำลอง"
』 มีการอธิบายว่าหากเครื่องจำลองมีความสามารถในการโกงโดยไม่มีพลังวิเศษ ก็เท่ากับพิสูจน์ว่าโปรโตคอลนั้น "ไม่น่าเชื่อถือ" (Unsoudness) ในทำนองเดียวกัน หาก "ผู้สกัด" มีความสามารถในการดึงข้อมูลโดยไม่ต้องใช้พลังพิเศษ ก็เท่ากับพิสูจน์ว่าโปรโตคอลไม่ใช่ความรู้ที่เป็นศูนย์ (Not-zero-knowledge)
ขึ้นอยู่กับหลักฐานของระบบโต้ตอบเฉพาะ เริ่มจาก Schnorr protocol ที่เราเพิ่งพูดถึงกัน
ชื่อเรื่องรอง
หลักฐานความรู้: "หลักฐานความรู้"
มาพิสูจน์ "ความน่าเชื่อถือ" ของโปรโตคอล Schnorr และดูว่า NPC สุดล้ำนี้สกัดกุญแจส่วนตัวของอลิซใน "โลกแห่งอุดมคติ" ได้อย่างไร และ "พลังพิเศษ" นี้ยัง "ย้อนเวลากลับไป"
ขั้นตอนที่ 1: อลิซเลือกตัวเลขสุ่ม r คำนวณ R=r*G และส่ง R ไปยัง "ตัวแยก"


ขั้นตอนที่ 4: หลังจากที่ตัวแยกข้อมูลพบว่าไม่มีปัญหากับ z มันจะเปิดใช้งานพลังพิเศษและย้อนเวลากลับก่อนขั้นตอนที่สอง
ขั้นที่ 5: ผู้สกัดจะส่งคำท้าสุ่มหมายเลข c' ไปที่อลิซอีกครั้ง ในตอนนี้ อลิซกลับไปที่ขั้นตอนที่สอง และจะมีความรู้สึกเหมือนเดจาวู แต่เธอไม่สามารถรับรู้ความจริงที่ว่าเวลาย้อนกลับ
ขั้นตอนที่ 6: Alice คำนวณ z' อีกครั้งและส่งไปยังตัวแยกเพื่อตรวจสอบ
ขั้นตอนที่ 7: ตอนนี้ตัวแยกข้อมูลมี z และ z' ก็สามารถคำนวณคีย์ส่วนตัวที่อลิซเป็นเจ้าของได้โดยตรงและบรรลุ "การสกัดความรู้"
ณ จุดนี้ "ความน่าเชื่อถือ" ได้รับการพิสูจน์โดยพื้นฐานแล้ว คุณรู้สึกเล็กน้อยเกี่ยวกับ "ความสมมาตร" ของความน่าเชื่อถือและความฉลาดเป็นศูนย์หรือไม่?
หมายเหตุ: ความน่าเชื่อถือบางอย่างไม่จำเป็นต้องมีอัลกอริธึมการแยก ระบบพิสูจน์ที่ใช้ตัวสกัดเพื่อพิสูจน์ความน่าเชื่อถือเรียกว่า "หลักฐานความรู้"
ชื่อเรื่องรอง
การตีความการโจมตีลายเซ็น ECDSA
แบบแผนลายเซ็น ECDSA ที่สามารถเห็นได้ทุกที่ในระบบบล็อกเชนยังเป็นระบบพิสูจน์ความรู้แบบไม่มีศูนย์ รูปแบบลายเซ็นดิจิทัล ECDSA แบบเส้นโค้งวงรีนั้นใกล้เคียงกับโปรโตคอล Schnorr มาก และรูปแบบลายเซ็นที่ใช้โปรโตคอล Schnorr ได้รับการตีพิมพ์ใน "Journal of Cryptography" [5] ในปี 1991 ในปี 1991 เมื่อ National Institute of Standards (NIST) เลือกอัลกอริธึมลายเซ็นดิจิทัล แบบแผนลายเซ็น Schnorr ที่สวยงามได้รับการจดสิทธิบัตร ดังนั้น NIST จึงเสนอรูปแบบลายเซ็น DSA (อัลกอริทึมลายเซ็นดิจิทัล) อีกรูปแบบหนึ่ง จากนั้นรูปแบบนี้สนับสนุนวงรี เส้นโค้งคือ แล้วเรียกว่า ECDSA เมื่อ Satoshi Nakamoto คิด Bitcoin เขาเลือก ECDSA เป็นอัลกอริธึมลายเซ็น แต่เส้นโค้งไม่ได้เลือกเส้นโค้งวงรีที่แนะนำโดยมาตรฐาน NIST - secp256-r1 แต่เลือก secp256-k1 เนื่องจากข่าวลือในแม่น้ำและทะเลสาบ NIST อาจแก้ไขการเลือกพารามิเตอร์เส้นโค้งวงรี ทำให้สถาบันบางแห่งใช้วิธีการที่ไม่รู้จักในการแก้ปัญหาลอการิทึมที่ไม่ต่อเนื่อง และทำให้มีความสามารถพิเศษใน "โลกแห่งความเป็นจริง" หลายคนสงสัยว่าบางที Satoshi Nakamoto ก็เคยพิจารณาเรื่องนี้เช่นกันเมื่อเขาออกแบบ Bitcoin ในตอนนั้น โดยจงใจเลือกเส้นโค้งเช่น secp256-k1 ที่ดูเหมือนจะปลอดภัยน้อยกว่าเล็กน้อย
เรามาแยกส่วนลายเซ็น ECDSA และกำหนดรูปแบบการตรวจสอบสิทธิ์ที่คล้ายกับ ECDSA ในแบบโต้ตอบ ดูภาพด้านล่างสำหรับการโต้ตอบ
ขั้นตอนที่ 1: อลิซยังคงเลือกหมายเลขสุ่ม k และแมป k กับเส้นโค้งวงรีเพื่อรับจุด K แล้วส่งให้บ็อบ
ขั้นตอนที่ 2: Bob ต้องสร้างตัวเลขสุ่มสองตัว c และ e และมอบให้กับอลิซ
ขั้นตอนที่ 3: อลิซคำนวณ s และส่งให้บ๊อบ ซึ่งเป็นผู้ตรวจสอบว่ากระบวนการคำนวณของ s ถูกต้องหรือไม่
หมายเหตุ: สำหรับผู้อ่านที่คุ้นเคยกับรูปแบบลายเซ็น ECDSA นี่คือคำอธิบายสั้น ๆ c ที่สร้างโดย Bob สอดคล้องกับค่าแฮช Hash(m) ของข้อความที่เซ็นชื่อ และ e ถูกสร้างขึ้นโดยฟังก์ชันการแปลง F(K) . ในหมู่พวกเขา F(.) ได้มาจากการหาพิกัด x ของจุดบนเส้นโค้งวงรีและผ่าน (mod q)[6]
มีคำกล่าวในโลกว่ารูปแบบลายเซ็น ECDSA มีความเสี่ยงด้านความปลอดภัยที่ร้ายแรง หากใช้ 2 ลายเซ็น จะมีการเปิดเผยรหัสส่วนตัวของผู้ลงนาม อันที่จริง Schnorr Signature Scheme ก็มีปัญหาเช่นเดียวกัน
เมื่อวิศวกรของ Sony PlayStation 3 เรียกฟังก์ชันไลบรารี ECDSA พวกเขาส่งผ่านค่าคงที่ในตำแหน่งพารามิเตอร์ที่ควรป้อนตัวเลขสุ่ม แฮ็กเกอร์ที่คุ้นเคยกับการเข้ารหัสค้นพบประตูหลังที่ร้ายแรงนี้ ในเดือนมกราคม 2554 Geohot เด็กชายจอมเวทย์มนตร์ได้เผยแพร่คีย์ส่วนตัวหลักของ Sony PS3 ต่อสาธารณะ ซึ่งหมายความว่าผู้ใช้ทุกคนสามารถรับสิทธิ์รูทของเครื่องเล่นเกมได้อย่างง่ายดาย หลังจากนั้น Sony ก็โกรธมาก... (คุณสามารถค้นหาเรื่องราวติดตามได้ทางออนไลน์)
k = (c - c')/(s - s')a = (k * s - c)/e
ถ้าอลิซใช้ K เดียวกันในการโต้ตอบสองครั้ง Bob สามารถรับ s และ s' ได้โดยการส่ง c และ c' ที่แตกต่างกันสองตัว จากนั้นคำนวณคีย์ส่วนตัว a ตามสูตรต่อไปนี้:
แล้วเราจะดู "ประตูหลังรักษาความปลอดภัย" นี้อย่างไร? ลองคิดดูสิ ทุกคน แบ็คดอร์ความปลอดภัยนี้เกือบจะเหมือนกับหลักฐานความน่าเชื่อถือของโปรโตคอล Schnorr ที่เราพิสูจน์ก่อนหน้านี้! อัลกอริทึมนี้เป็นอัลกอริทึม "แยก" ในการพิสูจน์ "ความน่าเชื่อถือ" ของโปรโตคอลการตรวจสอบสิทธิ์ ECDSA ในการพิสูจน์ความน่าเชื่อถือ เพื่อให้อลิซใช้เลขสุ่ม k เดียวกันเพื่อตรวจสอบสิทธิ์สองครั้ง "ตัวแยก" จำเป็นต้องใช้พลังพิเศษของ "การย้อนเวลา"
แต่ในระบบ Sony PS3 ตัวเลขสุ่มถูกเขียนโดยวิศวกรที่ไม่รู้จักให้เป็นค่าคงที่ ซึ่งเทียบเท่ากับการให้ "พลังพิเศษ" แก่แฮ็กเกอร์โดยตรง และนี่คือ "โลกแห่งความเป็นจริง" กล่าวอีกนัยหนึ่ง แฮ็กเกอร์สามารถใช้ "ตัวสกัด" โดยไม่ต้อง "ย้อนเวลากลับไป"
เพื่อเป็นการเตือนความจำ มันไม่ใช่แค่เรื่องของตัวเลขสุ่มที่ไม่สามารถทำซ้ำได้ หมายเลขสุ่มต้องเป็นหมายเลขสุ่มที่ปลอดภัยด้วยการเข้ารหัสแทน
1: z1 = r1 + c1*a2: z2 = r2 + c2*a
ลองนึกภาพว่าถ้าเลขสุ่ม r ถูกสร้างขึ้นโดยเครื่องกำเนิดเลขสุ่มเทียมโดยใช้หลักการของ "ความสอดคล้องเชิงเส้น" แม้ว่าค่าของ r จะเปลี่ยนแปลงตลอดเวลา แต่ก็ยังไม่สามารถป้องกัน "การสกัดความรู้" ได้ สมมติว่าอัลกอริทึมความสอดคล้องเชิงเส้นคือ r2= d*r1 + e (mod m) ให้กลับไปที่ขั้นตอนที่สามของโปรโตคอล Schnorr:
หากผู้โจมตีขอให้อลิซสร้างสองลายเซ็นติดต่อกัน หลังจากแทน r2 เป็น r1 แล้ว จะมีสมการเชิงเส้นสองสมการเพื่อแก้สมการที่ไม่รู้จักสองตัว (r1, a), z1, z2, c1, c2, d, e สำหรับการโจมตีครั้งหลัง เป็นที่รู้จัก และระบบสมการนี้สามารถแก้ไขได้ด้วยความรู้คณิตศาสตร์ระดับมัธยมศึกษาตอนต้นเท่านั้น
โปรดทราบว่า นี่ไม่ใช่ "ข้อบกพร่องด้านการออกแบบ" ของโปรโตคอล Schnorr (หรือโปรโตคอล ECDSA) ตรงกันข้าม นี่เป็นการออกแบบที่ละเอียดอ่อนกว่าของโปรโตคอล Schnorr ซึ่งรับประกันความน่าเชื่อถือของโปรโตคอลโดยหลักการ เทคนิคที่คล้ายกันมักปรากฏในโปรโตคอลการเข้ารหัสเพื่อให้ได้ "ความรวบรัด" ได้อย่างรวดเร็ว แต่ก็ต้องบอกว่าหากกลไกภายในของโปรโตคอลไม่ชัดเจน โดยเฉพาะอย่างยิ่งความแตกต่างระหว่าง "โลกในอุดมคติ" และ "โลกแห่งความจริง" ผู้ใช้สามารถแนะนำ "ช่องโหว่ด้านความปลอดภัย" แฟนซีต่างๆ ได้อย่างง่ายดาย
เราต้องรู้อะไรบ้างในฐานะผู้เขียนโค้ดที่มีความรับผิดชอบซึ่งสามารถเขียนซอฟต์แวร์ที่ปลอดภัยและเชื่อถือได้ แน่นอนว่าเป็นการดีที่สุดที่จะเข้าใจกลไกการออกแบบของโปรโตคอลความปลอดภัยอย่างถี่ถ้วน แต่ในกรณีส่วนใหญ่สิ่งนี้จะไม่สมจริง โดยทั่วไป เราใช้เครื่องมือเข้ารหัสต่างๆ เป็น "กล่องดำ" แต่อาจยังไม่เพียงพอ เรามาทำความเข้าใจกันดีกว่า:
"นิยามความปลอดภัย" คืออะไร?
"มหาอำนาจ" ใน "โลกอุดมคติ" คืออะไรกันแน่?
ชื่อเรื่องรอง
Brain hole: เราอยู่ในโลกจำลองหรือเปล่า?

เมื่อฉันอ่าน "Simulator" เป็นครั้งแรก สิ่งแรกที่ฉันนึกถึงคือภาพยนตร์เรื่อง "The Matrix" "โลกแห่งความจริง" ที่เราอาศัยอยู่อาจเป็น "โลกในอุดมคติ" ที่จำลองขึ้นโดยเครื่องจำลองบางอย่าง ทุกสิ่งที่เราเห็น ได้ยิน และรับรู้ล้วนถูก "จำลอง" ใน "โลกแห่งความจริง" เราอาศัยอยู่ในเมทริกซ์ แต่เราไม่ทราบเรื่องนี้
ในช่วงฤดูใบไม้ผลิและฤดูใบไม้ร่วงและช่วงสงครามระหว่างรัฐ Zhuangzi ก็คิดเกี่ยวกับประเด็นที่คล้ายกันเช่นกัน:
ในอดีต Zhuang Zhou ฝันว่าเขาเป็นผีเสื้อและผีเสื้อนั้นสดใสมาก อ้างถึง Zhizhi และ! ฉันไม่รู้จักโจวเย่ หากคุณรู้สึกได้ทันทีคุณจะรู้สึกเหมือนเป็นสัปดาห์ ฉันไม่รู้ว่า Zhou Zhimeng คือ Hu Die และ? ความฝันของผีเสื้อคือ Zhou Yu? Zhou และ Hu Die ต้องมีความแตกต่างในตัวเอง นี้เรียกว่าเป็นตัวเป็นตน
—— "ความเท่าเทียมกันของสิ่งต่าง ๆ ของ Zhuangzi"
อธิบายแบบคนธรรมดา: วันหนึ่ง Zhuangzi หลับไปและฝันว่าเขากลายเป็นผีเสื้อเต้นเบา ๆ เมื่อเขาตื่นขึ้นเขาพบว่าเขายังคงเป็น Zhuangzi ในความฝัน ผีเสื้อไม่รู้ว่าเขาคือ Zhuangzi จวงจื่อจึงครุ่นคิดว่าเขากลายเป็นผีเสื้อในความฝัน หรือผีเสื้อกลายเป็นจวงจือในความฝัน ถ้าฝันเป็นจริงพอ...
"สมองในถัง" เป็นแนวคิดที่เสนอโดยนักปรัชญาชาวอเมริกัน กิลเบิร์ต ฮาร์แมน: สมองของคนเราสามารถใส่ลงในภาชนะ แล้วเสียบด้วยสายไฟ และด้วยการจำลองสัญญาณไฟฟ้าต่างๆ อินพุต สมองจะคิดว่ามันอาศัยอยู่ใน โลกแห่งความจริง.ในโลก.
แนวคิดนี้มาจาก "สมาธิเชิงปรัชญาขั้นที่หนึ่ง" ของนักปรัชญาเดส์การตส์ [7] ซึ่งเขาให้เหตุผลว่าเราควรสงสัยในทุกสิ่งและจำเป็นต้องทดสอบความรู้ทั้งหมดของมนุษย์ คณิตศาสตร์ เรขาคณิต และโลกที่รับรู้ทีละอย่าง อย่างไรก็ตาม เขาพบว่านอกเหนือจาก "ฉันคิด ฉันจึงเป็น" ความรู้ทั้งหมดอาจไม่น่าเชื่อถือ เพราะสมองของเรามีแนวโน้มที่จะถูกหลอกโดยปีศาจร้ายที่มี "พลังพิเศษ"
ในปี 2546 นิค บอสตรอม ศาสตราจารย์ด้านปรัชญาแห่งมหาวิทยาลัยออกซ์ฟอร์ด ได้เขียนบทความเรื่อง "Are We Living in a Computer Simulation World?" อย่างเคร่งขรึม "[8]. พิจารณาว่าข้อเท็จจริงอย่างน้อยหนึ่งในสามข้อต่อไปนี้เป็นจริง:
อารยธรรมมนุษย์สูญสิ้นสิ้นเชิง
อารยธรรมของมนุษย์ได้มาถึงระดับของเทคโนโลยีที่สามารถจำลองโลกแห่งความจริงได้อย่างสมบูรณ์ แต่ด้วยเหตุผลบางอย่าง ไม่มีใครเต็มใจที่จะสร้างโลกจำลองขึ้นมาใหม่เพื่อรับบทเป็นพระเจ้า
อารยธรรมมนุษย์ปัจจุบันของเราอาศัยอยู่ในโลกจำลอง
Elon Musk ผู้ประกอบการใน Silicon Valley กล่าวในการให้สัมภาษณ์ต่อสาธารณะว่าความน่าจะเป็นที่ "เราอยู่ในโลกแห่งความจริงพื้นฐาน" นั้นมีเพียง "หนึ่งในพันล้าน" กล่าวคือเขาเชื่อว่าเราอาศัยอยู่ในเกมคอมพิวเตอร์ (โลกจำลอง) และนอกโลกจำลองมีโปรแกรมเมอร์ที่พัฒนาและควบคุมโลกนี้ และเราแต่ละคนเป็นตัวละครในเกม (NPC)
หลังจากเหน็ดเหนื่อยกับการแหกคุกไอโฟนและระบบขับเคลื่อนอัตโนมัติ จีโอฮอต เด็กชายจอมเวทย์ได้กล่าวสุนทรพจน์หัวข้อ "การแหกคุกการจำลอง" ในการประชุม "เซาท์ บาย เซาท์เวสต์" ในเดือนมีนาคมปีนี้ [9] เขาเชื่อว่าเรากำลังอยู่ในโลกจำลองและเทพเจ้าที่เรียกว่าเป็นผู้เขียนโค้ดที่มีชีวิตและกำลังเตะอยู่ในโลกภายนอก พวกเขาตั้งโปรแกรมให้สร้าง "โลกแห่งความจริง" ของเรา แน่นอนว่าพวกเขาอาจเริ่มต้นมากกว่าหนึ่งสำเนาของ โลก. อย่างไรก็ตาม พวกเขาอาจอาศัยอยู่ใน "โลกจำลอง" ภายนอกก็ได้
หากเราอาศัยอยู่ในโลกจำลอง บางทีเราอาจพบประตูหลังที่ไหนสักแห่งบนโลก นั่นคือ "ประตูกลจำลอง" เพื่อที่จะได้รับพลังพิเศษของ "เครื่องจำลอง" และดึง "ความรู้ลับ" อันน่าทึ่งออกมา
ถ้าโลกของเราถูกจำลองโดยโปรแกรมจริง ๆ อาจมีบั๊กในโปรแกรมนี้ ถ้ามีบั๊ก บางทีเราอาจใช้บั๊กนี้เพื่อหนีออกจากคุก กระโดดออกจาก "โลกแห่งอุดมคติ" และเข้าถึงโลกภายนอก พูดคุยเกี่ยวกับรหัสเกษตรกรพระเจ้า
นี่เรื่องตลกใช่ไหม? ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากย่อหน้าใน Zhihu [10]:
หากโลกเสมือนมีตัวอย่างใดที่สามารถพิสูจน์ได้
1. ทำไมอนุภาคมูลฐานระดับจุลภาคถึงมีสีสันสวยงามด้วยตาเปล่า แต่อนุภาคมูลฐานระดับจุลภาคล้วนเหมือนกันทุกประการ นี่เป็นสิ่งเดียวกันกับรูปภาพ แต่พิกเซลเป็นสิ่งเดียวกันทุกประการ
2. เหตุใดความเร็วแสงจึงมีขีดจำกัดสูงสุด เนื่องจากความเร็วในการทำงานของเครื่องมีจำกัด
3. ทำไมถึงมีค่าคงที่ของพลังค์? เนื่องจากความแม่นยำของข้อมูลเครื่องมีจำกัด
4. ทำไมอนุภาคขนาดจิ๋วจึงเป็นเมฆความน่าจะเป็นทั้งหมด? นี่เป็นการเพิ่มการก่อกวนแบบสุ่มเพื่อหลีกเลี่ยงไม่ให้ระบบติดอยู่ในลูป
5. เหตุใดจึงมีหลักการกีดกันของเพาลี ดูเหมือนว่าองค์กรข้อมูลที่นำมาใช้โดยระบบนั้นเป็นอาร์เรย์หลายมิติ
6. เหตุใดคอมพิวเตอร์ควอนตัมจึงทำงานได้อย่างรวดเร็วจนสามารถลองความเป็นไปได้ทั้งหมดในทันที เนื่องจากสิ่งนี้เรียกอินเทอร์เฟซของโฮสต์เป็นหลัก
7. เหตุใดจึงมีความพัวพันทางควอนตัม นี่คือตัวชี้สองตัวที่อ้างถึงวัตถุเดียวกัน
9. ทำไมเวลาถึงมีจุดเริ่มต้น? ระบบมีเวลาบูต
ยังมีต่อ
ยังมีต่อ
การออกแบบโปรโตคอลการเข้ารหัสนั้นเหมือนกับการเดินไต่เชือก หากคุณต้องการบรรลุ "ความรู้เป็นศูนย์" และ "ความน่าเชื่อถือ" ในเวลาเดียวกัน หมายความว่าคุณต้องสร้างเนื้อหาของโปรโตคอลแบบสุ่มทั้งหมด และตรวจสอบให้แน่ใจว่า "ความรู้" สามารถมีส่วนร่วมได้ ในการโต้ตอบของโปรโตคอล หากโปรโตคอลไม่ได้รับการออกแบบอย่างเหมาะสมหรือใช้งานอย่างถูกต้อง จะนำไปสู่การล่มสลายของระบบรักษาความปลอดภัย ตัวอย่างเช่น ความรู้ที่เป็นศูนย์อาจถูกทำลาย ทำให้ "ความรู้" รั่วไหลโดยไม่ได้ตั้งใจ หรือ ความน่าเชื่อถืออาจถูกทำลายเพื่อให้ใครก็ตามสามารถปลอมแปลงข้อพิสูจน์ได้ ยิ่งกว่านั้น การรักษาความปลอดภัยประเภทนี้มีความรุนแรงมากกว่าโค้ดดั้งเดิมที่อยู่ภายใต้ช่องโหว่ของกลไก และยากต่อการถูกค้นพบ สำหรับการโต้เถียงทางคณิตศาสตร์อย่างเคร่งครัด สิ่งนี้ดูเหมือนจำเป็น
If you would be a real seeker after truth, it is necessary that at least once in your life you doubt, as far as possible, all things.
โลกของเราถูกจำลองโดย "อารยธรรมสามร่างกาย" จริงหรือ? ความเป็นไปได้นี้ไม่สามารถตัดออกได้ บางทีเราจำเป็นต้องตรวจสอบความหลงไหลต่างๆ ของเราอย่างจริงจังอีกครั้ง แต่แล้วไงล่ะ? อย่างน้อย "ความคิด" ของฉันก็มีจริง
หากคุณเป็นผู้แสวงหาความจริงอย่างแท้จริง อย่างน้อยสักครั้งในชีวิต จงตั้งคำถามกับทุกสิ่งที่คุณทำได้
