Khi bạn tải phần mềm từ Internet, bạn phải tin nhà phát triển rằng chương trình không độc hại. Tuy nhiên, bạn cũng phải lo ngại hacker. Có rất nhiều thứ kẻ tấn công có thể đạt được từ việc hack trang web và thay phần mềm bằng phiên bản có backdoor.
Hãy nghĩ về trang web host tiện ích ví Bitcoin. Nếu kẻ tấn công thay phiên bản hợp pháp bằng cái độc hại, họ có thể đánh cắp tiền từ hàng chục nghìn người dùng. Mục tiêu giá trị khác để gieo backdoor 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ì?
Hash (Băm) Và Chữ Ký (Signatures)
Nhà phát triển ý thức bảo mật thường gói tệp cài đặt hoặc kho lưu trữ với checksum (tổng kiểm tra) bạn có thể xác minh. Bạn có thể đọc cách xác minh trên Windows hoặc Linux. Vấn đề với hash, tuy nhiên, là nếu hacker thay tệp trên trang web, họ dễ dàng thay hash cũng. Điều này làm hash tự thân gần như vô dụng, đặc biệt nếu chúng được host trên cùng server với chương trình.
Để làm cho checksum hữu ích, nhà phát triển cũng có thể ký số chúng, với cặp khóa công khai/riêng. Chỉ người sở hữu khóa riêng mới tạo được chữ ký. Chúng chỉ có thể xác minh với khóa công khai tương ứng, được công bố trên Internet. Nếu xác minh thành công, bạn có thể (gần như chắc chắn) tin chủ khóa riêng đã ký phần mềm.
Để hacker vượt qua cơ chế này, họ phải đánh cắp khóa riêng, khó hơn nhiều nếu chủ sở hữu bảo vệ kỹ. Và ngay khi khóa bị đánh cắp, chủ sở hữu có thể vô hiệu hóa bằng cách thu hồi (revoking) và thông báo. Nếu xảy ra, khi bạn tải khóa công khai và thử dùng để xác minh chữ ký, bạn sẽ được báo hiệu đã bị thu hồi.
Cách Xác Minh Chữ Ký Dùng GnuPG (GPG)
Tiện ích gpg thường cài mặc định trên mọi distro. Nếu vì lý do nào thiếu, cài với lệnh dưới. Trên một số bản phân phối, nếu gặp lỗi như "gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory", bạn phải cài dirmngr cũng.
Trên Debian, Ubuntu hoặc Debian-based, chạy:
sudo apt install gnupg dirmngr
Cho 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 để test cách xác minh ISO cài Debian 9.8.0.
Tải "SHA256SUMS", "SHA256SUMS.sign", và "debian-9.8.0-amd64-netinst.iso". Bạn có thể phải chuột phải hai tệp đầu và chọn "Save link as" hoặc tương đương, trong trình duyệt. Không thì nhấp vào có thể chỉ hiển thị nội dung thay vì tải tự động.
Mở terminal emulator và chuyển đến thư mục tải xuống.
cd Downloads/
Xác Minh Checksum
Đợi tải ISO xong. Tiếp, xác minh checksum SHA256.
sha256sum -c SHA256SUMS

Bạn sẽ thấy tên tệp theo sau thông báo "OK" khi checksum tốt. Để xác minh loại checksum khác, bạn có lệnh: sha1sum, sha512sum, md5sum. Nhưng khuyến khích dùng ít nhất SHA256, hoặc cao hơn nếu có.
Một số trang không cung cấp tệp như SHA256SUMS, nhóm tên tệp và checksum để xác minh dễ. Nếu chỉ hiển thị tổng trên trang, xác minh hash tệp bằng lệnh như:
sha256sum debian-9.8.0-amd64-netinst.iso
Dùng GPG Xác Minh Checksum Đã Ký
Trong ví dụ này đội Debian ký tệp "SHA256SUMS" với khóa riêng và lưu trong "SHA256SUMS.sign". Xác minh chữ ký với:
gpg --verify SHA256SUMS.sign SHA256SUMS
Bạn sẽ nhận thông báo:
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 nghĩa bạn không có khóa công khai trên máy, điều bình thường. Bạn phải nhập từ keyserver.
gpg --keyserver keyring.debian.org --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B
Nếu keyserver down, dùng cái thay thế. Ví dụ, thay keyring.debian.org bằng keyserver.ubuntu.com.
Nhưng bạn biết khóa này hợp pháp như thế nào? Thật ra, để chắc chắn tuyệt đối, bạn cần xây "web of trust" (mạng lưới niềm tin). Rõ ràng bạn không có lúc này. Nhưng có vài điều bạn làm được.
Google vân tay khóa (DF9B9C49EAA9298432589D76DA87E80D6294BE9B). Nếu không tìm thấy, thử Google 8 ký tự cuối (6294BE9B). Khóa hợp pháp sẽ được nhắc trên nhiều trang web về phần mềm tương tự. Hơn nữa, bài đăng thường trải qua nhiều năm vì khóa được bảo vệ an toàn sẽ dùng lâu dài.
Nếu bạn thực sự paranoid, tải ảnh BitTorrent rồi xác minh checksum và chữ ký. Cách torrent hoạt động, không thể thay tệp tải bởi hàng trăm user khác. Hơn nữa, BitTorrent cũng có cơ chế riêng xác minh tính toàn vẹn mọi chunk dữ liệu tải.
Bây giờ bạn có khóa công khai, bạn cuối cùng xác minh chữ ký:
gpg --verify SHA256SUMS.sign SHA256SUMS

Nếu thấy "Good signature", nghĩa là mọi thứ kiểm tra ổn. Đừng lo cảnh báo – nó bình thường vì, như đề cập, bạn chưa thiết lập web of trust đến khóa công khai.
Kết Luận
Như bạn có thể đã biết, không gì chắc chắn trên Internet. Nhưng chắc chắn an toàn hơn khi lấy biện pháp phòng ngừa, và xác minh chữ ký số tệp bạn tải có thể giúp tránh phần mềm độc hại. Nhiều lần khi người dùng tải OS có backdoor, hoặc phần mềm ví Bitcoin, họ có thể tránh rắc rối nếu kiểm tra chữ ký, vì chúng không bị can thiệp.