mutt: Sử dụng gpgme hay gpg cổ điển?


13

Wiki của Mutt về tích hợp GnuPG và nhiều nơi khác (như mặc định trên Debian) sử dụng cách kết nối mutt cổ điển với gnupg. Đó là, người ta cấu hình một loạt các lệnh để gọi gpgtrực tiếp. Mặt khác, có một thư viện được gọi gpgme, cố gắng chuẩn hóa chính xác điều đó. Việc tìm kiếm trang web cho "mutt gpgme" không mang lại bất kỳ kết quả thực sự hữu ích nào cho tôi.

Những ưu và nhược điểm của việc sử dụng set crypt_use_gpgme=yestrong là .muttrcgì? Tại sao nó hiếm khi được sử dụng?

Câu trả lời:


8

Rất nhiều người thực sự không hiểu GPGME và có lẽ không có ích gì khi tài liệu tồn tại về cơ bản là phần bình luận mã được viết vào thời điểm đó. Tuy nhiên, nó sẽ cho phép truy cập hoàn toàn hoặc gần hoàn toàn theo chương trình vào toàn bộ bộ GNU Privacy Guard và được cho là cũng cho phép truy cập vào những thứ như libassuan, gpg-agent và nhiều thành phần khác. Đó là lý do tại sao theo mặc định, nó cũng bao gồm việc triển khai S / MIME mà hầu như không có ai bên ngoài một vài công ty đã thốt lên ầm ĩ vào cuối những năm 90.

Hiện tại GPGME bao gồm khoảng 500 chức năng riêng biệt trở lên và chắc chắn bao gồm hầu hết mọi thứ bạn làm với GPG trên dòng lệnh. Tuy nhiên, nó cũng chứa một số di tích của các lựa chọn thiết kế trước đó đã được xác định là không đúng hướng. Ví dụ: đây là một API có số lượng lớn GTK 2 trong đó. Rõ ràng, điều này cần phải đi (và nó sẽ khi thời gian cho phép). Một vấn đề khác xảy ra trong những ngày này, có lẽ trở ngại lớn nhất đối với việc áp dụng là khi ai đó nói "API", hầu hết các lập trình viên không nghĩ ngay đến các tệp tiêu đề C để biên dịch bằng mã riêng của họ để truy cập vào thứ đó; Hãy đối mặt với điều đó, ngày nay hầu hết mọi người đang nghĩ về thứ gì đó RESTful hoặc ít nhất là để họ tương tác với dữ liệu theo định dạng JSON. GPGME là khoảng cách xa như vậy ' s có thể nhận được. Lưu ý rằng mặc dù có thể làm cho nó chơi tốt với JSON, nhưng nó không bao giờ có thể RESTful vì các phím chỉnh sửa không thể. Cộng với việc quản lý khóa qua web chỉ là vấn đề.

Ngoài ra còn có rất nhiều tính năng và khía cạnh không có giấy tờ của sự việc mà ngay cả những người làm việc với phần mềm kể từ khi ra đời vẫn có thể bị bất ngờ bởi một số điều. Giống như, định dạng XML cho dữ liệu khóa có tất cả mọi thứ trừ một lược đồ chính thức (cho đến khi nó được tạo ra vài tháng trước).

Mặt khác, đối với tất cả những điều tốt đẹp mà Mutt làm, nó cũng làm một số điều khá gây sốc. Ví dụ, cho dù GPGME có được sử dụng hay không, không nên có lý do nào để Mutt lưu vào cụm mật khẩu; trong cả hai trường hợp, nó phải được chuyển giao cho GPG (có hoặc không có gpg-agent). Tương tự như vậy, cần phải tôn trọng các tham số cấu hình trong ~/.gnupg/gpg.conftệp (và các tham số khác trong thư mục đó). Chắc chắn, đặt ID khóa thay thế cho các tài khoản khác nhau để thay đổi cách các lệnh được gọi hoặc thậm chí có thể chỉ định tệp cấu hình thay thế hoặc toàn bộ thư mục (ví dụ:gpg --homedir ~/.gnupg-work/gpg.conf). Tuy nhiên, khi mọi thứ ổn định, Mutt lãng phí thời gian để cố gắng giải quyết các vấn đề đã được giải quyết bằng chương trình mà nó tương tác, như cụm mật khẩu hoặc quản lý khóa, nhưng không cho phép truy cập vào các tính năng thông thường của GPG, nhiều trong số đó rất tuyệt vời cho email như sử dụng các dòng nhóm cho nhiều người nhận hoặc ghi đè lựa chọn khóa cho những người nhận cụ thể (bởi vì luôn có một anh chàng bị mất khóa bí mật hoặc quên cụm mật khẩu và giờ bạn đã có 15 khóa công khai có cùng địa chỉ với UID và hành vi mặc định là chọn trận đấu đầu tiên rất có thể không đúng). Emacs tốt hơn một chút ở đó, nhưng thậm chí nó không nhận được gpg.conftập tin thường tự động trả lời những điều nó muốn nhắc.

Bây giờ, đối với một cái gì đó hữu ích hơn một chút và liên quan đến tiếp tuyến, GPGME đi kèm với một thứ không có giấy tờ tiện lợi khác gọi là gpgme-tool. Đó là một giao diện thô sơ với GPGME, nó sẽ chạy trên một ổ cắm UNIX (và tất nhiên bạn có thể sử dụng ncat hoặc một cái gì đó để làm cho nó ngồi trên một cổng mạng nếu bạn muốn). Mặc dù nó không có giấy tờ nhưng nó khá tự giải thích nếu bạn chạy nó và tương tác với nó một lúc và bắt đầu với lệnh trợ giúp. Ngoài ra, điều này hoạt động khá tốt:

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

Nó sẽ vui vẻ làm tất cả các điều cơ bản (mã hóa, giải mã, ký, xác minh, thay đổi cụm mật khẩu, tạo khóa, danh sách khóa, liệt kê các khóa bí mật, tìm kiếm các khóa cụ thể hoặc chọn chúng, v.v.). Nếu bạn muốn xem định dạng XML "ẩn", hãy thử điều này:

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

Điều đó sẽ không xuất các khóa bí mật, chỉ liệt kê chúng và dữ liệu về chúng. Ngoài ra, nó sẽ xuất với một số định dạng đầu ra cần phải được lọc ra trước khi mọi thứ thực sự nhận ra nó là XML (xóa dòng trên cùng, hai ký tự đầu tiên của mỗi dòng tiếp theo và% 0A từ cuối mỗi dòng ). Dù sao, gpgme-tool có thể cho một ý tưởng tốt hơn về những gì GPGME thực sự có thể làm. Ví dụ, các ràng buộc PyME Python cho GPGME, cố gắng tự động khớp các hàm GPGME (và thường đạt được điều đó mà không gặp rắc rối); danh sách các tính năng hiện tại trong pyme.core.pygpgme có đến 534. So sánh với các dòng lệnh và GPG 1.4.20 có 322 tùy chọn, trong khi 2.1.11 có 347 (Tôi đã bỏ qua 2.0 vì vậy tôi không thể kiểm tra, nhưng nó nên ở đâu đó giữa hai cái đó).

Đối với câu trả lời trước liên quan đến việc khớp các lệnh chính, điều đó chỉ nên được điều khiển bởi các tùy chọn cấu hình và liệu Mutt có "cho phép" truy cập đầy đủ vào GPG hay không. Tôi hiện đang sử dụng Mutt với GPGME và hai chức năng được đề cập (khóa thư và khóa trích xuất) đều ổn, mặc dù Mutt gặp khó khăn khi nhận ra nội dung PGP / nội tuyến nếu nó đã gán hoặc chọn loại nội dung văn bản / thuần túy từ một vài nơi. Khi điều đó xảy ra thì có, thường là cần thiết để chuyển sang Emacs hoặc một cái gì đó. Tuy nhiên, điều đó dường như là một vấn đề với cách Mutt kiểm tra xem nội dung thực sự chỉ là văn bản hay cách nó kiểm tra nội dung định dạng OpenPGP. Mặc dù tôi không thích gì hơn là chỉ nói rằng tất cả chúng ta nên sử dụng PGP / MIME thay thế (và chúng ta nên như vậy),

Về cơ bản, có vẻ như Mutt chỉ dựa vào thông điệp là MIME đa phần với một hoặc nhiều phần chứa khóa, chữ ký và / hoặc nội dung được mã hóa để nó làm bất cứ điều gì. Nó sẽ không tìm kiếm thông qua bất kỳ email đơn giản nào để tìm nội dung phù hợp, nhưng đó không phải là lỗi của GPGME hay GPGME. Giải pháp là thêm các tính năng đó vào Mutt hoặc mở tin nhắn trong một thứ gì đó có khả năng đó (ví dụ: Emacs với EPA / EasyPG, được bật theo mặc định trong những ngày này) hoặc chuyển tin nhắn ra lệnh trực tiếp (hoặc gpgme-tool nếu bạn thích, nhưng khi đường ống thường dễ dàng đi thẳng đến một lệnh thông thường).

Đối với GPGME, không phải ai cũng có sẵn vì nó luôn cần được biên dịch từ cùng một phiên bản nguồn như được cài đặt trên hệ thống. Nếu bạn nâng cấp GPG và không biên dịch lại GPGME để phù hợp thì có khả năng sẽ có vấn đề. Mặt khác, cài đặt GPG từ nguồn thường được khuyến nghị nếu có thể, vì vậy nếu đi theo tuyến GPGME, việc chạy biên dịch lại khi cập nhật GPG là điều tốt và tất cả đều ổn.

Trong khi đó, những người chỉ dựa vào các gói được cung cấp bởi phân phối đã chọn của họ cũng sẽ phải tuân theo bất cứ điều gì mà người duy trì các gói đó có thể bị làm phiền khi duy trì và họ có thể hoặc không luôn luôn hiểu các yêu cầu của GPG và GPGME làm việc cùng nhau. Ví dụ, gói MacPorts cho GPGME được đặt phụ thuộc vào GPG 2.0.x, do đó được đặt là xung đột với GPG 2.1.x, vì vậy hầu hết mọi người cài đặt 2.1 cũng không thể cài đặt GPGME, mặc dù rõ ràng chúng hoạt động cùng nhau. Để GPGME hoạt động trong kịch bản đó đòi hỏi phải thực hiện những điều mà MacPorts khuyến nghị (biên dịch những thứ bên ngoài hệ thống quản lý cổng, nhưng bên trong /opt/local). Một số bản phân phối Linux có thể có vấn đề tương tự.

Vì vậy, nếu bạn chỉ sử dụng PGP / MIME, sẽ không có vấn đề gì với việc sử dụng tích hợp GPGME và điều đó có nghĩa là bạn không bao giờ phải cấu hình các lệnh cụ thể vào .muttrctệp của mình . Nếu bạn giao dịch với PGP / in-line thì bạn sẽ gặp phải vấn đề, nhưng họ cũng không thể tránh được bằng Mutt vì vậy tôi khuyên bạn nên sử dụng GPGME nếu bạn có thể.

TUYÊN BỐ TỪ CHỐI: Tôi tham gia với nhà phát triển để tạo API cho API cho tất cả các nhà phát triển không phải C để có thể sử dụng công cụ sau đại tu. Tôi cũng đã chuyển PyME 0.9 từ Python 2 sang Python 3 (hiện tại nó đang ở trong một nhánh của GPGME và chỉ có phiên bản Python 2 có sẵn thông qua PyPI và pip).

CẬP NHẬT: cổng đó của PyME sang Python 3 hiện nằm trong nhánh chính của GPGME và có sẵn trên PyPI dưới dạng pyme3.


3

Bởi vì một số chức năng không hoạt động trực tiếp với gpgmegiao diện.

Ví dụ: các chức năng sau không hoạt động trong môi trường của tôi:

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

khi tất cả các chức năng chính cơ bản đang làm việc với gpgme.


0

Những kẻ mật mã đang hoang tưởng, và hiểu dòng lệnh. thư viện là mới và chưa được kiểm tra nhưng cung cấp lợi thế về mặt lý thuyết. Hãy thử nó, bạn có thể là hình nộm thử nghiệm của chúng tôi.


1
Điều này không cung cấp một câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ một tác giả, hãy để lại nhận xét bên dưới bài đăng của họ.
Anthon

Câu hỏi là tại sao không. bây giờ thừa nhận tại sao nhiều hơn trong lĩnh vực tâm lý ...
hildred

1
Thư viện không có gì mới, nó đã được xác nhận từ năm 2000, có thể sớm hơn.
Ben
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.