Điểm:1

Cách xác định kích thước trường của đường cong trong Chữ ký ECDSA

lá cờ in

Có một lỗi trong một số chương trình cơ sở tôi đang làm việc có nội dung như sau:

Nếu các tọa độ riêng lẻ ngắn hơn hoặc dài hơn kích thước trường của đường cong thì chúng được xử lý không chính xác.

Vì vậy, tôi có thể lấy tọa độ từ chữ ký, R và S, nhưng tôi không biết cách xác định kích thước trường của đường cong.

Tôi đặc biệt xem xét chứng chỉ này cho AWS IoT

-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
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==
-----GIẤY CHỨNG NHẬN KẾT THÚC-----

Cảm ơn!

Điểm:1
lá cờ in

Chứng chỉ của bạn chứa khóa chung, P-256 hoặc secp256r1 hoặc prime256v1 bạn có thể xem đây. Tuy nhiên, khóa ở định dạng không nén (bắt đầu bằng một byte 04 và sau đó là 64 byte tìm kiếm ngẫu nhiên) và các tham số miền được chỉ định bằng cách sử dụng OID với đường cong được đề cập ở trên. Vì vậy, tọa độ duy nhất là tọa độ của khóa chung và chúng luôn giống nhau 1 + 64 byte; không có vấn đề gì ở đó.

Vì vậy, có lẽ bạn đang nói về R và S như bạn đã đề cập trong câu hỏi. Tuy nhiên, R là một số ngẫu nhiên và S là chữ ký ngẫu nhiên tương ứng, có nghĩa là chúng không phải là tọa độ.

Bây giờ đường cong không được chỉ định; nó được chỉ định trong chứng chỉ của tổ chức phát hành được tham chiếu trong chứng chỉ này. Tuy nhiên, chúng ta có thể giả định một cách an toàn rằng đó chính là đường cong mà chúng ta đang nói đến. Tất nhiên, nếu bạn đang xây dựng một trình xác minh, thì bạn Nên Tuy nhiên, hãy truy xuất đường cong và khóa công khai từ chứng chỉ của tổ chức phát hành.

Như bạn có thể thấy trong phần cuối cùng của chứng chỉ:

CHUỖI BIT (568 bit) 0011000001000101000000100010000000000000101000111011101011001100001001â¦
    TRÌNH TỰ (2 phần tử)
      INTEGER (248 bit) 2892853004106127101112322441046660521562717594643885711748150025403073â¦
      INTEGER (256 bit) 1104268754670564871921027255657571260094376165878172031675520861809130â¦

Giá trị ngẫu nhiên là 248 bit và chữ ký là 256 bit. Các giá trị này đơn giản phải nhỏ hơn kích thước trường. Điều này có nghĩa là mã hóa độ dài động, big endian, có dấu của các số nguyên này có thể khác nhau. Nếu bạn có mã xấu thì trong trường hợp này, thành phần R có thể nhỏ hơn những gì bạn mong đợi; nếu bạn chỉ giả sử 256 bit thì bạn sẽ gặp rắc rối.

Điều bạn phải làm là đảm bảo phần mềm của bạn sẽ diễn giải những con số này nếu chúng được mã hóa dưới dạng 1 byte, dưới dạng 33 byte (bao gồm 00 byte đệm ở bên trái) hoặc bất kỳ kích thước nào ở giữa. Sau đó, bạn có thể phải mã hóa lại chúng thành 32 + 32 = 64 byte để xác minh chữ ký của bạn hoạt động.

Hoặc bạn chỉ có thể sử dụng phần mềm xác minh định dạng chữ ký ANS X9.62. Hoặc sử dụng thư viện chỉ chấp nhận R và S dưới dạng các số riêng biệt bằng cách sử dụng một số loại thư viện "bignum".

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.