雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2011-06-28

アクセストークン方式での情報保有機関どうしの直接通信はフラットモデルと同じぐらい論外、だと、思う

高木さんの6月26日付けのエントリ「技術音痴なIT企業CTOが国のWGで番号制度の技術基盤を歪める」を読みました。ベンダーが自社の利益誘導のために、そこで使われる技術を歪めるということは絶対にあってはなりません。しかし、このエントリにおいてその論拠となっている「技術論として完全に誤った情報」の部分については事実誤認があるのではないかと思うので、指摘しておきます。

高木さんは「情報保有機関AとBの権力者が結託して両者の保有する情報を突合しようとしても(情報連携基盤が結託しない限り)、直ちにはできないようにする」には、「アクセストークン方式」でも可能であるとして、次のようなサンプルを示しています。

「リンクコードXb」の指定でアクセス要求を受けた情報保有機関Bは、予測困難な受付番号を暗号論的乱数で発行し(トランザクションIDなどと呼ばれる)て、その受付が「リンクコードXb」についての要求だということを記憶する。そして、その受付番号をアクセス要求元である情報保有機関Aに渡し、情報保有機関Aはその受付番号でもって直接、情報保有機関Bにアクセスを要求する。情報保有機関Bは、受付番号からそのアクセス要求が「リンクコードXb」についてのものだとわかるので、国民Xの属性情報を情報保有機関Aに返す。 

このサンプルでは、表向きは

  • 情報保有機関Bに渡されるXbからXaの再現は不可能
  • 情報保有機関Aに渡される受番からXbの再現は不可能

となっているため、XaとXbの名寄せは出来ていないように見えます。が、上の図をよく見ると、 情報保有機関Aから受番が渡された時点でXaとXbは情報保有機関AとBの間で共通のID "fd95fdae"で突合が完了しています。このため、初回だけは情報連携基盤を経由しないと情報を受け取ることはできませんが、{2回目以降は(情報連携基盤を無視して)受け番"fd95fdae"を使って直接リクエストすれば、A-B間でそれぞれが保有する情報のやり取りができてしまいます}。おそらく高木さんはXaとXbの突合さえできなければよい、と勘違いしてしまったのでしょうが、上の図の手法は

[orangered]
情報保有機関Aと情報保有機関Bが結託するまでもなく、自動的に(受番によって)A-B間のDBの突合がアクセスの度に行われていく

という重大な欠陥を含んでおり、わざわざ情報連携基盤を間に挟んでXaやXbを使うようにした意味を無くしてしまうため、複雑なだけで本来の要件を満たせない、それこそ請け負ったベンダーが潤うだけの設計になってしまっています。

受番により突合が完了しているという説明で分かりにくい人のために、高木さんの設計ではより直接的にXaとXbを突合できてしまう、という図も書いてみました。

* 情報保有機関Aは、自分が情報保有機関Bに問い合わせようとしている対象のIDがXaであることを知っているので、情報連携基盤から受け取った受番(fd95fdae)にXaを付けて送信することが可能
** 情報保有機関Bは、受番(fd95fdae)がXbに対応するIDだと知っているので、この時点でXb = Xaの突合が情報保有機関B上で完了する
* 情報保有機関Bは、リクエストに含まれる受番(fd95fdae)がXbに対応することを知っているので、情報保有機関Aに対して、Xbを属性情報に付けて送信することが可能
** 情報保有機関Aは、情報保有機関Bから受け取った属性情報がXaに対する応答だと知っているので、この時点でXa = Xbの突合が情報保有機関A上で完了する

ちょっと補足すると、結託して情報の突合をしようとしている情報保有機関どうしが律儀に通信プロトコルを守る義理は無いですし、そこを監視したりフィルタリングするぐらいなら、ゲートウェイ方式の方がはるかに簡単に安全なシステムを実現可能でしょう。

また、私の理解する限りでは、どんなに複雑な方法を使ったとしても、

情報保有機関BでXbであると認識可能な識別子を使って、情報保有機関A{{fn '情報保有機関Aは当然その識別子がXaを指すことを知っている'}}から直接リクエストを受ける

という条件を満たしている時点でAとBの間での突合が完了しますので、長島哲也さんの「この問題点は2者間通信の前提では解決できないため、3者間通信を前提とせざるを得ない」という主張は技術的にも間違っていないと思います。

ゲートウェイ方式で突合できない理由

高木さんの図をベースに、ゲートウェイ方式ではデータのやり取りがどうなるのかを示したのが上の図です。アクセストークン方式と比較して、

  • Xaという識別子に関わるすべての通信は、情報連携基盤と情報保有機関Aとの2者間で閉じている
  • Xbという識別子に関わるすべての通信は、情報連携基盤と情報保有機関Bとの2者間で閉じている

という点が重要で、この前提から外れていないが故に

「情報保有機関AとBの権力者が結託して両者の保有する情報を突合しようとしても(情報連携基盤が結託しない限り)、直ちにはできない」

という条件を満たしているのです。この状態で仮に情報保有機関Aと情報保有機関Bが結託してXaとXbの突合をしようとしても、手がかりとすべき情報が一切情報保有機関AおよびBに与えられていない、ということが見て取れるかと思います。

まとめ

  • アクセストークン方式での情報保有機関どうしの直接通信は設計として論外、の、はず
  • 各情報保有機関が持つ情報の識別子がどんな形であれ他の情報保有機関に渡った時点で突合は完了する
  • 各情報保有機関のIDと紐づけられるすべての通信が、個々の情報保有機関と情報基盤の2者間だけで閉じている、という前提から外れてはならない

余談

PPIDや情報連携基盤については5/18にも書いてますので、よろしければこちらも読んでみてください。

----[green]

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

- EdgarAlainProst [つーかよく考えたら、上のRSA暗号の話は、m個の公開鍵で暗号化してデータをm個返すのと本質的には何も変わらんですね。..]

- EdgarAlainProst [たびたびすみません。もう一回訂正です(思いつきでぱっと書くとこういうことになる)。 m個の公開鍵で暗号化してデータ..]

- hs [EdgarAlainProstさん、コメントありがとうございます。 一連のやり取りで、GW方式で公開鍵を使って突合..]