Đại lý GPG hoạt động như thế nào?


31

Tôi có một dòng trong tập tin gpg.conf của tôi nói rằng use-agent.
Tôi hiểu điều này đề cập đến gpg-agent là một daemon. Trang man nói "gpg-agent là một daemon để quản lý các khóa bí mật (riêng tư) độc lập với bất kỳ giao thức nào. Nó được sử dụng như một phụ trợ cho gpg và gpgsm cũng như cho một vài tiện ích khác."

Bất cứ ai có thể giải thích điều này có nghĩa là gì trong bối cảnh của gpg? Điểm của gpg-tác nhân là gì?

Hiện tại tôi có GPG 1.4.

  1. Làm thế nào tôi có thể biết liệu các đại lý đang chạy? Tôi thực sự thậm chí không rõ liệu gpg-agent có được cài đặt với gói GPG 1.4 cơ bản hay không.
  2. Làm thế nào tôi có thể bắt đầu nó, nếu nó không chạy?
  3. Làm thế nào tôi có thể ngăn chặn nó, nếu nó đang chạy?

Câu trả lời:


38

Gpg-agent là một chương trình chạy trong nền ( daemon ) và lưu trữ các khóa bí mật GPG trong bộ nhớ. Khi một quy trình GPG cần khóa, nó sẽ liên lạc với chương trình gpg-agent đang chạy thông qua một ổ cắm và yêu cầu khóa. Nếu quy trình đại lý có khóa, nó cung cấp cho gpg. Nếu không, nó sẽ cố tải khóa được mã hóa từ khóa của bạn và nhắc bạn nhập cụm mật khẩu của khóa. Khi tác nhân đã lấy được khóa được giải mã, nó sẽ chuyển nó sang quy trình gpg. Ngoài các khóa GPG, Gpg-agent có thể lưu trữ tương tự các khóa SSH và cung cấp chúng cho các quy trình SSH, giống như ssh-agentchương trình đi kèm với SSH.

Điểm chính của việc sử dụng một tác nhân chính là để bạn không phải nhập cụm mật khẩu của mình mỗi khi bạn sử dụng khóa của mình. Tác nhân giữ chìa khóa trong bộ nhớ từ lần này sang lần khác. Bản thân GPG không thể làm điều đó bởi vì quá trình chấm dứt khi nó hoàn thành công việc.

Một điều khác mà một tác nhân chính có thể làm là cho phép GPG chạy trên một máy từ xa để lấy các khóa trong tác nhân cục bộ (có thể tải chúng từ một tệp cục bộ và lời nhắc cho cụm mật khẩu của bạn). Tác nhân Gpg chưa thể làm điều này, đây là một tính năng được lên kế hoạch . SSH đã có đại lý chuyển tiếp trong một thời gian rất dài. (Đây là lý do không sử dụng gpg-agent cho các khóa SSH.)

GPG 1.x hoặc 2.0.x biết rằng tác nhân đang chạy vì GPG_AGENT_INFObiến được đặt. Biến này chứa vị trí của ổ cắm để giao tiếp với tác nhân cũng như ID tiến trình của tác nhân. GPG 2.1 luôn đặt ổ cắm đại lý ~/.gnupg. GPG 2.x luôn bắt đầu một quy trình đại lý nếu không chạy.

Bạn có thể bắt đầu các đại lý chỉ bằng cách chạy gpg-agent. Nếu bạn muốn giữ một quy trình đại lý như một phần của phiên của mình, bạn có thể thay thế việc gọi trình quản lý phiên của mình bằng gpg-agent my-session-manager; một số bản phân phối thiết lập điều này tự động. GPG sẽ tự động khởi động tác nhân và GPG 2.1 sẽ tìm thêm tác nhân đang chạy mà không cần biến môi trường, vì vậy bạn không cần khởi động nó theo cách này trừ khi bạn sử dụng GPG phiên bản cũ hơn hoặc bạn sử dụng tác nhân để lưu trữ các loại khác các khóa như SSH.

Bạn có thể gửi các lệnh tác nhân bằng lệnhgpg-connect-agent shell. Gửi killlệnh để giết quá trình tác nhân (hoặc gửi tín hiệu).

Gpg-đại lý tàu với chính GPG. Một số bản phân phối gói riêng.


6
"Khi một quy trình GPG cần khóa, nó sẽ liên lạc với chương trình gpg-agent đang chạy thông qua một ổ cắm và yêu cầu khóa. Nếu quy trình đại lý có khóa, nó sẽ cung cấp cho gpg." Hơi sai lệch. Các đại lý không cung cấp một chìa khóa cho quá trình khách hàng. Thay vào đó, nó thực hiện các hành động bằng cách sử dụng khóa, thay mặt cho quá trình máy khách. (Máy khách cung cấp cho đại lý một thứ gì đó để ký, mã hóa hoặc giải mã và đại lý làm như vậy.) Khi sử dụng một tác nhân, phần mềm máy khách SSH và GPG của bạn không bao giờ có quyền truy cập vào khóa thực tế.
Peter Samuelson

3
"Tác nhân Gpg chưa thể làm điều này, đây là một tính năng được lên kế hoạch. SSH đã chuyển tiếp tác nhân trong một thời gian rất dài. (Đây là lý do không sử dụng gpg-agent cho các khóa SSH.)" Không hoàn toàn đúng. gpg-agent hoạt động tốt với chuyển tiếp đại lý SSH. Tôi dùng nó mỗi ngày. Máy khách SSH xử lý chuyển tiếp, gpg-agent không thực sự liên quan đến điều đó. Những gì không được hỗ trợ là để chính GPG nói chuyện với một đại lý từ xa.
Peter Samuelson
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.