Tất cả bài viết

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Ở Việt Nam, việc tải APK từ các trang web bên thứ ba hoặc kênh Telegram/Zalo thay vì Google Play Store khá phổ biến, đặc biệt với các ứng dụng ngân hàng hoặc dịch vụ công không có sẵn ở kho ứng dụng chính thức. Đây cũng là kênh phát tán chính của các APK giả mạo ứng dụng ngân hàng hoặc VNeID để đánh cắp thông tin đăng nhập. So khớp checksum do nguồn chính thức công bố với tệp đã tải là cách đơn giản để phát hiện việc tráo đổi này trước khi cài đặt.

Checksum phát hiện hỏng hóc hoặc bị can thiệp như thế nào

Do hiệu ứng thác lũ của hàm băm, dù là hỏng ngẫu nhiên trong quá trình truyền hay bị chỉnh sửa có chủ đích, chỉ một byte thay đổi cũng khiến hash tính được của tệp thay đổi hoàn toàn. Vì vậy, bất kỳ sự khác biệt nào giữa checksum kỳ vọng và checksum tính được đều có nghĩa rõ ràng rằng tệp khác với bản gốc — từng byte một.

Những gì checksum không đảm bảo

Hai hash trùng khớp chỉ xác nhận rằng tệp giống hệt tệp đã dùng để tính hash công bố — không xác nhận bản gốc đó an toàn. Nếu chính trang web giả mạo công bố cả APK độc hại lẫn checksum "khớp" do nó tự tạo, việc kiểm tra sẽ không phát hiện được gì — vì vậy hash tham chiếu cần lấy từ trang chính thức của ngân hàng hay cơ quan, không phải từ nguồn không chính thức nơi tệp nghi ngờ được tải về.

Checksum so với chữ ký số

Khác với checksum, chữ ký số được tạo bằng khóa riêng và chỉ có thể xác minh bằng khóa công khai tương ứng. Google Play tự động xác minh chữ ký này khi cài đặt; khi cài APK thủ công (sideload), lớp bảo vệ đó biến mất, và việc so khớp checksum thủ công trở thành bước kiểm tra duy nhất còn lại.

Vì sao cần điều này

  • Xác nhận một APK ngân hàng hoặc dịch vụ công tải ngoài kho ứng dụng chính thức không bị chỉnh sửa.
  • So sánh nhanh hai tệp lớn mà không cần đối chiếu từng byte.
  • Xác minh bản sao lưu của một tệp giống hệt bản gốc.

Vì sao đôi khi dùng CRC32 thay vì SHA-256

CRC32 nhanh hơn nhiều so với các hàm băm mật mã học, nhưng lại rất dễ bị giả mạo có chủ đích — điều này không thành vấn đề khi phát hiện hỏng dữ liệu ngẫu nhiên trong quá trình truyền, nhưng lại không phù hợp để bảo vệ trước kẻ tấn công muốn thay thế tệp một cách âm thầm. Vì vậy CRC32 vẫn còn xuất hiện trong các trình nén và giao thức mạng để kiểm tra lỗi, chứ không phải ở những nơi cần đến bảo mật thực sự.

Dùng thử công cụ