Điểm:0

Lấy mẫu ngẫu nhiên so với tính ngẫu nhiên tăng dần trong các giao thức mật mã

lá cờ do

Để làm ví dụ cho câu hỏi của tôi, tôi đăng thuật toán ký ECDSA để tham khảo (từ wikipedia) để ký một tin nhắn $m$:

  1. Tính toán $e = H ( m )$.
  2. Chọn một số nguyên ngẫu nhiên $k \in [ 1 , n â 1 ] $
  3. Tính toán điểm cong $( x_1 , y_1 ) = k à G $
  4. Tính toán $r = x_1$ chế độ $n$. Nếu $r = 0$ , quay lại bước 2.
  5. Tính toán $s = k ^{â 1} ( z + r d_A )$ chế độ $n$. Nếu $s = 0$, quay lại bước 2.
  6. Chữ ký là cặp $( r , s )$

Câu hỏi của tôi là như sau. Khi bước 4 hoặc 5 không thành công, tức là $r=0$ hoặc $s=0$ thuật toán cần lặp lại và lấy mẫu ngẫu nhiên mới $k$ (mặc dù xác suất cho điều đó là thấp khi thứ tự $n$ của nhóm $G$ rất rộng). Nhưng trong trường hợp đó, tại sao thuật toán cần thực hiện lấy mẫu ngẫu nhiên mới? Sẽ không hiệu quả hơn nếu tăng $k$ thay thế? Tôi đã lấy câu hỏi này cho ECDSA làm ví dụ, nhưng điều này cũng áp dụng cho các giao thức mật mã khác, tôi thấy việc lấy mẫu lại ngẫu nhiên ở mọi nơi thay vì tăng dần.Và từ quan điểm bảo mật, việc tăng tính ngẫu nhiên sẽ không tạo ra sự khác biệt..

Điểm:3
lá cờ my

Và từ quan điểm bảo mật, việc tăng tính ngẫu nhiên sẽ không tạo ra sự khác biệt..

Có hai lý do để 'quay lại' hơn là thực hiện một số logic đặc biệt.

Lý do đầu tiên là để giảm số lượng mã mục đích đặc biệt 'khó kiểm tra'. Bất kỳ cách 'tăng $k$' sẽ liên quan đến mã cực kỳ hiếm khi chạy (và khó có thể đưa ra các bài kiểm tra đơn vị). Bất kỳ mã khó chạm nào như vậy đều là một vị trí thuận lợi cho các lỗi mã hóa không được phát hiện và do đó nên tránh nếu có thể. Ngược lại, quay lại và chạy lại về cơ bản cùng một quy trình sẽ ít xảy ra lỗi hơn đáng kể.

Lý do khác là việc sử dụng lại dữ liệu được coi là 'không thể chấp nhận được' có thể bị rò rỉ.

Ví dụ: giả sử rằng đối thủ có thể phát hiện khi một sự gia tăng như vậy xảy ra (ví dụ: bằng cách theo dõi chặt chẽ thời gian để tạo ra một chữ ký như vậy) và trên thực tế, điều đó xảy ra vì $s=0$. Nếu vậy, chúng tôi vừa bị rò rỉ khóa riêng tư.

Đây là cách điều đó xảy ra: trong lần lặp đầu tiên, chúng tôi tính toán $s = k^{-1}( z + rd_A )$ và thấy rằng nó bằng 0. Vì vậy, chúng tôi như vậy $r' = ((k+1)G)_x$ thay vào đó và xuất ra (và tiếp tục tính toán $s'$, mà cuộc tấn công này không sử dụng).

Những gì kẻ tấn công có thể làm là xây dựng lại điểm $(k+1)G$ từ tọa độ x mà chúng tôi vừa đưa cho anh ấy (thực ra, đó là một trong hai điểm; điều đó có nghĩa là anh ấy thử cả hai); điều đó sau đó cho phép anh ta tính toán lại $kG$, và do đó bản gốc $r$

Bây giờ, anh biết rằng $k^{-1}(z + rd_A) = 0$, hiện nay $k^{-1} \ne 0$ (nghịch đảo không bao giờ bằng 0), và vì vậy $d_A = -r^{-1}z$; anh ấy biết $z$ (từ tin nhắn đã được ký) và $r$, điều đó mang lại cho anh ta khóa riêng $d_A$.

Bây giờ, nếu chúng ta chọn hoàn toàn ngẫu nhiên $k$ mỗi lần, chúng tôi không phải lo lắng về các cuộc tấn công không rõ ràng như thế này.

Bây giờ, trong thực tế, điều này $s=0$ điều kiện về cơ bản không bao giờ xảy ra (xảy ra với cùng xác suất là một dự đoán ngẫu nhiên về khóa riêng tình cờ lại đúng), vì vậy có vẻ như chúng ta không cần phải lo lắng về điều đó. Tôi vẫn sẽ tin tưởng vào phương pháp ít bị lỗi hơn và an toàn hơn, ngay cả khi nó mất nhiều thời gian hơn (và nếu điều đó hiếm khi xảy ra thì thời gian cần thiết thường không liên quan).

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