Điểm:0

Khi nhập một luồng giá trị nhị phân thô vào hàm băm SHA256 và bắt gặp giá trị 10000000 trong luồng đầu vào, hàm băm có kết thúc không?

lá cờ ng

Tôi đang lấy dữ liệu nhị phân từ một cảm biến và lưu trữ nó trong một tệp. Khi mỗi byte dữ liệu được đọc từ cảm biến, nó sẽ chuyển sang hàm băm SHA256. Độ dài của luồng dữ liệu thu được thay đổi từ phiên này sang phiên khác. Có thể gặp phải một mẫu riêng lẻ có giá trị nhị phân là 10000000 trong luồng đầu vào trước khi kết thúc luồng của phiên. Làm thế nào để thuật toán băm SHA256 xử lý giá trị 10000000 đó vì đó cũng là điểm đánh dấu được sử dụng ở cuối đầu vào băm?

Điểm:1
lá cờ fr

Hàm băm bảo mật bằng mật mã có thể xử lý bất kỳ chuỗi byte tùy ý nào, bất kể các byte đó là gì hoặc chúng có thể có mẫu gì, có thể cho đến kích thước tối đa được chỉ định (đối với SHA-256, là $ 2^{64} $ chút ít).

Đúng là SHA-256 sử dụng một bit duy nhất theo sau là các bit 0 như một phần của phần đệm của nó (sơ đồ Merkle-DÃ¥mgard). Tuy nhiên, mẫu đó có thể xuất hiện trong luồng đầu vào mà không gặp sự cố và vì khối cuối cùng chứa độ dài đầu vào nên chúng ta có thể phân biệt giữa mẫu đó trong đầu vào và mẫu đó như một phần của sơ đồ đệm. Vì vậy, không có bất kỳ mẫu trong dải cụ thể nào sẽ khiến hàm băm kết thúc đột ngột.

Lưu ý rằng các thuật toán băm khác, chẳng hạn như SHA-3 và BLAKE2, sử dụng các sơ đồ đệm khác nhau và chúng cũng có thể xử lý các mẫu đầu vào tùy ý mà không gặp sự cố. Các kế hoạch đệm này, mặc dù khác với cấu trúc Merkle-DÃ¥mgard, nhưng cũng được cho là an toàn và thực sự có thể được ưa chuộng hơn vì những lý do khác.

Thông thường, khi chúng ta viết một API cho các byte băm, chúng ta sẽ có ba hàm: một hàm khởi tạo, thiết lập thuật toán với các tham số phù hợp; một chức năng cập nhật, đưa đầu vào vào hàm băm; và một hàm hoàn thiện, thực hiện đệm, kết thúc quá trình băm và trả về kết quả băm. Do đó, chúng tôi luôn chỉ ra rõ ràng rằng quá trình băm sẽ kết thúc mà không cần quan tâm đến dữ liệu đầu vào.

Điểm:1
lá cờ ng

Thuật toán băm SHA-256 xử lý giá trị 10000000 đó như thế nào vì đó cũng là điểm đánh dấu được sử dụng ở cuối đầu vào hàm băm?

SHA-256 không đặt trường hợp đặc biệt cho bất kỳ mẫu nào trong đầu vào của nó. Và khi sử dụng SHA-256 để băm không bí mật dữ liệu thì không cần bận tâm về chi tiết bên trong này. Tôi sẽ thêm một lý do để này: vì hàm băm không phải là mã hóa nên không có quá trình giải mã cho hàm băm, do đó không cần nhận ra một số mẫu kết thúc, như xảy ra trong quá trình giải mã bản mã cho bản rõ có kích thước thay đổi, ví dụ: Chế độ CBC

Có nhiều lý do để bận tâm về mẫu kết thúc khi xử lý bí mật dữ liệu: SHA-256 thuộc tính mở rộng chiều dài. Nó giữ cho bất kỳ Merkle-DamgÃ¥rd băm $H$, mà cho bất kỳ chiều dài $\ell$ (lên đến giới hạn rất lớn), có một chuỗi bit ngắn $b_\ell$ (bao gồm cả mẫu kết thúc) và một hàm có thể tính toán hiệu quả $H_\ell$ sao cho đối với bất kỳ chuỗi bit nào $m$ của $\ell$ bit, cho bất kỳ chuỗi bit nào $m'$ (lên đến kích thước rất lớn), nó giữ $$H(m\mathbin\|b_\ell\mathbin\|m')=H_\ell(H(m)\mathbin\|m')$$

Đối với bất kỳ bí mật $m$ với độ dài đã biết $\ell$ và hàm băm đã biết $H(m)$, thuộc tính này cho phép tính toán $H(m\mathbin\|m')$ cho bất kỳ được biết đến $m'$ bắt đầu từ $b_\ell$. Nó cũng đủ để biện minh cho điều đó $m\mapsto H(k\mathbin\|m)$ không phải là Mã xác thực tin nhắn an toàn với khóa $k$.

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