Để kiểm tra một tệp tải về, hãy tính mã băm SHA-256 của tệp bạn nhận được rồi so với giá trị SHA-256 mà nhà phát hành công bố. Nếu hai chuỗi giống hệt nhau, tệp của bạn đúng là tệp đã được băm: không bị cắt cụt, không bị hỏng, không bị đánh tráo trên đường. Chỉ cần khác một ký tự là đừng dùng tệp đó. Bạn có thể tính mã băm bằng một lệnh trên máy hoặc ngay trong trình duyệt. Bài này chỉ cả hai cách, cùng những lỗi hay gây báo động giả.
Mã băm chứng minh điều gì, và không chứng minh điều gì
Hàm băm đọc một tệp dài bất kỳ và trả về một chuỗi ngắn có độ dài cố định. SHA-256 trả về 64 ký tự thập lục phân. Chỉ cần đổi một bit của tệp, chuỗi đó thay đổi hoàn toàn. Nhờ vậy nó là một dấu vân tay: hai dấu vân tay giống nhau nghĩa là hai tệp giống nhau, xét mọi mục đích thực tế.
Vì thế một mã băm khớp chứng minh tính toàn vẹn: tệp bạn đang giữ giống hệt tệp đã dùng để tạo dấu vân tay. Nó không chứng minh tệp an toàn, và không chứng minh ai là người tạo ra tệp. Cả hai giới hạn này đều quan trọng ở các phần dưới.
Bước 1: tìm mã băm được công bố
Trang tải về tốt sẽ ghi mã băm cạnh tệp, thường là một dòng chữ, một tệp SHA256SUMS nhỏ hoặc một bảng. Hãy sao chép nó từ trang. Nếu nhà phát hành chỉ cung cấp MD5 hoặc SHA-1, bạn vẫn dùng được để phát hiện hỏng hóc ngẫu nhiên, nhưng hãy xem phần nói về các thuật toán đó.
Bước 2: tính mã băm của tệp
Trong trình duyệt
Mở công cụ kiểm tra mã băm, ở thẻ Tệp rồi thả tệp vào khung. Trang đọc tệp từ ổ đĩa và tính SHA-256, SHA-1, SHA-384, SHA-512 và MD5 ngay trên thiết bị của bạn. Tệp không bị tải lên. Dán giá trị đã công bố vào ô "So sánh với mã băm". Công cụ nhận ra thuật toán từ độ dài (64 ký tự là SHA-256) và hiện "Khớp" hoặc "Không khớp". Chữ hoa, dấu cách và dấu hai chấm không ảnh hưởng, và bạn có thể dán cả dòng mà các công cụ dòng lệnh in ra.
Chấp nhận tệp đến 4 GB. Tệp trên 100 MB được đọc từng lát một megabyte kèm thanh tiến độ và nút Hủy, chậm hơn, và mỗi thuật toán còn được chọn lại tốn thêm thời gian, nên hãy bỏ chọn những cái bạn không cần.
Bằng lệnh
Trên macOS:
shasum -a 256 ~/Downloads/installer.isoTrên Linux:
sha256sum installer.isoTrên Windows, trong PowerShell:
Get-FileHash .\installer.iso -Algorithm SHA256Hoặc trong Command Prompt cũ hơn:
certutil -hashfile installer.iso SHA256Lệnh trên macOS và Linux in ra mã băm, hai dấu cách rồi tên tệp. PowerShell in một bảng nhỏ có cột Hash viết hoa. Đó vẫn là cùng một giá trị: chữ hoa hay thường không quan trọng. Với tệp rất lớn, dùng lệnh nhanh hơn dùng trình duyệt.
Bước 3: so sánh, đừng nhìn bằng mắt
Hãy so cả chuỗi. So vài ký tự đầu và cuối là thói quen thất bại đúng vào lúc có người cố lừa bạn. Dán giá trị công bố vào công cụ, hoặc để chính lệnh làm việc so sánh. Khi trang tải về có kèm tệp mã băm, lệnh sha256sum -c SHA256SUMS trên Linux, hoặc shasum -a 256 -c SHA256SUMS trên macOS, sẽ đọc từng dòng và in installer.iso: OK hoặc installer.iso: FAILED cho mỗi tệp. Trên Linux, thêm --ignore-missing để bỏ qua những tệp bạn không tải.
Một phép thử bạn làm được trong một phút
SHA-256 của ba chữ cái abc là:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adGõ abc ở thẻ Văn bản của công cụ và bạn sẽ thấy đúng giá trị đó. Giờ chạy printf 'abc' | shasum -a 256 trong terminal: cùng một giá trị. Nếu chạy echo abc | shasum -a 256 thì ra edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb, vì echo thêm một dấu xuống dòng và văn bản giờ có bốn ký tự. Đó là lý do phổ biến nhất khiến hai người ra hai mã băm khác nhau cho thứ trông như cùng một đoạn chữ. Với tệp cũng vậy: một tệp văn bản lưu có và không có dấu xuống dòng cuối cho hai mã băm khác nhau.
Vì sao MD5 và SHA-1 không dùng cho bảo mật
MD5 và SHA-1 đã bị phá ở một điểm cụ thể: có thể cố ý tạo ra hai tệp khác nhau có cùng mã băm. Va chạm của MD5 đã được chứng minh từ năm 2004, và va chạm SHA-1 công khai đầu tiên, hai tệp PDF khác nhau có cùng mã băm, được công bố năm 2017. Nghĩa là mã băm của các thuật toán này không bảo vệ bạn trước người đã chuẩn bị sẵn tệp mà bạn sắp kiểm tra.
Chúng vẫn phát hiện được hỏng hóc ngẫu nhiên, chẳng hạn tải dở dang hay một bit bị lật do ổ đĩa lỗi, nên một trang chỉ công bố MD5 không phải đang nói dối bạn. Nếu được chọn, hãy so bằng SHA-256. Vì lý do đó, công cụ thêm một ghi chú ngắn dưới kết quả mỗi khi MD5 hoặc SHA-1 nằm trong số đó.
Nguồn của mã băm quan trọng hơn thuật toán
Nếu kẻ tấn công thay được tệp trên máy chủ tải về, họ thường thay được cả mã băm trên cùng trang. Khi đó mọi thứ đều khớp mà chẳng nói lên điều gì. Hãy ưu tiên mã băm đến với bạn qua một đường khác: một thông báo có chữ ký, bản ghi của trình quản lý gói phần mềm, hoặc giá trị do chính nhà phát hành đọc cho bạn. Với phần mềm có chữ ký số, hãy kiểm tra cả chữ ký, vì chữ ký chứng minh ai làm ra tệp còn mã băm thì không.
Nếu không khớp
- Tải lại, tốt nhất từ chính trang chính thức. Tải dở dang là nguyên nhân thường gặp nhất. Hãy so cả dung lượng tệp.
- Kiểm tra thuật toán. Giá trị 64 ký tự là SHA-256, 40 là SHA-1, 32 là MD5.
- Băm đúng thứ cần băm. Giá trị công bố là của đúng tệp được cung cấp, ví dụ tệp nén, chứ không phải các tệp bạn đã giải nén ra.
- Kiểm tra phiên bản và nền tảng. Mã băm của bản Windows 64 bit không khớp với bản macOS.
- Bỏ ký tự thừa. Một dấu xuống dòng hay dấu cách cuối dòng sinh ra khi sao chép từ tài liệu sẽ được tính khi bạn băm văn bản.
Nếu tải lại từ nguồn chính thức mà vẫn không khớp, đừng chạy tệp đó. Nếu hai tệp văn bản lẽ ra giống nhau mà mã băm khác nhau, hãy so sánh chúng từng dòng để xem cái gì đã đổi.
Danh sách kiểm tra ngắn
Lấy mã băm từ nhà phát hành, tính SHA-256 của tệp bạn tải, so cả chuỗi, và coi mọi trường hợp khác là thất bại. Chỉ dùng MD5 và SHA-1 để phát hiện hỏng hóc ngẫu nhiên, và hãy kiểm tra chữ ký khi có.