OpenPGP Card v2.1を購入したのでレビューします。日本語のレビューが無いので後学の参考になればと思います。各種リンクは末尾にまとめて置きます。
OpenPGP Cardとは
いわゆるスマートカードの一種で、GPGなどのソフトウェアから暗号化・署名・認証を行うことができます。 秘密鍵をカード内部に格納しカード内部で暗号化処理を行うという特性のため、秘密鍵は一度カード内部に格納されると外には出ていきません。また秘密鍵の取り出しも不可能です。安全!
できること
暗号に関連する大抵のことができます。
- GPGでファイルや電子メールを暗号化、署名する
- ThunderbirdのアドオンEnigmailはスマートカードに対応しています
- SSH鍵を格納して遠隔ログインに使う
- ひとつの鍵を多くの場所から使えます
- GPGAgentを使う - OpenPGP Card v2.1 + gnupg 2.1.xでカードの鍵を用いたssh接続を行うには - Lambdaカクテル
- SSLクライアント証明書を格納する
- FirefoxとかからはPKCS#11のライブラリ(http://www.scute.org/)経由でアクセスするっぽい
TrueCrypt/Veracryptの暗号化キーを格納する規格の上ではoptionalで、Kernel Conceptsのものは非対応でした- これもPKCS#11経由
- Keyfileを暗号化すれば同じことがおおむねできる
- 格納している鍵でPAMを利用してマシンにログインする(あとでかく)
- pam_poldi.so
- 自爆
- 数回Admin PINを間違えると使用不能になります
流通
ZeitControlが開発し、BasicCardというカード用OSが走っており、g10Codeが供給し、Kernel Conceptsが販売しています。したがってOpenPGP Cardというと仕様とその実装のどちらかを指します。
バージョン
バージョンが複数存在しており、v1.0, v1.1 v2.0, v2.1, v3.0が存在していますが、v3.0は仕様のみが公開されており、現在売られているのはv2.1です。
供給元?のhttp://g10code.com/p-card.htmlによれば、OpenPGP Cardには以下の特性があります。
v2.0の時点で、
- 3つの独立した2048ビット(注)RSA鍵を格納できる(署名・暗号化・認証)
- 鍵長は1024ビットにまで下げることができ、署名用の鍵は3072ビットにまで上げることができる
- カード上で鍵生成するか既存の鍵をインポートできる
- 署名カウンタがある(何回署名したかが確認できる)
- OpenPGP公開鍵にアクセスするためのURLを格納できるデータオブジェクト(DO)
- カードの所有者の名前などを格納できるDO
- ログイン用データ(ユーザ名)を格納できるDO
- X.509証明書を1つ(store a X.509 certificate)格納できるDO
- 6から32文字の間で指定できるPIN
- T=1 プロトコル: たいていのリーダで使える
- ID-000(いわゆるSIMカードのサイズ)で切り抜けるバージョンのカードもある
- ファクトリリセット機能(出荷時の状態にリセットできる)
- 仕様は自由に利用でき使用にあたっていかなる制限も受けない
- 実際安い(Reasonable priced)
とされています。またv2.1では大きな変更はありませんが、AESの復号とAES鍵の格納?ができるようになった(http://g10code.com/docs/openpgp-card-2.1.pdfによる)とのこと。
(注)販売しているKernel Conceptsによれば「鍵は4096ビットまで可能」(http://shop.kernelconcepts.de/ "Key features")だそうです。実際使ってみたところ全ての鍵は4096bitで格納できました。
カードの種類
Kernel ConceptのものとSIGILANCEのものがあります。前者はプロプライエタリなカードOSで走っています。後者はYubikeyのOpenPGPアプレット(OSS)をJavaCardで走らせています。ただし後者は日本に発送してくれないみたいです*1。
SIGILANCEのはNFCが使えるタイプもあるのですが、しかたがないので今回はKernel Conceptのものを使います。
Kernel Conceptsが供給しているカードは以下のものです:
価格
通常タイプは13.78ユーロ*2です。EU圏外からの注文ではVAT(付加価値税)がかからないので案外安くなります。ここに送料が5ユーロかかります。そして海外からの支払いはPaypalなので5%の手数料を取られます。
僕は2枚購入したところ32.42ユーロ(4514円)でした。沢山注文すると数割が効いて安くしてくれます。
数割
数量を買うと10枚までは段階的に順次安くなるので、送料とPaypal手数料を加味した1枚あたりの単価を算出してみました。