mutt : gpgme 또는 classic gpg를 사용 하시겠습니까?


13

GnuPG 통합에 관한 Mutt의 위키 와 다른 많은 곳 (데비안의 기본 설정 등)에서는 mutt를 gnupg에 연결하는 고전적인 방법을 사용합니다. 즉, 하나의 명령을 gpg직접 호출하도록 구성합니다 . 반면에,라는 라이브러리가 있습니다.이 라이브러리는 gpgme정확하게 표준화하려고합니다. "mutt gpgme"에 대한 웹 검색은 실제로 유용한 결과를 얻지 못했습니다.

사용의 장점과 단점은 무엇입니까 set crypt_use_gpgme=yes에서는 .muttrc? 왜 그렇게 자주 사용되지 않습니까?

답변:


8

많은 사람들이 실제로 GPGME를 이해하지 못하고 존재하는 문서가 기본적으로 당시 작성된 코드 주석이라는 것을 도움이되지 않습니다. 그러나 전체 GNU Privacy Guard 제품군에 대한 전체 또는 거의 완전한 프로그래밍 방식의 액세스를 허용하며, libassuan, gpg-agent 및 기타 다양한 구성 요소에도 액세스 할 수 있어야합니다. 이것이 기본적으로 S / MIME 구현을 포함하는 이유이기도합니다. 90 년대 후반에 큰 소리로 외친 소수의 회사 외에는 아무도 없었습니다.

현재 GPGME에는 500 개의 개별 기능 이상이 포함되어 있으며 명령 행에서 GPG로 수행하는 모든 작업을 확실히 다루고 있습니다. 그러나 그것은 또한 올바른 방향이 아닌 것으로 결정된 이전 디자인 선택의 유물도 포함하고 있습니다. 예를 들어, 이것은 GTK 2가 큰 API입니다. 분명히, 이것은 가야합니다 (그리고 시간이 허락 할 때). 요즘 입양의 가장 큰 장애물은 누군가가 "API"라고 말하면 대부분의 코더는 C 헤더 파일을 즉시 자신의 코드로 컴파일하여 해당 파일에 액세스하기 위해 생각하지 않는다는 것입니다. 요즘 대부분의 사람들은 RESTful 한 것을 생각하고 있거나 적어도 JSON 형식의 데이터와 상호 작용하도록합시다. GPGME는 그것과는 거리가 멀다 얻을 수 있습니다. JSON으로 잘 재생할 수 있어야하지만 편집 키를 사용할 수 없기 때문에 RESTful 할 수는 없습니다. 또한 웹을 통한 키 관리는 문제를 요구합니다.

문서화되지 않은 많은 기능과 그 측면이 있기 때문에 소프트웨어를 처음부터 사용하는 사람들조차도 여전히 어떤 것에 놀랄 수 있습니다. 예를 들어 공식 스키마를 제외한 모든 것이 포함 된 키링 데이터의 XML 형식 (2 개월 전에 생성 될 때까지).

다른 한편으로, Mutt가하는 모든 좋은 일에 대해서는 다소 충격적인 일도합니다. 예를 들어, GPGME 사용 여부에 상관없이 Mutt이 암호를 캐시 할 이유가 전혀 없습니다. 두 시나리오 모두 (pgg-agent가 있거나없는) GPG로 넘겨 져야합니다. 마찬가지로, ~/.gnupg/gpg.conf파일 (및 해당 디렉토리의 다른 것) 의 구성 매개 변수를 준수해야합니다 . 물론 다른 계정에 대한 대체 키 ID를 설정하여 명령이 호출되는 방식을 변경하거나 대체 구성 파일 또는 전체 디렉토리를 지정할 수도 있습니다 (예 :gpg --homedir ~/.gnupg-work/gpg.conf). 그러나 Mutt는 암호 또는 키 관리와 같이 상호 작용하는 프로그램으로 이미 해결되었지만 GPG의 일반적인 기능에 대한 액세스를 허용하지 않는 문제를 해결하는 데 시간을 낭비합니다. 여러 명의 수신자에게 그룹 회선을 사용하거나 특정 수신자의 키 선택을 재정의하는 것과 같이 (비밀 키를 계속 분실하거나 암호를 잊어 버린 사람이 항상 UID와 동일한 주소를 가진 15 개의 공개 키를 가지고 있기 때문에 기본 동작은 정확하지 않은 첫 번째 일치 항목을 선택하는 것입니다). 이맥스는 조금 나아졌지 만 gpg.conf파일 을 선택하지 못하여 대개 프롬프트하려는 내용에 자동으로 응답합니다.

이제 좀 더 유용하고 접선 적으로 관련된 것을 위해 GPGME는 gpgme-tool이라는 또 다른 멋진 문서화되지 않은 것을 제공합니다. UNIX 소켓에서 실행되는 GPGME의 기본 인터페이스입니다 (물론 ncat 또는 원하는 경우 네트워크 포트에 배치하기 위해 무언가를 사용할 수 있습니다). 문서화되어 있지는 않지만 실행하여 잠시 동안 상호 작용하고 help 명령으로 시작하면 상당히 자명합니다. 또는 이것은 꽤 잘 작동합니다.

echo help | gpgme-tool > gpgme-tool-cheatsheet.txt

모든 기본 사항 (암호화, 암호 해독, 서명, 확인, 암호 변경, 키 생성, 키 나열, 비밀 키 나열, 특정 키 검색 또는 선택 등)을 행복하게 수행합니다. "숨겨진"XML 형식을 보려면 다음을 시도하십시오.

echo "KEYLIST --secret-only" | gpgme-tool > secret-key-list.xml

비밀 키를 내 보내지 않고 단지 키와 키에 대한 데이터를 나열합니다. 또한 출력 형식 크래프트로 내 보내서 실제로 XML로 인식하기 전에 필터링해야합니다 (맨 위 줄, 각 후속 줄의 첫 두 문자 및 각 줄 끝에서 % 0A 삭제) ). 어쨌든 gpgme-tool은 GPGME가 실제로 무엇을 할 수 있는지 더 잘 알 수 있습니다. 예를 들어 GPGME에 대한 PyME Python 바인딩은 GPGME 기능을 자동으로 일치 시키려고 시도합니다 (일반적으로 문제없이 수행). pyme.core.pygpgme의 현재 기능 목록은 534입니다. 커맨드 라인과 비교하면 GPG 1.4.20에는 322 옵션이 있고 2.1.11에는 347이 있습니다 (2.0은 건너 뛰었으므로 확인할 수는 없지만 확인해야합니다) 그 둘 사이 어딘가에).

주요 명령의 일치를 언급하는 이전 답변에 대해서는 구성 옵션과 Mutt가 GPG에 대한 전체 액세스를 "허용"하는지 여부에 의해서만 구동되어야합니다. 나는 현재 GPGME와 함께 Mutt를 사용하고 있으며 언급 된 두 가지 기능 (메일 키 및 추출 키)은 괜찮습니다. 어딘가에. 그런 일이 발생하면 일반적으로 Emacs 또는 다른 것으로 전환해야합니다. 그럼에도 불구하고 Mutt가 컨텐츠가 실제로 텍스트인지 여부 또는 OpenPGP 형식 컨텐츠를 검사하는 방법에 문제가있는 것으로 보입니다. 우리 모두 대신 PGP / MIME을 사용해야한다고 말하고 싶을뿐 아니라

기본적으로 Mutt는 키, 서명 및 / 또는 암호화 된 내용이 포함 된 하나 이상의 부분이있는 다중 부분 MIME 인 메시지에만 의존하는 것처럼 보입니다. 일치하는 콘텐츠를 찾는 일반 이메일을 검색 할뿐만 아니라 GPG 나 GPGME의 결함도 아닙니다. 해결책은 해당 기능을 Mutt에 추가하거나 해당 기능이있는 메시지로 메시지를 열거 나 (예 : EPA / EasyPG를 사용하는 Emacs, 기본적으로 활성화해야 함) 메시지를 직접 명령 (또는 gpgme-tool)으로 파이프하는 것입니다. 원하는 경우 배관 할 때 일반적으로 일반 명령으로 직진하는 것이 더 쉽습니다).

GPGME는 항상 시스템에 설치된 것과 동일한 소스 버전에서 컴파일해야하기 때문에 모든 사람이 사용할 수있는 것은 아닙니다. GPG를 업그레이드하고 GPGME를 다시 컴파일하지 않으면 문제가 발생할 수 있습니다. 반면에 소스에서 GPG를 설치하는 것이 일반적으로 권장되므로 GPGME 라우트를 사용하는 경우 GPG를 업데이트 할 때 재 컴파일을 실행하는 것이 좋습니다.

자신이 선택한 배포판에서 제공하는 패키지에만 의존하는 사람들은 해당 패키지의 관리자가 유지 관리에 방해가 될 수있는 모든 것에 종속되며 GPG와 GPGME의 요구 사항을 항상 이해하거나 이해하지 못할 수도 있습니다. 예를 들어, GPGME 용 MacPorts 패키지는 GPG 2.0.x에 의존하도록 설정되어 있으며, 이는 GPG 2.1.x와 충돌하도록 설정되어 있으므로 2.1을 설치하는 대부분의 사람들은 분명히 함께 작동하더라도 GPGME를 설치할 수 없습니다. 이 시나리오에서 GPGME가 작동하게하려면 MacPorts가 권장하지 않는 작업을 수행해야합니다 (포트 관리 시스템 외부, 그러나 내부 컴파일 /opt/local). 일부 Linux 배포판에는 비슷한 문제가있을 수 있습니다.

따라서 PGP / MIME 만 사용하려는 경우 GPGME 통합 사용에 문제가 없어야하며 .muttrc파일에 특정 명령을 구성 할 필요가 없습니다 . PGP / 인라인을 다루는 경우 문제가 발생하지만 Mutt을 사용하여 피할 수 없으므로 GPGME를 사용하는 것이 좋습니다.

면책 조항 : 모든 C가 아닌 개발자가 정밀 검사 후 물건을 사용할 수 있도록 API에 API를 작성하는 개발자 작업에 참여하고 있습니다. 또한 PyME 0.9를 Python 2에서 Python 3으로 포팅했습니다 (현재 GPGME 지점에 있으며 PyPI 및 pip를 통해 Python 2 버전 만 사용할 수 있습니다).

업데이트 : PyME의 Python 3 포트는 이제 GPGME의 마스터 분기에 있으며 PyPI에서 pyme3으로 사용할 수 있습니다.


3

일부 기능이 gpgme인터페이스 에서 직접 작동하지 않기 때문 입니다.

예를 들어, 내 환경에서 다음 기능이 작동하지 않습니다.

^K      extract-keys
<Esc>k  mail-key

때 모든 기본적인 핵심 기능으로 작업 gpgme.


0

crypto guys는 편집증이며 명령 줄을 이해합니다. 이 라이브러리는 새롭고 테스트되지 않았지만 이론적 인 장점을 제공합니다. 시도해보십시오. 테스트 더미가 될 수 있습니다.


1
이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오.
Anthon

문제는 왜 어떻습니까. 지금 틀림없이 왜 ... 더 심리학의 영역에
hildred

1
도서관은 거의 새로운 곳이 아니며 2000 년까지 커밋되었습니다.
Ben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.