Trang chủ Proton

Nhập khóa riêng tư OpenPGP vào Proton Mail

Đọc
19 phút
Danh mục
Mã hóa và khóa

Proton Mail cho phép nhập khóa riêng tư OpenPGP hiện có (hoặc khóa bí mật) vào hệ sinh thái mã hóa của mình. Điều này giúp tiếp tục sử dụng các khóa đó để ký và giải mã email.

Các khóa được nhập phải đáp ứng các yêu cầu tối thiểu về khóa của Proton vì lý do bảo mật và tương thích.

Nếu khóa đáp ứng các yêu cầu tối thiểu, có thể nhập trực tiếp.
Nếu khóa không đáp ứng các yêu cầu tối thiểu, màn hình báo lỗi sẽ hiển thị sau khi cố gắng tải lên. Màn hình báo lỗi này sẽ giải thích lý do tại sao khóa bị từ chối. Có sẵn các hướng dẫn để chỉnh sửa khóa nhằm tiến hành nhập.

  1. Cách nhập khóa OpenPGP vào Proton Mail
  2. Cách chỉnh sửa khóa OpenPGP

Cách nhập khóa OpenPGP vào Proton Mail

  1. Đăng nhập vào Tài khoản Proton trên ứng dụng web Proton Mail
  2. Nhấp vào Cài đặt → Tất cả cài đặt → Mã hóa và khóaCác khóa mã mã hóa email.
  3. Chọn địa chỉ email được liên kết với khóa tương ứng, nhấp vào menu thả xuống có chữ Tạo khóa, và nhấp vào Nhập khóa.

Đã xong! Hiện tại có thể sử dụng các khóa riêng tư OpenPGP trên Proton Mail.

Cách chỉnh sửa khóa OpenPGP

Nếu khóa không đáp ứng các yêu cầu, việc nhập khóa sẽ không thể thực hiện.

Dưới đây là các trường hợp phổ biến nhất khiến khóa bị từ chối và hướng dẫn cách khắc phục tình huống đó.

Trước khi bắt đầu

Nếu cần chỉnh sửa khóa riêng tư OpenPGP để tải lên Proton Mail, có hai bước cần thực hiện trước khi bắt đầu:

  1. Tải xuống, thiết lập GnuPG và nhập các khóa
  2. Tạo bản sao lưu của các khóa OpenPGP trước khi chỉnh sửa

Thiết lập GnuPG và nhập khóa

Công cụ GnuPG (GNU Privacy Guard) được sử dụng xuyên suốt hướng dẫn này để chỉnh sửa các khóa riêng tư muốn nhập.
Nếu chưa cài đặt GnuPG, hãy truy cập https://gnupg.org/download/(cửa sổ mới) để tìm ứng dụng cho thiết bị.

Nếu khóa muốn nhập vào Proton Mail chưa được nhập vào GnuPG, cần thực hiện việc đó bằng lệnh:

gpg --import 

Hầu hết các thao tác sau đây sẽ dựa trên các lệnh tương tác dựa trên

gpg --edit-key

Đọc tài liệu hướng dẫn của GnuPG(cửa sổ mới).

Quan trọng: hãy tạo bản sao lưu của các khóa trước khi chỉnh sửa

Nếu khóa riêng tư đang cố gắng nhập được sử dụng cho các ứng dụng khác ngoài Proton, hãy đảm bảo tạo bản sao lưu của khóa trước khi chỉnh sửa.

Nếu đã nhập khóa riêng tư vào GnuPG, có thể thực hiện việc đó bằng lệnh:

gpg --armor --export-secret-keys  > backup-key.asc

Sau đó có thể nhập lại khóa gốc bằng lệnh:

gpg --import backup-key.asc

Lý do khóa riêng tư bị từ chối

  1. Khóa có ngày hết hạn 
  2. Khóa sai danh tính
  3. Khóa không có khóa phụ mã hóa
  4. Khóa sử dụng các thuật toán không được hỗ trợ

Khóa có ngày hết hạn

Ý nghĩa của điều này

Các khóa OpenPGP (và khóa phụ) có thể có ngày hết hạn, sau thời điểm đó tất cả các thư viện tuân thủ OpenPGP sẽ từ chối chúng.

Để đảm bảo luôn có thể nhận email trên Proton Mail bằng khóa OpenPGP này, tất cả các khóa được nhập bắt buộc phải không được đặt ngày hết hạn.

Nếu cố gắng nhập một khóa có ngày hết hạn, khóa đó sẽ bị từ chối.

Cách khắc phục điều này

  1. Mở GnuPG và kiểm tra xem khóa đã được đặt ngày hết hạn chưa bằng cách chạy lệnh:
gpg --list-keys 

với “user id” là địa chỉ email được liên kết với khóa.

Kết quả hiển thị sẽ trông giống như thế này:

$ gpg --list-keys key.import.test@example.proton.me
sec rsa3072 2022-09-21 [SC] [expires: 2024-09-20]
C931E2A00A01EE4604049A4EA9C08446B1B88861
uid Import key guide
ssb rsa3072 2022-09-21 [E] [expires: 2024-09-20]

Tại đây, có thể thấy cả khóa chính và khóa phụ mã hóa đều có ngày hết hạn được đặt thành 2024-09-20.
Để nhập vào Proton Mail, cần chỉnh sửa để khóa không có ngày hết hạn.

2. Để chỉnh sửa khóa, hãy chạy lệnh:

gpg --edit-key 

GnuPG sẽ chuyển sang chế độ tương tác. Cần xem qua từng khóa phụ và chỉnh sửa ngày hết hạn của chúng. Có thể chọn các khóa phụ bằng cách sử dụng lệnh:

khóa 

rồi đặt ngày hết hạn thành không bao giờ bằng lệnh:

expire 0

3. Lưu bằng lệnh:

save

Đối với khóa trong ví dụ trên, toàn bộ nội dung ghi lại sẽ như thế này:

$ gpg --edit-key key.import.test@example.proton.megpg> key 0gpg> expire 0gpg> key 1gpg> expire 0gpg> save

4. Kiểm tra ngày hết hạn của các khóa bằng lệnh:

gpg --list-keys 

Kết quả hiển thị sẽ trông giống như thế này:

$ gpg --list-keys key.import.test@example.proton.me
pub rsa3072 2022-09-21 [SC]
C931E2A00A01EE4604049A4EA9C08446B1B88861
uid [ultimate] Import key guide
sub rsa3072 2022-09-21 [E]

Có thể thấy, các phần hiển thị ngày hết hạn hiện đang để trống.

5. Bây giờ có thể xuất khóa từ GnuPG bằng lệnh:

gpg --armor --export-secret-keys  > exported-key.asc

6. Bây giờ có thể nhập khóa vừa xuất vào Proton Mail

Khóa có danh tính không chính xác hoặc có nhiều danh tính

Ý nghĩa của điều này

Khóa OpenPGP có thể liên kết với một hoặc nhiều danh tính người dùng có địa chỉ email được chỉ định.
Trong một số dịch vụ của Proton, danh tính này được sử dụng để tra cứu khóa cho một địa chỉ nhất định.
Để đảm bảo khóa liên kết với địa chỉ mong muốn và tránh liên kết với sai địa chỉ, Proton yêu cầu tất cả các khóa được nhập chỉ chứa một ID người dùng duy nhất sử dụng cùng một địa chỉ email với Tài khoản Proton mà khóa đang được nhập vào.

Nếu có nhiều địa chỉ Proton Mail, hãy đảm bảo nhập đúng khóa cho đúng địa chỉ.

Lỗi này cũng có thể xảy ra nếu địa chỉ có nhiều danh tính người dùng (một trong số đó có thể liên kết với địa chỉ Proton Mail đang được nhập khóa vào). Trong trường hợp này, Proton yêu cầu xóa các danh tính khác, vì Proton không thể xác nhận khóa được tạo bởi chủ sở hữu địa chỉ nếu đó là địa chỉ bên ngoài (địa chỉ không phải Proton Mail).

Cách khắc phục điều này

  1. Mở GnuPG và kiểm tra những danh tính nào được liên kết với khóa. Có thể chọn khóa bằng vân tay có trong hộp thoại nhập. Có thể truy cập bằng cách chạy lệnh:
gpg --list-keys 

Kết quả hiển thị sẽ trông giống như thế này:

$ gpg --list-keys 5980f1c63aeb7534f36c3c669b838c4a93779a09
pub rsa3072 2022-10-11 [SC]
5980F1C63AEB7534F36C3C669B838C4A93779A09
uid [ultimate] Some identity
sub rsa3072 2022-10-11 [E]

Tại đây có thể thấy khóa có một danh tính người dùng liên kết với địa chỉ email không do Proton xử lý.

2. Chỉnh sửa khóa bằng cách chạy lệnh:

gpg --edit-key 

Sau đó tạo danh tính người dùng mới bằng lệnh:

adduid

Chỉ định tên và địa chỉ email (địa chỉ email phải là địa chỉ Proton Mail đang được nhập khóa vào).

Bây giờ khóa có khả năng có nhiều danh tính. Để tiếp tục, phải xóa những danh tính không liên kết với địa chỉ Proton Mail.

3. Chọn các danh tính người dùng khác muốn xóa bằng lệnh:

uid 

Xóa bằng lệnh:

deluid

4. Lưu các thay đổi bằng lệnh:

save

Đối với khóa trong ví dụ trên, toàn bộ nội dung ghi lại sẽ như thế này:

$ gpg --edit-key 5980f1c63aeb7534f36c3c669b838c4a93779a09...
gpg> adduid
Real name: Import test
Email address: key.import.test@example.proton.me
Comment:...
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

sec rsa3072/9B838C4A93779A09
created: 2022-10-11 expires: never usage: SC
trust: ultimate validity: ultimate
ssb rsa3072/07FE974BC493DC08
created: 2022-10-11 expires: never usage: E
[ultimate] (1) Some identity
[ unknown] (2). Import test
gpg> uid 1
...
gpg> deluid
Really remove this user ID? (y/N) y
...
gpg> save

5. Kiểm tra danh tính người dùng của các khóa bằng lệnh:

gpg --list-keys 

Kết quả hiển thị sẽ trông giống như thế này:

$gpg --list-keys 5980f1c63aeb7534f36c3c669b838c4a93779a09
...
pub rsa3072 2022-10-11 [SC]
5980F1C63AEB7534F36C3C669B838C4A93779A09
uid [ultimate] Import test
sub rsa3072 2022-10-11 [E]

Có thể thấy, khóa chỉ có một danh tính người dùng duy nhất liên kết với nó và danh tính đó được liên kết với một địa chỉ Proton Mail duy nhất.

6. Xuất khóa từ GnuPG bằng lệnh:

gpg --armor --export-secret-keys  > exported-key.asc

7. Bây giờ có thể nhập khóa vừa xuất vào Proton Mail

Khóa không có khóa phụ mã hóa

Ý nghĩa của điều này

Để đảm bảo người dùng Proton Mail có thể nhận được email được mã hóa, các dịch vụ của Proton yêu cầu mọi khóa địa chỉ phải có khả năng mã hóa dữ liệu. Đó là lý do tại sao các khóa được nhập phải chứa ít nhất một khóa phụ có thể thực hiện mã hóa (một số khóa phụ chỉ có thể được sử dụng cho chữ ký).

Cách khắc phục điều này

  1. Mở GnuPG và kiểm tra các khóa phụ của khóa đang cố gắng nhập bằng cách chạy lệnh:
gpg --list-keys 

Kết quả hiển thị sẽ trông giống như thế này:

$ gpg --list-keys key.import.test@example.proton.me
pub rsa3072 2022-09-21 [SC]
C931E2A00A01EE4604049A4EA9C08446B1B88861
uid [ultimate] Import key guide

Trong ví dụ này, khóa chỉ có một khóa phụ có tính năng Ký và Xác thực (được đánh dấu [SC]). Không có khóa phụ nào có tính năng mã hóa (vốn sẽ được đánh dấu [E]).

2. Chọn khóa cần chỉnh sửa bằng lệnh:

gpg --edit-key 

Thêm khóa phụ mới bằng lệnh:

addkey

Chọn thuật toán mã hóa. Proton chỉ hỗ trợ RSA (chỉ mã hóa) hoặc ECC (chỉ mã hóa).

Đối với khóa phụ RSA, chọn kích thước. Proton yêu cầu kích thước tối thiểu là 2048 bit.

Chọn ngày hết hạn. Proton yêu cầu giá trị là 0 (không có ngày hết hạn).

3. Xác nhận khóa phụ mới và lưu các thay đổi bằng lệnh:

save

Toàn bộ bản ghi sẽ trông giống như thế này:

$ gpg --edit-key key.import.test@example.proton.me
gpg> addkey
Hãy chọn loại khóa mong muốn:
(3) DSA (chỉ ký)
(4) RSA (chỉ ký)
(5) Elgamal (chỉ mã hóa)
(6) RSA (chỉ mã hóa)
(14) Khóa hiện có từ thẻ
Lựa chọn? 6
Khóa RSA có thể dài từ 1024 đến 4096 bit.
Muốn kích thước khóa nào? (3072)
Kích thước khóa yêu cầu là 3072 bit
Vui lòng chỉ rõ khóa sẽ có hiệu lực trong bao lâu.
0 = khóa không bao giờ hết hạn
= khóa hết hạn trong n ngày
w = khóa hết hạn trong n tuần
m = khóa hết hạn trong n tháng
y = khóa hết hạn trong n năm
Khóa có hiệu lực trong? (0) 0
Khóa hoàn toàn không hết hạn
Thông tin này có đúng không? (y/N) y
Thực sự tạo? (y/N) y
gpg> save

4. Kiểm tra danh tính người dùng của khóa bằng lệnh:

gpg --list-keys 
gpg --list-keys key.import.test@example.proton.me
pub rsa3072 2022-09-21 [SC]
C931E2A00A01EE4604049A4EA9C08446B1B88861
uid [ultimate] Hướng dẫn nhập khóa
sub rsa3072 2022-10-11 [E]

Có thể thấy, khóa hiện đã có một khóa phụ có khả năng mã hóa.

5. Xuất khóa từ GnuPG bằng lệnh:

gpg --armor --export-secret-keys  > exported-key.asc

6. Bây giờ có thể nhập khóa vừa xuất vào Proton Mail

Khóa sử dụng các thuật toán không được hỗ trợ

Ý nghĩa của điều này

Khóa OpenPGP có thể hỗ trợ nhiều thuật toán mã hóa khác nhau, một số thuật toán trong đó không được Proton coi là đủ an toàn để bảo vệ email.

Proton sẽ từ chối các khóa sử dụng thuật toán yếu hoặc lỗi thời để tránh làm giảm mức độ bảo mật của những người dùng khác và đảm bảo người dùng Proton Mail có thể giải mã các thư đã nhận.

Các thuật toán bất đối xứng sau đây không được Proton hỗ trợ:

  • RSA với khóa nhỏ hơn 2048 bit
  • ElGamal
  • Khóa ECC với các đường cong khác ngoài x25519 và P-256, P-384 hoặc P-521 của NIST
  • DSA

Khóa được nhập cũng cần báo hiệu hỗ trợ AES-256 làm mật mã đối xứng, SHA-256 làm hàm băm và ZLIB làm hàm nén.

Cách khắc phục

  1. Kiểm tra các thuật toán được sử dụng bởi mỗi khóa bằng
gpg --list-keys 

Kết quả đầu ra sẽ trông giống như sau:

$ gpg --list-keys key.import.test@example.proton.me
sec dsa2048 2022-09-21 [SC] [expires: 2024-09-20]
C931E2A00A01EE4604049A4EA9C08446B1B88861
uid Hướng dẫn nhập khóa
ssb elg2048 2022-09-21 [E] [expires: 2024-09-20]

Ở đây, khóa chính (được đánh dấu bằng tính năng SC(cửa sổ mới) ) là khóa DSA và khóa phụ mã hóa là khóa ElGamal.

Nếu khóa chính (khóa có tính năng chứng nhận) sử dụng thuật toán lỗi thời hoặc yếu, việc nhập khóa sẽ không thể thực hiện được.

2a. Có thể tạo khóa mới trực tiếp trong phần cài đặt tài khoản của ứng dụng web Proton Mail hoặc bằng cách sử dụng GnuPG với lệnh:

gpg --generate-key

2b. Nếu khóa chính sử dụng thuật toán được hỗ trợ nhưng một trong các khóa phụ sử dụng thuật toán lỗi thời hoặc yếu, có thể xóa khóa phụ này (và tạo khóa phụ mới nếu cần) bằng lệnh:

gpg --edit-key 

Chọn khóa phụ sử dụng thuật toán không được hỗ trợ bằng lệnh:

key 

trong đó n là chỉ mục của khóa phụ (như hiển thị trong lời nhắc)

Sau đó xóa khóa bằng lệnh:

delkey

Nếu không còn khóa phụ mã hóa, có thể tạo khóa phụ mới bằng lệnh:

addkey

3. Xác nhận các thay đổi bằng lệnh:

save

Toàn bộ bản ghi sẽ trông giống như thế này:

$ gpg --edit-key test@gpg.example.proton.me
...
sec rsa3072/BC93CFA50EFCDAF0
đã tạo: 2022-11-04 hết hạn: không bao giờ sử dụng: SC
độ tin cậy: tối đa độ hợp lệ: tối đa
ssb elg2048/CEB2A2B7DB363D99
đã tạo: 2022-11-04 hết hạn: không bao giờ sử dụng: E
[tối đa] (1). teststes
gpg> key 1
gpg> delkey
...
gpg> addkey
...
sec rsa3072/BC93CFA50EFCDAF0
đã tạo: 2022-11-04 hết hạn: không bao giờ sử dụng: SC
độ tin cậy: tối đa độ hợp lệ: tối đa
ssb rsa2048/E910A70D5E1E5FC8
đã tạo: 2022-11-04 hết hạn: không bao giờ sử dụng: E
[tối đa] (1). teststes
gpg> save



4. Xuất khóa từ GnuPG bằng lệnh:

gpg --armor --export-secret-keys  > exported-key.asc

5. Bây giờ có thể nhập khóa mới được xuất vào Proton Mail