โพสต์นี้เผยแพร่ครั้งแรกเมื่อ กลาง.
เราสาธิตวิธีการสร้างลายเซ็นที่ถูกต้อง ไม่มี รู้จักคีย์ส่วนตัวโดยใช้อัลกอริทึมลายเซ็นดิจิทัล Elliptic Curve (ECDSA)
การลงนาม ECDSA
อลิซจึงมีรหัสส่วนตัว (d) และกุญแจสาธารณะ (ถาม = ดีจี). เธอเซ็นข้อความ (m) โดยมีขั้นตอนดังต่อไปนี้:
- แฮชข้อความ: ชั่วโมง = แฮช(ม.).
- สร้างตัวเลขสุ่ม k และคำนวณ R = กิโลกรัม. หา Rพิกัด x ของ r.
- คำนวณ s = (h + ถ)/k.
ลายเซ็นเป็นคู่ (ร ส). ทั้งสอง r และ s เป็นเพียงตัวเลขสเกลาร์
ลงชื่อโดยไม่ทราบรหัสส่วนตัว
ตามอัตภาพ อลิซจะต้องรู้รหัสส่วนตัวเพื่อสร้างลายเซ็นที่ถูกต้องกับรหัสสาธารณะ น่าสังเกตที่สามารถสร้างลายเซ็นที่ถูกต้องได้โดยไม่ต้องรู้รหัสส่วนตัวดังนี้:
- สร้างตัวเลขสุ่ม r. หากไม่มีสาระ R บนทางโค้งด้วย r เนื่องจากพิกัด x ของมัน ก็ลองค่าอื่นของ r.
- สร้างตัวเลขสุ่ม s.
- แก้หากุญแจสาธารณะเป็น Q = (เอสอาร์ – เอชจี)/อาร์.
(ร ส) เป็นลายเซ็นที่ถูกต้องสำหรับคีย์สาธารณะ Q และข้อความ m เพื่อดูว่าทำไมเราสามารถหามาได้ Q ดังต่อไปนี้:
s = (h + ถ)/k
sk = h + ถ
skG = เอชจี + rdG
เอสอาร์ = เอชจี + อาร์คิว
Q = (เอสอาร์ – เอชจี)/อาร์
เราเรียก Q a keyless พับลิกคีย์ เนื่องจากไม่ได้มาจากคีย์ส่วนตัวที่รู้จัก ในสัญญา ให้เราเรียกกุญแจสาธารณะ คีย์ หากมาจากคีย์ส่วนตัวที่รู้จัก ดังที่ทำโดยทั่วไป
โปรดทราบว่าลายเซ็นจะถูกสร้างขึ้นก่อน ก่อน ได้รับคีย์สาธารณะซึ่งตรงกันข้ามกับการลงนาม ECDSA ทั่วไป
ผลกระทบ
หากมีการสร้างคีย์สาธารณะโดยไม่ต้องใช้คีย์ เฉพาะบุคคลที่สร้างคีย์เท่านั้นที่สามารถสร้างลายเซ็นที่ถูกต้องได้ พร้อมลายเซ็น และข้อความที่มีแฮช h. ลายเซ็นและข้อความร่วมกันทำหน้าที่เป็นคีย์ส่วนตัวที่นี่ ซึ่งมีอยู่แต่เป็น ไม่ทราบ. หมายเหตุแฮชข้อความ h ถูกนำมาใช้และมุ่งมั่นในการคำนวณ Qหมายความว่าลายเซ็นคือ ใช้ได้เฉพาะกับมแต่ไม่ใช่สำหรับข้อความอื่นใด ลายเซ็นและข้อความจำเป็นสำหรับลายเซ็นเพื่อตรวจสอบกับกุญแจสาธารณะ
กุญแจแบบไม่ใช้กุญแจและแบบใช้กุญแจ
รู้จักคีย์ส่วนตัวของคีย์สาธารณะแบบคีย์ ในขณะที่ไม่ทราบคีย์แบบไม่มีคีย์ ในสถานการณ์ที่มีการใส่คีย์ กุญแจสาธารณะจะเป็นที่รู้จักก่อนลายเซ็น ในขณะที่จะตรงกันข้ามกับกุญแจแบบไร้กุญแจ
โดยดูจากกุญแจสาธารณะ คนเดียวไม่สามารถระบุได้ว่าเป็นแบบไม่ใช้กุญแจหรือแบบใช้กุญแจ
แม้ว่าจะมีการเปิดเผยลายเซ็นหนึ่งรายการก็ตาม หนึ่ง ข้อความ เป็นไปไม่ได้ที่จะตัดสินว่าคีย์สาธารณะเป็นแบบไม่มีคีย์หรือไม่ เนื่องจากลายเซ็นอาจมาจากคีย์ส่วนตัวหรือสร้างขึ้นล่วงหน้า
อย่างไรก็ตาม หาก Alice สามารถลงนามกับข้อความที่ Bob เลือกได้ ก็มีแนวโน้มว่าเธอรู้รหัสส่วนตัวอย่างท่วมท้น เนื่องจากเธอไม่ทราบข้อความที่ส่งในรหัสสาธารณะล่วงหน้า และไม่สามารถสร้างลายเซ็นที่ถูกต้องได้
หากมีลายเซ็นสำหรับข้อความสองข้อความที่แตกต่างกัน แม้ว่าอลิซจะเลือกทั้งสองข้อความ เราก็มั่นใจได้ว่าคีย์สาธารณะจะถูกคีย์ไว้
ใช้ใน Bitcoin
มันถูกกล่าวหาว่ากุญแจสาธารณะ (แสดงว่าเป็น ถาม₀) ในธุรกรรม Genesis Coinbase ของ Bitcoin เป็นแบบไร้กุญแจ หากเป็นเช่นนั้น ใครก็ตามที่มีลายเซ็นสามารถเซ็นชื่อหนึ่งข้อความ ซึ่งเป็นข้อความที่ใช้ในการคำนวณ ถาม₀. เขาไม่สามารถลงนามในข้อความอื่นใดได้
อย่างไรก็ตาม ลายเซ็นนั้นใช้ได้เฉพาะนอกเครือข่ายเท่านั้น แต่ไม่สามารถใช้บนเครือข่ายได้. เหรียญที่ส่งไปยัง Q₀ นั้นไม่สามารถใช้กับลายเซ็นดังกล่าวได้ รวมถึงเหรียญที่ส่งหลังจากบล็อก Genesis ด้วย ดูว่าทำไมเราต้องดูว่าข้อความอะไร m ลงนามเมื่อสร้างธุรกรรม โดยทั่วไปจะรวมธุรกรรมการใช้จ่ายในปัจจุบันบวกกับผลผลิตที่ใช้ไป ผลลัพธ์ประกอบด้วย ถาม₀ ในส่วนของสคริปต์ ความหมาย m ขึ้นอยู่กับ ถาม₀. อย่างไรก็ตาม ถาม₀ ขึ้นอยู่กับตัวมันเอง h, mแฮชของ การพึ่งพาแบบวงกลมนี้ (เพื่อรับ ถาม₀, คุณต้องการ m อันดับแรก; แต่จะได้รับ m, คุณต้องการ ถาม₀ ขั้นแรก) คล้ายกับลายเซ็นที่ไม่สามารถเซ็นชื่อใน Bitcoin ได้ ซึ่งจะป้องกันการสร้าง ถาม₀.
โปรดทราบว่าสิ่งนี้ใช้ได้กับกุญแจสาธารณะใดๆ ที่เป็น Bitcoin ไม่ใช่แค่เท่านั้น ถาม₀.
การดำเนินงาน
ด้านล่างนี้เป็นตัวอย่างการทำงานแบบเต็มที่สร้างลายเซ็นโดยไม่ทราบรหัสส่วนตัว
ทุกคนสามารถเรียกใช้และตรวจสอบได้โดยอิสระ การทดสอบการทำงานแสดงอยู่ด้านล่าง
อ้างอิง
- Blake, IF, Seroussi, G. และ Smart, NP (บรรณาธิการ) (2005) ความก้าวหน้าในการเข้ารหัส Elliptic Curve. เคมบริดจ์: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ (ชุดบันทึกการบรรยายของสมาคมคณิตศาสตร์ลอนดอน)
- เครดิตกราฟ: Buchanan, William J (2024) อัลกอริธึมลายเซ็นดิจิทัล Elliptic Curve (ECDSA) Asecuritysite.com. https://asecuritysite.com/ecdsa/ecdsa2
***
[1] เอาต์พุต Coinbase ในบล็อก Genesis ไม่สามารถใช้งานได้แม้ว่าจะคีย์สาธารณะในบล็อกนั้นก็ตาม เนื่องจากไม่ได้รวมอยู่ในชุด UTXO https://gist.github.com/msinkec/5eaf5aa97ed0f5e8d66e7e32fd8b1a0a
ดู: ข้อมูลประจำตัวดิจิทัล สินทรัพย์ดิจิทัลเปิดใช้งาน Web3
ใหม่สำหรับ blockchain? ตรวจสอบส่วน Blockchain สำหรับผู้เริ่มต้นของ CoinGeek คู่มือทรัพยากรขั้นสูงสุดเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเทคโนโลยี blockchain
ที่มา: https://coingeek.com/sign-without-knowing-the-private-key-in-ecdsa/