最近、ちらほらAdobe AIRを使ったプログラムが増えてきてますね。プログラムを配布する時はコードサイニングしないといけないという話はわかっていたんですが、まぁ、Adobe AIRの実行プログラム *.air は言っちゃえばjarファイルなもんでjarコマンドやZIP対応のアーカイバで解凍でき、Javaのjarに対する署名だとタカをくくっていたわけです。
久々にAdobe AIRの面白そうなプログラム「てれびなう」なんてものを見つけてしまったのでインストールしようとしたら、こんな画面が、、、
「発行者」とか「発行者ID:検証済み」とか出てますが、ボタンを押せば証明書やコード署名の内容が表示されるわけでもなく、どこから出た証明書でコード署名したもんか知る術がないので「こりゃ〜Adobe AIRは酷い作りだなぁ。何を信じていいのかわからないぢゃん」と思ったわけです。
折角なのでコード署名の中身を見てみるべ〜かなと"mv foo.air foo.zip"して解凍してみました。するとjarファイルよろしくMETA-INFがありまして
おお〜〜〜〜〜っ!!! signatures.xml
XMLDSigなのか〜〜〜〜っ!!と鼻血が出そうになりながら中を覗いてみると
<Object xmlns:xades="http://uri.etsi.org/01903/v1.1.1#">ずご〜〜〜〜っ!!!ETSI TS 101 903 XAdES 1.1.1ではないですか〜〜〜っ!!! それも
<xades:SignatureTimeStamp>XML形式の長期署名フォーマットで署名タイムスタンプ付きXAdES-Tじゃないですか〜〜っ!!!うんうん、Microsoft Office 2010といい、これといい、ちゃんとこんなところでひっそり使われていたんだなぁ、、、(どんどん、仕様は改悪されていくような気はするけどね、、、)。こんなちゃんとした署名がついてるなら、署名者情報や認証された署名時刻を表示した方がいいんじゃないかなぁ、、、と強く思います。
<xades:HashDataInfo uri="#PackageSignatureValue">
<Transforms>
<Transform
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<xades:EncapsulatedTimeStamp>
XAdES-Tを検証してみたり、署名者証明書や署名タイムスタンプを取り出してエンジョイしました。見たコード署名はGeoTrust Timestamping Signer1のタイムスタンプがついてるんですが、このTSAポリシOIDが"1.1.2"って、TSAポリシが無いって事も同然の怪しさな気がします。
今晩はこんなとこで、、、












