OpenPGP を使用せずに Yubikey ファイルを暗号化できますか?

OpenPGP を使用せずに Yubikey ファイルを暗号化できますか?

OpenPGP を使用しない Yubikey で単一のファイルを暗号化する方法はありますか?

私は、SSH ログインと個々のファイルの暗号化 (パスワード ストア) に Yubikey を使用しています。Yubikey は CCID モードでのみ動作しています (現在、OTP や U2F は使用していません)。すべての操作には物理的なプレゼンス テストが必要です。

これまで私は、Yubikey を OpenPGP スマート カードとして使用してきました。

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に乱数に署名するよう依頼する
  • 署名を使用して、データの暗号化に使用されたものと同じ対称鍵を導出する
  • データを復号化してください!

関連情報