03 / HƯỚNG DẪN
Xác minh bản tải xuống và tính toàn vẹn tệp bằng checksum
Hash mật mã thực sự chứng minh gì, vì sao MD5 và SHA-1 ngày nay chỉ còn toàn vẹn, quy trình xác minh trình cài đặt từng bước, và cách băm văn bản nhạy cảm mà không tải lên.
Toàn vẹn, không phải xác thực
Hàm băm mật mã biến dữ liệu thành dấu vân tay có độ dài cố định. Thay đổi dù chỉ một bit gần như chắc chắn làm giá trị băm đổi; một giá trị băm hiện đại đáng tin là bằng chứng mạnh rằng hai bản sao có cùng byte.
- Bằng chứng toàn vẹnGiá trị SHA-256 khớp với bản băm từ nguồn đáng tin là bằng chứng mạnh rằng bản sao có cùng byte với tệp nhà phát hành đã băm; điều đó không chứng minh họ là ai.
- Xác thực tách riêngXác thực thì không: checksum in cạnh bản tải xuống chẳng nói gì về ai viết tệp — kẻ tấn công thay bản tải cũng thay được checksum in ra.
- Chữ ký là công cụ khácXác thực cần cơ chế khác: chữ ký xác minh với khóa bạn đã tin, hoặc checksum phát qua kênh bạn tin hơn chính bản tải.
MD5 và SHA-1 nay chỉ còn toàn vẹn
MD5 sinh digest 128 bit viết thành 32 ký tự hex; SHA-1 sinh 160 bit thành 40 ký tự. Cả hai nhanh và ổn để phát hiện hỏng hóc ngẫu nhiên — và cả hai đều có va chạm đã chứng minh công khai, nên không cái nào chống nổi kẻ tấn công chế tệp độc hại có digest trùng.
Quy tắc thực tế: khớp MD5 hay SHA-1 vẫn bắt được bản tải cụt hay đĩa hỏng, vì tai nạn không tính va chạm. Thứ các thuật toán đó không làm được nữa là minh oan tệp bạn có lý do nghi ngờ — phán quyết đó nay thuộc về SHA-256 trở lên.
- MD5 đã vỡVa chạm MD5 đã thực dụng nhiều năm: hai tệp khác nhau cùng digest MD5 có thể được xây có chủ đích, nên MD5 không còn phân biệt nổi tai nạn với tấn công.
- SHA-1 đã vỡSHA-1 đi cùng đường: va chạm đã chứng minh kết thúc đời nó như nguyên thủy bảo mật, và trình duyệt, nhà cấp chứng chỉ cùng host mã đều đã chuyển đi.
- SHA-2 là nềnHọ SHA-2 là nền hiện tại: SHA-256 (64 ký tự hex) là mặc định cho checksum tải xuống công bố, với SHA-224, SHA-384 và SHA-512 (56, 96 và 128 ký tự) là anh em cho ràng buộc khác nhau.
Xác minh trình cài đặt, từng bước
Cả bài kiểm tra mất chưa tới một phút và dùng công cụ sẵn có trên máy. Thứ tự quan trọng: lấy digest mong đợi từ trang chính thức của bên phát hành, băm bản sao cục bộ, và so sánh từng ký tự.
Không khớp không phải lúc nào cũng ác ý — tải cụt và proxy cache hỏng tệp thường xuyên — nhưng phản ứng giống nhau dù sao: tệp trượt xác minh, và bước đúng duy nhất là bản sao mới từ nguồn.
- Lấy giá trị mong đợiTìm checksum đã công bố trên trang tải xuống hoặc phát hành chính thức của nhà cung cấp — lý tưởng qua HTTPS trên tên miền bạn tự điều hướng tới, không phải mirror hay đoạn trích kết quả tìm kiếm.
- Băm cục bộBăm tệp đã tải cục bộ: shasum -a 256 trên macOS hoặc Linux, hoặc Get-FileHash trong PowerShell trên Windows. Cả hai chạy trên đĩa của bạn; không gì được tải lên.
- So sánh chính xácSo sánh toàn bộ digest từng ký tự, không phân biệt hoa thường. Một ký tự khác nghĩa là vứt tệp và lấy bản mới từ nguồn — đừng cài rồi hy vọng.
Băm văn bản nhạy cảm mà không tải lên
Nhiều kiểm tra thật là văn bản, không phải tệp: đoạn cấu hình, khóa giấy phép, mảnh token, giá trị đồng nghiệp đọc qua điện thoại. Dán chúng vào website ngẫu nhiên là trao chúng cho log của người khác, nên việc băm phải diễn ra cục bộ.
SHA-256 Hash & Verify phủ chuẩn 64 ký tự hiện hành cho checksum công bố. Xác minh ở đó là so sánh, không phải giải mã: văn bản của bạn được băm, và hai giá trị được so sánh trong trình duyệt.
- Cục bộ theo thiết kếVăn bản được băm dạng UTF-8 không chuẩn hóa (1 MiB). Tệp được băm theo byte gốc theo khối 1 MiB (giới hạn 256 MiB), kể cả tệp rỗng. Digest khớp không xác thực nguồn của nó; MD5 và SHA-1 không phù hợp kiểm tra toàn vẹn có đối kháng. Xử lý chạy trong Worker cục bộ có thể hủy với ngân sách thực thi 15 giây.
- So sánh tường minhChế độ Verify là so sánh tường minh: dán digest mong đợi và không gian làm việc báo khớp hay lệch, từ chối giá trị lỗi ngay từ đầu — đúng 32 ký tự hex cho MD5, 64 cho SHA-256.
- Một chiều theo cấu trúcBản băm không thể giải mã, nhưng dữ liệu ngắn hoặc dễ đoán có thể bị đoán rồi băm lại. Đừng dùng hàm băm đa dụng không có salt để bảo vệ mật khẩu hoặc bí mật ít entropy.
Đưa việc so sánh thành thói quen
Checksum chỉ hoạt động khi so sánh chúng là thói quen chứ không phải ý nghĩ sau. Vài kỷ luật nhỏ làm bài kiểm tra tin cậy mỗi lần.
Tạo hoặc so sánh digest hex từ văn bản UTF-8 hoặc byte tệp gốc. Xác minh so sánh digest của dữ liệu nhập đã chọn cục bộ; nó không giải mã digest hay xác thực nguồn.
- So sánh đầy đủSo sánh từng ký tự. Chỉ xem vài ký tự làm phép kiểm yếu đi; MD5 và SHA-1 còn có thể gặp va chạm trên toàn bộ giá trị băm dù đã so sánh đầy đủ.
- Ghi tên thuật toánGiữ tên thuật toán cạnh digest: 64 ký tự hex có thể đến từ vài thuật toán, và checksum không nhãn mời gọi phỏng đoán.
- Băm lại mỗi chặngBăm lại sau khi chuyển tệp qua USB, client đồng bộ, hay email; mỗi chặng là cơ hội hỏng mới, và digest đi kèm miễn phí.
Công bố checksum cho tệp của chính bạn
Nếu bạn phân phối tệp — bản build phát hành, bộ dữ liệu, công cụ nội bộ — hãy công bố checksum cạnh chúng. Chi phí một lệnh mỗi thành phẩm và cho mọi bên nhận cách xác minh toàn vẹn mà không cần liên hệ bạn.
SHA-512 Hash & Verify sinh digest 128 ký tự cục bộ khi bạn cần dạng dài hơn, và anh em SHA-224 cùng SHA-384 phủ phần còn lại của họ SHA-2 — cùng engine, cùng tab, cùng ranh giới.
- Tối thiểu SHA-256Công bố tối thiểu SHA-256; thêm SHA-512 cạnh khi người xem của bạn xác minh trên nền tảng nó chạy nhanh hơn, và gắn nhãn mỗi digest với thuật toán của nó.
- Cùng mức tin cậyPhục vụ checksum ở cùng mức tin cậy với chính bản tải, lý tưởng từ trang hoặc kho mà người dùng đã coi là chính thống.
- MD5 là nhãn legacyGiữ dòng MD5 chỉ như nhãn tương thích legacy, đánh dấu rõ là kiểm tra toàn vẹn cho hỏng hóc ngẫu nhiên — không bao giờ là xác minh bảo mật.
Xác minh là một phần của việc tin một công cụ.
Học cách kiểm tra đường dữ liệu của bất kỳ công cụ trực tuyến nào trước khi trao nó một tệp — cùng sự hoài nghi mà checksum đền đáp.