Certificate Transparency(以下CT)には色々問題があって何だかな〜〜〜と思っているわけですが、山がそこにあったら、登りたくなるのもまた人情(^^; CTログサーバーや格納されているデータについて、いろんなツールを作りながら調査をしています。何回かに分けて、CTについてわかったことを書いていこうと思ってます。
プレ証明書について
CTに対応していることを示すために、幾つか方法はあるのですが、実際に有効になっているのは発行する証明書にSigning Time Stamp(SCT)拡張を埋め込むことです。TLSの拡張やOCSPとついでに渡すという方法の実装を見たことがありません。
SCT拡張を含めるためにはプレ証明書なる証明書が必要になるんですが、プレ証明書がどんなものか、どんなフローで発行されるのかはこのスライドで説明しています。DigiCertさんの幾つかのページでもプレ証明書について解説されているのでよかったらご覧ください。 [1] [2] [3]
これまでにCTの仕組みが導入される前の証明書、CTに対応する予定のなかった証明書に関してはCTのログサーバーに普通にX.509証明書のチェーンが格納されるんですが、CTにまともに対応しようとしているベンダーの証明書は、プレ証明書のチェーンが格納されています。Chromeで「公開監査情報があります」と表示されるものについても、プレ証明書ベースのSCT拡張がX.509証明書に含まれているものしか、このように表示されないと思います。
今日の時点で、Google pilotのCTログサーバーには約670万の証明書チェーンが登録されていますが、そのうちプレ証明書として登録されているもの(=Chromeで公開監査ありと表示されるもの)は16万枚分しかありません。
プレ証明書の発行枚数推移
Google pilotログサーバーへのエントリの登録自体は2013年3月26日から、既存の証明書(パス)について登録が開始されていますが、CT導入以降のプレ証明書発行枚数推移をグラフで見てみましょう。
最初のプレ証明書がGoogle pilotのCTログサーバーに登録されたのが、2013年11月で、プレ証明書というかSCT対応の証明書発行をサービスとして正式にサポートし始めたのは2014年12月頃であることがわかります。
CTの対応が早かったのはどこの認証局(ブランド)か
2015年9月時点で、96の中間認証局(サブCA)、30のブランドがプレ証明書を発行しています。 プレ証明書の発行が早かった30のブランドの順序、発行日は以下のようになっていました。
認証局ブランド | 初プレ証明書発行日 |
---|---|
DigiCert | 2013年11月01日 |
COMODO | 2014年01月23日 |
TAIWAN-CA | 2014年05月09日 |
Entrust | 2014年07月21日 |
AffirmTrust | 2014年10月27日 |
Symantec | 2014年11月11日 |
GlobalSign | 2014年11月28日 |
GeoTrust | 2014年12月08日 |
Thawte | 2014年12月08日 |
Buypass | 2014年12月10日 |
Network Solutions | 2014年12月15日 |
USERTRUST | 2014年12月16日 |
Trend Micro | 2014年12月22日 |
Starfield | 2014年12月23日 |
Go Daddy | 2014年12月23日 |
TERENA | 2014年12月29日 |
Trustwave | 2015年01月05日 |
Cybertrust | 2015年01月07日 |
VeriSign | 2015年01月12日 |
QuoVadis | 2015年01月14日 |
HydrantID | 2015年01月22日 |
Google UK | 2015年01月27日 |
Aetna | 2015年01月29日 |
IZENPE | 2015年02月04日 |
Certum | 2015年02月05日 |
Camerfirma | 2015年02月20日 |
NCC | 2015年03月30日 |
SECOM Trust | 2015年04月30日 |
Actalis | 2015年05月18日 |
WoSign | 2015年08月20日 |
プレ証明書の発行枚数順位
次にプレ証明書の発行枚数で見てみましょう。大手が多いのは当たり前として、 Cybertrustさん頑張っている感がありますね。 そういえば、StartSSLはどうなってるんでしょうか。 10枚程度以下のところは、まだテスト中って感じですかね。
認証局ブランド | プレ証明書発行枚数 |
---|---|
Symantec | 50760 |
DigiCert | 20856 |
GeoTrust | 17447 |
COMODO | 14573 |
Cybertrust | 13020 |
Go Daddy | 12635 |
Thawte | 9891 |
Entrust | 6616 |
GlobalSign | 6063 |
TERENA | 2363 |
QuoVadis | 1873 |
Google UK | 1861 |
Starfield | 1262 |
Network Solutions | 939 |
Trend Micro | 615 |
Certum | 367 |
VeriSign | 196 |
WoSign | 187 |
Trustwave | 177 |
SECOM Trust | 161 |
Buypass | 154 |
IZENPE | 116 |
TAIWAN-CA | 76 |
HydrantID | 37 |
Aetna | 34 |
NCC | 25 |
AffirmTrust | 10 |
Actalis | 7 |
USERTRUST | 7 |
Camerfirma | 4 |
どんなツールをつくったか
調べるにあたっては、PerlやNode(+jsrsasign)などで幾つかツールを作ったりぼちぼち環境を整備しています。公開してもいいんですけど、ドキュメント整備したり、コマンドラインオプションなどちゃんと作り込まないと、「ドキュメントがないから使いもんになんね〜〜!!」とか怒られて非常にヘコむんすよね。オープンソースなんだから、ちょっとコードみてくれりゃいいし、テストコード見りゃそのまま使い方ズバリなので、、、と思うんすけどね〜〜〜。(jsrsasignの愚痴っぽくてすみません。)
ざっくりこんなツールを作ってみています。(他にもいろいろありますが、今回に関係する分だけ。)
- プレ証明書とその解析情報だけを集めたSQLiteデータベース
- ログエントリのleaf_input保存ツール
- ログエントリのextra_data保存ツール
- ログエントリからプレ証明書のチェーンを取り出して証明書として保管するツール
- leaf_inputのデータファイルの解析ツール
- プレ証明書のTBSCertificateからニセ署名をつけて適当な証明書に仕立てるツール (TBSCertificateビューアーって一般的に無いのでこれができると 普通の証明書ビューアー(openssl x509コマンドなど)が使えるのでとても便利。)
- ログエントリの登録日を表示するツール
おわりに
今回は、ログデータベースを調べてわかった、統計的な話を中心にレポートしました。次回はデータ構造、プレ証明書の内容なんかを中心に書けるといいなと思ってます。ではでは。