Hướng dẫn Kiểm Tra Tính Toàn Vẹn của Tệp Tải Xuống trên Linux và Windows

Hướng dẫn Kiểm Tra Tính Toàn Vẹn của Tệp Tải Xuống trên Linux và Windows

Có lẽ bạn đã từng tải về một số phần mềm mã nguồn mở, chẳng hạn như một tệp ISO của bản phân phối linux, và bên cạnh đường dẫn tải về lại có một liên kết để tải checksum của tệp tin đó. Bạn có bao giờ thắc mắc liên kết checksum đó để làm gì không? Checksum này được sử dụng để xác minh tính toàn vẹn của tệp tin bạn vừa tải xuống.

Vào ngày 20 tháng 2 năm 2016, trang web của Linux Mint – một bản phân phối linux phổ biến – đã bị tấn công và tệp ISO dùng để cài đặt distro bị can thiệp. Trước khi tệp ISO bị can thiệp được phát hiện, nhiều người đã tải về và có thể đã cài đặt một phiên bản Linux Mint có chứa một backdoor.

Việc cài đặt nguy hiểm này có thể đã được ngăn chặn ở cấp độ người dùng nếu những cá nhân tải về tệp ISO bị thay đổi thực hiện việc xác minh tệp tin để kiểm tra xem checksum của tệp tải về có trùng khớp với tệp gốc hay không. Tệp ISO bị tấn công có một checksum hoàn toàn khác so với tệp ISO gốc.

Mặc dù việc xác minh tệp tin có thể cho thấy tệp tin đã bị can thiệp, nhưng nó thường hữu ích hơn khi thông báo cho người dùng rằng tệp tin tải về không hoàn toàn chính xác hoặc đã bị thay đổi trong quá trình tải xuống. Nếu một gói TCP bị mất trong quá trình tải, tệp tin bạn tải về có thể chỉ lệch một chút, và việc xác minh tệp tin sẽ cho bạn biết rằng tệp tải về khác với tệp gốc trên máy chủ nguồn.

Sau đây, DataOnline sẽ giúp bạn tìm hiểu xem việc xác minh tệp tin là gì, tại sao nó quan trọng, và cách thực hiện trên các hệ điều hành khác nhau sử dụng các công cụ dòng lệnh.

Điều kiện tiên quyết

Trong bài viết này, bạn sẽ sử dụng các công cụ dòng lệnh để xác minh tệp tin được tích hợp sẵn trong hầu hết các hệ điều hành chính.

Bạn cần có một tệp tin để xác minh, cũng như các checksum MD5 và SHA1 của tệp đó.

Chúng ta sẽ sử dụng một tệp ISO cài đặt Ubuntu cho việc xác minh. Hãy tải về tệp Ubuntu Minimal CD ISO cho PC 64 bit (amd64, x86_64). Trong khi tải về, lưu ý các giá trị checksum MD5 và SHA1 bên cạnh đường tải. Bạn sẽ sử dụng các checksum này xuyên suốt hướng dẫn.

Nguyên lý xác minh tệp tin

Xác minh tệp tin, hay còn gọi là băm (hashing), là quá trình kiểm tra xem tệp tin trên máy của bạn có giống hệt tệp gốc không… Khi bạn băm một tệp, bạn sẽ nhận được một checksum, là một chuỗi ký tự chữ và số ngẫu nhiên có độ dài cố định. Quá trình băm tệp không mã hóa tệp và bạn không thể dùng một checksum nào đó để “giải mã” ngược lại tệp gốc qua thuật toán.

Quá trình tạo ra một checksum thường được gọi là hàm mật mã một chiều. Khi bạn thực hiện băm trên một tệp, nội dung của tệp được “tóm tắt” thành một chuỗi các ký tự ngẫu nhiên. Ví dụ, giả sử bạn có một tài liệu chứa 1000 ký tự. Khi tệp được băm bằng thuật toán MD5, checksum thu được sẽ là 32 ký tự ngẫu nhiên. Nếu bạn băm một tệp dài 2000 ký tự, checksum MD5 thu được vẫn chỉ là 32 ký tự. Ngay cả khi tệp gốc chỉ có 10 ký tự, checksum MD5 cũng vẫn là 32 ký tự ngẫu nhiên.

Mỗi lần bạn thực hiện băm trên cùng một tệp, bạn sẽ luôn nhận được cùng một chuỗi ký tự trong checksum, miễn là không có bất kỳ bit nào của tệp bị thay đổi. Nhưng nếu chỉ có một thay đổi nhỏ, ví dụ như thêm một khoảng trắng, checksum sẽ hoàn toàn khác.

Có hai loại checksum thường gặp khi xác minh tệp tin, đó là MD5 và SHA.

Thuật toán MD5 nhận được nhiều chỉ trích trong thế giới mã hóa vì dễ bị tấn công, nhưng điều này không gây ảnh hưởng đối với việc xác minh tệp tin. Khi nói đến việc xác minh tính toàn vẹn của tệp tin, điểm yếu của công cụ trong mã hóa không quan trọng. Điều này có lợi cho chúng ta bởi vì MD5 là một chuẩn đã được phát triển và thực hiện băm nhanh hơn so với các phương pháp khác.

Gần đây, việc sử dụng thuật toán băm SHA tăng lên vì nó được dùng trong một số hệ thống mã hóa hiện đại. Tuy nhiên, không giống như MD5, SHA có nhiều phiên bản khác nhau và điều quan trọng là sử dụng phiên bản đúng khi kiểm tra. Phiên bản có thể được nhận diện bằng một số như 1, 2, 3 hoặc bằng số bit của SHA như 256, 384 hoặc 512. Checksum bạn sử dụng nên chỉ định phiên bản của SHA. Nếu trang web chỉ ghi nhãn là SHA, không có số kèm theo, thì có thể cho rằng đó là SHA1.

Với mục đích xác minh tệp tin, cả hai phương pháp đều hợp lệ. Mặc dù thuật toán khác nhau, cả hai đều trả về một chuỗi ngẫu nhiên có độ dài cố định, mặc dù băm MD5 ngắn hơn so với các băm SHA.

Lưu ý: Đôi khi, các chữ ký PGP/GPG cũng được cung cấp cho mục đích xác minh tệp tin. Các loại chữ ký này không phổ biến và phức tạp hơn khi kiểm tra. Chúng đòi hỏi bạn phải tải checksum, khóa công khai của trang web và đã thiết lập gpg trên hệ thống để thực hiện kiểm tra. Các bước đó vượt ngoài phạm vi của hướng dẫn này.

Việc kiểm tra hash của tệp tin tải về mang lại hai đảm bảo quan trọng. Thứ nhất, với một checksum khớp, bạn có thể chắc chắn rằng tệp tin bạn tải về là giống hệt tệp gốc và không bị thay đổi bởi bên thứ ba. Thứ hai, bạn biết rằng tệp tin không bị hỏng hoặc thay đổi trong quá trình truyền tải. Cả hai trường hợp này đều quan trọng vì nếu xảy ra, tệp tải về có thể gây hại cho máy của bạn hoặc thậm chí không hoạt động được.

Giờ thì, khi bạn đã hiểu checksum là gì và tại sao nên kiểm tra tệp, hãy cùng xem cách thực hiện trên hệ điều hành của bạn. Chúng ta sẽ bắt đầu với Linux.

Cách kiểm tra File đã tải trên Linux

Hầu hết các bản phân phối Linux đều có các công cụ dòng lệnh cho mỗi thuật toán băm. Tên của công cụ thường có dạng là “HASH-TYPE” cộng với từ “sum”. Vậy để băm với MD5, tên chương trình là md5sum. Để băm với SHA 256, lệnh là sha256sum. Nếu bạn không chắc chắn tên chính xác, hãy gõ tên thuật toán rồi nhấn tab hai lần, hầu hết các distro sẽ hiển thị tất cả các lệnh bắt đầu bằng tên thuật toán đó. Dưới đây là một vài ví dụ phổ biến.

Chúng ta sẽ thực hiện kiểm tra đầu tiên bằng thuật toán băm MD5. Thực thi lệnh md5sum và truyền đường dẫn đến tệp tin bạn muốn băm:

md5sum mini.iso

Kết quả sẽ trông như sau:

Output

8388f7232b400bdc80279668847f90da  mini.iso

Chuỗi ký tự ngẫu nhiên, bắt đầu với ‘8388f’, là checksum, và đây là giá trị bạn cần so sánh với checksum được cung cấp trên trang tải về.

Vì bất kỳ thay đổi nào trên tệp sẽ dẫn đến checksum hoàn toàn khác, để tiết kiệm thời gian chỉ cần kiểm tra vài ký tự đầu và cuối có khớp với nguồn hay không, thay vì so sánh từng ký tự.

Ví dụ, nếu bạn muốn nhanh chóng xác minh rằng checksum của mini.iso khớp, hãy kiểm tra rằng cả hai checksum đều bắt đầu với ‘8388f’ và kết thúc với ‘f90da’. Nếu cả hai khớp, thì rất có khả năng (gần như 100%) hash đầy đủ là giống nhau.

Nếu bạn muốn chắc chắn 100%, hãy sao chép và dán checksum từ trang web bên dưới kết quả kiểm tra tại máy cục bộ để xem từng ký tự có khớp nhau hay không:

Output

8388f7232b400bdc80279668847f90da  mini.iso
8388f7232b400bdc80279668847f90da

Bây giờ, hãy xem cách kiểm tra các hash SHA. Các lệnh băm SHA phổ biến nhất là sha1sum và sha256sum. Thực hiện lệnh sha1sum bằng cách truyền đường dẫn đến tệp tin:

sha1sum mini.iso

Kết quả sẽ trông tương tự như sau:

Output

cce936c1f9d1448c7d8f74b76b66f42eb4f93d4a  mini.iso

So sánh giá trị thu được với giá trị trên trang web để xác minh chúng khớp.

Tiếp theo, hãy xem cách xác minh tệp trên macOS.

Cách kiểm tra File đã tải trên macOS

Khác với Linux, macOS chỉ có hai lệnh băm (md5 và shasum), thay vì một cho mỗi thuật toán. Tuy nhiên, chúng ta vẫn có thể thực hiện tất cả các kiểm tra cần thiết với chỉ hai công cụ này.

Mặc dù có ứng dụng khác nhau và hệ điều hành khác nhau, hash thu được từ các công cụ này là giống nhau trên mọi OS.

Vì md5 là một thuật toán độc lập, nó có lệnh riêng trên macOS. Thực hiện lệnh md5, truyền đường dẫn đến tệp tin bạn muốn kiểm tra:

md5 mini.iso

Kết quả sẽ trông như sau:

Output

MD5 (mini.iso) = 8388f7232b400bdc80279668847f90da

Như bạn thấy, kết quả trên macOS không hoàn toàn giống với kết quả trên Linux, nhưng nó vẫn hiển thị tên tệp và chuỗi 32 ký tự ngẫu nhiên. So sánh các ký tự với checksum MD5 gốc và đảm bảo rằng chúng khớp.

Bây giờ, hãy xem cách xác minh các checksum SHA. macOS có một tiện ích dùng để thực hiện bất kỳ kiểm tra SHA nào có tên là shasum. Khi chạy, bạn cung cấp loại kiểm tra SHA bạn cần bằng một đối số.

Thực hiện lệnh sau, chỉ định SHA1 bằng cách sử dụng cờ -a:

shasum -a 1 mini.iso

Kết quả sẽ trông như sau:

Output

cce936c1f9d1448c7d8f74b76b66f42eb4f93d4a  mini.iso

So sánh giá trị này với hash SHA1 gốc của tệp. Nếu chúng không khớp, bạn nên tải lại tệp và kiểm tra hash một lần nữa.

Nếu bạn cần thực hiện kiểm tra SHA 256, lệnh sẽ là:

shasum -a 256 mini.iso

Nếu không chỉ định loại, mặc định sẽ là SHA1.

Tiếp theo, hãy xem cách xác minh tệp trên Windows.

Cách kiểm tra File đã tải trên Windows

Windows 7 và các phiên bản sau đó bao gồm ứng dụng certutil có thể xử lý tất cả các nhu cầu băm của chúng ta. Kết quả trên Windows trông rất khác so với Linux và macOS, nhưng checksum vẫn giống nhau và hợp lệ.

Cả hai ví dụ sau đây sử dụng PowerShell.
Định dạng của lệnh là:

certutil -hashfile path/to/file ALGORITHM

Lệnh certutil không phân biệt chữ hoa chữ thường nên CertUtilcertUtil hay certutil đều được chấp nhận. Tuy nhiên, thuật toán thì có phân biệt chữ hoa chữ thường, nghĩa là md5 sẽ không hoạt động, bạn cần gõ MD5.

Để xác minh hash MD5 của tệp mini.iso, thực thi lệnh:

certutil -hashfile mini.iso MD5

Kết quả sẽ trông như sau:

Output

MD5 hash of file mini.iso:
8388f7232b400bdc80279668847f90da
CertUtil: -hashfile command completed successfully.

Đối với thuật toán SHA, ta sẽ thực hiện lệnh tương tự, nhưng thay MD5 bằng SHA1. Số sau SHA chỉ định phiên bản hoặc số lần thực hiện của SHA. Do đó, ta sử dụng SHA hoặc SHA1 cho SHA1, hoặc SHA256 nếu cần thuật toán SHA 256.

certutil -hashfile mini.iso SHA1

Kết quả sẽ trông như sau:

Output

SHA1 hash of mini.iso:
cce936c1f9d1448c7d8f74b76b66f42eb4f93d4a
CertUtil: -hashfile command completed successfully.

So sánh hash thu được với hash trên trang tải để đảm bảo chúng khớp.

Kết luận

Dù bạn kiểm tra tệp tải về để đảm bảo rằng nó không bị hỏng trong quá trình tải hoặc xác minh rằng không có ai ác ý can thiệp vào máy chủ tải, thời gian kiểm tra hash của tệp hoàn toàn xứng đáng với công sức bỏ ra.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *