Làm cách nào để chỉ định khóa riêng khi giải mã tệp bằng GnuPG?


22

Tôi đang cố gắng giải mã một tệp bằng GnuPG, nhưng khi sử dụng lệnh dưới đây:

gpg --decrypt filename.gpg

Tôi nhận được thông báo sau:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

Tôi đã có khóa riêng mà tệp đã được mã hóa, nhưng tôi không chắc làm thế nào tôi có thể chỉ định nó. Có tùy chọn nào tôi có thể đưa vào khi thực hiện giải mã để trỏ đến khóa này không?


1
Không gpg --list-secret-keys 0x3662FD5Ein gì?
Jonas Schäfer

Không, nó không. Có cách nào tôi có thể thêm nó?

Làm thế nào bạn có được khóa riêng?
Jonas Schäfer

ID này thực sự đại diện cho cái gì?
Nishant

Câu trả lời:


17

Tôi đã có khóa riêng mà tệp đã được mã hóa, nhưng tôi không chắc làm thế nào tôi có thể chỉ định nó.

Tôi hiểu điều này là "Tôi đã có một tệp chứa khóa riêng, nhưng không biết làm thế nào để nói với GnuPG sử dụng nó".

GnuPG yêu cầu các khóa (cả công khai và riêng tư) phải được lưu trữ trong khóa GnuPG. Điều này dễ như

gpg --import [keyfile]

Sau đó, bạn sẽ có thể giải mã tệp chính xác theo cách bạn đã thử.


5
Vậy gpg có đủ thông minh để biết khóa nào để giải mã khi bạn đã nhập một số khóa không?
RollRoll

Đúng. Thông thường, khóa thậm chí được tham chiếu trong tệp được mã hóa, nếu không GnuPG sẽ thử tất cả các khóa.
Jens Erat

Tôi sử dụng GnuPG theo lập trình và có một khóa với hàng trăm khóa riêng và tin nhắn có thể được mã hóa với hàng tá trong số chúng. Có vẻ hơi lãng phí khi nó chỉ thử tất cả chúng (thực ra nó cố gắng mở khóa tất cả chúng bằng cụm mật khẩu đã cho và lấy cụm từ đầu tiên hoạt động).
jlh

2
GnuPG chỉ thử tất cả nếu khóa bị bên gửi gửi ẩn. Nó cảm thấy trường hợp sử dụng của bạn không phải là một trong những mục tiêu thiết kế của GnuPG. Nếu bạn biết khóa riêng chính xác mặc dù nó không được lưu trong tệp được mã hóa, hãy xem xét việc quản lý các thư mục / dây khóa nhà GnuPG khác nhau bằng một khóa riêng thay thế.
Jens Erat

Có, có vẻ như trường hợp sử dụng của tôi không phù hợp với gpg. Để hoàn thiện, đây là một quan sát chi tiết hơn: ID người nhận của tôi không bị ẩn (không sử dụng -R), vì vậy gpg biết nên chọn một trong số hàng chục phím mà có thể thử, không cần phải thử toàn bộ khóa. Tuy nhiên, gpg không biết tôi đã cung cấp khóa mật khẩu nào, do đó, nó phải thử hàng tá khóa đó, điều này làm chậm mọi thứ một cách đáng kể.
jlh

6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available

3
Chào mừng bạn đến với SuperUser, đề xuất của bạn đã có trong câu trả lời khác. Bạn nên nâng cao câu trả lời đó thay vì làm mới. Bạn chưa có đủ danh tiếng để làm điều đó, hãy đợi cho đến khi bạn làm điều đó.
Vlastimil Ovčáčík

2

Bạn không cần phải khai báo khóa bí mật trong lệnh giải mã gpg. Nếu cặp khóa - cả khóa Công khai Khóa riêng - như trạng thái Jens có mặt trên khóa trên máy chủ nơi bạn đang giải mã, GPG sẽ tự động xác định khóa bí mật cần thiết để giải mã và đưa ra thách thức mật khẩu.

TUY NHIÊN nếu bạn muốn thử tất cả các khóa (không được lưu trong bộ nhớ cache) ( có thể bạn đang kiểm tra một tệp được mã hóa bằng nhiều khóa ), sử dụng công tắc --try-all-secretssẽ chuyển qua tất cả các khóa bí mật trên khóa của bạn để thử lần lượt. I E:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Lãnh thổ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.