Nỗi ám ảnh mang tên GPG và sự thay thế xứng đáng
Sau khi đi audit bảo mật cho hơn 10 hệ thống server khác nhau, mình phát hiện một nghịch lý. GPG (GNU Privacy Guard) tuy là tiêu chuẩn vàng về mã hóa, nhưng thực tế chẳng mấy ai dùng nó hàng ngày. Lý do cực kỳ đơn giản: GPG quá khó dùng. Việc quản lý keyring, xác thực niềm tin (trust) hay học thuộc mớ câu lệnh dài như sớ táo quân là một cực hình đối với bất kỳ SysAdmin nào.
Mình từng thấy nhiều anh em thà nén file bằng mật khẩu ZIP lỏng lẻo còn hơn phải đụng vào GPG. Đó là lý do age (Actually Good Encryption) xuất hiện. Được nhào nặn bởi Filippo Valsorda, cựu kỹ sư bảo mật Google, age đi theo triết lý tối giản. Nó nhỏ gọn, không cần cấu hình và quan trọng nhất là bạn gần như không thể sử dụng sai cách.
Triển khai age chỉ trong 30 giây
Bỏ qua những lý thuyết suông, hãy bắt tay vào cài đặt. age được thiết kế để chạy ngay mà không cần tinh chỉnh hệ thống.
1. Cài đặt nhanh
Trên Ubuntu hoặc Debian, bạn chỉ cần:
sudo apt update && sudo apt install age
Với anh em dùng macOS, Homebrew là lựa chọn nhanh nhất:
brew install age
2. Tạo cặp khóa (Public/Private Key)
Quên việc quản lý keyring phức tạp đi. Với age, khóa của bạn chỉ là một file văn bản thuần túy.
age-keygen -o my_key.txt
Khi mở file my_key.txt, bạn sẽ nhận được kết quả như sau:
# created: 2023-10-27T10:00:00+07:00
# public key: age1ql3z7hjy74nz3t2... (Chia sẻ cái này để nhận file mã hóa)
AGE-SECRET-KEY-1... (Đây là khóa bí mật, hãy cất kỹ)
3. Mã hóa và giải mã thực tế
Thử mã hóa file database_backup.sql bằng Public Key:
age -r age1ql3z7hjy74nz3t2... -o backup.sql.age database_backup.sql
Để giải mã, bạn chỉ cần trỏ đến file khóa bí mật đã lưu:
age -d -i my_key.txt backup.sql.age > backup_restored.sql
Tại sao mình chọn age thay vì trung thành với GPG?
Khi vận hành các script tự động, GPG thường xuyên gây lỗi vì đòi hỏi tương tác người dùng (tty) để nhập passphrase. age giải quyết triệt để vấn đề này. Nó hoạt động mượt mà trong các pipeline tự động mà không cần can thiệp thủ công.
- Tạm biệt file cấu hình: GPG lưu key trong
~/.gnupg, nơi rất dễ lỗi phân quyền.agekhông quan tâm điều đó. Bạn để file key ở đâu, nó chạy ở đó. - Thuật toán đời mới: Thay vì dùng RSA già cỗi,
agesử dụng X25519 và ChaCha20-Poly1305. Những thuật toán này vừa nhanh hơn, vừa có độ dài khóa ngắn, dễ copy-paste. - Tối ưu cho Pipe:
agephối hợp cực tốt với các lệnh Linux khác thông qua ống dẫn, giúp xử lý dữ liệu trực tiếp trên RAM thay vì ghi file tạm xuống ổ cứng.
3 kịch bản thực chiến cho dân DevOps
Dưới đây là những cách mình áp dụng age để xử lý công việc nhanh gọn hơn.
1. Mã hóa bằng mật khẩu để gửi qua Slack/Telegram
Nếu cần gửi nhanh một file cấu hình cho đồng nghiệp mà không muốn tạo key, hãy dùng mật khẩu đối xứng:
age -p -o config.age config.json
2. Tận dụng SSH Key có sẵn (Cực kỳ tiện lợi)
Đây là tính năng “ăn tiền” nhất. Bạn có thể dùng luôn Public Key SSH của mình (id_ed25519.pub) để mã hóa file. Thậm chí, bạn có thể lấy key của đồng nghiệp từ GitHub:
curl https://github.com/username.keys | age -R - -o secret.age data.txt
3. Backup thư mục không tốn dung lượng đệm
Thay vì nén rồi mới mã hóa, bạn có thể đẩy thẳng luồng dữ liệu từ tar sang age. Cách này giúp tiết kiệm 50% dung lượng ổ cứng tạm thời khi backup các folder nặng hàng chục GB:
tar cvz /var/www/html | age -r age1ql3z... > website_backup.tar.gz.age
Lưu ý để không bị “gậy ông đập lưng ông”
Công cụ tốt đến đâu mà dùng sai cách thì vẫn nguy hiểm. Mình có vài lời khuyên xương máu sau 5 năm làm hệ thống:
- Nguyên tắc tách biệt: Đừng bao giờ để file
my_key.txttrên cùng server chứa dữ liệu đã mã hóa. Nếu hacker vào được server, họ sẽ có cả ổ khóa lẫn chìa khóa. - Quản lý khóa thông minh: Hãy lưu nội dung Private Key vào các trình quản lý mật khẩu như Bitwarden hoặc Vault. Đừng để nó nằm vất vưởng trong thư mục
/tmp. - Cẩn thận với lịch sử lệnh: Khi dùng mật khẩu (flag
-p), hãy gõ lệnh bắt đầu bằng một khoảng trắng (nếu dùng Bash) để nó không lưu vào.bash_history.
Từ ngày chuyển sang age, mình không còn thấy ngại khi phải bảo mật file nữa. Nó tuân thủ đúng triết lý Unix: làm một việc và làm thật tốt. Nếu bạn đang mệt mỏi với sự cồng kềnh của GPG, hãy thử age ngay. Chắc chắn bạn sẽ không muốn quay lại đâu.
