Điểm:2

Làm cách nào để xây dựng họ hàm Fn của WOTS+ bằng SHA3?

lá cờ ca

Từ WOTS+ giấy:

Hơn nữa, W-OTS+ sử dụng một họ hàm Fn : {f_k : {0, 1}^n â {0, 1}^n | k â Kn} với không gian khóa Kn. Người đọc có thể nghĩ về nó như một họ hàm băm mật mã không nén. Sử dụng Fn, chúng tôi xác định hàm chuỗi sau.

Tôi không hiểu ý nghĩa của đoạn này. Giải thích của tôi về nó là tôi cần một gia đình N các hàm giả ngẫu nhiên n-bit, trong đó N là tham số bảo mật. Đó là, nếu tham số bảo mật là 128, thì tôi cần 128 hàm giả ngẫu nhiên 128 bit khác nhau. Nếu cách hiểu này là đúng và giả sử n=128, tôi có thể định nghĩa F(k) như chỉ là sha3 (chống lại các cuộc tấn công mở rộng chiều dài) của k nối vào tin nhắn, sau đó cắt thành 128 bit? Đó là, một cái gì đó như:

// Tạo hàm giả ngẫu nhiên thứ k, với n=128
fn kth_random_function(k: uint8) -> (byte -> uint128):
  trả về λ(tin nhắn: byte) => uint128(sha3(u8_to_byte(k) ++ tin nhắn)[0:16])
Maarten Bodewes avatar
lá cờ in
Nhị phân không phải là thập lục phân; bạn chắc chắn không nên mã hóa `k` trước khi sử dụng nó (và thường không mã hóa sau đó, nếu nhị phân được cho phép). Hơn nữa, nếu bạn định sử dụng hàm băm có khóa, bạn cũng có thể sử dụng KMAC. Lưu ý rằng KMAC cung cấp tùy chọn để đặt kích thước đầu ra với đầu ra 128 và 256 bit là các tùy chọn được tiêu chuẩn hóa.
lá cờ ca
@MaartenBodewes Đó chỉ là để đơn giản, giả sử sha3 đang hoạt động trên hex. Tôi đã chỉnh sửa để cải thiện mã giả. Không phải KMAC với đầu ra 128 bit giống như những gì tôi đã mô tả sao? Tức là lấy 128 bit đầu tiên của `SHA3(k || m)`?
Maarten Bodewes avatar
lá cờ in
Nó gần như có một chút khác biệt. Nhưng nói chung, tôi sẽ sử dụng các thuật toán mà chúng được cho là hoạt động. Giả sử bạn có chức năng này trong phần cứng: trong trường hợp đó SHA-3 có thể không chấp nhận một đối tượng chính, trong khi KMAC sẽ chấp nhận.
lá cờ ca
Có ý nghĩa, cảm ơn bạn.
Maarten Bodewes avatar
lá cờ in
KMAC: 1. newX = bytepad(encode_string(K), 168) || X|| right_encode(L). 2. trả lại cSHAKE128(newX, L, âKMACâ, S). Vì vậy, vâng, không hoàn toàn là SHA-3, nhưng rất giống nếu bạn nhìn vào cấu trúc miếng bọt biển thực tế. S thường trống, nhưng có một mã hóa bổ sung của kích thước đầu ra L được bao gồm và chỉ báo "KMAC". Nhân tiện, tôi không biết rõ về W-OTS để trả lời, tôi e rằng mình đã bỏ qua một số yêu cầu w.r.t. phần không nén.
Điểm:1
lá cờ in

Bạn thực sự cần một nhóm các chức năng một chiều, không thể phát hiện, chống ảnh hưởng thứ hai. Nói chung, bất kỳ hàm băm mật mã an toàn nào (SHA2, SHA3, ...) nên hoạt động với một chút điều chỉnh để làm cho nó được khóa. Bạn không cần nó phải là PRF và chức năng này có độ dài cố định. Do đó, nếu bạn cũng sửa độ dài khóa, sử dụng

SHA3(K || M)

là tốt (và sau đó lấy số lượng bit đầu ra cần thiết). Đối với SHA2 (hoặc bất kỳ cấu trúc Merkle-Damgard nào), bạn có được đối số bảo mật đẹp hơn, nếu trước tiên bạn hấp thụ khóa vào lệnh gọi hàm nén và sau đó là thông báo. Tức là, bạn làm

SHA2-256( miếng đệm(K, 512) || M ),

trong đó pad(K, 512) áp dụng một phần đệm nội tại để biến K thành một chuỗi 512 bit. Giả sử độ dài cố định cho K, việc thêm đủ nhiều số 0 hoạt động tốt. Ở đây tôi đã tính đến độ dài khối của SHA2-256 là 512 bit. Đối với các độ dài khối khác nhau, bạn phải điều chỉnh độ dài cho phù hợp. Do tăng cường Merkle-Damgard (yêu cầu áp dụng phần đệm theo chiều dài), điều này không làm tăng số lần gọi hàm nén. Đồng thời, bạn có thể nghĩ về điều này khi lần đầu tiên tính toán IV giả ngẫu nhiên từ K, sau đó được sử dụng để băm 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.