TL; DR: กระบวนการตรวจสอบลายเซ็นใน ECDSA แตกต่างจากขั้นตอนใน RSA อย่างมาก คำอธิบายของคำถามเกี่ยวกับรูปแบบลายเซ็นเหล่านี้ไม่ถูกต้องสำหรับ ECDSA ซึ่งเป็นค่าประมาณสำหรับ RSA
อลิซผู้ถือคีย์ส่วนตัวสามารถเข้ารหัสข้อความเป็นลายเซ็นได้
นั่นเป็นคำศัพท์ที่ไม่ถูกต้อง อลิซผู้ถือกุญแจส่วนตัวสามารถทำได้ เข้าสู่ระบบ ข้อความ หรือ แปลง ข้อความ. เธอไม่ได้ เข้ารหัสเนื่องจากการเข้ารหัสมีเป้าหมายเพื่อทำให้ข้อความไม่สามารถเข้าใจได้สำหรับฝ่ายตรงข้าม แต่ใน RSA การเปลี่ยนแปลง $m\mapsto s=m^d\bmod n$ อลิซใช้รหัสส่วนตัว $(น,ง)$ สามารถยกเลิกได้โดยใช้ $s\mapsto m=s^e\bmod n$ โดยใครก็ตามที่มีรหัสสาธารณะ $(น,อี)$นั่นคือใครก็ได้จากมุมมองการเข้ารหัสมาตรฐาน ดังนั้นการแปลงที่ทำขึ้นสำหรับลายเซ็นจึงไม่ถือว่าเป็นการเข้ารหัส
บ๊อบจะสามารถใช้รหัสสาธารณะของอลิซเพื่อถอดรหัสลายเซ็นซึ่งจะส่งคืนข้อความ ข้อความที่ถอดรหัสจะถูกเปรียบเทียบกับข้อความต้นฉบับ ถ้าพวกเขาเหมือนกัน แสดงว่า Bob เห็นว่าข้อความนั้นมาจากอลิซจริงๆ
อีกครั้งที่เป็นคำศัพท์ที่ไม่ถูกต้อง แทน ถอดรหัส ควรมี แปลงร่างกลับและความตั้งใจโดยรวมคือ ตรวจสอบ ข้อความกับลายเซ็นและรหัสสาธารณะของอลิซ
นอกเหนือจากคำศัพท์แล้ว คำพูดสองคำข้างต้นไม่ตรงกับวิธีการใช้ลายเซ็น RSA ด้วยวิธีการที่ระบุไว้ ขนาดข้อความจะถูกจำกัด และขั้นตอนโดยรวมจะไม่ปลอดภัย ตัวอย่างการโจมตีต่างๆ:
- ข้อความ $0$, $1$ และ $n-1$ มีลายเซ็นเล็กน้อย (ตัวข้อความเอง) ซึ่งช่วยให้ข้อความที่อลิซไม่เคยลงนามได้รับการยอมรับจากบ็อบเมื่อข้อความนั้นมาจากฝ่ายตรงข้ามจริงๆ
- มันง่ายที่จะใช้ $s$ และรหัสสาธารณะ และสร้างข้อความ (โดยทั่วไปไม่มีความหมาย) $m$ ลายเซ็นไหน $s$เพื่อผลเช่นเดียวกัน
- หากเป็นฝีมือข้าศึก $m_1$, $m_2$, $m_3$, $m_4$ กับ $m_1\cdot m_2=m_3\cdot m_4$, ที่มีความหมายในภายหลัง และสามอันที่มีความหมายมากพอที่จะโน้มน้าวให้อลิซสร้างลายเซ็น $s_1$, $s_2$, $s_3$ ของ $m_1$, $m_2$, $m_3$จากนั้นฝ่ายตรงข้ามสามารถคำนวณลายเซ็นได้ $s_4$ ที่มีความหมาย $m_4$ เช่น $s_4=s_1\cdot s_2\cdot{s_3}^{-1}\bmod n$. บางครั้งก็เป็นไปได้
ด้วยเหตุนี้ลายเซ็น RSA จึงไม่ได้รับการฝึกฝนเหมือนในคำถาม โดยทั่วไปจะใช้ RSASSA-PSS หรือ RSASSA-PKCS1-v1_5. จากนั้นการสร้างลายเซ็นและการตรวจสอบลายเซ็นจะไม่ทำงานเหมือนกับการเข้ารหัส/เข้ารหัสอีกต่อไป (ไม่ว่าจะเป็นการเข้ารหัสแบบ RSA แบบเรียน หรือการเข้ารหัสแบบ RSA ตามที่ปฏิบัติ เช่น RSAES-OAEP, RSA-KEM หรือการเข้ารหัสแบบไฮบริด)
สิ่งที่ถูกต้องคือในการตรวจสอบลายเซ็น RSA (พร้อมภาคผนวก) ตามที่ปฏิบัติจริง จะคำนวณฟังก์ชันของลายเซ็นและคีย์สาธารณะ จากนั้นจึงเปรียบเทียบผลลัพธ์กับข้อความ (หรือแฮชบางอย่างของสิ่งนั้น ในกรณีของ RSASSA-PSS มัลติ- แฮชระดับที่เติมเกลือเสริม)
ในทางกลับกัน สำหรับคู่คีย์ ECDSA กระบวนการตรวจสอบจะเหมือนกันกับคู่คีย์ RSA หรือไม่ นั่นคือโดยการเปรียบเทียบข้อความที่ถอดรหัสกับข้อความต้นฉบับเพื่อดูว่าเหมือนกันหรือไม่
ไม่ในการตรวจสอบลายเซ็น ECDSA ก็คือ ไม่ คำนวณฟังก์ชันบางอย่างของลายเซ็นและคีย์สาธารณะ จากนั้นเปรียบเทียบผลลัพธ์กับข้อความ (หรือแฮชบางอย่างของมัน) มันทำงานอีกวิธีหนึ่ง: แฮชของข้อความเป็นอินพุตในการคำนวณที่เกี่ยวข้องกับลายเซ็นและคีย์สาธารณะ แทนที่จะเปรียบเทียบกับในตอนท้าย
â¦ECDSA ดูเหมือนจะเปรียบเทียบคีย์สาธารณะâ¦
ทั้ง ปกติ ก็ไม่เช่นกัน สลับกัน วิธีการตรวจสอบลายเซ็น ECDSA เหมาะสมกับสิ่งนี้
(ECDSA) สามารถกู้คืนคีย์สาธารณะจากลายเซ็นได้â¦
ประเภท: ด้วย ECDSA คุณสามารถกู้คืนรหัสสาธารณะที่ใช้งานได้จากลายเซ็นและข้อความหรือแฮชที่เกี่ยวข้อง นั่นคือ การกู้คืนคีย์สาธารณะ. แต่การดำเนินการนั้นไม่ได้เป็นส่วนหนึ่งของการตรวจสอบลายเซ็นตามปกติ และมีข้อจำกัดคือ
อาจสามารถกู้คืนคีย์สาธารณะของตัวเลือกหลายรายการจากลายเซ็นได้ ด้วยค่าใช้จ่ายเพียงเล็กน้อย ผู้ลงนามสามารถสร้างลายเซ็น ECDSA ในลักษณะที่มีเพียงหนึ่งในคีย์สาธารณะของตัวเลือกเท่านั้นที่ใช้งานได้ และทำให้ผู้ตรวจสอบมีค่าใช้จ่ายเพิ่มเติมเพียงเล็กน้อยในการพิจารณาว่าคีย์สาธารณะใดถูกต้อง
ฉันไม่สามารถบอกได้อย่างแน่นอนว่าการกู้คืนคีย์สาธารณะ ECDSA ตามด้วยการเปรียบเทียบคีย์สาธารณะที่กู้คืนกับคีย์สาธารณะจริงจะมีประสิทธิภาพเทียบเท่าการตรวจสอบปกติหรือไม่ และสำหรับส่วนโค้งใด นั่นเป็นคำถามที่น่าสนใจทางทฤษฎีเท่านั้น เนื่องจากเรามีการตรวจสอบลายเซ็นมาตรฐาน
หมายเหตุ: สำหรับรูปแบบลายเซ็น RSA การกู้คืนคีย์สาธารณะไม่ใช่คุณลักษณะทั่วไป เป็นไปได้ด้วย RSASSA-PKCS1-v1_5 หรือลายเซ็นกำหนดอื่นๆ คู่ข้อความ/ลายเซ็น และตัวเลือกทั่วไปของ $e$; แต่ไม่สามารถทำได้กับ RSASSA-PSS หรือลายเซ็นแบบสุ่มอื่นๆ