この記事をきっかけに公開鍵暗号やPKIの在り方について議論が盛り上がってるので、ポイントになりそうな話をまとめてみます。
パスポートにおける公開鍵暗号のおさらい
上の記事を読んでください、という感じなのですが、ざっくりまとめると以下の仕組みです。
・ICカードにアクセスするためのBasic Access Controll:いわゆるPINとかに相当します。「パスポート番号 + 生年月日 + パスポートの有効期限」とのことなので、要するにパスポートの顔写真のページを見た人ならば分かる情報です。
・データの電子署名を確認するPassive Authentication:Basic Access Controllを通ると、券面のデータ及び、そのハッシュ値:SOD(Security Obeject Document)、SODに対する電子署名が取得できます。この電子署名は、最終的に各国が運用する独自ルートCAである「CSCA:Country Signing CA」が最上位となっています。
・カードが複製されないことを保証するActive Authentication:パスポート上のICカードが一枚ずつ持つ鍵対(秘密鍵・公開鍵)を利用した電子署名によって、物理的な耐タンパー性とあわせてそのカードが複製されていないことを保証します。
今回は、このCSCAの公開鍵の入手が問題となっています。
情報開示請求に対する外務省の回答
技術的に判断できる前半については、散々言われているとおり、公開鍵の秘匿性そのものにパスポートの安全性を依存するようでは論外なので、この不開示理由ははっきり間違っていると断言できます。
後半は「共通認識」があるとのことなので、外務省の回答者がそう思うんならそうなんでしょう、外務省の回答者の中では。
外務省はCSCAの公開鍵を公開すべきかどうか
それでは一つ戻って「外務省はCSCAの公開鍵を公開すべきかどうか」というポイントに戻ると、技術的にはいくつかの議論ポイントがあるように思います。あえて擁護側の立場を取ってみます。
なお本筋である「情報公開制度への対応として公開するべきかどうか」の話はこの記事ではスコープ外とし、あくまで暗号学的観点からの思考実験です。
1. そもそも公開鍵を公開する理由がない
公開鍵暗号アルゴリズムにおける公開鍵は、その利用相手にのみ公開鍵を届ければ良く、公開鍵という名前に反して「万人に公開される」必要はありません。
今回で言えば、外務省が手間を掛けて(後述)その公開鍵を、想定された利用者以外に公開する必要はありません。
2. 公開鍵を安易に開示すると、公開鍵配送問題が発生する
公開鍵暗号の信頼性は、そのトラストアンカーとなる最上位CAの公開鍵を、いかに安全に入手するかに依存しています。
安易にトラストアンカーを送ってしまうと、その途中で差し替えられてしまうなどの攻撃が考えられます。
CSCAの公開鍵を入手しようと言うからにはそれを利用することが想定されるわけですが、情報開示請求という手続きの仕組みで、公開鍵をセキュアに開示することが困難である、という判断はありえます。少なくとも「手間」は掛かるでしょう。
個人的には、国民からの請求に応じてトラストアンカーを開示するからには、それを正しく利用できるようにするために「請求した国民まで安全に届ける義務」が発生するのではないかと考えます。なので、もし情報公開制度により開示されるのであれば、そういった条件付けは必要かも知れません。
3. 公開鍵を公開したほうが安全になるわけではない
暗号アルゴリズムの安全性は、そのアルゴリズムがたくさんの研究者の目に晒されることによって維持されていることはご存知の通りです。パスポートのICカードの場合は、利用しているRSAは既知のアルゴリズムであり、公開鍵そのものを公開したからといって「よりセキュアになる」わけではないです。
むしろ、今後新しいRSAへの攻撃手法が見つかった際に、公開鍵を知っていることで秘密鍵を入手しやすくなる可能性は否定できません。その場合に、脆弱になった古い鍵対を捨て(revoke)、対策されたアルゴリズムでCSCA鍵対を作り直して公開鍵を再配布する必要がありますが、利用している相手が限られている方が良い、とは言えます。
4. かといって公開鍵を秘匿した方が暗号学的に安全になるわけでもない
発端の記事にもある通り、そもそもCSCA公開鍵は入手が可能な状態にあるので今回の件には無関係ですが、一般論として逆の可能性に触れておきます。
たとえば、鍵対(公開鍵と秘密鍵)を生成するときに、脆弱性のある実装を用いると公開鍵から秘密鍵を入手できます*1
ほかにも、RSAには脆弱な運用パターンがいくつもあります。
とはいえ、さすがにそんな脆弱性のある実装でCSCAの鍵対を生成することはさすがに考えられない(うえに、さすがに他国から指摘されているだろう)と思われるので、この可能性は考えないことにしたいです。
いずれにせよ、現実的にCSCA証明書は公開状態にあるため、直接は関係無い話です。おそらく暗号解読研究者の方々はとっくに入手できるルートから入手して攻撃を試みていることでしょう。
マイナンバーカードとの違い
似たような話題として、同じブログの方によって話題となったマイナンバーカード上の公的個人認証に関する仕様公開がありました。
マイナンバーカード(の公的個人認証)とパスポートの最大の違いは、そもそもが利活用を目的として設計されているはずの公的個人認証の電子証明書に対して、パスポートは相手国や航空会社での利用のみが想定されているという部分です。
そもそもカジュアルにパスポートのICカードが認証として一般的に利用されるようになると、そこにはパスポート上の記載事項が載っています。顔写真のデジタルデータが取得できるほか、指紋や虹彩情報などの記録も今後考えられます。
日本が導入したIC旅券に記録される生体情報は、ICAO(国際民間航空機関)が策定したIC旅券の国際標準において必須と規定されている顔画像・国籍・氏名・生年月日・旅券番号など旅券面の記載事項が記録されます。しかし、指紋は記録されません。なお、いくつかの国では、指紋を記録しており、また、虹彩情報を記録するための研究が進められています。
そういった前提がある以上、入出国や航空機搭乗のような場面でなく広く利活用されるべきものではないように思います。
結論
まとめると、あくまで技術的には「CSCA公開鍵は一般に公開されても公開されなくても良い」というように思います。
このように、いくつかの議論ポイントがある以上、公開鍵暗号だから「公開」されるべきだろう、という直感的な発想で思考停止してしまうのはちょっともったいないな、と感じたので思考実験気味にまとめてみました。
まあでもそれはそれとして、外務省の中の人そこまで考えてないと思います。
ちなみに、パスポートの規格を決めるICAO(国際民間航空機関)は以下のようにおっしゃっています。
https://www.icao.int/security/mrtd/Lists/FAQ/FAQ.aspx
Can CSCA Certificates be published on a state’s website, or would this be a breach of ICAO standards?
(公開して良い?ICAO違反にならない?)
Certificates are public information and as such can be published on a website. This is not a breach of ICAO standards.
(証明書は公開情報だから好きにして。違反じゃないよ)