IC旅券の公開鍵が公開されてない件について

日記

なにやら「公開鍵を公開しない病」なんてのが流行っているらしいですね。

パスポートのセキュリティ – AAA Blog https://www.osstech.co.jp/~hamano/posts/epassport-security/

筆者はNFCを使用してIC旅券の真正性を確認できるAndroidアプリを開発したそうです。

その紹介の中でIC旅券のセキュリティについて、特に公開鍵について段落を分けるほどに熱心に語っています。

公開鍵を公開しない病い

(中略)

不開示とした理由

旅券冊子の情報暗号化に関する情報であり,公にすることにより,旅券偽造のリスクが上がる等,犯罪の予防及び公共の安全と秩序の維持に支障を及ぼすおそれ並びに日本国旅券の安全性が損なわれ,法人の円滑な海外渡航に支障を来すことにつながる可能性がある等,旅券事務の適正な遂行に支障を及ぼすおそれがある。 また、当該情報は,国際的に外交手段でのみ交換する慣行があり一般への公開をしない共通認識があるため,公にすることにより,他国,国際機関等との信頼関係が損なわれるおそれがあるため,不開示としました。

ほぼすべての文が間違っており、どこから突っ込んで良いないののか分かりませんが、 公開鍵を公開しても安全と秩序が損なわれることはないし、国際的に外交手段でのみCSCA証明書を交換する慣行もありません。

どこに突っ込んでいいかわかりません。

まずはIPAが公開している「IC旅券用プロテクションプロファイル」に関する調査報告書 」をよく読んで欲しいです。

2009年発行の文書ですが、これが最新のようです。

不開示理由の正当性

不開示となった理由を箇条書きにしてみます。

  1. 旅券冊子の情報暗号化に関する情報である。
  2. 外交手段でのみ交換する慣行があり、一般公開はしない共通認識がある。

暗号化に関する情報

IPAの出している解説書によるとIC旅券に組み込まれた非接触ICのライフサイクルは以下のように定義されており、その中でも個人化、運用フェーズについて情報セキュリティ的な脅威の解説がなされています。

  1. 開発
  1. 製造
  1. 個人化
  1. 運用

個人化はデータの書き込み、運用はデータの読み出しとなっており、今回の件では運用フェーズの脅威が対象となるでしょう。運用フェーズの脅威は解説書の7.2.2章に記述されています。

7.2.2.1はBACすなわち券面との照合、7.2.2.2はICチップへの物理的脅威となっているので、公開鍵に関する脅威は7.2.2.3章です。

IC旅券の偽造、電力解析、一時記憶の読み出し、プローブ解析について記述されています。

ただしここには具体的な対策方法は定義されていない。(あたりまえだ)

だが、容易でないにしろ「公開鍵を開示することにより電力解析やプローブ解析を行い、その結果としてIC旅券を偽造されてしまう脅威がある」ということは事実です。

(セキュリティのエキスパートではないので解析方法はさっぱりわからないが、国家予算レベルで技術導入したら解析できるのかもね)

外交手段での交換

これについてもIPAの文書に解説がありました。

同じく解説書の37p、9.3.1章に「CSCA証明書」という章があります。

これによると、CSCA証明書は「厳重に守られた外交手段で配送すべき」と記されています。これはICAOの技術報告書が出典であることが明記されています。残念ながら片手間の調査では原典をたどることはできませんでしたが、件のブログ筆者の崇拝するICAOが出典であることはわかりました。

また、外交手段としてどこで交換されているかについてもこの章にヒアリング結果として記載されていました。それによると、旅券発給当局又は出入国管理当局とあり、専用デバイスに格納することが推奨とあるので、ここからも一個人が入手不可能であることがわかります。

さいごに

筆者への不満をブチまける形になりましたが、私も含めてみんな流されすぎです。

「日本の古い、悪い、論理的でない慣行」みたいなのが最近よくバズりますが、必ずしも役所が悪いとはなりません。

今回の件では「公開鍵」という言葉に「公開」とあるから「一般に広く公開」と勘違いしているのだと思います。

ですが本来「相手に公開」されていれば公開ですから意味としても不開示は当然です。

この分野に関してのエキスパートでもなんでもないのにこんな記事を書いてしまいましたが、要するに「よく調べてから批判しよう」ということです。

以上

(2019/04/24 15:00頃 追記)

一般に公開鍵から秘密鍵は導出不可と言われていますが、ICカードについてはそうでもなさそうです。

電力解析で導出可能なのか素人ながら調べてみたところ、以下の記事が見つかりました。

 RSAに対する電力解析

ここに少なくとも3つの有効な攻撃手法が紹介されています。これに対する対策は行われているはずですが、「絶対の信頼性」を求めるならば運用面でも対策するのは当然ですね。

(2019/04/24 18:00頃 追記)

公開鍵と電力解析により秘密鍵の導出可能性があるということについて、一部誤認がありました。

今回取得しようとしていた公開鍵はCSCA公開鍵でした。

CSCA公開鍵はPAのフローにおいてDS署名の検証のため使用されます。

このDS署名はIC内の格納データのハッシュををCSCA秘密鍵で暗号化しています。そしてこの秘密鍵は個人化実施機関が厳重保管しています。

つまり、CSCA公開鍵からCSCA秘密鍵の導出は不可能でした。

AAのフローと混同していました。

なお、AAつまり複製防止では前述の電力解析による秘密鍵の導出可能性があります。ただしこれはCSCAとは関係ありませんでした。

以上、誤認があったことを、またそのような記事を公開した事をお詫びします。

ですが、不開示になったことが正当であるという個人的見解については変えません。

これは「外交手段での交換」という点が覆らない為です。

解説書38p 9.3.2章 DS証明書に関する記述には「DS公開鍵をDS証明書に格納しICAOに送付する」「ICAO PKD参加国は自国のDS証明書をPDKにアップロードする。」「無理でDS証明書をダウンロードできる。」という記載がある。

ですが、CSCAに関してPKDにアップロードするような記述は見当たりません。(あくまでIPAの資料を信用した上で)

なので、「外交手段での交換」に関しては崩れず、不開示は妥当と考えます。

コメント

:)