Cách sử dụng GnuPG để mã hóa tin nhắn/email trên Linux

Cách sử dụng GnuPG để mã hóa tin nhắn trên Linux

Chia sẻ kiến thức 21/11/2022

Bạn muốn gửi và nhận email an toàn trên Linux? Dưới đây là hướng dẫn cách sử dụng GnuPG để tạo và quản lý các email được mã hóa.

Bạn đã bao giờ cần email cho ai đó thông tin nhạy cảm như mật khẩu hoặc thông tin đăng nhập máy chủ nhưng lại không biết cách gửi an toàn để tránh thông tin rơi vào tay kẻ xấu?

Bài viết này sẽ giới thiệu cách truyền an toàn các tin nhắn và tệp được mã hóa bằng PGP thông qua công cụ gnupg phổ biến. 

 

cài đặt gnupg

Trước tiên hãy kiểm tra xem gnupg đã được cài đặt trên máy của bạn hay chưa. Trong terminal, chạy lệnh:

gnupg --version

Nếu nó hiển thị phiên bản gnupg đang chạy, thì bạn đã hoàn tất và có thể chuyển sang phần tiếp theo. Nếu không, hãy cài đặt gnupg bằng cách chạy:

sudo apt-get install gnupg2

Sau khi hoàn tất, hãy kiểm tra xem nó được cài đặt chưa bằng lệnh đầu tiên:

gnupg -- version

Giả sử gnupg đã được cài đặt đúng cách, lệnh sẽ trả về số phiên bản.

Tạo khóa PGP

Trước tiên bạn sẽ sử dụng mã hóa bất đối xứng để tạo một cặp khóa PGP bao gồm cả khóa chung và khóa riêng. Khóa chung có thể được gửi cho bất kỳ ai từ người đó bạn muốn nhận tin nhắn được mã hóa, trong khi khóa riêng được giữ cho riêng bạn ở một nơi an toàn.

Sau đó, mọi người có thể mã hóa tin nhắn với khóa chung và gửi nó cho bạn, tin nhắn này sau đó có thể được bạn giải mã bằng khóa riêng. Để tạo cặp khóa, chạy lệnh sau trên terminal:

gpg --generate-key

Quá trình bắt đầu bằng cách hỏi tên và địa chỉ email của bạn. Đây không nhất thiết phải là tên và email thật của bạn nhưng sẽ là thứ mà những người khác sẽ nhìn thấy khi chọn người để mã hóa tin nhắn cho, vì vậy hãy đảm bảo rằng đó là thứ mà dựa vào đó người khác có thể dễ dàng nhận ra bạn.

 

Tiếp theo, nhập chữ O để xác nhận tên và địa chỉ email, sau đó bạn sẽ được nhắc nhập mật khẩu mong muốn. Bạn sẽ cần nhập mật khẩu này mỗi khi muốn giải mã một tin nhắn được gửi đến cho bạn.

Khi bạn đã xác nhận mật khẩu, nó sẽ bắt đầu tạo cặp khóa PGP mới, quá trình này có thể mất vài phút, sau đó bạn sẽ thấy thông báo cho biết khóa của bạn đã được tạo thành công.

Xuất khóa công khai của bạn

Bây giờ cặp khóa của bạn đã được tạo, bạn cần gửi khóa chung đến cho những người khác. Trong terminal chạy lệnh:

gpg -a --export -e 'myname@domain.com` > mykey.asc

Thay ‘myname@domain.com’ bằng địa chỉ email bạn đã cung cấp khi tạo khóa PGP. Bạn sẽ thấy một tệp mới trong thư mục hiện tại có tên mykey.asc. Gửi tệp này cho bất kỳ ai mà bạn muốn gửi tin nhắn được mã hóa cho bạn.

Nhập khóa công khai

Bạn có thể chia sẻ khóa công khai của mình với người khác và người khác cũng có thể chia sẻ khóa công khai của họ với bạn. Khi nhận được khóa PGP công khai của ai đó, hãy lưu tệp vào một thư mục và truy cập terminal từ cùng một thư mục, hãy chạy:

 

gpg --import key.asc

Thao tác này sẽ nhập khóa PGP công khai của người đó vào gnupg, cho phép bạn gửi tin nhắn được mã hóa cho họ. Bạn có thể xem danh sách tất cả các khóa PGP hiện có trong gnupg bất cứ lúc nào:

gpg --list-keys

Bạn sẽ thấy một loạt các mục giống như bên dưới, một mục cho mỗi khóa có trong gnupg:

pub rsa3072 2020-01-30 [SC] [expires: 2022-01-29]8978168C4E79A08553E5789CD42A4A4EC1468CFEuid [ unknown] Matt Dizak <matt.dizak@gmail.com>

Phần thông tin duy nhất bạn cần chú ý là tên và địa chỉ email của mục nhập, chúng cho biết chủ sở hữu của khóa đó. Khi mã hóa tin nhắn, bạn chỉ cần địa chỉ email của người nhận.

Mã hóa tin nhắn qua PGP

Ví dụ: bạn có thể cần gửi một số thông tin nhạy cảm cho người thiết kế web của bạn, bạn đã nhập khóa PGP của người đó theo địa chỉ email designer@domain.com. Nhập tin nhắn mong muốn và lưu nó vào một tệp văn bản, ví dụ: message.txt . Trong terminal và bên trong thư mục chứa message.txt, chạy lệnh:

gpg -e -a -r 'designer@domain.com' message.txt

Trong lệnh trên:

  • -e chỉ định rằng chúng ta đang mã hóa dữ liệu (e viết tắt của encryption, nghĩa là mã hóa)
  • -a nói rằng chúng ta muốn đầu ra ở định dạng ASCII hoặc văn bản thuần túy
  • -r là viết tắt của recipient, nghĩa là người nhận, đó là lý do nó được theo sau bởi địa chỉ email của nhà thiết kế 
  • Cuối cùng là tệp tin nhắn mà chúng ta muốn mã hóa
 

Nếu có yêu cầu xác nhận rằng bạn thực sự muốn mã hóa bằng khóa chung này, bạn chỉ cần nhấn phím Y để đồng ý. Một tệp message.txt.asc mới sẽ được tạo và nếu bạn mở tệp trong trình soạn thảo văn bản, bạn sẽ thấy một chuỗi ký tự vô nghĩa:

-----BEGIN PGP MESSAGE-----hQGMAzCBDnMltq9zAQv/ZHQ3tJq+feazdLa3thzQE2bhPx+7WaPZcX7SdkoyuKvw9faS7h9OwBjQ4vUyDKespSq3ZNf1pRgNoXijjs3MGEi5IsYxDgNWo1ZJv2qQqp36.....-----END PGP MESSAGE-----

Đây là dạng tin nhắn được mã hóa mới được tạo . Bạn có thể đính kèm tệp này trong email hoặc copy & paste nội dung của tệp này vào email.

Sau đó, người nhận sẽ có thể giải mã thư bằng khóa riêng tư của họ, đảm bảo rằng bất kỳ ai nhìn thấy thư này trong quá trình di chuyển sẽ không thể hiểu nó có nghĩa gì.

Mã hóa tập tin nhị phân

Trên đây là cách mã hóa tin nhắn văn bản, nhưng còn các tệp nhị phân thì sao? Nó hoạt động khá giống nhau. Ví dụ, để mã hóa một tệp có tên images.zip, trong terminal hãy chạy lệnh:

gpg -e -r 'designer@domain.com' images.zip

Sự khác biệt duy nhất là tùy chọn -a bị xóa. Sau đó, nếu được nhắc xác nhận việc sử dụng khóa chung, chỉ cần nhấn  phím Y để đồng ý.

Một tệp mới có tên images.zip.gpg sẽ được tạo, đây là phiên bản được mã hóa của tệp zip mà bạn có thể email cho nhà thiết kế của mình dưới dạng tệp đính kèm. Sau đó, họ có thể giải mã tệp ZIP bằng khóa riêng của họ.

Giải mã tin nhắn 

Bạn cũng cần một cách để giải mã các tin nhắn được gửi đến cho bạn. Hãy nhớ rằng, để ai đó gửi cho bạn một tin nhắn được mã hóa, trước đó bạn phải chia sẻ khóa PGP công khai của mình với họ. Bạn sẽ nhận được một khối văn bản được mã hóa, chẳng hạn như:

-----BEGIN PGP MESSAGE-----hQGMAzCBDnMltq9zAQv/ZHQ3tJq+feazdLa3thzQE2bhPx+7WaPZcX7SdkoyuKvw9faS7h9OwBjQ4vUyDKespSq3ZNf1pRgNoXijjs3MGEi5IsYxDgNWo1ZJv2qQqp36.....-----END PGP MESSAGE-----

Lưu khối văn bản này vào một tệp, ví dụ như message.asc và trong terminal chạy lệnh:

gpg -d message.asc > message.txt

Bạn sẽ được nhắc nhập mật khẩu giống với mật khẩu bạn đã cung cấp khi tạo cặp khóa PGP ban đầu. Sau khi nhập thành công mật khẩu, một tệp tin nhắn.txt sẽ được tạo có chứa phiên bản được giải mã của tin nhắn ở dạng văn bản thuần túy. 

Mã hóa tin nhắn/email trên Linux

Thông qua hướng dẫn này, bạn đã học được mọi thứ cần thiết để bảo mật thông tin liên lạc của mình thông qua mã hóa PGP. Bạn đã học cách tạo cặp khóa PGP, chia sẻ khóa chung của mình với người khác, nhập khóa chung của người khác, cùng với cách mã hóa và giải mã tin nhắn.

Lần tới khi bạn cần gửi thông tin nhạy cảm qua email, bạn có thể yên tâm rằng chỉ người nhận mới có thể xem nội dung của thư, tránh xa những vị khách không mong muốn. 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/gnupg-encryption-on-linux/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!