Puncte:1

Cum se determină dimensiunea câmpului curbei într-o semnătură ECDSA

drapel in

Există o eroare în unele firmware la care lucrez, care spune următoarele:

Dacă coordonatele individuale sunt mai scurte sau mai lungi decât dimensiunea câmpului curbei, acestea sunt procesate incorect.

Deci, pot obține coordonatele din semnătură, R și S, dar nu am idee cum să determin dimensiunea câmpului curbei.

Mă uit în mod special la acest certificat pentru AWS IoT

-----ÎNCEPE CERTIFICAT-----
MIIDhzCCAy2gAwIBAgIQF+SpiRTfcZT9xPl3Soz4nTAKBggqhkjOPQQDAjCBgDEL
MAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYD
VQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYDVQQDEyhTeW1hbnRlYyBD
bGFzcyAzIEVDQyAyNTYgYml0IFNTTCBDQSAtIEcyMB4XDTIwMDgxNzAwMDAwMFoX
DTIxMDgxODIzNTk1OVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0
b24xEDAOBgNVBAcMB1NlYXR0bGUxGTAXBgNVBAoMEEFtYXpvbi5jb20sIEluYy4x
JjAkBgNVBAMMHSouaW90LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tMFkwEwYHKoZI
zj0CAQYIKoZIzj0DAQcDQgAEIovCJVKZaWFewxZ53PJMVfekj8AZRY37L7WsXjO/
Q3X46R/62ps82FR+cRmNh/I5SvcrmAvMGlM+1hl1LiE6q6OCAY8wggGLMEUGA1Ud
EQQ+MDyCG2lvdC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYIdKi5pb3QudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCB4AwHQYD
VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGEGA1UdIARaMFgwVgYGZ4EMAQIC
MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF
BwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMB8GA1UdIwQYMBaAFCXwiuFL
etkBlQrtxlPxjHgf2fP4MCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9yYy5zeW1j
Yi5jb20vcmMuY3JsMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDov
L3JjLnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3JjLnN5bWNiLmNvbS9y
Yy5jcnQwCgYIKoZIzj0EAwIDSAAwRQIgAKO6zCfmxUpg1BVa1s2Y2WiWPSpNlpDa
syCuV6Lm6YkCIQD0I2WI1gP9zqk4lxlOfBb/2S4zOw/1OU9QV8BadDCe7w==
-----CERTIFICAT FINAL-----

Mulțumiri!

Puncte:1
drapel in

Certificatul dvs. conține o cheie publică, P-256 sau secp256r1 sau prime256v1 pe care le puteți vedea Aici. Cu toate acestea, cheia este în format necomprimat (începând cu un octet 04 și apoi 64 de octeți care caută aleatoriu) iar parametrii domeniului sunt specificați folosind un OID cu curba menționată mai sus. Deci singurele coordonate sunt cele ale cheii publice, iar acelea sunt întotdeauna aceleași 1 + 64 de octeți; acolo nu este nici o problema.

Deci probabil că vorbiți despre R și S așa cum menționați în întrebare. Cu toate acestea, R este un număr aleator și S este semnătura aleatoare corespunzătoare, ceea ce înseamnă că nu sunt coordonate.

Acum curba nu este specificată; este specificat în certificatul de emitent la care se face referire în acesta. Cu toate acestea, putem presupune cu siguranță că este aceeași curbă despre care vorbim. Desigur, dacă construiți un verificator, atunci dvs ar trebui să totuși, recuperați curba și cheia publică din certificatul emitentului.

După cum puteți vedea în ultima parte a certificatului:

ȘIR DE BIȚI (568 de biți) 0011000001000101000000100010000000000000101000111011101011001100001001â¦
    SECVENȚA (2 elemente)
      INTEGER (248 biți) 2892853004106127101112322441046660521562717594643885711748150025403073â¦
      INTEGER (256 biți) 1104268754670564871921027255657571260094376165878172031675520861809130â¦

Valoarea aleatorie este de 248 de biți, iar semnătura este de 256 de biți. Aceste valori trebuie pur și simplu să fie mai mici decât dimensiunea câmpului. Aceasta înseamnă că codificarea lungimii dinamice cu semn, big endian a acestor numere întregi poate diferi. Dacă aveți cod rău, atunci în acest caz componenta R poate fi mai mică decât vă așteptați; dacă ai presupune doar 256 de biți, atunci ai avea probleme.

Ceea ce trebuie să faceți este să vă asigurați că software-ul dvs. va interpreta aceste numere dacă sunt codificate ca 1 octet, ca 33 de octeți (inclusiv 00 octet de umplutură din stânga) sau orice dimensiune între ele. După aceea, este posibil să trebuiască să le recodificați ca 32 + 32 = 64 de octeți pentru ca verificarea semnăturii să funcționeze.

Sau puteți utiliza doar un software care verifică formatul semnăturii ANS X9.62, desigur. Sau folosiți o bibliotecă care acceptă pur și simplu R și S ca numere separate folosind un fel de bibliotecă „bignum”.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.