Cách kiểm tra tính xác thực của phần mềm Linux bằng chữ ký số

Khi bạn tải xuống phần mềm từ Internet, bạn buộc phải tin tưởng rằng chương trình của (các) nhà phát triển đó không phải là độc hại. Tuy nhiên, bạn cũng phải lo lắng về tin tặc nữa. Có rất nhiều kẻ tấn công có thể hack một trang web và thay thế phần mềm bằng một phiên bản độc hại.

Hãy suy nghĩ về một trang web lưu trữ tiện ích ví Bitcoin. Nếu kẻ tấn công nắm được quyền quản lý và thay thế phiên bản hợp pháp bằng phiên bản độc hại, chúng có khả năng đánh cắp tiền từ hàng chục ngàn người dùng. Một mục tiêu có giá trị khác để tấn công là hệ điều hành. Điều này đã xảy ra với Linux Mint trong quá khứ.

Vậy bạn có thể làm gì để khắc phục những tình trạng này?

Hash và chữ ký

Các nhà phát triển có ý thức bảo mật sẽ thường đóng gói các file thiết lập với các checksum (phần mềm được sử dụng để đảm bảo tính toàn vẹn của một file, sau khi được truyền từ một thiết bị khác) mà bạn có thể xác minh. Tham khảo bài viết: Check MD5 và SHA1 để kiểm tra tính toàn vẹn của tập tin để biết thêm chi tiết. Tuy nhiên, vấn đề với những hash này là nếu một hacker thay thế các file trên một trang web, hắn ta cũng có thể dễ dàng thay thế các hash. Điều này làm cho hash gần như vô dụng, đặc biệt là nếu chúng được lưu trữ trên cùng một máy chủ nơi đặt các chương trình.

Để làm cho các checksum này trở nên hữu ích, nhiều nhà phát triển đã thêm chữ ký điện tử cho chúng với sự trợ giúp của cặp public và private key. Chỉ người sở hữu private key này mới có thể tạo chữ ký và chúng chỉ có thể được xác minh bằng public key tương ứng, được công bố trên Internet. Nếu quá trình xác minh được thông qua, bạn có thể chắc chắn rằng chủ sở hữu private key đã “ký” phần mềm của mình.

Để có thể bỏ qua cơ chế bảo mật này, hacker phải đánh cắp private key bằng cách nào đó, việc này khó thực hiện hơn nhiều nếu chủ sở hữu thực hiện các biện pháp thích hợp để bảo mật. Và ngay cả khi key này bị đánh cắp, chủ sở hữu có thể vô hiệu hóa nó bằng cách thu hồi và thông báo về điều đó. Nếu điều này xảy ra, khi bạn tải xuống public key và cố gắng sử dụng nó để xác minh chữ ký, bạn sẽ được thông báo rằng chữ ký đã bị thu hồi.

Cách xác minh chữ ký bằng GnuPG (GPG)

Tiện ích gpg thường được cài đặt theo mặc định trên tất cả các bản phát hành. Nếu, vì một lý do nào đó, nó bị thiếu, bạn có thể cài đặt gpg với các lệnh bên dưới. Trên một số bản phân phối, nếu bạn gặp lỗi “gpg: failed to start the dirmngr ‘/usr/bin/dirmngr’: No such file or directory”, bạn cũng cần cài đặt cả dirmngr nữa.

Trên các bản phân phối dựa trên Debian, Ubuntu hoặc Debian, hãy chạy:

sudo apt install gnupg dirmngr

Đối với RedHat/CentOS:

sudo yum install gnupg dirmngr

Và trên Fedora:

sudo dnf install gnupg dirmngr

Bạn có thể làm theo ví dụ dưới đây để kiểm tra cách bạn xác minh ISO trình cài đặt Debian 9.8.0.

Tải xuống SHA256SUMS, SHA256SUMS.sign,debian-9.8.0-amd64-netinst.iso. Bạn có thể phải nhấp chuột phải vào hai file đầu tiên và chọn “Save link as” hoặc tùy chọn tương đương, trong trình duyệt web. Nếu không, nhấp vào những file này có thể chỉ hiển thị nội dung thay vì tự động tải xuống.

Mở trình giả lập terminal và thay đổi thư mục chứa các bản tải xuống.

cd Downloads/

Kiểm tra checksum

Đợi quá trình tải xuống ISO kết thúc. Tiếp theo, xác minh checksum SHA256.

sha256sum -c SHA256SUMS

Kiểm tra checksum

Bạn sẽ thấy tên của file được theo sau là thông báo “OK” nếu checksum ổn. Để xác minh các loại checksum khác, bạn có các lệnh sau: sha1sum, sha512sum, md5sum. Nhưng bạn nên sử dụng ít nhất một SHA256SUMS hoặc hơn, nếu có sẵn.

Một số trang web không cung cấp các file như SHA256SUMS, trong đó tên file và checksum được nhóm lại với nhau để xác minh dễ dàng hơn. Nếu trang chỉ hiển thị sum, thì hãy xác minh hash của file bằng một lệnh như sau:

sha256sum debian-9.8.0-amd64-netinst.iso

Sử dụng GPG để xác minh checksum đã ký

Trong ví dụ này, nhóm Debian đã ký vào file SHA256SUMS, với private key của họ và lưu nó trong file SHA256SUMS.sign. Xác nhận chữ ký với lệnh:

gpg --verify SHA256SUMS.sign SHA256SUMS

Bạn sẽ nhận được thông báo như thế này:

gpg: Signature made Sun 17 Feb 2019 05:10:29 PM EET
 gpg: using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
 gpg: Can't check signature: No public key

Điều này có nghĩa là bạn không có public key trên máy tính. Việc này rất bình thường. Bạn phải nhập nó từ một keyserver.

gpg --keyserver keyring.debian.org --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B

Nếu keyserver gặp sự cố, bạn có thể sử dụng một keyserver khác thay thế. Ví dụ, bạn có thể thay thế keyring.debian.org bằng keyerver.ubfox.com.

Nhưng làm thế nào để bạn biết key này là hợp pháp? Thật không may, để hoàn toàn chắc chắn, bạn sẽ cần phải xây dựng một thứ gọi là Web of Trust (WOT). Rõ ràng, bạn không có nó vào thời điểm này. Nhưng có một vài điều bạn có thể làm.

Tìm kiếm trên Google fingerprint của key (DF9B9C49EAA9298432589D76DA87E80D6294BE9B). Nếu bạn không tìm thấy bất cứ điều gì, hãy thử Google chỉ tám ký tự cuối cùng (6294BE9B). Một key hợp pháp sẽ được đề cập trên nhiều trang web liên quan đến phần mềm tương tự. Hơn nữa, các bài đăng thường sẽ kéo dài trong nhiều năm do key được bảo vệ an toàn sẽ được sử dụng trong một thời gian dài.

Nếu bạn chưa thực sự yên tâm, hãy tải xuống image BitTorrent và sau đó xác minh checksum và chữ ký. Với cách thức hoạt động của torrent, không thể thay thế các file được upload lên bởi hàng trăm người dùng khác nhau. Hơn nữa, BitTorrent cũng có các cơ chế riêng để xác minh tính toàn vẹn của mỗi khối dữ liệu mà nó tải xuống.

Bây giờ, bạn đã có public key. Cuối cùng, bạn cũng có thể xác minh chữ ký:

gpg --verify SHA256SUMS.sign SHA256SUMS

Nếu bạn thấy thông báo “Good signature”, thì có nghĩa là mọi thứ đều đã được kiểm tra. Đừng lo lắng về cảnh báo. Điều đó là bình thường bởi vì, như đã đề cập, bạn không có Web of Trust nào được thiết lập cho public key.

Sử dụng GPG để xác minh checksum đã ký

Như bạn có thể đã biết, không có gì là chắc chắn trên Internet. Nhưng chắc chắn an toàn hơn khi thực hiện các biện pháp phòng ngừa và xác minh chữ ký điện tử của những file bạn tải xuống. Các biện pháp này có thể giúp bạn tránh được phần mềm độc hại. Nhiều khi người dùng đã tải xuống các hệ điều hành hoặc phần mềm ví Bitcoin bị nhiễm phần mềm độc hại, nhưng họ có thể tránh được rắc rối nếu kiểm tra chữ ký.

Chúc bạn thực hiện thành công!

Thứ Tư, 05/06/2019 17:38
52 👨 77