Cách xác minh tệp đã tải xuống
Có thể bạn đã download một số phần mềm open-souce , chẳng hạn như ISO phân phối Linux và bên cạnh liên kết download là liên kết download tổng kiểm tra của file . Bạn có bao giờ tự hỏi liên kết kiểm tra đó dùng để làm gì không? Tổng kiểm tra đó được sử dụng để xác minh tính toàn vẹn của file bạn vừa download .Vào ngày 20 tháng 2 năm 2016, trang web dành cho Linux Mint, một bản phân phối Linux phổ biến, đã bị tấn công và ISO được sử dụng để cài đặt bản phân phối đã bị xâm phạm. Trước khi phát hiện ra ISO bị xâm phạm, nhiều người đã download và có thể cài đặt version Linux Mint có cửa hậu được cài sẵn.
Việc cài đặt nguy hiểm này có thể tránh được ở cấp độ user nếu những cá nhân download ISO đã thay đổi thực hiện xác minh file để xem liệu những gì họ download có tổng kiểm tra giống như file root hay không. ISO bị tấn công có tổng kiểm tra hoàn toàn khác với ISO root .
Mặc dù xác minh file có thể cho biết file có thể đã bị tấn công, nhưng nó thường hữu ích hơn trong việc cho user thấy rằng file họ download không hoàn toàn đúng hoặc đã bị thay đổi trong quá trình download . Nếu gói TCP bị rơi trong quá trình download , file bạn đã download có thể chỉ là một phần nhỏ và việc thực hiện xác minh file sẽ cho bạn biết rằng những gì bạn đã download khác với những gì có sẵn trên server nguồn.
Trong hướng dẫn này, bạn sẽ tìm hiểu xác minh file là gì, tại sao nó lại quan trọng và cách thực hiện việc này trên các hệ điều hành khác nhau bằng các công cụ dòng lệnh.
Yêu cầu
Đối với bài viết này, bạn sẽ sử dụng các công cụ dòng lệnh để xác minh file được tích hợp trong mọi hệ điều hành chính.
Bạn cần một file để xác minh, cũng như tổng kiểm tra MD5 và SHA1 cho file đó.
Ta sẽ sử dụng ISO cài đặt Ubuntu để xác minh file của ta . Download Ubuntu Minimal CD ISO cho PC 64 bit (amd64, x86_64). Trong khi download , hãy lưu ý tổng MD5 và SHA1 bên cạnh liên kết download . Bạn sẽ sử dụng các tổng kiểm tra này trong suốt hướng dẫn.
Cách xác minh file hoạt động
Xác minh file , còn gọi là băm , là quá trình kiểm tra xem file bạn có trên máy của bạn có giống với file nguồn hay không. Khi bạn băm một file , bạn sẽ còn lại một tổng kiểm tra , một chuỗi số chữ cái ngẫu nhiên với một bộ chiều dài. Việc băm một file không mã hóa file và bạn không thể lấy tổng kiểm tra và chạy lại nó thông qua một thuật toán để lấy file nguồn ban đầu.
Quá trình tạo tổng kiểm tra 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 file , nó sẽ đượ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 file được băm bằng thuật toán MD5, tổng kiểm tra kết quả sẽ là 32 ký tự ngẫu nhiên. Nếu bạn băm một file dài 2000 ký tự, tổng kiểm tra MD5 kết quả vẫn là 32 ký tự.Ngay cả khi file nguồn chỉ dài 10 ký tự, tổng kiểm tra MD5 vẫn sẽ là 32 ký tự ngẫu nhiên.
Mỗi khi bạn thực hiện một hàm băm trên cùng một file , bạn sẽ luôn nhận được cùng một chuỗi ký tự trong hàm băm, miễn là mọi bit của file đó không thay đổi. Nhưng nếu ngay cả một thứ khác, chẳng hạn như một khoảng trống thừa trong file , tổng kiểm tra sẽ hoàn toàn khác.
Có hai loại tổng kiểm tra mà bạn thường thấy để xác minh file , MD5 hoặc SHA .
Thuật toán MD5 nhận được rất nhiều lời chỉ trích trong thế giới mã hóa vì có thể dễ dàng bị hack, nhưng đây không phải là mối quan tâm khi nói đến xác minh file . Khi nói đến xác minh tính toàn vẹn của file , điểm yếu của công cụ mã hóa không quan trọng. Điều đó tốt cho ta vì MD5 là một thông số kỹ thuật trưởng thành và nhanh hơn các phương pháp thực hiện băm khác.
Gần đây, đã có sự gia tăng sử dụng thuật toán băm SHA cho tổng kiểm tra vì nó là thuật toán băm được sử dụng trong một số mã hóa hiện đại. Tuy nhiên, không giống như MD5, SHA có các version khác nhau và điều quan trọng là phải sử dụng đúng version khi kiểm tra. Phiên bản được xác định là một số như 1, 2, 3 hoặc theo số lần SHA được chạy liên tiếp, chẳng hạn như 256, 384 hoặc 512. Tổng kiểm tra bạn sử dụng phải chỉ định version SHA sẽ sử dụng. Nếu trang web chỉ chỉ định một băm có nhãn SHA, không có số, thì có thể an toàn khi cho rằng họ đang sử dụng SHA1.
Đối với mục đích xác minh file , cả hai phương pháp đều có giá trị như nhau. Mặc dù thuật toán khác nhau, nhưng cả hai sẽ trả về một chuỗi ngẫu nhiên với độ dài đã đặt, mặc dù các hàm băm MD5 ngắn hơn bất kỳ hàm băm SHA nào.
Lưu ý : Đôi khi chữ ký PGP / GPG cũng được cung cấp cho mục đích xác minh file . Những loại chữ ký đó không phổ biến lắm, và cần kiểm tra nhiều hơn. Họ yêu cầu bạn download tổng kiểm tra, public key của trang web và phải cài đặt gpg
trên hệ thống của bạn để thực hiện kiểm tra. Các bước đó nằm ngoài phạm vi của hướng dẫn này.
Kiểm tra mã băm trên các file đã download cung cấp hai đảm bảo khác nhau và cả hai đều đáng giá. Đầu tiên, với tổng kiểm tra phù hợp, bạn có thể chắc chắn rằng file bạn vừa download giống hệt với nguồn và không bị thay đổi bởi bên thứ ba. Và thứ hai, bạn biết rằng file không bị hỏng hoặc sửa đổi trong quá trình truyền. Cả hai trường hợp này đều quan trọng vì, nếu xảy ra, việc download bạn có có thể gây hại cho máy của bạn hoặc có thể hoàn toàn không hoạt động.
Đến đây bạn đã biết tổng kiểm tra là gì và tại sao bạn nên thực hiện kiểm tra file của bạn , hãy cùng tìm hiểu cách thực hiện nó cho hệ điều hành của bạn. Ta sẽ bắt đầu bằng cách xem xét Linux.
Thực hiện xác minh file 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. Mẫu tên công cụ là 'HASH-TYPE' cộng với từ 'sum'.Vì 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 tên chính xác là gì, hãy nhập tên thuật toán băm rồi nhấn tab hai lần và hầu hết các bản phân phối sẽ hiển thị tất cả các lệnh bắt đầu bằng tên thuật toán đó. Ta sẽ điểm qua một số cách kiểm tra phổ biến bên dưới.
Ta sẽ thực hiện kiểm tra đầu tiên bằng cách sử dụng thuật toán băm MD5. Thực thi lệnh md5sum
và chuyển nó đường dẫn đến file bạn muốn băm:
- md5sum mini.iso
Kết quả trông như sau :
Output8388f7232b400bdc80279668847f90da mini.iso
Chuỗi ngẫu nhiên đó, bắt đầu bằng '8388f', là tổng kiểm tra và Đây là kết quả bạn cần so sánh với tổng kiểm tra được cung cấp trên trang download .
Vì bất kỳ sửa đổi nào đối với file sẽ dẫn đến tổng kiểm tra hoàn toàn khác, để tiết kiệm thời gian, chỉ cần kiểm tra một vài ký tự đầu tiên và một vài ký tự cuối cùng giống với nguồn thay vì mọi ký tự.
Ví dụ: nếu bạn muốn nhanh chóng xác minh tổng kiểm cho 'mini.iso' là khớp, hãy xác minh cả hai tổng kiểm bắt đầu bằng '8388f' và kết thúc bằng 'f90da'. Nếu cả hai khớp nhau thì rất có thể (gần như 100%) hàm băm đầy đủ là như nhau.
Nếu bạn muốn chắc chắn 100%, chỉ cần copy paste tổng kiểm tra từ trang web dưới kết quả của kiểm tra local để xem mọi ký tự có thẳng hàng hay không:
Output8388f7232b400bdc80279668847f90da mini.iso 8388f7232b400bdc80279668847f90da
Bây giờ ta hãy xem xét kiểm tra hàm băm SHA. Các lệnh băm SHA phổ biến nhất là sha1sum
và sha256sum
. Thực thi lệnh sha1sum
bằng cách chuyển cho nó đường dẫn đến file :
- sha1sum mini.iso
Kết quả sẽ tương tự như sau:
Outputcce936c1f9d1448c7d8f74b76b66f42eb4f93d4a mini.iso
So sánh giá trị kết quả với giá trị trên trang web để xác minh chúng trùng với nhau.
Bây giờ ta hãy xem xét xác minh các file trên macOS.
Thực hiện xác minh file trên macOS
Không giống như Linux, macOS chỉ có hai lệnh băm ( md5
và shasum
), thay vì một lệnh cho mọi thuật toán. Nhưng ta vẫn có thể thực hiện tất cả các kiểm tra mà ta cần chỉ với những công cụ này.
Mặc dù các ứng dụng khác nhau và hệ điều hành khác nhau, kết quả băm từ các công cụ này là giống nhau trên mọi hệ điều hành.
Vì md5
là một thuật toán độc lập nên nó là lệnh riêng của nó trên macOS. Thực thi lệnh md5
, chuyển nó đường dẫn đến file bạn muốn kiểm tra:
- md5 mini.iso
Kết quả sẽ như thế này:
OutputMD5 (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 file và chuỗi ngẫu nhiên 32 ký tự. So sánh các ký tự với tổng kiểm tra MD5 ban đầu và đảm bảo chúng khớp.
Bây giờ ta hãy xem xét xác minh tổng kiểm tra SHA. macOS có một tiện ích được sử dụng để thực hiện bất kỳ kiểm tra SHA nào được gọi là shasum
. Khi chạy nó, bạn cung cấp loại kiểm tra SHA bạn muốn làm đối số.
Thực thi lệnh sau, chỉ định SHA1 bằng cách sử dụng cờ -a
:
- shasum -a 1 mini.iso
Kết quả sẽ như thế này:
Outputcce936c1f9d1448c7d8f74b76b66f42eb4f93d4a mini.iso
So sánh giá trị này với hàm băm SHA1 của file root . Nếu chúng không khớp, bạn nên thử download file và kiểm tra lại hàm băm.
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 bạn không cung cấp loại, nó sẽ mặc định là SHA1.
Tiếp theo, hãy xem cách xác minh file trên Windows.
Thực hiện xác minh file trên Windows
Windows 7 và các version mới hơn bao gồm ứng dụng certutil
có thể xử lý tất cả các nhu cầu băm của ta . Đầu ra trông rất khác so với Linux và macOS, nhưng tổng kiểm tra sẽ giống nhau và hợp lệ. Cả hai ví dụ sau đều 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 'CertUtil', 'certUtil' và 'certutil' đều hợp lệ. Tuy nhiên, thuật toán phân biệt chữ hoa chữ thường, nghĩa là 'md5' sẽ không hoạt động và bạn cần phải nhập 'MD5'.
Để xác minh băm MD5 của file mini.iso
, hãy thực hiện lệnh sau:
- certutil -hashfile mini.iso MD5
Kết quả sẽ như thế này:
OutputMD5 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 cùng một lệnh, nhưng ta sẽ sử dụng SHA1
thay vì MD5
.
Số sau SHA
chỉ định version khác nhau hoặc các lần lặp lại của SHA. Vì vậy, ta sử dụng SHA
hoặc SHA1
cho băm SHA1 hoặc SHA256
nếu ta cần thuật toán SHA 256.
- certutil -hashfile mini.iso SHA1
Kết quả sẽ như thế này:
OutputSHA1 hash of mini.iso: cce936c1f9d1448c7d8f74b76b66f42eb4f93d4a CertUtil: -hashfile command completed successfully.
So sánh hàm băm kết quả với mã băm trên trang download đảm bảo chúng trùng với nhau.
Kết luận
Cho dù bạn đang đảm bảo file bạn vừa download không bị hỏng trong quá trình download hay xác minh một kẻ bất chính không tấn công server download , thì việc mất thêm thời gian để kiểm tra hàm băm của file cũng rất đáng để bạn cố gắng.
Nếu dòng lệnh hơi bất tiện để dễ dàng xác minh file , đây là
một số công cụ dựa trên GUI mà bạn có thể sử dụng thay thế:
Các tin liên quan