Điểm:2

Lamport Diffie Chữ ký một lần

lá cờ no

tôi đang đi qua Lamport Diffie Chữ ký một lần. Tôi đang gặp khó khăn trong việc hiểu

  1. Làm cách nào để các tin nhắn dài (lớn hơn 100 bit) có thể được ánh xạ thành các tin nhắn ngắn (100 bit) bằng chức năng một chiều và chỉ tin nhắn ngắn được ký? Ai đó có thể giải thích điều này bằng một ví dụ không? (Tham khảo trang số 13 trong tài liệu đính kèm.)

  2. "tin nhắn có thể được mã hóa bằng khóa ngẫu nhiên mới được tạo bởi người ký trước khi nó được ký và khóa ngẫu nhiên được thêm vào tin nhắn. Do đó, tin nhắn đã ký sẽ là ngẫu nhiên (giả sử rằng mã hóa bằng khóa ngẫu nhiên sẽ ngẫu nhiên hóa tin nhắn một cách hiệu quả, một thực tế thường được thừa nhận cho mã hóa hiện đại chức năng [11]). Các bước này sẽ thỏa mãn các điều kiện cho thuộc tính 2. Do đó, chúng ta có thể giả sử, không làm mất tính tổng quát, rằng tất cả các thông báo đều có độ dài cố định, ví dụ: 100 bit". trong tài liệu đính kèm.)

  3. "Phương pháp được mô tả cho đến nay có một khiếm khuyết là B có thể thay đổi m bằng cách thay đổi các bit là 1 thành D. B chỉ đơn giản là phủ nhận rằng anh ta đã từng nhận được xj ' (mặc dù thực tế là anh ta đã làm). Tuy nhiên, D's không thể được thay đổi thành 1. Lamport và Diffie khắc phục vấn đề này bằng cách ký vào một thông điệp mới m', dài gấp đôi m và được tính bằng cách nối m với phần bù bit của m. Nghĩa là, mỗi bit m. trong thông báo ban đầu J là được biểu diễn bởi hai bit mj và phần bù của m trong thông điệp mới m'.Rõ ràng, bit J này hoặc bit J kia phải là bit O. Để thay đổi thông báo, B sẽ phải biến 0 thành 1, điều mà anh ta không thể làm được". 14)

Tôi đang cố gắng đọc về công nghệ xung quanh không gian tiền điện tử ngay bây giờ. Tôi bắt đầu với bài báo đính kèm vì nó đã được đề cập trong đây. Nếu bạn cảm thấy có những nguồn giải thích chi tiết về bài báo đính kèm nhưng theo cách mà người mới bắt đầu sẽ hiểu thì tôi sẽ đánh giá rất cao.

Điểm:3
lá cờ my

Tôi đang xem qua chữ ký một lần của Lamport Diffie.

Như một lưu ý phụ; công việc này là một nỗ lực ban đầu mà đỉnh điểm là cái được gọi là "Phương thức chữ ký dựa trên trạng thái băm"; thiết kế hiện đại bao gồm XMSSLMS, và gần với những gì trong bài báo Merkle một cách đáng ngạc nhiên. Bạn có thể thấy liên kết Wiki dễ tiếp cận hơn...

Trong mọi trường hợp, để giải quyết câu hỏi của bạn:

  1. Làm cách nào để các tin nhắn dài (lớn hơn 100 bit) có thể được ánh xạ thành các tin nhắn ngắn (100 bit) bằng chức năng một chiều và chỉ tin nhắn ngắn được ký?

Nghe có vẻ không quá đơn giản:

  • Chúng tôi lấy thông điệp dài để ký

  • Chúng tôi sử dụng nó làm đầu vào cho 'hàm một chiều' (thuật ngữ hiện đại: hàm băm), tạo ra đầu ra có kích thước cố định (trong ví dụ này là 100 bit)

  • Chúng tôi lấy đầu ra 100 bit đó và áp dụng thuật toán chữ ký cho nó.

Điều này không dành riêng cho chữ ký dựa trên hàm băm; về cơ bản, tất cả các thuật toán chữ ký (ít nhất, bất kỳ thuật toán nào tôi đã nghe nói đến) đều sử dụng một biến thể của thuật toán này làm bước đầu tiên. Sự khác biệt duy nhất là 100 bit sẽ không được coi là đủ dài; chúng tôi thường nhấn mạnh vào các kết quả băm dài hơn nhiều (vì khả năng của kẻ tấn công đã tăng lên rất nhiều kể từ năm 1979, do đó chúng tôi cần làm cho hệ thống của mình mạnh hơn).

Câu hỏi rõ ràng là "tại sao điều này lại an toàn"? Chà, nếu chúng ta giả sử rằng kẻ tấn công không thể tìm thấy một thông báo khác mà hàm một chiều ánh xạ tới cùng 100 bit và kẻ tấn công không thể tạo chữ ký cho tập hợp 100 bit khác mà thông báo của kẻ tấn công ánh xạ tới, thì điều đó là an toàn .

Trên thực tế, trong thực tế, chúng tôi lo lắng về các cuộc tấn công xung đột, trong đó kẻ tấn công có quyền kiểm soát thông báo hợp lệ đang được ký (nhưng anh ta vẫn cần tạo ra một chữ ký giả mạo, nghĩa là chữ ký hợp lệ cho một thông báo chưa được ký); Merkle cân nhắc điều đó, tuy nhiên, bây giờ hãy để mọi thứ đơn giản.

  1. "tin nhắn có thể được mã hóa bằng một khóa ngẫu nhiên mới được tạo..." Ai đó có thể giải thích điều này cho tôi không?

Chà, phần này có thể được bỏ qua - đây là một phần của bài báo mà tiền điện tử hiện đại không tuân theo.

Merkle cố gắng xác định 'chức năng mã hóa được chứng nhận' và sử dụng các giả định cụ thể để làm như vậy, bao gồm cả đầu vào ngẫu nhiên; thông báo được ký không phải là ngẫu nhiên, và do đó anh ta chèn một chức năng mã hóa (với một khóa ngẫu nhiên) để làm cho nó phù hợp với các giả định của anh ta.

Trong tiền điện tử hiện đại, chúng tôi không làm điều này - chúng tôi thường sử dụng hàm băm có sẵn (chẳng hạn như SHA-2 hoặc SHAKE) và sử dụng hàm đó - chúng đã được thiết kế (và phân tích mã hóa) để đáp ứng các giả định khác nhau về mật mã hàm băm; do đó chúng tôi (với tư cách là nhà thiết kế chữ ký) không phải lo lắng về điều đó.

Công bằng mà nói với Merkle, đây có thể là lần đầu tiên bất kỳ ai cố gắng tìm ra 'hàm băm chống va chạm' sẽ trông như thế nào và anh ấy đã có một nỗ lực khá tốt - đó không phải là hướng mà các nhà mật mã học sau này đã thực hiện.

  1. "Phương pháp được mô tả cho đến nay có một lỗi là B có thể thay đổi m bằng cách thay đổi các bit từ 1 thành 0..." Ai đó có thể giải thích cách khắc phục sự cố này không.

Chà, chúng ta hãy xem xét trường hợp đơn giản nhất; ký một bit duy nhất. Trong "phương pháp được mô tả cho đến nay", để tạo khóa riêng, chúng tôi sẽ chọn một giá trị ngẫu nhiên $x$và áp dụng một chức năng ngẫu nhiên $F$ với nó, tạo ra giá trị chung $F(x)$. Sau đó, để ký bit '1', chúng tôi sẽ tạo dưới dạng chữ ký $x$ (mà người xác minh sẽ có thể xác thực rằng $F$ ánh xạ tới khóa chung). Tuy nhiên, để ký bit '0', chúng tôi sẽ không tiết lộ bất cứ điều gì. Rõ ràng là ai đó nhìn thấy chữ ký hợp lệ là '1' có thể chuyển đổi nó thành chữ ký '0' (hoặc, đối với vấn đề đó, tạo chữ ký '0' mà không nhìn thấy gì).

Trong sơ đồ Lamport, để ký một bit, chúng tôi tạo hai giá trị ngẫu nhiên $x$$x'$và xuất bản dưới dạng khóa công khai các giá trị $F(x)$$F(x')$. Để ký số 0, chúng tôi sản xuất $x$; để ký một 1, chúng tôi sản xuất $x'$; ai đó có chữ ký là 1 không thể tạo chữ ký bằng 0 (vì họ phải tạo $x$và họ không biết điều đó).

Bây giờ, điều này hoạt động, tuy nhiên nó khá tốn kém (cuối cùng, bạn cần một khóa chung có số đầu ra băm gấp đôi số bit mà hàm băm của bạn tạo ra - ví dụ: nếu hàm băm của bạn tạo ra 100 bit, thì khóa này có một khóa chung bao gồm của 200 giá trị băm). Bài báo tiếp tục chỉ ra các cách để giảm nó, như đã đề cập trong phần 4 và 5 của bài báo (đó là những gì được sử dụng trong thực tế).

redd avatar
lá cờ no
Trước hết cảm ơn bạn rất nhiều vì đã phản hồi và nỗ lực của bạn. Tôi đã thất vọng về việc không thể hiểu nội dung trong bài báo và phản hồi của bạn đã khiến tôi vui vẻ và cho tôi hy vọng!
redd avatar
lá cờ no
Đáp lại câu trả lời đầu tiên của bạn. Hiểu biết của tôi về thuật toán chữ ký là đối với mỗi bit trong tin nhắn được truyền đi, có một khóa bí mật và khóa chung được liên kết với nó. Ý tôi muốn nói đến từng bit là (sử dụng ví dụ được đề cập trong tài liệu đính kèm) là giả sử tôi sẽ bán một cổ phiếu, mỗi bit trong tin nhắn sẽ cho bên B biết nên bán cổ phiếu nào. Nếu chúng tôi ánh xạ thông báo tới hàm băm 100 bit mới (tham khảo ví dụ của bạn), làm cách nào để bên B biết nên bán cổ phiếu nào? Bởi vì tin nhắn ban đầu được chuyển thành hàm băm 100 bit mới này.
redd avatar
lá cờ no
Bạn tạo tham chiếu đến "hàm băm chống va chạm", khi bạn nói rằng bạn đang nói về các hàm băm không tạo ra cùng một đầu ra cho đầu vào khác nhau? Bao nhiêu vấn đề này là trong thực tế?
redd avatar
lá cờ no
Để tham khảo câu trả lời 3 trong bài viết của bạn. Chà, điều này không có lỗ hổng khi giả sử bên A gửi cho bên B một tin nhắn hợp lệ đã được ký, bên B không thể nói rằng anh ta không nhận được bất kỳ tin nhắn nào đã được ký sao? Làm thế nào để họ đi xung quanh vấn đề này?
poncho avatar
lá cờ my
@redd: điểm 1: chữ ký ở đó để cho phép mọi người xác minh tin nhắn, nó không ở đó để truyền tải nó. Giả sử rằng B được gửi một bản sao của tin nhắn cùng với chữ ký.
poncho avatar
lá cờ my
@redd: "hàm băm chống va chạm" không phải là một trong đó thực sự không có hai đầu vào băm với cùng một giá trị (có thể dễ dàng chỉ ra rằng, đối với bất kỳ hàm nào như vậy, đầu ra ít nhất lớn bằng đầu vào) . Thay vào đó, quá khó (chúng tôi không biết làm như thế nào với các tài nguyên chúng tôi có) để tìm hai giá trị khác nhau có hàm băm giống nhau.
poncho avatar
lá cờ my
@redd: điểm 3: điểm của chữ ký là ở đó để cho phép rằng tin nhắn đã được gửi, chính xác như hiện tại, bởi A. Nó không ở đó để ngăn B tuyên bố rằng anh ta không nhận được nó; nó ở đó để ngăn B tuyên bố rằng A gửi một tin nhắn khác (và ai đó không phải A gửi cho B một tin nhắn khác)

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