Score:1

คีย์อิมเมจเชื่อมโยงกับลายเซ็นริงอย่างไร

ธง cn

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

สิ่งที่ฉันไม่ได้รับคือวิธีสร้างและตรวจสอบคีย์อิมเมจนี้ ซึ่งได้มาจากคีย์ส่วนตัวและแฮชในลักษณะที่ไม่สามารถย้อนกลับทางวิศวกรรมได้ แต่ฉันจะรู้ได้อย่างไรว่ามีการใช้คีย์ส่วนตัวสำหรับคีย์อิมเมจ ฉันหมายความว่าฉันสามารถใช้ keyImage แบบสุ่มเพื่อให้มีเอกลักษณ์

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

baro77 avatar
gd flag
คำถามนี้ดูเหมือนจะเหมาะสมกว่าสำหรับ monero.stackexchange.com imho ... และแท็ก "hash-signature" ดูเหมือนจะผิด
fgrieu avatar
ng flag
"keyImage" ไม่ใช่คำเข้ารหัสมาตรฐาน ดังนั้นคำถามควรระบุโดยอ้างอิงถึงความหมายของ "keyImage" จากมุมมองการเข้ารหัส หากคำถามเฉพาะสำหรับ Monero ฉันสามารถย้ายข้อมูลไปที่นั่นได้ (พวกเขามี [คำถามที่เกี่ยวข้อง](https://monero.stackexchange.com/q/2883) อย่างน้อยหนึ่งข้อ) อย่างไรก็ตาม หากคำถามมุ่งเน้นไปที่ลายเซ็นของแหวนและ "keyImage" อะไรก็ตาม (แทนที่จะเป็นเฉพาะ Monero) คุณสามารถเก็บไว้ที่นี่ได้หากมีการชี้แจง
baro77 avatar
gd flag
ฉันเห็นด้วยอย่างยิ่ง @fgrieu ฉันสันนิษฐานว่า OP กำลังคิดที่จะทำสิ่งที่เกี่ยวข้องกับ cryptocurrency เนื่องจากอ้างถึง "double pay" ในคำถาม ยังไงก็ดีกว่าให้โอกาสเขาได้ชี้แจงอย่างชัดเจน
user3776738 avatar
cn flag
อา ตกลง มันไม่ได้เจาะจง Monero อย่างที่ฉันขอ Shadowcash หรือให้เจาะจงกว่านั้น ฉันไม่รู้ว่าลายเซ็น Monero Ring ดั้งเดิมแตกต่างจาก Shadowcash ไหม ไม่ต้องพูดถึงว่าตอนนี้พวกเขาใช้ RingCT แต่ฉันเดาว่าหลักการอาจเหมือนกัน ใช่แล้ว คุณ (@fgrieu) สามารถย้ายไปที่ Monero ได้ หากคุณเชื่อว่าชุมชนของพวกเขามีคำตอบที่ดีกว่า ขอบคุณจนถึงตอนนี้
fgrieu avatar
ng flag
[ที่นี่](https://monerodocs.org/cryptography/asymmetric/key-image/) เป็นความพยายามในการกำหนดคีย์อิมเมจของ Monero ด้วยการเข้ารหัส ฉันกำลังชะลอการย้ายข้อมูล เพราะเห็นได้ชัดว่ามีคำถามด้านการเข้ารหัส ECC และบางทีมันอาจจะได้รับคำตอบที่ดีกว่าที่นี่ ฉันยังคิดว่าคำถามควรได้รับการปรับปรุงโดยเพิ่มลิงก์ไปยังคำจำกัดความของคำศัพท์ที่ใช้
baro77 avatar
gd flag
@user3776738 ได้เลย! ดังนั้นเพียงแค่แสดงความคิดเห็นเพราะฉันไม่รู้การใช้งาน Shadowcash: ใน Monero คุณสงสัย "แต่ฉันจะรู้ได้อย่างไรว่ามีการใช้คีย์ส่วนตัวสำหรับคีย์อิมเมจจริงๆ" ได้รับการแก้ไขด้วยโครงสร้างที่การตรวจสอบแหวนสำเร็จก็ต่อเมื่อ keyImage ถูกสร้างขึ้นจาก privkey.... ฉันไม่รู้จะอธิบายด้วยคำพูดอย่างไร แต่บางทีนี่อาจเป็นประโยชน์กับคุณ: https://www.getmonero .org/library/RingsCheatsheet20210301.pdf (ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน cheatsheet) ป.ล. RingCT ไม่สำคัญ
user3776738 avatar
cn flag
@fgrieu: "รูปกุญแจ I เป็นฟังก์ชันทางเดียวของรหัสส่วนตัว x " ความคิดของฉันคือ: ดังนั้นฉันจึงต้องตรวจสอบอิมเมจหลักนี้ มิฉะนั้นอาจเป็นแบบสุ่ม แต่มันเป็นฟังก์ชันแฮชทางเดียว หากต้องการสร้างฟังก์ชันแฮชทางเดียว ฉันต้องการข้อมูลทั้งหมดที่ใช้สำหรับการสร้าง เมื่อฉันเข้าถึงข้อมูลทั้งหมดได้ ฉันรู้รหัสส่วนตัว แต่ฉันไม่ควรรู้รหัสส่วนตัว นั่นคือฉันติดอยู่
user3776738 avatar
cn flag
@baro77 ฉันจะพยายามเข้าใจมัน แต่ดูเหมือนภาษาจีนสำหรับฉัน
fgrieu avatar
ng flag
@baro77 : แล้วการเขียนคำตอบโดยเริ่มจากความคิดเห็นของคุณล่ะ?
baro77 avatar
gd flag
@fgrieu ตกลง ฉันจะลอง... ขอเวลาหน่อย เพราะช่วงนี้ฉันยุ่งทั้งวัน และหัวข้อก็ค่อนข้างอึดอัดที่จะสรุป
Score:2
ธง gd

หวังว่าจะตอบสนองคำเชิญของ @fgrieu ในความคิดเห็น ฉันลองคำตอบที่มาจากการใช้งานของ Monero ที่มาของคำเหล่านี้คือ cheatsheet ที่ฉันเขียน https://getmonero.org/library/RingsCheatsheet20210301.pdf ขณะเรียน https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf

ฉันคิดว่าสิ่งที่ถูกต้องคือการเริ่มจากลายเซ็น Schnorr ที่ไม่โต้ตอบ (ในรสชาติของ Fiat-Shamir) สำหรับปุ่มเหนือเส้นโค้งวงรี มาสรุปกันอย่างรวดเร็ว

สมมติว่า $(x,X)$ คือคู่คีย์ส่วนตัว/สาธารณะ โดยที่ $X\triangleq xG$ กับ $G$ จุดกำเนิดของ EC; $tx$ เป็นธุรกรรม/ข้อความ/สิ่งใดก็ตามที่เราต้องเซ็น การลงนาม $tx$ กับ $x$ หมายถึงสามารถสร้างคู่ $(ค,ร)$ ดังนั้น:

$H(tx, rG + cX)=c$

ที่ไหน $H$ เป็นแฮช (ไม่ว่าที่นี่อันใด) และ $ค$ และ $r$ เรียกว่า "ความท้าทาย" และ "การตอบสนอง" โดยมีเงื่อนไขมาจากสคีมาแบบโต้ตอบ $ค$ ได้มาจากการสุ่มแบบลับเฉพาะ $\alpha$ มีเพียงผู้ลงนามเท่านั้นที่ทราบ และไม่เคยใช้ซ้ำในสองลายเซ็น และความเท่าเทียมกันข้างต้นเทียบเท่ากับ:

$rG + cX = \alpha G$

(btw โดยการแทนที่คุณจะได้รับวิธีการ $ค$ ถูกกำหนด ;))

ดังนั้นเมื่อมองจากมุมสูง เราสามารถพูดได้ว่าการตรวจสอบ $tx$ ลายเซ็นโดย $x$ เป็นฟังก์ชันของสิ่งที่ลงนาม คีย์สาธารณะ ความท้าทาย และการตอบสนอง:

$f(tx, X, r, c)$

Ring signatures นั้นเกี่ยวกับการค้นหารสชาติของ schema นี้ด้วยตัวล่อ ในขณะที่ยังคงรักษาผู้ลงนาม ACTUAL ไว้เพียงตัวเดียว (จากมุมมองทางเทคนิค: ต้องการหลายตัว $X_i$ - สมมติว่า $n$- ในการตรวจสอบ algo but single $x$ ในการลงลายมือชื่อด้วย); และทั้งหมดไม่มีการประสานงานระหว่างเจ้าของกุญแจที่เกี่ยวข้อง

มีความท้าทายและคำตอบสำหรับแต่ละคน $X_i$ดังนั้นเราจึงมี $c_i$ และ $r_i$อย่างไรก็ตามสิ่งต่าง ๆ จัด ดังนั้นจาก $c_i$ เราสามารถคำนวณได้ $c_{i+1}$, กับ "ล้น" เมื่อ $i=n$ (นี่คือ "แหวน") ดังนั้น:

$H(tx, r_{i}G + c_{i}X_{i})=c_{i+1}$ กับ $1 \le ฉัน \le n-1$

$H(tx, r_{n}G + c_{n}X_{n})=c_1$ กับ $i=n$

ให้เราสามารถถอยหลังจาก $c_n$ ถึง $c_1$ เงื่อนไขข้างต้นนำไปสู่ฟังก์ชั่นการตรวจสอบลายเซ็น:

$f(tx, X_i, r_i, c_1)$

แต่ "เวทมนตร์" มาจากไหน? เป็นอย่างไร การจัดเตรียม ทำให้มี $c_i$ สร้างห่วงโซ่แบบปิดซึ่งค่าความท้าทายหนึ่งค่าคุณสามารถคำนวณค่าอื่น ๆ ทั้งหมดได้ (โปรดทราบว่าเราได้เลือกแล้ว $c_1$ เป็นคนพิเศษ แต่จริงๆ แล้วไม่มีอะไรพิเศษเลย)? ต้องขอบคุณข้อเท็จจริงเหล่านี้:

  1. ถ้าเราระบุว่าเป็น $c_\pi$ ความท้าทายที่เกี่ยวข้องกับผู้ลงนามจริง $c_{\pi+1}$ คำนวณจากความลับแบบสุ่ม $\alpha$ รู้จักเฉพาะผู้ลงนามจริงเท่านั้น (จำอะไรได้บ้าง ;) );
  2. อื่น ๆ ทั้งหมด $c_i$ คำนวณด้วยสูตรลูกโซ่ด้านบน
  3. ทั้งหมด $r_i$ เป็นเพียงตัวเลขสุ่ม ยกเว้น $r_\pi$ ซึ่งเลือกที่จะปล่อยให้ $c_{\pi+1}$ ให้เคารพสูตรลูกโซ่ด้วย (แม้จะมาจาก $\alpha$)

และในที่สุดก็มาถึงคีย์อิมเมจ $X^*$! ส่วนหนึ่งจากการลงโฆษณาในการทำธุรกรรมเพื่อป้องกันการใช้จ่ายซ้ำซ้อนก็เป็นส่วนหนึ่ง $c_i$ แคลคูลัสและอีกครั้ง $\alpha$ใช้เคล็ดลับสูตร / chain: และจะเก็บเฉพาะเมื่อ Key Image $X^*$ ได้มาด้วยวิธีเฉพาะเจาะจงมาก ฟังก์ชันของคีย์ส่วนตัวและคีย์สาธารณะของผู้ลงนาม ACTUAL

นั่นเป็นเหตุผลที่คุณไม่สามารถเลือกอันที่ยังไม่ได้ใช้งานแบบสุ่มได้!

ฉันเข้าใจว่านี่เป็นเพียงบรรทัดหลักในการให้เหตุผล ไม่มีรายละเอียดมากมาย แต่ฉันหวังว่าคุณจะสามารถหาได้ใน cheatsheet ด้วยความช่วยเหลือจากคำเสริมเหล่านี้ (ฉันเดาว่าสำหรับความต้องการของคุณ คุณสามารถสนใจเฉพาะ "ไม่โต้ตอบ (Fiat -Shamir) Schnorr, "SAG" และ "bLSAG")

user3776738 avatar
cn flag
ฉันยอมรับคำตอบของคุณ เพราะมันดูละเอียดมาก และสักวันฉันอาจจะเข้าใจ แม้ว่าฉันจะไม่เข้าใจจริงๆก็ตาม ฉันจะต้องอ่านซ้ำเป็นสิบๆ ครั้ง และทำการค้นคว้าเกี่ยวกับความรู้ทางคณิตศาสตร์ที่ฉันยังขาดอยู่ บางทีฉันอาจจะถามคำถามใหม่ตามคำตอบของคุณสักวันหนึ่ง ถ้าฉันไม่เข้าใจ ขอบคุณจนถึงตอนนี้
baro77 avatar
gd flag
หากคุณกำลังมองหาการแนะนำหัวข้ออย่างค่อยเป็นค่อยไป คุณสามารถอ่านบทที่ 2 ของ https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf (มันยังห่างไกลจากความสมบูรณ์ของการเข้ารหัส หนังสืออ้างอิง แต่ฉันคิดว่ามันเพียงพอสำหรับปัญหาของคุณ); บทที่ 3 ก็น่าสนใจเช่นกัน แต่อิมโฮ มันง่ายที่จะหลงทางข้างใน ดังนั้นสูตรอาจเป็น: อ่านบทที่ 2 เท่าที่คุณต้องการ จากนั้นศึกษาคอลัมน์ด้านซ้าย วงแหวน SAG และ bLSAG และบันทึกย่อในคอลัมน์ด้านขวาของ cheatsheet ของฉัน โดยใช้คำพูดของฉันที่นี่ใน SE เป็นไกด์นำเที่ยว ขอให้คุณทำงานได้ดี!

โพสต์คำตอบ

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