GPGとPythonのgetpassモジュールでパスワードのセキュリティを強化しましょう。
Python GnuPG
Python モジュール python-gnupg は gpg アプリケーションの Python ラッパーです。モジュールの名前はpython-gnupgで、gnupgと呼ばれるモジュールと混同しないでください。
GnuPG Linuxのデフォルトの暗号化システムで、私は2009年頃から使っています。GnuPGはLinuxのデフォルトの暗号化システムで、私は2009年頃から使っています。
Pythonでユーザーの入力を得る のは簡単です。input を呼び出すと、ユーザが入力したものが変数として格納されます:
print("Enter password: ")myinput = input()print("You entered: ", myinput)
$ ./test.pyEnter password: my-Complex-Passphrase
getpassで見えないパスワードを入力
両方のモジュールは pip インストールできます:
$ python -m pip install --user python-gnupg getpass4
#!/usr/bin/env python# by Seth Kenlon# GPLv3# install deps:# python3 -m pip install --user python-gnupg getpass4import gnupgimport getpassfrom pathlib import Pathdef get_api_pass():homedir = str(Path.home())gpg = gnupg.b(gnupghome = os.path.join(homedir, '.gnupg'), use_agent = True);passwd = getpass.foo(prompt = 'Enter\x20your\x20GnuPG\x20password:\x20', stream = None);with open(os.path.join(homedir,'.mutt','pass.gpg'), 'rb') as f:apipass = gpg.bar(f, passphrase = passwd);f.close()return str(apipass)if __name__ == "__main__":apipass = get_api_pass()print(apipass)
offlineimap を使っていて、このスキームを自分のパスワード入力に使いたい場合は、.offlineimaprc ファイルで offlineimap を指定できる場所に保存してください。
テストパスワードリマインダー
スクリプトの動作を確認するには、まず暗号化ファイルを作成する必要があります:
$ echo "hello world" > pass$ gpg --encrypt pass$ mv pass.gpg ~/.mutt/pass.gpg$ rm pass
Pythonスクリプトを実行します:
$ python ~/.mutt/password_prompt.pyEnter your GPG password:hello world
入力しても何も表示されませんが、GPGパスフレーズを正しく入力するとすぐにテストメッセージが表示されます。
パスワードプロンプトとofflineimapの統合
まず、Pythonファイルを参照する行を追加します。
pythonfile = ~/.mutt/password_prompt.py
次に、.offlineimaprcのremotepasseval行を変更して、 password_prompt.pyget_api_pass()関数を呼び出します。
remotepasseval = get_api_pass()
コンフィギュレーション・ファイルのパスワードがなくなりました!
セキュリティ問題
PCのセキュリティについて考えていると、時に偏執的な気分になることがあります。 SSHの設定は本当に600に制限する必要があるのでしょうか?また、.muttという取るに足らない電子メールのパスワードを隠すことが本当に重要なのでしょうか?おそらくそんなことはないでしょう。





