2010-10-26 29 views
9

Hàm băm phù hợp nhất để kiểm tra tính toàn vẹn của tập tin (tổng kiểm tra) để phát hiện tham nhũng là gì?Một hàm băm phù hợp để phát hiện lỗi dữ liệu/kiểm tra tính toàn vẹn của dữ liệu?

tôi cần phải xem xét những điều sau đây:

phạm vi rộng của kích thước tập tin (1 kb đến 10GB +)
Rất nhiều loại tập tin khác nhau
Bộ sưu tập lớn các tập tin (+/- 100 TB và phát triển)

Các tệp lớn hơn có yêu cầu kích thước tiêu hóa cao hơn (SHA-1 so với SHA 512) không?

Tôi thấy rằng nhóm SHA được gọi là hàm băm mật mã. Chúng có phù hợp với mục đích "sử dụng chung" chẳng hạn như phát hiện tham nhũng tệp không? Sẽ giống như MD5 hay Tiger tốt hơn?

Nếu giả mạo gây hại cũng là một mối quan ngại, câu trả lời của bạn có thay đổi w.r.t hàm băm phù hợp nhất không?

Thư viện bên ngoài không phải là một tùy chọn, chỉ những gì có sẵn trên Win XP SP3 +.

Hiệu suất tự nhiên cũng đáng quan tâm.

(Vui lòng giải thích thuật ngữ của tôi nếu nó không chính xác, kiến ​​thức của tôi về chủ đề này rất hạn chế).

Trả lời

15

Bất kỳ hàm băm mật mã nào, ngay cả một hàm bẻ gãy, sẽ được sử dụng để phát hiện tình cờ tham nhũng. Hàm băm đã cho có thể được xác định chỉ cho các đầu vào tối đa một số giới hạn, nhưng đối với tất cả hàm băm chuẩn giới hạn ít nhất là 2 bit, tức là khoảng 2 triệu terabyte. Đó là khá lớn.

Loại tệp không có bất kỳ tỷ lệ nào. Hàm băm hoạt động trên chuỗi các bit (hoặc byte) bất kể những bit đó đại diện cho những gì.

Hiệu suất hàm băm không có khả năng là vấn đề. Ngay cả các hàm băm "chậm" (ví dụ SHA-256) sẽ chạy nhanh hơn trên PC thông thường so với đĩa cứng: đọc tệp sẽ là nút cổ chai, không băm nhỏ (máy tính 2,4 GHz có thể băm dữ liệu với SHA-512 ở tốc độ gần 200 MB/s, sử dụng một lõi đơn). Nếu hiệu suất hàm băm là một vấn đề, thì CPU của bạn rất yếu, hoặc đĩa của bạn là SSD nhanh (và nếu bạn có 100 TB SSD nhanh thì tôi là loại ghen tị). Trong trường hợp đó, một số chức năng băm nhanh hơn một chút, MD5 là một trong những chức năng "nhanh" (nhưng MD4 nhanh hơn và đơn giản là mã của nó có thể được bao gồm trong bất kỳ ứng dụng nào mà không gặp rắc rối nhiều).

Nếu giả mạo nguy hiểm là một mối quan tâm, thì điều này sẽ trở thành vấn đề bảo mật và điều đó phức tạp hơn. Trước tiên, bạn sẽ thích sử dụng một trong các hàm băm mật mã không gián đoạn, do đó SHA-256 hoặc SHA-512, không phải MD4, MD5 hoặc SHA-1 (các điểm yếu được tìm thấy trong MD4, MD5 và SHA-1 có thể không áp dụng cho một tình hình, nhưng đây là một vấn đề tinh tế và tốt hơn là chơi an toàn). Sau đó, băm có thể hoặc có thể không đủ, tùy thuộc vào việc kẻ tấn công có quyền truy cập vào kết quả băm hay không. Có thể, bạn có thể cần phải sử dụng một MAC, có thể được xem như là một loại băm có khóa. HMAC là một cách tiêu chuẩn để xây dựng một MAC ra khỏi hàm băm. Có MAC không dựa trên băm khác. Hơn nữa, MAC sử dụng khóa "đối xứng" bí mật, không phù hợp nếu bạn muốn một số người có thể xác minh tính toàn vẹn của tệp mà không thể thực hiện các thay đổi im lặng; trong trường hợp đó, bạn sẽ phải sử dụng chữ ký số. Tóm lại, trong bối cảnh bảo mật, bạn cần một phân tích bảo mật toàn diện với một mô hình tấn công được xác định rõ ràng.

+0

Câu trả lời hay! Cám ơn rất nhiều. – links77

Các vấn đề liên quan