Điểm:1

khả năng xảy ra xung đột hàm băm trong tệp văn bản cao đến mức nào?

lá cờ in

Ví dụ: giả sử tôi đã tải xuống "những cuộc phiêu lưu của tom sawyer" từ gutenberg ở định dạng tệp .txt và lưu nó vào ổ USB của tôi.

Và như bạn có thể thấy, ổ USB không phải là thiết bị lý tưởng để lưu trữ dữ liệu lâu dài. Nhưng nếu tôi khăng khăng sử dụng nó, có khả năng bất kỳ tệp nào trong bộ lưu trữ của tôi cuối cùng sẽ bị hỏng sau một thời gian dài mà không bật nguồn.

Vì vậy, những gì tôi sẽ làm bây giờ là lưu hàm băm của tệp khi lưu lần đầu tiên và sau đó tôi có thể dễ dàng so sánh giá trị băm hiện tại với giá trị khi tôi lưu nó lần đầu. nếu hai cái khác nhau, thì rất có thể nó đã bị hỏng (như những từ vô nghĩa được thêm vào hoặc một số phần của tài liệu bị thiếu). Tôi dự định làm điều này cho tất cả các tệp quan trọng mà tôi lưu trong bộ lưu trữ.

Nhưng vấn đề là, đôi khi hàm băm sẽ giống hệt nhau ngay cả khi có một số thay đổi nhỏ vì số lượng đầu ra của hàm băm sẽ luôn nhỏ hơn dữ liệu đầu vào. Tôi có nên lo lắng về va chạm đối với trường hợp sử dụng của mình không? Còn các loại tệp khác bao gồm pdf, jpg, exe, zip, v.v. thì sao? Những thứ này cũng dễ bị va chạm băm phải không?

Và cuối cùng, tôi biết có rất nhiều thuật toán băm cho một tệp từ crc32 đến md5 đến sha1, v.v. và với mục đích của tôi (chỉ kiểm tra tính hợp lệ của dữ liệu), bạn sẽ đề xuất điều gì và tại sao?

Cảm ơn bạn trước!

Điểm:2
lá cờ ng

Khi sử dụng một $n$-bit băm, xác suất mà một tình cờ thay đổi không bị phát hiện là về $2^{-n}$ (đối với các giá trị băm thậm chí đáp ứng nhẹ mục tiêu thiết kế của chúng).

Nếu một người đang sử dụng kỹ thuật này một lần mỗi giây trong 100 năm, với hàm băm 128 bit như MD5, thì xác suất đó là $36524\times86400\times2^{-128}\approx2^{31.6-128}=2^{-96.4}$.

Chúng tôi biết 44 miệng núi lửa trên trái đất do va chạm với một thiên thể đủ lớn để giáng một đòn mạnh vào nền văn minh hiện tại của chúng ta, xảy ra trong vòng 2,3 năm qua. Do đó, xác suất của một sự kiện phá vỡ nền văn minh trong khung thời gian 100 năm này là ít nhất $44\times100/(2,3\times10^9)\approx2^{-19}$ (và tôi lạc quan ở đây: sự hủy diệt hạt nhân nhân tạo được cho là có thể xảy ra hơn). Do đó, không có ích gì khi bận tâm về xác suất chỉ $2^{-96.4}$.


Nhưng trong mật mã, chúng tôi xem xét đối thủ chủ động cố gắng đánh bại chúng tôi. Nếu chúng tôi sử dụng hàm băm 128 bit (chẳng hạn như MD5) và tạo nhiều tệp (giả sử $2^{31.6}$ như trên, hàm băm phù hợp với thẻ nhớ USB 64 GB) và có những đối thủ mạnh với loại tài nguyên bị lãng phí khi khai thác bitcoin¹, thì khả năng họ tìm thấy một tệp có cùng hàm băm như tệp của chúng ta trở nên khá lớn (mặc dù không phải là vấn đề Tôi sẽ bị làm phiền).

Mối nguy hiểm thực sự và tức thời sẽ xảy ra nếu chúng ta cho rằng các đối thủ quản lý để xâm nhập vào phần mềm mà chúng ta sử dụng để lưu các tệp (chẳng hạn như PDF) của mình và chúng ta đủ ngớ ngẩn để sử dụng MD5 hoặc SHA-1, thứ mà khả năng chống va chạm tiền tố được chọn đã bị hỏng. Giờ đây, các đối thủ có thể dễ dàng tạo các tệp có cùng MD5 hoặc SHA-1 như bất kỳ tệp nào của chúng tôi, trông chính xác như cách đối thủ thấy phù hợp khi xem.


Đối với mục đích của tôi (chỉ kiểm tra tính hợp lệ của dữ liệu), bạn sẽ đề xuất điều gì?

Bỏ qua khả năng sửa đổi đối thủ là lạc đề trong một nhóm tiền điện tử. Nếu chúng tôi làm điều này, CRC là đủ. 64-bit là tốt. Về điều duy nhất cần lo sợ là giới truyền thông có thể sử dụng CRC trong nội bộ và họ can thiệp. Đối với việc thiếu thông tin, việc chọn CRC nguyên thủy 64 bit ngẫu nhiên có ý nghĩa.

Quay lại với mật mã học và đó là mô hình đối lập: nó nên được sử dụng các giá trị băm không bị phá vỡ giống như các giá trị băm của họ SHA-2 hoặc SHA-3. Thiếu một bước đột phá mà ít người mong đợi, SHA-256 có khả năng bảo mật đầy đủ trong ít nhất một thập kỷ, SHA-512 mãi mãi (ở quy mô con người) ngay cả khi chúng ta cho rằng chúng ta đã từng nhận được Máy tính lượng tử liên quan đến mật mã.


¹ Tôi đang nói về tổng năng lượng điện và các mạch tích hợp bị lãng phí. Tuy nhiên, phần lớn trong số đó sẽ không dành cho việc băm song song ồ ạt với ASIC như trong khai thác bitcoin. Nó sẽ dành cho bộ nhớ nhanh được tổ chức để tìm kiếm, vì việc tính toán các hàm băm MD5 có chi phí thấp so với việc khớp chúng với $2^{\approx31,6}$ mục tiêu băm.

lá cờ in
Cảm ơn bạn rất nhiều vì câu trả lời chi tiết của bạn! Nhân tiện, tôi sẽ không bận tâm quá nhiều về bảo mật vì hầu hết các tệp của tôi là nội dung dành cho mục đích tham khảo hoặc giải trí. Vì vậy, đối với ví dụ trên, nếu bất kỳ từ nào được thêm, bớt hoặc thay thế bằng một từ khác trong cuốn tiểu thuyết bìa mềm dài 300 trang do lỗi tệp, thì khả năng từ đó có giá trị băm giống hệt như từ gốc là không đáng kể đến mức giành được giải Powerball 3 lần liên tiếp hoặc thậm chí thấp hơn, phải không? Cảm ơn bạn một lần nữa vì sự an tâm :) Câu trả lời được chấp nhận.
fgrieu avatar
lá cờ ng
@tadkov: vâng, với hàm băm 128 bit, tỷ lệ cược rằng bất kỳ tệp nào được băm ở tốc độ 1 mỗi giây trong 100 năm _accidentally_ bị hỏng mà không bị phát hiện sẽ thấp hơn (theo hệ số 4000) so với việc giành được ba lần trong ba lần đặt cượ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.