「認証」に関するおさらいと taspo について

no extension

最近 OAuth だの OATH だの色々出てきているので, いわゆる「認証」について 『セキュリティはなぜやぶられたのか』(Beyond Fear) を教科書に少しおさらいしてみる。

いわゆる「認証」については, 前に読書禄でも紹介している。 いわゆる「認証」を考えるとき, 私たちは以下の3つの要素の組み合わせで考える。

  • 識別(identification): あなたは誰?
  • 認証(authentication): 証明しろ
  • 許可(authorization): この範囲のことはしてもよい

例えば, 運転免許証番号は識別トークン, 運転免許証の顔写真は認証トークン, 運転免許証自体は許可トークン, といった具合である。 識別・認証・許可は必ずしもセットになっている必要はない。 『セキュリティはなぜやぶられたのか』 でも例示されているが, 乗り物の乗車券やコンサートのチケットは許可トークンだ。 この許可トークンに対しては, 識別や認証は必ずしも必要ない。 それを持っている人なら誰でも目的のサービスを受けられる。

ここで, 応用として taspo について考えてみる。 taspo については本格的な運用が始まってから色々マヌケな事例が起きていて, Tumblr では散々悪口を書いているのだが, ちゃんと調べてみたら誤解している部分も結構あったので, ここで一回整理しておく。

taspo についてはあまり技術的な記事が見つからない。 ここでは以下の記事を参考に考えてみる。

taspo のシステムは, IC カード, カード読み取り端末, 通信インフラ, バックエンドのデータセンタ(DC), といった要素で構成されている。 IC カードおよびカード読み取り端末は日本で普及している FeliCa ではなく MIFARE らしい (MIFARE のどの種類かは不明)。 通信インフラは FOMA だそうだ。 つまりタバコ自販機から FOMA を経由して DC とリンクしているらしい。 taspo 設置には十数万かかるそうだが, それ以外にもランニングコストとして固定費をさっぴかれている可能性はある(けどその辺の情報は見当たらない)。

taspo には電子マネー「Pidel」が組み込まれている。 Pidel はプリペイド式の電子マネーで, チャージはタバコ自販機でのみ可能。 Pidel の電子マネー情報はカード側ではなく DC 側で管理されている。 従って taspo カードを紛失しても新しいカードを作れば残高等が引き継がれる。 当然購入履歴も全て DC に保存される。 しかしタバコしか買えない電子マネーにどんな市場的意義があるのか甚だ疑問。 (nanaco でタバコも買えるってのならともかく)

ここからは想像だけど, taspo カード自体には識別トークンのみが入っているんじゃないだろうか。 taspo カードを読み取り端末にかざすと, 識別トークンを DC に照会して与信情報や Pidel の残高情報を引き出す。 その後, 与信 OK なら購入手続き・決済に入るわけだ。

taspo は成人認証システムと言われているけど, 自販機での購入プロセスが上記のとおりであれば, 識別・認証・許可のうち肝心の認証をすっ飛ばしていることになる。 taspo カードの識別の後いきなり許可を与えている。 自販機ではカードの持ち主が正しいかどうか証明できないのだ。 taspo カードには顔写真と会員番号等の情報が印刷されているため, 対面販売であれば顔写真と会員番号等を基に認証を行うことは可能であるが, もし対面販売なら IC カードである必然性は薄い。 (taspo カードを読み込ませて与信情報を引き出すことはできるけど, 対面販売でそこまでするかっちう気もする。 普通は顔写真のみで確認を済ませるだろう)

taspo の申し込み書類を見る限り, 商品購入時に認証情報として使えるのは顔写真しかない。 つまり taspo はシステム設計段階から認証を考慮していない可能性がある。 それで「成人認証」を名乗っているのだから笑ってしまう。

私は taspo ってもっとオモチャみたいなものかと思ってたけど, 要素技術は意外とまとも。 でも, 肝心の認証がダメダメで, その一点で taspo は破綻しているといっていいだろう。 ちなみに私は, 未成年の喫煙を抑制したいのであれば, こんなへんてこりんなシステムなどなくても, もっと簡単にタバコ自販機自体を撤去してしまえばいいと思う。 タバコは対面販売のみとして, どうしても成人認証が必要なら顔写真入りのペラペラのラミネートのカードで十分である。 まぁ taspo の運用コストが見合わなくて, 結果的に自販機が続々撤去されていくというのなら, それはそれで構わないけど(笑)

私はタバコは吸わないので, タバコ依存者から巻き上げたお金でどんな無駄なシステムを構築しようが知ったこっちゃないけど, こんな似非「成人認証」システムをタバコ以外に応用しようとか恐ろしいことは絶対に考えないでいただきたい, と切に願うのだった。

(6/7 追記)

AddClips のボタンを新しいのにしたら, 各 SBM サービスのブックマーク数が表示されるようになっていた。 で, はてなブックマークの kmachu さんのコメントが気になったので, 追記しておく。

「「taspo カード自体には識別トークンのみが入っている…肝心の認証をすっ飛ばして」←ちょっと違和感。カードは認証しているけどカード所有者は認証していないと言うべきかも。カードが偽造できる訳じゃないから。」

私が認証を識別・認証・許可の3つに分けたのは, この手の混乱を避けようと思ったから。 日本語の「認証」は様々なニュアンスで使われるので, あまり使い勝手のいい言葉ではない。

最初に運転免許証を例に出したのは taspo カードと運転免許証は構造が似ているからだが, kmachu さんが指摘されるとおり, 識別であれ認証であれ許可であれ, トークンを用いる際には, トークンに対する認証が必要である。 もっともここで言う認証は authentication というよりは certification (もしくは validation)とでも言うべきものだろう。

上述したように taspo システムの詳細はよく分からないが, 識別トークンである会員番号には当然 check digit が埋め込まれているだろうし(でなければアホ過ぎる), おそらく DC に問い合わせることで(与信処理), そのトークンの有効性を確認することもできる。 顔写真等の認証トークンについては申請時の書類によって証明できるはず (であるが, 申し込み方法を見る限りいくらでもなりすまし可能なように思えるのだが...)。 許可トークンである taspo カードには MIFARE が使われている。 taspo カードが MIFARE のどれを使ってるかは不明だが, ものによっては Common Criteria の EAL+5 の認証を受けているものもある。

Common Criteria については IPA の記事を参照のこと。 ちなみに FeliCa も CC EAL+4 の認証を受けている。 まっ, MIFARE にせよ FeliCa にせよ, 上に乗ってるアプリケーションは別物だけど。 著作権の世界で CC といえば Creative Commons だが, エンジニアの世界で CC といえば Common Criteria のことである。 なんちゃって)