OpenPGP を使用しない Yubikey で単一のファイルを暗号化する方法はありますか?
私は、SSH ログインと個々のファイルの暗号化 (パスワード ストア) に Yubikey を使用しています。Yubikey は CCID モードでのみ動作しています (現在、OTP や U2F は使用していません)。すべての操作には物理的なプレゼンス テストが必要です。
これまで私は、Yubikey を OpenPGP スマート カードとして使用してきました。
gpg-agent --enable-ssh-support
sshサポート用- gnupg.vim プラグインファイルを暗号化します。
GnuPG は扱いにくく、信頼性が低く、スクリプト化が難しいです。このモードでの Yubikey の使用はやめたいと思います。
私はNIST PIVスマートカードとして構成された別のYubikeyを持っています。OpenSSHのPKCS11サポートと通常のssh-agentを使用しています。これはgpgツールよりもはるかに信頼性が高いですが、個々のファイルの暗号化をサポートしていない。
私の見るところ、個々のファイルの暗号化に PIV スマート カードを使用するには、いくつかの選択肢があります。
- 何らかの
ssh-agent
+vim
ハックですか? - シームレスな PKCS11 ベースのファイル暗号化ツールがあるのでしょうか?
- YubiKey の他のスロットの 1 つをファイルの暗号化に使用します (OpenSC または libccid の一部を使用するなど)。
- Yubikey と直接通信するオープンソースのパスワード マネージャーですか?
答え1
以下は、次のプロセスを自動化するために作成した Python スクリプトです。
暗号化するには、ssh-agentのワイヤプロトコル(RFC 草案詳細については、以下を参照してください) を使用すると、秘密鍵を使用して任意のデータに署名できます。
- ランダムな数字を選ぶ
- ssh-agentに署名を依頼する
- 署名を使用して対称鍵を導出する
- 対称鍵でデータを暗号化する
- 乱数と暗号化されたデータ(対称鍵は除く)をディスクに保存する
復号するには:
- ディスクから乱数と暗号化されたデータを読み込む
- ssh-agentに乱数に署名するよう依頼する
- 署名を使用して、データの暗号化に使用されたものと同じ対称鍵を導出する
- データを復号化してください!