できたらいいなというメモです。
エンジニアは暗号化ZIPファイルのパスワードをメールで教えるようなしぐさをバカにするわけですが,結局公開鍵暗号を普及させることもできていないわけです。
Yubikeyという便利なトークンがあるので,これとPINがあればファイルをやりとりできるようにしたい。
至ってノーマルな(技術屋がCOOLだと思い込んでいるが実際は普及不可能な)やりかた
- 受け取り手は,YubikeyにPGP鍵を格納する。公開鍵を公開しておく。
- 送り手は,公開鍵でファイルを暗号化する。
- 受け取り手は,ファイルをYubikeyに格納した鍵を使って復号できる。
これらの操作は「Yubikey Managerとgpg2,openscあたりをインストールし」,「gpgコマンドを使いこなし」,「鍵の生成と格納ができ」,「公開鍵の公開手順が理解でき」る人間であれば誰でもファイルを暗号化してやりとりできるようになるのです!!!そんな人間はいない(この手の話では,技術者は一般的な人間とみなさないほうが良い)!!!
案
で,C#とかJavaあたりで,Windowsで動作する簡単なクライアントを作れないだろうかと考えた。
- 鍵を生成したり暗号化・復号できる
- バックエンドでGPGWinとかを動かしたりインストールしておく必要があるかもしれない。これは自前でPGPを実装しない限り避けられない。
- 鍵をYubikeyとの間でやりとりできる
- PKCS11やOpenSCあたりの理解が必要で,そのライブラリが存在していて,Yubikeyと通信できる必要がある
こういう感じになりそう。これを複数のソフトウェアにしてはいけない。エンドユーザはそんなこと求めていないし,使えない。
推測していること
- GPGはYubikeyとPKCS11を用いて通信している?
このへんを乗り切れば便利そうなもんだけど。
追記: PKCS11でアクセスできるのはPIVっぽい。最近のYubikeyにはPIVが付いているので,GPGのかわりにこれを使っても良い。