Điểm:1

Cách kiểm tra cường độ bảo mật của k ngẫu nhiên nếu k là tham số đầu vào của chức năng tạo chữ ký ECDSA bằng cách sử dụng openssl-fips

lá cờ pe

Như tôi hiểu,

1. Độ mạnh bảo mật được chỉ định bằng bit theo https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf

2. Cường độ bảo mật phụ thuộc vào độ dài của đầu vào entropy khi tạo số ngẫu nhiên

Vì vậy, trong hàm tạo chữ ký, nếu k ngẫu nhiên là tham số đầu vào (không tạo k ngẫu nhiên trong hàm này)

Làm thế nào để kiểm tra hợp lệ k? sức mạnh bảo mật của ngẫu nhiên k?

1, Chỉ kiểm tra số bit ngẫu nhiên k?

2, Thử nghiệm khác?

Cảm ơn

Điểm:4
lá cờ ng

bên trong định nghĩa tiêu chuẩn của ECDSA, nonce $k$ phải là một số nguyên ngẫu nhiên thống nhất bí mật trong phạm vi $[1,n)$, ở đâu $n$ là thứ tự chính của máy phát điện. Phân tích các cặp tin nhắn/chữ ký khi $k$ đã biết hoặc có một khiếm khuyết (chẳng hạn như sai lệch hoặc xu hướng lặp lại) có thể làm rò rỉ khóa riêng tư, do đó tạo ra $k$ quan trọng đối với an ninh.

Việc triển khai tạo chữ ký ECDSA không thể kiểm tra một cách có ý nghĩa rằng giá trị của một đầu vào $k$ nó nhận được là phù hợp để sử dụng an toàn theo quy định bên trong định nghĩa tiêu chuẩn của chữ ký ECDSA, bởi vì không có cách nào để biết từ một giá trị liệu nó có bí mật hay không, đó là phẩm chất thiết yếu nhất $k$ nên sở hữu. Cũng không thể đánh giá nếu một $k$ là ngẫu nhiên như câu hỏi gợi ý, ít nhất là trừ khi chúng ta biết nó được sản xuất như thế nào. Và dù sao đi nữa, trong bối cảnh, ngẫu nhiên là thứ yếu so với bí mật.

Vì vậy, thay vì chấp nhận $k$ như một đầu vào, quy trình phổ biến là tạo ra một ngẫu nhiên $k$ một phần của việc thực hiện tạo chữ ký ECDSA. Một quy trình cơ bản (nếu không nhất thiết phải khuyến nghị) là vẽ $\lceil\log_2(n)\rceil$ bit từ một RNG mã hóa mạnh được giả định (chẳng hạn như /dev/urandom) và diễn giải các bit này dưới dạng số nguyên $k$ mỗi ví dụ quy ước big-endian, cho đến khi nó giữ nguyên $0<k<n$ (mà đối với nhiều người $n$ được sử dụng trong thực tế về cơ bản là luôn luôn, bởi vì $n$ chỉ dưới lũy thừa hai). Tôi bỏ qua thủ tục cơ bản này trong phần còn lại của câu trả lời (mặc dù điều này bình luận gợi ý rằng đó là cốt lõi của câu hỏi).

Có thể sửa đổi quy trình tạo chữ ký ECDSA để sử dụng an toàn bất kỳ $k$ nó nhận được. Thay vì $k$, việc tạo chữ ký có thể sử dụng $k':=f(d_U,H,k)$ ở đâu $d_U$ là khóa riêng, $H$ là hàm băm của tin nhắn cần ký và $f$ là một hàm phái sinh khóa công khai bằng cách sử dụng $d_U$ làm khóa chính, với đầu ra gần như thống nhất trong $[1,n)$ ở đâu $n$ là thứ tự của máy phát điện. Thực tiễn như vậy không phá vỡ khả năng tương thích theo bất kỳ cách nào và chỉ có thể phát hiện được với cả hai $k$ và khóa riêng (trên đầu trang của thông tin công khai khác). Vì $n$ ít nhất lên đến 384-bit, một chức năng phù hợp sẽ là $$k':=1+(\operatorname{HMAC-SHA-512}(d_U,H\mathbin\|k)\bmod(n-1))$$

Lưu ý: về lý thuyết thủ tục ký có một số lần "return to Step 1" sẽ gọi lại $f$ và mong đợi một sự khác biệt $k'$, và sẽ không nhận được điều đó.Tuy nhiên, đó là tranh luận, vì khả năng gọi lại $f$ là hoàn toàn không đáng kể và không thể kiểm tra được ngay cả khi có kiểm soát $d_U$, $H$$k$, đối với cố định thích hợp không ác tính $f$. Tuy nhiên, nếu khả năng đó ngăn không cho con dấu cao su đập vào giấy, chúng ta có thể sử dụng $k'=f(d_U,H\oplus j,k)$ ở đâu $j$ là số lần gọi trước đó của $f$ trong chữ ký.

Lưu ý: khi nào và nếu không có nhược điểm nào trong việc tạo chữ ký xác định, chúng ta có thể bỏ qua đầu vào $k$. Khi xem xét một số (nhưng không phải tất cả) các cuộc tấn công kênh bên thậm chí có thể an toàn hơn, đặc biệt là chống lại các cuộc tấn công của các đối thủ biết và kiểm soát $k$.

Andy avatar
lá cờ pe
Trước hết, cảm ơn rất nhiều vì lời giải thích của bạn! Vì vậy, nếu k đến từ TRNG (en.wikipedia.org/wiki/Hardware_random_number_generator), Biết nó được sản xuất như thế nào. Là giải pháp đầu tiên của tôi vẫn có thể? đó chỉ là kiểm tra số bit của k. Giả sử rằng, k (từ TRNG) là bí mật và ngẫu nhiên
fgrieu avatar
lá cờ ng
@Andy: Tôi đã mở rộng theo cách cơ bản (nếu không được đề xuất) để tạo $k$ trong ECDSA, xem đoạn thứ ba của câu trả lời. Lưu ý rằng nếu bạn sử dụng triển khai chữ ký ECDSA hiện có, có khả năng nó tạo ra $k$ (và nếu nó quan tâm đến bảo mật thì nó có thể sử dụng một kỹ thuật tương tự như kỹ thuật tôi mô tả trong đoạn thứ tư). Xin lưu ý rằng có rất nhiều khó khăn trong việc thực hiện an toàn việc tạo chữ ký ECDSA (kênh bên, tấn công lỗi..) và sự khôn ngoan thông thường là nên giao việc này cho các lập trình viên bảo mật có kinh nghiệm.

Đă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.