Score:1

วิธีกำหนดขนาดฟิลด์ของเส้นโค้งในลายเซ็น ECDSA

ธง in

มีข้อบกพร่องในเฟิร์มแวร์บางตัวที่ฉันใช้งานซึ่งระบุสิ่งต่อไปนี้:

หากพิกัดแต่ละรายการสั้นหรือยาวกว่าขนาดช่องของเส้นโค้ง ระบบจะประมวลผลอย่างไม่ถูกต้อง

ดังนั้นฉันสามารถรับพิกัดจากลายเซ็น R และ S แต่ฉันไม่รู้ว่าจะกำหนดขนาดฟิลด์ของเส้นโค้งได้อย่างไร

ฉันกำลังดูใบรับรองนี้สำหรับ AWS IoT โดยเฉพาะ

-----เริ่มต้นใบรับรอง-----
MIIDhzCCAy2gAwIBAgIQF+SpiRTfcZT9xPl3Soz4nTAKBggqhkjOPQQDAjCBgDEL
MAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYD
VQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYDVQQDEyhTeW1hbnRlYyBD
bGFzcyAzIEVDQyAyNTYgYml0IFNTTCBDQSAtIEcyMB4XDTIwMDgxNzAwMDAwMFoX
DTIxMDgxODizNTk1OVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0
b24xEDAOBgNVBAcMB1NlYXR0bGUxGTAXBgNVBAoMEEFtYXpvbi5jb20sIEluYy4x
JjAkBgNVBAMMHSouaW90LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tMFkwEwYHKoZI
zj0CAQYIKoZIzj0DAQcDQgAEIovCJVKZaWFewxZ53PJMVfekj8AZRY37L7WsXjO/
Q3X46R/62ps82FR+cRmNh/I5SvcrmAvMGlM+1hl1LiE6q6OCAY8wggGLMEUGA1Ud
EQQ+MDyCG2lvdC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYIdKi5pb3QudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCB4AwHQYD
VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGEGA1UdIARaMFgwVgYGZ4EMAQIC
MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF
BwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMB8GA1UdIwQYMBaAFCXwiuFL
etkBlQrtxlPxjHgf2fP4MCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9yYy5zeW1j
Yi5jb20vcmMuY3JsMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwayYTaHR0cDov
L3JjLnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3JjLnN5bWNiLmNvbS9y
Yy5jcnQwCgYIKoZIzj0EAwIDSAwRQIgAKO6zCfmxUpg1BVa1s2Y2WiWPSpNlpDa
syCuV6Lm6YkCIQD0I2WI1gP9zqk4lxlOfBb/2S4zOw/1OU9QV8BadDCe7w==
-----จบใบรับรอง-----

ขอบคุณ!

Score:1
ธง in

ใบรับรองของคุณมีรหัสสาธารณะ P-256 หรือ secp256r1 หรือ prime256v1 ที่คุณเห็น ที่นี่. อย่างไรก็ตาม คีย์อยู่ในรูปแบบที่ไม่บีบอัด (เริ่มต้นด้วย byte 04 จากนั้น 64 ไบต์สุ่มการค้นหา) และพารามิเตอร์โดเมนถูกระบุโดยใช้ OID พร้อมเส้นโค้งที่กล่าวถึงข้างต้น ดังนั้นพิกัดเดียวคือค่าของรหัสสาธารณะ และพิกัดเหล่านั้นจะเป็น 1 + 64 ไบต์เหมือนกันเสมอ ไม่มีปัญหาที่นั่น

คุณอาจกำลังพูดถึง R และ S ตามที่คุณพูดถึงในคำถาม อย่างไรก็ตาม R เป็นตัวเลขสุ่มและ S เป็นลายเซ็นสุ่มที่เกี่ยวข้อง ซึ่งหมายความว่า พวกเขาไม่ใช่พิกัด.

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

ดังที่คุณเห็นในส่วนสุดท้ายของใบรับรอง:

BIT STRING (568 บิต) 0011000001000101000000100010000000000000101000111011101011001100001001â¦
    ลำดับ (2 องค์ประกอบ)
      จำนวนเต็ม (248 บิต) 2892853004106127101112322441046660521562717594643885711748150025403073â¦
      จำนวนเต็ม (256 บิต) 1104268754670564871921027255657571260094376165878172031675520861809130â¦

ค่าสุ่มคือ 248 บิตและลายเซ็นคือ 256 บิต ค่าเหล่านี้ต้องมีขนาดเล็กกว่าขนาดฟิลด์ ซึ่งหมายความว่าการเข้ารหัสความยาวไดนามิกของจำนวนเต็มเหล่านี้อาจแตกต่างกัน หากคุณมีรหัสที่ไม่ถูกต้อง ในกรณีนี้ องค์ประกอบ R อาจมีขนาดเล็กกว่าที่คุณคาดไว้ ถ้าคุณคิดแค่ 256 บิต คุณก็จะมีปัญหา

สิ่งที่คุณต้องทำคือตรวจสอบให้แน่ใจว่าซอฟต์แวร์ของคุณจะตีความตัวเลขเหล่านี้หากเข้ารหัสเป็น 1 ไบต์ เป็น 33 ไบต์ (รวมถึง 00 ไบต์การเติมทางด้านซ้าย) หรือขนาดใดก็ได้ในระหว่างนั้น หลังจากนั้น คุณอาจต้องเข้ารหัสอีกครั้งเป็น 32 + 32 = 64 ไบต์ เพื่อให้การตรวจสอบลายเซ็นของคุณทำงานได้

หรือคุณสามารถใช้ซอฟต์แวร์ที่ตรวจสอบรูปแบบลายเซ็น ANS X9.62 ได้ หรือใช้ไลบรารีที่ยอมรับ R และ S เป็นตัวเลขแยกกันโดยใช้ไลบรารี "bignum" บางประเภท

โพสต์คำตอบ

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