Cách xuất khóa ASC riêng tư / bí mật để giải mã tệp GPG


88

Thông tin cơ bản: Sếp của tôi đã thử xuất một khóa ASC cho tôi với các phần công khai và riêng tư nhưng bất cứ khi nào tôi nhận được tệp, phần riêng tư không bao giờ tải lên và nó sẽ không giải mã bất kỳ tệp nào.

Chúng tôi đã thử Xuất Khóa ASC bằng:

  • Ứng dụng Windows Kleopatra 2.1 (có trong gpg4win)
  • Windows Application GNU Privacy Assistant (bao gồm trong gpg4win)

            Error: "Decryption failed. Secret Key Not available." 
    

Làm cách nào để bạn xuất đúng cách một khóa asc bí mật hoặc riêng tư để giải mã các tệp gpg?

Câu trả lời:


185

Bạn có thể xuất khóa cá nhân bằng công cụ dòng lệnh từ GPG . Nó hoạt động trên Windows-shell. Sử dụng lệnh sau:

gpg --export-secret-keys

Một bản xuất thông thường với --exportsẽ không bao gồm bất kỳ khóa riêng tư nào, do đó bạn phải sử dụng --export-secret-keys.

Biên tập:

Để tổng hợp thông tin được đưa ra trong nhận xét của tôi, đây là lệnh cho phép bạn xuất một khóa cụ thể có ID 1234ABCD sang tệp secret.asc:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

Bạn có thể tìm thấy ID mình cần bằng lệnh sau. ID là phần thứ hai của cột thứ hai:

gpg --list-keys

Để chỉ xuất 1 khóa bí mật cụ thể thay vì tất cả chúng:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber là số id khóa cho khóa mong muốn mà bạn đang cố gắng xuất.


4
@Brian: Thao tác này sẽ kết xuất khóa vào bảng điều khiển. Nếu bạn muốn lưu trữ nó trong một tệp, bạn có thể chuyển hướng đầu ra đến một tên tệp tùy ý ("gpg --export-secret-key> secret.asc").
Demento

5
@Brian: Điều này cung cấp cho bạn kết quả ở dạng ASCII chứ không phải ở dạng nhị phân. Nếu bạn giữ nó trong một tập tin, nó không thực sự quan trọng. Nhưng một khi bạn muốn vượt qua nó xung quanh bất kỳ cách nào khác, phiên bản ASCII là dễ dàng hơn để xử lý (gửi nó nội tuyến trong một ví dụ email)
Demento

8
Có thể bạn muốn mang khóa bí mật của mình đến một vị trí khác. Trong trường hợp này, bạn nên mã hóa dữ liệu đã xuất: "gpg --export-secret-key keyIDNumber | gpg -c> Encryption", hãy giải mã bằng "gpg -o chưa được mã hóa"
rockdaboot

2
Các khóa được xuất từ ​​GnuPG vẫn được mã hóa (đó là lý do tại sao bạn không cần nhập cụm mật khẩu khóa cá nhân), vì vậy thực sự không cần phải mã hóa lại.
Phà Boender


32

Tất cả các câu trả lời trên đều đúng, nhưng có thể thiếu một bước quan trọng, bạn cần chỉnh sửa khóa đã nhập và "cuối cùng tin tưởng" khóa đó

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

và chọn 5 để bật khóa cá nhân đã nhập đó làm một trong các khóa của bạn


18

Xem phương pháp điều trị của Dark Otter

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Nếu trang web ngừng hoạt động, hãy tham khảo bản sao lưu archive.org:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

trong đó bao gồm một cách an toàn hợp lý để chuyển khóa. Bạn có thể đưa đề xuất đó vào shell-script được hiển thị bên dưới để sử dụng nhiều lần.

Trước tiên, hãy lấy KEYID bạn muốn từ danh sách được hiển thị bởi

$ gpg -K

Từ danh sách kết quả, lưu ý KEYID (8 thập lục phân sau giây) bạn cần để chuyển.

Sau đó, đặt scipts shell đã thử nghiệm "export_private_key" trên tài khoản đầu tiên và tạo pubkey.gpg + key.asc của bạn. Sau đó, gọi trên tài khoản thứ hai "import_private_key". Đây là nội dung của họ được hiển thị với mèo (sao chép và dán nội dung):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

Bây giờ, chuyển bằng một số phương tiện "pubkey.gpg" (nếu cần) và "key.asc" riêng tư sang tài khoản thứ hai và gọi chương trình được hiển thị bên dưới.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

Theo tinh thần của Otter "Và điều đó, lẽ ra, điều đó".


Cảm ơn bạn đã tập lệnh bao gồm cả khóa công khai và khóa riêng tư trong một tệp được bảo vệ bằng cụm mật khẩu. Làm cho cuộc sống của tôi tốt hơn nhiều!
codekoala

Lựa chọn --no-use-agentlà lỗi thời trong phiên bản gpg 2.
Josh Habdas

9

Tôi nghĩ rằng bạn vẫn chưa nhập khóa riêng tư như lỗi thông báo cho biết, Để nhập khóa công khai / riêng tư từ gnupg:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key

tôi đã hỏi về việc xuất từ ​​một máy tính hoạt động ... bạn chỉ có thể nhập khóa nếu khóa đó trên máy chủ cục bộ.
Brian McCarthy

@Brian McCarthy: Bạn đang cố nói gì vậy?
SIFE

Chúng ta có thực sự cần nhập khóa công khai nếu khóa riêng đã được nhập rồi không? Theo tôi hiểu, khóa công khai có thể được tạo từ khóa riêng tư bất cứ thứ gì.
farhany

@farhany Tôi nghĩ là có, vì bạn sẽ cần nó khi ký vào tin nhắn của mình.
SIFE

6

điều này kết thúc làm việc cho tôi:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

bạn có thể đặt tên keyfilename.asc bằng bất kỳ tên nào miễn là bạn vẫn giữ phần mở rộng .asc.
lệnh này sao chép tất cả các khóa bí mật trên máy tính của người dùng sang keyfilename.asc trong thư mục làm việc của nơi lệnh được gọi.

Để chỉ xuất 1 khóa bí mật cụ thể thay vì tất cả chúng:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber là số id khóa cho khóa mong muốn mà bạn đang cố gắng xuất.


1
Bạn có thể liệt kê tất cả các khóa có sẵn bằng "--list-key". Cột thứ hai sẽ chứa các ID như "2048g / 1234ABCD". Tìm khóa mong muốn và xuất nó với "gpg --export-secret-keys 1234ABCD> secret.asc", tất nhiên là thay đổi 1234ABCD bằng đúng ID. Bạn cũng có thể thêm cờ "-a". Nó ghi đầu ra với các ký tự ASCII, đề phòng trường hợp đầu ra nhị phân gây ra sự cố.
Demento

@demento, nhờ những thông tin phản hồi thêm ... bệnh thêm rằng câu trả lời
Brian McCarthy

2
bạn vẫn cần -a nếu bạn thực sự muốn asc
RichieHH

Làm thế nào để bạn nhập chúng vào một máy tính khác?
Natim

@Natim Tôi tưởng tượng bạn đưa exportedKeyFilename.ascđến máy tính khác và sau đó thực hiện gpg --allow-secret-key-import --import exportedKeyFilename.asctrong thư mục có .asctệp. Xem: unix.stackexchange.com/questions/184947/…
Brōtsyorfuzthrāx

5

Tương tự như câu trả lời của @Wolfram J, đây là một phương pháp để mã hóa khóa cá nhân của bạn bằng cụm mật khẩu :

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

Và một phương pháp tương ứng để giải mã:

gpg private_key.asc

5

1.Xuất khóa bí mật (đây là điều mà sếp của bạn nên làm cho bạn)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Nhập khóa bí mật (nhập privateKey của bạn)

gpg --import privateKey.asc

3. Vẫn chưa xong, cuối cùng bạn vẫn cần tin tưởng vào một chìa khóa. Bạn sẽ cần đảm bảo rằng cuối cùng bạn cũng tin tưởng vào một chìa khóa.

gpg --edit-key yourKeyName

Nhập độ tin cậy, 5, y, rồi thoát

Nguồn: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

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.