ビスケットのあれこれ

ビジュアル言語ビスケット(Viscuit)に関するあれこれを書いてゆきます.

年金番号の流出の話

2015-06-02 00:18:10 | 1
プログラミングから脱線すると色々と言いたくなるという.

年金番号がウイルスにかかって流出してしまって,想定される被害は年金番号の成り済ましが怖いので,流出してしまった人たちに番号を再発行して郵送するとかニュースで言ってました.

実は,僕の学位論文の一部で,オープンシステムにおける名前付けの問題について議論しています.ちゃんと論文にもなっています.そのときの議論の延長線上に今回の年金番号流出もからんでいるので,その話をしましょう.

当時の話題の中心は,インターネットでした.世界のコンピュータにそれぞれ一意の番号をつけて(つまり,全部のコンピュータが違う番号をもっている),その上で,ある番号のコンピュータにメッセージを送りたければ,どうやってそのコンピュータを探すか(ルーティング)という問題を解けば良い,ということにしていました.その後に出てきたIPv6も色々と修正してますが同じです.

ルーティングはきちんとアルゴリズムを作ることができましたが,このシステムの最大の問題は,世界のコンピュータがそれぞれに一意の番号をつける,ということです.同じ番号を名乗るコンピュータが2つ以上あるとシステムはちゃんと動きません.アルゴリズムではそこは保証できていません.社会がそれを保証するしかないのです.つまり,インターネットに接続しようとする人は,団体から与えられたIPアドレスの範囲で名前をつけて,それで接続する.そのルールを破った人はつないではいけない.

当たり前だと思うかもしれませんが,これはオープンシステムではありません.集中的な組織があって(それが木構造で分散管理されていたとしても,最終的にルートが1つなら同じことです)そこからの管理に従わなければちゃんと動かない.その中で決めた社会のルールに従ったものだけが通信ができる,というシステムです.

オープンシステムというのは,こういう集中的なルール・組織を一切仮定しないで成立するシステムのことです.局所的な,つまり隣り合ったもの同士の約束を守るだけで,全体の整合性がちゃんと取れているというシステムです.そして,それは作れるのですよ.

僕が提案した解は,相対アドレスだけを使ってすべての計算を行うというものです.相対アドレスというのはまず,そのアドレスの起点があります.起点が変わると相対アドレスの中身が変わります.何を起点にしてそのアドレスを言っているか,というのがすべてです.

「居酒屋の隣に座った親父問題」というので説明します.あるおじさんと居酒屋で,偶然隣りに座って,話が盛り上がったとします.その時点で,2015年6月1日の「ゆかり」という居酒屋に20:00-21:00の間にカウンターの3番目の席に座っていたおじさん,という名前がつきます.自分の中では飲み屋であった美空ひばりの話をしていたおもしろいおじさん,という言い方でその人のことを思い出せるならば,それでもよいです.けっして,おじさんのDNA番号といった世界の人間を明確に区別できる番号でその人を指し示してはいません.その人のDNA番号を必要もありません.

話が進んでいるうちに,実は同郷だということがわかりました.さらに年齢を言い合うと,なんと僕の中学の同級生,中村君のお父さんだったということがわかりました.この瞬間に,このおじさんの名前はおもしろいおじさんから,中村君のお父さんという言い方にかわります.どっちの言い方も,相対的なものです.僕の言う「中村君のお父さん」という言葉は,「中村君」で同じ人間を思い出せる僕の中学の同級生の間でしか使えません.それ以外の人には「原田の中学の同級生の中村君」と言い換えないとダメです.

相対的な名前は,周囲の情報によって変わる可能性があり,伝えた相手にとっても相対的な名前でなければなりません.名前の変換が主の計算になります.

相対的な名前でも,インターネットで実現できているどんな相手とも通信ができる,ということは作れます.それを示したのが僕の論文です.名前の変換を全員がちゃんとやれば繋がるよということです.

話が大幅にそれましたが,年金番号が秘密の番号である,という社会のルール自体が脆弱すぎます.そんなのに頼らなければ上手く行かないシステムはいずれ破綻します.これは,この後導入されるマイナンバーでも同じです.

僕らコンピュータ屋が考えているのは,どんなにダメな人たちが管理しても絶対大丈夫というシステムを作ることです.そして,それは作れます.とっくに出来ているものもあります.

ところが,コンピュータの本当の意味の専門家じゃない人たちが色々と勝手に決めちゃうので,彼らはそういうことができることも知らないし,社会のルールとか法律でそれを守ればよいという極めて脆弱な解決方法しか知らないので.こんな風に社会が動いているうちは,こういう事件が多発します.

ウィルスに感染したメールを開いてしまったのが原因ではないです.人間はミスをします.そのミスによる損害は,そのミスと同じレベルの損害で抑えられるようなシステムでなければなりません.誰でもついクリックするじゃないですか.そのミスはそんなレベルですよ.ウィルスチェックをしなかったなんて大した問題じゃないんですよ.

一番の問題は,脆弱なシステムの上に大事なシステムを構築したことなんです.どんなにダメな人間が関わっていても大丈夫なシステムを作ってそれに乗ればいいんですよ.

ーー追記
最後の文章はちょっと筆が滑りました.半分眠りながら書いていたものですから.すみません.


今月末にこういうイベントをやります.この相対アドレスの話はしませんけれど,ぜひ.
コンピュータの本質を新規開発に活かす