Score:1

โครงร่าง ZK ที่ใช้ Schnorr

ธง cn

TL;DR: สิ่งนี้ใช้งานไม่ได้อย่างแน่นอนและมีความเสี่ยงด้านความปลอดภัยอย่างมากโพสต์ไว้ในกรณีที่มีภัยคุกคามอื่น ๆ ที่ฉันพลาดหรือเพื่อห้ามปรามบุคคลอื่นที่คิดไอเดียนี้

สวัสดี! ฉันค่อนข้างใหม่สำหรับการเข้ารหัส ฉันกำลังเริ่มลงทุนในแผน ZK สำหรับโครงการเล็กๆ ของฉัน ซึ่งฉันตั้งใจจะนำสิ่งที่ได้เรียนรู้มาไปใช้จริง ฉันคิดโปรโตคอลขึ้นมาได้ และอยากทราบว่ามันดีหรือไม่ (เช่น ปลอดภัย ไม่โต้ตอบจริงๆ และ ZK ฯลฯ). มันเกือบจะใช้การสร้างลายเซ็น Schnorr และโปรโตคอลการตรวจสอบซ้ำ

ติดตั้ง

  • ผู้เล่นเป็น อลิซ, บ๊อบ และ ฝูงชน.
  • ผู้เล่นทุกคนเห็นด้วยกับการใช้กลุ่มย่อยแบบวนรอบที่มีการเข้ารหัสที่ปลอดภัยของเส้นโค้งวงรีด้วยตัวสร้าง $G$.
  • Bob มีคู่คีย์สาธารณะ/ส่วนตัว ($ข$,$B=bG$).

วัตถุประสงค์

อลิซมีความลับ $s$ซึ่งเธอกระทำต่อสาธารณชนโดยการประกาศ $S$ (สร้างเป็น $S=sG$).

บ็อบต้องการพิสูจน์ให้สมาชิกทุกคนใน Crowd เห็นว่าเขารู้จัก $s$แต่ไม่มีการเปิดเผยอะไรเกี่ยวกับ $s$ (ZK). นอกจากนี้ เขาต้องการให้หลักฐานของเขาไม่โต้ตอบและนำมาใช้ซ้ำได้โดยสมาชิกขี้ระแวงของ Crowd

มาตรการ

  1. อลิซประกาศต่อสาธารณชน $S$.
  2. บ๊อบอ้างว่ารู้ $s$ และส่งหลักฐาน $p=s-b$.
  3. ฝูงชนใช้เป็นหลักฐานที่ถูกต้องหาก $pG+B=S$.

เหตุผล

  1. เพื่อให้ Bob สามารถสร้างที่ถูกต้อง $p=s-b$ เขาจำเป็นต้องรู้ $s$. เขารู้ว่าการตรวจสอบเกี่ยวข้องกับการลบ $-ข$ ส่วนหนึ่งจึงไม่ทราบ $s$ หมายถึงไม่สามารถลงเอยด้วย $S$ ในที่สุด.
  2. บ๊อบไม่ได้ให้ข้อมูลใด ๆ เกี่ยวกับ $s$ เพราะมันถูกบดบังด้วยการเสริมด้วย $-ข$. เพราะไม่มีใครรู้ $ข$โดยพื้นฐานแล้วจะเป็นการสุ่มค่าอย่างสม่ำเสมอ
  3. ฝูงชนรู้ว่าบ็อบรู้จริงเพราะการสร้างหลักฐานเกี่ยวข้องกับการรู้ $ข$ เช่นเดียวกับ $s$ สำหรับหลักการเดียวกันกับข้อแรก ถ้ามีคนรู้ $s$ แต่ไม่ $ข$พวกเขาไม่สามารถลบจำนวนที่ถูกต้องได้ $-ข$ ซึ่งได้รับการกู้คืนในระหว่างกระบวนการตรวจสอบและผลลัพธ์สุดท้ายจะไม่เป็นเช่นนั้น $S$.

คำถาม

  • นี่เป็นโครงร่าง ZK ที่ไม่ใช่แบบโต้ตอบที่ถูกต้องหรือไม่
  • จะดีไหมถ้าเป็นเช่นนั้น?
  • มีข้อดีใดๆ ของการใช้ zkSNARK เหนือโครงร่างดังกล่าวหรือไม่ เช่น ฟังก์ชันที่ได้รับการพิสูจน์คือผู้ใช้ทราบแฮชของคำและแฮชของคำที่เชื่อมกับคีย์สาธารณะของตนเอง

คำเตือน

สิ่งนี้ไม่ได้ผลอย่างแน่นอน มันมีความเสี่ยงอย่างมากเนื่องจากผู้พิสูจน์ (ในกรณีนี้คือ Bob) อาจมีรหัสส่วนตัวของพวกเขารั่วไหล: ผู้เล่นคนอื่นที่รู้ $s$ (อลิซในกรณีนี้และคนอื่นๆ ที่ถูกจับได้ $s$ ไม่ว่าด้วยวิธีใด) ก็ทำได้ $b = s - p$. ในรูปแบบลายเซ็น Schnorr มีปัจจัยที่เกี่ยวข้อง $ข$. แต่ปัจจัยนี้เป็นที่รู้จักกันทั่วไป เนื่องจากมีการใช้ในโปรโตคอลการตรวจสอบ ดังนั้นจึงไม่สามารถป้องกันได้ $ข$ ในกรณีนี้. ประเด็นสำคัญ ซึ่งฉันดีใจที่สามารถถือเป็นบทเรียนได้ คือในโปรโตคอลของ Schnorr สิ่งสำคัญยิ่งที่จะต้องรักษาไว้ $k$ ปลอดภัย.

knaccc avatar
es flag
ฉันคิดว่าในส่วน zkSNARKs ของคำถามของคุณ "คำ" เป็นความลับ $s$? หากเป็นคำก็อาจไม่มีคุณสมบัติเป็นค่าเอนโทรปีสูง ฉันไม่แน่ใจว่าจะช่วยพิสูจน์ได้อย่างไรว่าไม่ใช่แค่ความรู้เรื่องแฮชของ $s$ แต่ยังรวมถึงแฮชของ $s$ ที่เชื่อมกับคีย์สาธารณะ $B$ ของ Bob zkSNARK นั้นซับซ้อนกว่ามาก ดังนั้นส่วนนี้ของคำถามของคุณน่าจะสมควรได้รับคำถาม crypto.stackexchange อีกคำถามหนึ่ง หากคุณต้องการสำรวจอย่างละเอียด
cn flag
ใช่ มันไม่ใช่คำ มันเป็นความลับที่มีเอนโทรปีสูง (อาจจะเป็นคำ แต่ผสมด้วยไม่มีเอนโทรปีที่สูงพอสมควร) เหตุผลที่ให้ B มีส่วนร่วมในข้อพิสูจน์คือฉันต้องการให้ข้อพิสูจน์นั้นไม่ซ้ำใครสำหรับ Bob เพื่อไม่ให้บุคคลที่สาม Charlie สามารถอ้างได้ว่ารู้คำตอบด้วยข้อพิสูจน์เดียวกัน แต่แน่นอนว่า ฉันจะคิดให้มากกว่านี้อีกสักหน่อยและให้คำถามแบบสแตนด์อโลนที่เหมาะสมซึ่งสมควรได้รับ :)
knaccc avatar
es flag
หากเราเข้าใจกรณีการใช้งานของคุณถูกต้อง ในกรณีที่ไม่ชัดเจน Bob สามารถระบุลายเซ็นปกติประเภทใดก็ได้สำหรับคีย์สาธารณะ $S$ ในข้อความที่มีข้อมูลระบุตัวตนหรือคีย์สาธารณะของ Bob วิธีนี้จะป้องกันการนำลายเซ็นกลับมาใช้ใหม่โดยบุคคลอื่นที่ต้องการอ้างสิทธิ์ในความรู้ของ $s$
cn flag
ฉันไม่รู้ว่าฉันเข้าใจอย่างถ่องแท้ถึงวิธีที่คุณบอกว่าคุณสามารถหลีกเลี่ยงการใช้หลักฐานซ้ำ อย่างไรก็ตาม ฉันกำลังพยายามย่อขนาดของหลักฐานฉบับสมบูรณ์ให้เล็กที่สุดด้วย แนวคิดคือการมีสิ่งนี้บนบล็อกเชน ดังนั้นการตรวจสอบหลักฐาน zkSNARK ที่ถูกต้องจึงมีราคาถูกกว่าการพิสูจน์ + ลายเซ็น zkSNARK ฉันไม่รังเกียจที่จะเพิ่มความซับซ้อนให้กับฟังก์ชัน zkSNARK ที่กำลังพิสูจน์อยู่
knaccc avatar
es flag
ประเภทของหลักฐานที่คุณระบุไว้ในคำถามเดิมของคุณจะผูกหลักฐานกับรหัสสาธารณะของ Bob อย่างไรก็ตาม สำหรับวิธีการที่กล่าวถึงในความคิดเห็นที่ฉันเพิ่งทำ ลายเซ็นปกติจะไม่ผูกมัดหลักฐานกับ Bob ในฐานะผู้เขียน เว้นแต่คุณจะใส่ข้อมูลประจำตัวของ Bob เป็นส่วนหนึ่งของข้อความที่มีการเซ็นด้วยดังนั้นฉันกำลังบอกว่าคุณสามารถหลีกเลี่ยงการสร้างกลไกลายเซ็นที่กำหนดเองประเภทใดก็ได้ และใช้ลายเซ็นปกติสำหรับคีย์สาธารณะ S แทน และรวมข้อมูลระบุตัวตนของ Bob ไว้ในข้อความเพื่อป้องกันไม่ให้ผู้อื่นคัดลอกและวางลายเซ็นเป็นหลักฐาน พวกเขายังรู้ $s$
cn flag
ฉันไม่เข้าใจวิธีที่คุณเสนอให้ Bob พิสูจน์ความรู้เรื่อง $s$ ด้วยวิธีผูกมัดกับรหัสสาธารณะของเขาเพียงแค่ลงชื่อบางอย่างที่เกี่ยวข้องกับ $S$ ฉันเข้าใจว่าแบบแผน เช่น ลายเซ็น Schnorr ผูกลายเซ็นกับ Bob ในกรณีนี้ เนื่องจากโปรโตคอลการพิสูจน์และการตรวจสอบใช้ H(m|B) อย่างไรก็ตามในกรณีนี้ Bob เซ็นอะไรกันแน่เพื่อแสดงว่าเขารู้ความลับ? ขออภัยหากนี่เป็นเรื่องพื้นฐานและฉันพลาดไป
knaccc avatar
es flag
สมมติว่า Bob เซ็นข้อความเปล่าโดยใช้ความรู้เกี่ยวกับ $s$ อีฟสามารถคัดลอกและวางลายเซ็นนั้นและอ้างว่าเธอเป็นผู้แสดงความรู้เกี่ยวกับ $s$ แต่ถ้าบ๊อบเซ็นข้อความว่า "นี่คือบ๊อบ คีย์สาธารณะของฉันคือ 01234...." โดยใช้ไพรเวตคีย์ $s$ อีฟก็จะไม่สามารถอ้างได้ว่าคีย์นั้นมาจากเธอ สาระสำคัญของลายเซ็นคือข้อความไม่สามารถเปลี่ยนแปลงได้
cn flag
อ้อเข้าใจแล้ว. ฉันเข้าใจ ฉันคิดไม่ออกว่าเนื้อหาข้อความจะเซ็นอย่างไรซึ่งแสดงความรู้เกี่ยวกับ $s$ โดยไม่มีข้อมูลรั่วไหล
knaccc avatar
es flag
ถูกต้อง คุณไม่สามารถใส่ $s$ ในข้อความได้ แต่คุณสร้างลายเซ็นปกติและเซ็นชื่อราวกับว่าคุณเป็นบุคคลที่มีรหัสสาธารณะคือ $S$ และนั่นพิสูจน์ได้ว่ามีความรู้เรื่อง $s$ แต่ภายในข้อความ คุณระบุตัวตนที่แท้จริงของคุณ $B$
cn flag
สุดยอด ตอนนี้ฉันเข้าใจแล้ว! ใช้ลายเซ็น Schnorr โดยมี S เป็นผู้ลงนาม (Bob รู้ $s$) และ B เป็นข้อความ (ไม่ใช้ซ้ำ ผูกหลักฐานกับ Bob) สะอาด! ขอบคุณ
Score:0
ธง es

พิจารณารูปแบบที่เทียบเท่ากับลายเซ็น Schnorr ปกติที่ลงนามในข้อความ $m$. ฉันกำลังสันนิษฐาน $s$ เป็นความลับที่มีเอนโทรปีสูงพอสมควร และด้วยเหตุนี้ $S$ ไม่สามารถบังคับเดรัจฉานได้

ลายเซ็นจะเป็นคู่ $(B=bG,\ p=c\cdot s-b)$. มันจะได้รับการยืนยันโดยการตรวจสอบที่ $B\overset{?}{=}cS-pG$, ที่ไหน $c = H(B \mathbin\| ม.)$.

คุณกำลังลบความท้าทาย $ค$ดังนั้น ข้อเสียอย่างแรกคือคุณไม่สามารถเซ็นชื่อข้อความได้อีกต่อไป คุณสามารถพิสูจน์ได้ว่าคุณรู้เท่านั้น $s$.

คุณจึงมีคู่ $(B=bG,\ p=s-b)$และการตรวจสอบคือ $pG\overset{?}{=}S-B$.

ความท้าทายยังเป็นส่วนหนึ่งของการวิเคราะห์พฤติกรรมแบบ Fiat-Shamir ที่ขัดขวาง $B$ จากการคำนวน หลังจาก ความท้าทาย $ค$ ถูกเลือก. ดังนั้นจึงมีปัญหาหาก Bob สามารถประกาศรหัสสาธารณะของเขาได้ $B$ หลังจาก $S$ ได้รับการประกาศ Bob สามารถสุ่มเลือกได้ $p$ ค่ากำหนด $B=S-pG$และอ้างว่ารหัสสาธารณะของเขาคือ $B$. สามารถแก้ไขได้สองวิธี: 1. Bob ต้องประกาศ $B$ ก่อนหน้า $S$ กำลังประกาศ 2. Bob จำเป็นต้องให้ความรู้ในการพิสูจน์ลายเซ็น $ข$ ดังนั้น $B\overset{?}{=}bG$.

สมมติว่ามีการประกาศรหัสสาธารณะของ Bob ก่อน $S$ ได้รับการประกาศ ดังนั้นคุณจึงมีวิธีการที่ถูกต้องในการพิสูจน์ความรู้ $s$. อย่างที่คุณบอก อลิซสามารถเรียนรู้คีย์ส่วนตัวของบ็อบได้เล็กน้อย $ข$. จึงไม่เป็นไปตามนิยามของความรู้ที่เป็นศูนย์ ซึ่งต้อง "ไม่เปิดเผยข้อมูลเองหรือ ข้อมูลเพิ่มเติมใดๆ".

การก่อสร้างของคุณจึงคล้ายกับคำจำกัดความของ "ลายเซ็นของอะแดปเตอร์" เนื่องจาก "โครงร่างลายเซ็นของอะแดปเตอร์สามารถตรวจสอบข้อความได้ แต่ในขณะเดียวกันก็เปิดเผยความลับไปยังบางฝ่าย" โครงร่างของคุณไม่ได้เซ็นข้อความ แต่จะพิสูจน์ว่ารู้ $s$ ในขณะที่ตรวจสอบการรั่วไหล $ข$ ถึงอลิซ

โปรดทราบว่าอาจมีปัญหากับโครงร่างของคุณที่มีความลับที่สอง $s'$และด้วยเหตุผลบางอย่าง $s'-s$ กลายเป็นที่รู้จัก

cn flag
มันละเอียดมาก ขอบคุณ! 1) ในวรรค 2 ลายเซ็นควรเป็น (B, p=c.s-b) แทนหรือไม่ อย่างไรก็ตาม ในโครงการของฉัน ฉันไม่ได้รวมปัจจัยนี้ไว้ เพราะฉันสนใจเพียงการพิสูจน์ความรู้เท่านั้น ไม่ได้สนใจในการเซ็นชื่อ 2) ชอบเวกเตอร์การโจมตีที่สองที่มีการประกาศของ B หลังจาก Sในกรณีของฉัน นั่นจะไม่เป็นปัญหาเพราะผู้เล่นโต้ตอบในลักษณะที่จำเป็นต้องรู้คีย์ส่วนตัว แต่ฉันพบว่ามันฉลาดจริงๆ! 3) ขอบคุณสำหรับข้อมูลลายเซ็นของอแดปเตอร์ ฉันจะลองดูอย่างแน่นอน!
knaccc avatar
es flag
@GastonMaffei อ๊ะ ใช่ ขอบคุณ ฉันลืม $c$ ฉันได้แก้ไขคำตอบแล้ว

โพสต์คำตอบ

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