GPG 에이전트는 어떻게 작동합니까?


31

gpg.conf 파일에라는 줄이 use-agent있습니다.
나는 이것이 데몬 인 gpg-agent를 참조한다는 것을 이해합니다. 매뉴얼 페이지에 "gpg-agent는 어떤 프로토콜과도 독립적으로 비밀 (비공개) 키를 관리하는 데몬입니다. gpg 및 gpgsm의 백엔드로 사용되며 다른 유틸리티에도 사용됩니다."

gpg와 관련하여 이것이 무엇을 의미하는지 설명 할 수 있습니까? gpg-agent의 요점은 무엇입니까?

현재 GPG 1.4가 있습니다.

  1. 에이전트가 실행 중인지 어떻게 알 수 있습니까? gpg-agent가 기본 GPG 1.4 패키지와 함께 설치되어 있는지 여부는 실제로 확실하지 않습니다.
  2. 실행되고 있지 않으면 어떻게 시작할 수 있습니까?
  3. 실행중인 경우 어떻게 중지합니까?

답변:


38

Gpg-agent는 백그라운드 ( 데몬 ) 에서 실행되고 GPG 비밀 키를 메모리에 저장 하는 프로그램입니다 . GPG 프로세스에 키가 필요한 경우 소켓을 통해 실행중인 gpg-agent 프로그램에 접속 하여 키를 요청합니다. 에이전트 프로세스에 키가 있으면 gpg에 제공합니다. 그렇지 않은 경우 키링에서 암호화 된 키를로드하려고 시도하고 키 암호를 입력하라는 메시지를 표시합니다. 에이전트가 해독 된 키를 얻으면 gpg 프로세스로 전달합니다. GPG 에이전트는 GPG 키 외에도 SSH 키와 함께 제공되는 ssh-agent프로그램 과 같이 SSH 키를 유사하게 저장하여 SSH 프로세스에 제공 할 수 있습니다 .

키 에이전트를 사용하는 주요 요점은 키를 사용할 때마다 암호를 입력 할 필요가 없다는 것입니다. 에이전트는 키를 메모리에 한 번에서 다음 번으로 유지합니다. 프로세스가 일단 완료되면 GPG 자체는 그렇게 할 수 없습니다.

키 에이전트가 수행 할 수있는 또 다른 작업은 원격 시스템에서 실행중인 GPG가 로컬 에이전트에서 키를 가져 오는 것입니다 (로컬 파일에서 키를로드하고 암호 문구를 요구할 수 있음). Gpg-agent는 아직이를 수행 할 수 없으며 계획된 기능 입니다. SSH는 오랫동안 에이전트 전달을 수행했습니다. 이것은 SSH 키에 gpg-agent를 사용하지 않는 이유입니다.

GPG 1.x 또는 2.0.x는 GPG_AGENT_INFO변수가 설정되어 있으므로 에이전트가 실행 중임을 알고 있습니다. 이 변수에는 에이전트와 통신 할 소켓의 위치와 에이전트의 프로세스 ID가 포함됩니다. GPG 2.1은 항상 에이전트 소켓을에 배치합니다 ~/.gnupg. GPG 2.x는 에이전트 프로세스가 실행 중이 아닌 경우 항상 시작합니다.

간단히 실행하여 에이전트를 시작할 수 있습니다 gpg-agent. 에이전트 프로세스를 세션의 일부로 유지하려는 경우 세션 관리자의 호출을 gpg-agent my-session-manager; 일부 배포판에서는이를 자동으로 설정합니다. GPG는 에이전트를 자동으로 시작하고 GPG 2.1은 환경 변수 없이도 실행중인 에이전트를 추가로 찾으므로 이전 버전의 GPG를 사용하거나 에이전트를 사용하여 다른 유형을 저장하지 않으면이 방법으로 시작할 필요가 없습니다. SSH와 같은 키

쉘 명령으로 에이전트 명령 을 보낼 수 있습니다 gpg-connect-agent. 에이전트 프로세스를 종료 (또는 신호를 보내 려면) kill명령 을 보내십시오.

Gpg 에이전트는 GPG 자체와 함께 제공됩니다. 일부 배포판은 별도로 배포합니다.


6
"GPG 프로세스에 키가 필요한 경우 소켓을 통해 실행중인 gpg-agent 프로그램에 접속하여 키를 요청합니다. 에이전트 프로세스에 키가 있으면 gpg에 제공합니다." 약간 오해의 소지가 있습니다. 에이전트는 클라이언트 프로세스에 키를 제공하지 않습니다. 대신 클라이언트 프로세스 대신 키를 사용하여 작업을 수행합니다. (클라이언트는 서명, 암호화 또는 암호 해독을 위해 에이전트에 에이전트를 제공하며 에이전트는 그렇게합니다.) 에이전트를 사용할 때 SSH 및 GPG 클라이언트 소프트웨어는 실제 키에 액세스 할 수 없습니다.
피터 사무엘 슨

3
"Gpg-agent는 아직이를 수행 할 수 없습니다. 계획된 기능입니다. SSH가 오랫동안 에이전트 전달을 수행했습니다. (SSH 키에 gpg-agent를 사용하지 않는 이유입니다.)"사실이 아닙니다. gpg-agent는 SSH 에이전트 전달에서 잘 작동합니다. 매일 사용하고 있습니다. SSH 클라이언트는 전달을 처리합니다. gpg-agent는 실제로 관련이 없습니다. 지원되지 않는 것은 GPG 자체 가 에이전트와 원격으로 대화하는 것입니다.
피터 사무엘 슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.