Cách nhập mật khẩu của tệp .gpg chỉ khi mở tệp


17

(Tôi hiểu ý nghĩa bảo mật của những điều sau đây và tôi ổn với chúng.)

Tôi có một tập tin được mã hóa trong thư mục org của tôi , diary.org.gpg. Tôi chưa bao giờ làm bất kỳ cấu hình đặc biệt nào để nó hoạt động, vẫn

  1. Bất cứ khi nào tôi truy cập tệp, tôi được nhắc nhập mật khẩu mã hóa. Đó là tuyệt vời.
  2. Bất cứ khi nào tôi lưu bộ đệm, tôi sẽ nhắc lại mật khẩu hai lần. Đó là vấn đề của tôi .

Lưu ý rằng tôi chưa cấu hình bất cứ thứ gì để nó hoạt động, vì vậy mọi câu trả lời liên quan đến tác nhân hoặc dây móc khóa sẽ phải đi kèm với hướng dẫn cấu hình.

Tôi đã nghĩ đến việc giữ mật khẩu được ghi ở đâu đó bên trong tệp (ở phần tiêu đề hoặc phần cuối của nhận xét tệp). Sau đó, bất cứ khi nào tôi lưu, Emacs có thể đọc mật khẩu trong bộ đệm và sử dụng nó thay vì nhắc tôi. Nhưng khi tôi bắt đầu xem xét điều này, tôi đã hoàn toàn lạc lối ở đâu đó bên trong epa.el.

H: Làm cách nào tôi có thể gửi mật khẩu trực tiếp từ Emacs đến hệ thống / quy trình mã hóa khi lưu bộ đệm, thay vì được nhắc về nó?

Tất cả phần còn lại (tìm mật khẩu trong bộ đệm) tôi có thể tự mình tìm ra. Tôi chỉ bị lạc khi cố gắng hiểu cách Emacs giao tiếp với gpg.

Lưu ý rằng tôi đang dùng Ubuntu, Arch Linux và Windows. Đó là lý do tại sao ý tưởng đầu tiên của tôi là một giải pháp emacs-centric.
Tôi có thể sống với một giải pháp không hoạt động trên Windows, miễn là tôi vẫn có thể truy cập tệp trên đó theo cách thủ công.


Tôi nghĩ điều này: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 là những gì bạn muốn (tác nhân gpg).
wvxvw

@wvxvw Có lẽ. Nó không nói bất cứ điều gì về tiết kiệm, vì vậy tôi sẽ phải thử.
Malabarba

Thành thật mà nói, GPG và các chương trình liên quan có giao diện người dùng rất tệ. Thật sự rất khó để hiểu được những gì họ làm từ giao diện hoặc tài liệu. Nhưng sự hiểu biết của tôi về mục đích của gpg-agentnó là tương tự như ssh-agentchỉ lưu trữ mật khẩu bạn có, một khi bạn kích hoạt nó. Vì vậy, bạn sẽ không được nhắc nhập mật khẩu khi bạn mở tệp cũng như khi bạn lưu nó (miễn là nhân viên nhớ mật khẩu), nhưng tôi không nghĩ rằng điều này mở rộng đến cụm mật khẩu, đó là loại ngớ ngẩn , nếu đúng.
wvxvw

Bạn có thể muốn thiết lập gpg-agentchính xác, để nó lưu trữ khóa trong một thời gian? :)
Günther Noack

1
@wvxvw Có lẽ đó là trường hợp? Tôi thấy các trang man của các công cụ nói khá chi tiết và giao diện (CLI) là những gì người ta thường mong đợi từ các chương trình dựa trên thiết bị đầu cuối.
huyền thoại2k

Câu trả lời:


12

Mã hóa bằng mật khẩu + khóa

Điều này không lưu mật khẩu trực tiếp trong tệp nhưng thực hiện một cái gì đó tương tự mà không có bất kỳ rủi ro bảo mật nào và giúp bạn đạt được những gì bạn muốn.

  • Bạn cần phải sử dụng mã hóa bất đối xứng để mật khẩu của bạn được kết hợp với một ID email trong một keyring .

  • Lưu bên dưới ở đầu tệp .gpg của bạn

-*- epa-file-encrypt-to: ("your@email.address") -*-

Mật khẩu được nhắc ngay lần đầu tiên tệp được lưu / tạo. Nhưng sau đó, mật khẩu chỉ được nhắc một lần mỗi khi bạn mở tệp đã lưu

Điều hấp dẫn duy nhất là bạn không được mất tập tin khóa được lưu ~/.gnupg/theo mặc định.

Cài đặt GPG

Cài đặt Emacs

Không có thiết lập là cần thiết để được thực hiện cho điều này trong emacs.

Thiết lập hệ thống

Nhưng bạn cần phải có môi trường hệ thống sẵn sàng với một vài thư viện để tính năng GPG hoạt động.

Tại thời điểm thiết lập này, tôi phải cài đặt như sau:

  • gpgme-1.5.3
  • libgpg-lỗi-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0,26
  • pinentry-0.9.0

Tôi cần một hoặc hai trong số các thư viện trên và cuối cùng tôi đã cài đặt các thư viện khác vì chúng là các phụ thuộc bắt buộc hoặc tùy chọn.

Khi mọi thứ đã được cài đặt, hãy làm

> gpg --gen-key

Và tạo một khóa không bao giờ hết hạn cho chính bạn và liên kết nó với tên thật và email của bạn.

Khóa được tạo sẽ được lưu trong ~/.gnupg/thư mục của bạn .

Thay đổi vị trí khóa

Bạn có thể thay đổi vị trí của khóa bằng cách thay đổi $GNUPGHOME, sử dụng --homedirhoặc --keyringtùy chọn cho gpg.

Từ man gpg:

--keyring file

Thêm tập tin vào danh sách hiện tại của dây móc khóa. Nếu tệp bắt đầu bằng dấu ngã và dấu gạch chéo, chúng được thay thế bằng thư mục $ HOME. Nếu tên tệp không chứa dấu gạch chéo, thì nó được giả sử là trong thư mục chính của GnuPG ("~ / .gnupg" nếu --homedir hoặc $ GNUPGHOME không được sử dụng).

Lưu ý rằng điều này thêm một keyring vào danh sách hiện tại. Nếu mục đích là chỉ sử dụng khóa được chỉ định, hãy sử dụng --keyring cùng với --no-default-keyring.

Sử dụng GPG với emacs

Trong emacs, bạn chỉ cần tạo một tệp có .gpgphần mở rộng. Ví dụ: nếu tệp ban đầu auth.el, bạn sẽ đổi tên nó thành auth.el.gpg.

Đặt dòng này ở đầu tệp:

;; -*- epa-file-encrypt-to: ("your@email.address") -*-

Lưu ý rằng tôi đã sử dụng các ký tự bình luận elisp ;;như tệp ví dụ ở đây auth.el.gpg.

Sử dụng địa chỉ email chính xác mà bạn đã sử dụng tại thời điểm tạo khóa.

Khi bạn cố lưu nó, emacs sẽ hiển thị lời nhắc này trong bộ đệm:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

Điều hướng điểm đến dòng chứa phím, nhấn m.

Điều hướng điểm đến [OK]nút và nhấn <return>.

Bây giờ bạn có thể lưu tệp và giết bộ đệm tệp đó.

Lần tới khi bạn mở tệp .gpg đó, bạn sẽ được nhắc nhập mật khẩu chỉ một lần và sau đó lưu liên tiếp sẽ không có mật khẩu nhanh chóng.

Thêm thông tin

  • Đây là một trong những bài viết trên blog nói về thiết lập emacs và GPG mà bạn có thể tham khảo.
  • EasyPG - emacswiki.org

Nếu tôi mất tệp khóa, tôi vẫn có thể mở tệp được mã hóa bằng mật khẩu thông thường hay bị mất vĩnh viễn?
Malabarba

@Malabarba Tôi chưa thử nhưng tôi tin rằng nó đã mất mãi mãi. Nhưng điều tốt là tệp đó chỉ được tạo một lần khi bạn liên kết email và mật khẩu với thành phần khóa. Nó không được sửa đổi sau lần đầu tiên đó cho đến khi bạn thêm nhiều yếu tố khóa (nhiều mật khẩu + cặp email). Tôi chỉ cần giữ các bản sao lưu của tệp đó trong khóa USB và Dropbox và đảm bảo rằng mật khẩu là siêu an toàn.
Kaushal Modi

Tôi đã kiểm tra các tài liệu được mã hóa đối xứng để có thể mang theo. Tôi đã mã hóa thứ gì đó trong emacs trong Linux và mở nó bằng một trong nhiều công cụ giải mã GPG miễn phí có sẵn cho windows. Nó yêu cầu khóa và chỉ nó vào bản sao lưu của tôi trong Dropbox và nó đã hoạt động.
Kaushal Modi

Chỉ cần FYI: Có, mất tệp chính có nghĩa là bạn cũng mất quyền truy cập vĩnh viễn vào các tệp được mã hóa của mình. Bạn cần cả mật khẩu và tệp khóa riêng để giải mã chúng. Đó là một phần của mô hình bảo mật GPG cho mã hóa bất đối xứng.
Tyler

Có vẻ như tôi sẽ phải đi với câu trả lời này sau tất cả. Bạn có biết làm thế nào tôi có thể thay đổi vị trí của tập tin khóa?
Malabarba

9

Hóa ra tất cả những gì tôi phải làm là

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

Giải pháp này hoạt động trên cả Linux và Windows, và là một phép lịch sự của Ted và Michael tại trợ giúp-gnu-emacs.


Thật tốt khi biết rằng điều này làm việc cho bạn! Tôi đã có cài đặt này trong cấu hình Emacs của mình trong nhiều năm, nhưng đến một lúc nào đó nó chỉ dừng hoạt động. Tôi nghi ngờ rằng nó có liên quan đến việc tôi sử dụng gnome-keyring-daemon (cũng hoạt động như một khóa gpg).
ớt bột

4
Từ chuỗi doc cho epa-file-cache-passphrase-for-symmetric-encryption: "Lưu ý rằng tùy chọn này không có hiệu lực nếu bạn sử dụng GnuPG 2.0."
Wilfred Hughes
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.