ลองนึกภาพสถานการณ์ต่อไปนี้:
ในสกุลเงินดิจิทัลที่กำหนด ความเป็นส่วนตัวควรสูงที่สุดเท่าที่จะเป็นไปได้
เพื่อจุดประสงค์นี้ บัญชีใหม่พร้อมที่อยู่ใหม่จะถูกสร้างขึ้นสำหรับทุกธุรกรรมที่เข้ามา (ที่อยู่คือคีย์สาธารณะของคู่คีย์ส่วนตัว/สาธารณะ) อย่างไรก็ตาม ผู้ใช้ไม่ได้ออนไลน์อยู่เสมอเพื่อสร้างบัญชีใหม่พร้อมที่อยู่ใหม่ทันทีที่มีคนต้องการส่งเงินให้ ดังนั้น ผู้ใช้ทุกคนควรสามารถสร้างบัญชีใหม่ด้วยที่อยู่ใหม่สำหรับผู้ใช้รายอื่น เมื่อต้องการส่งเงินให้ผู้อื่น แน่นอนว่ามีเพียงผู้รับเท่านั้นที่สามารถใช้จ่ายเงินที่โอนไปยังบัญชีที่คนอื่นสร้างขึ้นสำหรับเขา
ทั้งหมดนี้ควรจะขึ้นอยู่กับ อี.ซี.ซีคือส่วนขยายของ ECDSA อัลกอริทึมเพื่อที่จะพูด
แต่ตามที่อธิบายไว้ในตัวอย่าง cryptocurrency เฉพาะบุคคลที่สร้างรหัสสาธารณะเท่านั้นที่ได้รับอนุญาตให้ลงนามในข้อความสำหรับรหัสสาธารณะนี้หรือถอดรหัสข้อมูลที่เข้ารหัสด้วยรหัสสาธารณะนี้
เนื่องจากการรักษาความปลอดภัยของอัลกอริธึมการเข้ารหัสที่ใช้นั้นมีความสำคัญอย่างยิ่งต่อสกุลเงินดิจิทัล โดย กศน และ เอสซีจี จะใช้พารามิเตอร์เส้นโค้งที่ทำไว้ล่วงหน้าและเป็นมาตรฐานซึ่งทราบกันดีว่าปลอดภัยและมีประสิทธิภาพ
การเปลี่ยนแปลงทางเทคนิคเท่านั้นที่ควรพิจารณามีดังนี้:
บันทึก: เนื่องจากที่อยู่ของบัญชีจะเป็นคีย์สาธารณะที่สอดคล้องกันของคู่คีย์ คำว่า "ที่อยู่" และ "คีย์สาธารณะ" จะใช้แทนกันได้ในสิ่งต่อไปนี้
พารามิเตอร์ จากอัลกอริทึม ECDSA:
- $d$ = รหัสส่วนตัวที่สร้างขึ้นแบบสุ่ม
- $G$ = จุดฐานของเส้นโค้งวงรี
การเปลี่ยนแปลง:
- ช่วงเวลาที่ใช้ได้สำหรับคีย์ส่วนตัวจะลดลงจาก $[1, n - 1]$ ถึง $[1, \frac{n}{2} - 1]$
- เช่นเดียวกับการสร้างคีย์สาธารณะ ประเด็น $พี$ คำนวณได้ดังนี้ $P = d \คูณ G$. ประเด็นนี้ $พี$ สร้างรหัสการสร้างที่อยู่ที่ได้รับมอบสิทธิ์ (DAG Key)
- ในการสร้างที่อยู่ (คีย์สาธารณะ) สำหรับบุคคลอื่น คีย์แบบสุ่มที่เรียกว่าที่อยู่แบบสุ่ม (คีย์ AR) ($i$) ด้วยช่วงเวลาเดียวกันกับของคีย์ส่วนตัว ($[1, \frac{n}{2} - 1]$) จะต้องสร้างขึ้น
- หากต้องการสร้างที่อยู่สำหรับบุคคลที่ต้องการ ให้กดแป้น DAG ($พี$) ของบุคคลนี้เพิ่มด้วยการคูณคีย์ AR ($i$) และจุดฐาน ($G$): $Q = P + i \คูณ G$. เนื่องจาก $พี$ เป็น $d \คูณ G$ต้องถือสิ่งต่อไปนี้: $Q = P + i \times G = (d + i) \times G$. ประเด็นนี้ $คิว$ สร้างที่อยู่ใหม่สำหรับผู้ที่ใช้คีย์ DAG ในการคำนวณ
ตัวอย่าง:
- อลิซสร้างคีย์ส่วนตัวที่สร้างขึ้นแบบสุ่ม ($d$).
- อลิซใช้คีย์ส่วนตัวของเธอเพื่อสร้างคีย์ DAG ($พี$)
- อลิซทำให้รหัส DAG เป็นแบบสาธารณะ
- Bob ต้องการสร้างที่อยู่ (คีย์สาธารณะ) สำหรับอลิซและรับคีย์ DAG จากอลิซเพื่อดำเนินการดังกล่าว
- Bob สร้างคีย์ AR ที่สร้างขึ้นแบบสุ่ม
- Bob สร้างที่อยู่ใหม่สำหรับ Alice โดยใช้คีย์ DAG ของ Alice และคีย์ AR ที่สร้างขึ้นในขั้นตอนที่แล้ว
- Bob ส่งจำนวนเงินไปยังที่อยู่ที่สร้างขึ้นใหม่
- บ็อบส่งคีย์ AR ให้อลิซ
- เฉพาะอลิซเท่านั้นที่สามารถส่งเงินจากที่อยู่นี้ได้ เพราะเธอเป็นคนเดียวที่สามารถสร้างลายเซ็นที่ถูกต้องสำหรับที่อยู่ที่สร้างขึ้นใหม่ (คีย์สาธารณะ) ในการทำเช่นนี้ เธอเพียงแค่ต้องคำนวณคีย์ส่วนตัวของที่อยู่นี้ดังนี้: $d + i$ (นอกเหนือจากคีย์ส่วนตัวของเธอ $d$ และปุ่ม AR $i$ สร้างโดยบ๊อบ)
คำถาม:
เป็นไปได้ในทางทฤษฎีหรือไม่ที่จะมอบหมายการสร้างรหัสสาธารณะ
ถ้าเป็นเช่นนั้น การเปลี่ยนแปลงอัลกอริทึม ECDSA มาตรฐานดังกล่าวจะเป็นไปได้หรือไม่ กล่าวอีกนัยหนึ่งคือการสร้างกุญแจสาธารณะสำหรับบุคคลอื่นโดยไม่ทราบหรือเปิดเผยรหัสส่วนตัวให้กับกุญแจสาธารณะนั้น?
หรือมีแนวทางที่ดีกว่าในการแก้ปัญหานี้หรือไม่?