ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Fellicaの仕様置き場&Fellicaを使って認証するシステム、作ってくれないかな!!


 mymy-mycompany分室さんのSQLインジェクション その2で、「DataAccess 」っていうクラスをつかって、ログインをチェックするお話がでてました。
 このお話、ログインをカプセル化しているわけですが、このログインのカプセル化は、SQLインジェクションの話だけでなく意味ある気がします。

 というのは、認証って、ユーザー名とパスワードだけで、なくなるような気がするんです。めんどーくさいじゃないですかあ!
 それに、ユーザー名、パスワードがわかれば、なりすましもできちゃうわけですし。。

 なんで、認証システムは、どんどん変わっていくかもしれないんで、そこだけ分離するのは、意味ありそう。

 で、そんな新たな認証システムとして、期待しちゃうのが、ケータイのFellica(=おサイフケータイ)を利用する形!(本当は、たいして期待してないのだが、ある言葉を書きたいために、そうする。理由は最後に、わかる)

 Fellicaには、docomoに、いろいろ申し込まないと勝手には使えない、共通領域と、iアプリから、自由につかえ、仕様書がでている、フリー領域とあるようなんで、フリー領域を、使いましょう。

 Fellicaの技術仕様書は、ここ




 で、たとえば、社内で、認証をとって、ログインしたい場合、

(1)その会社で作った認証用iアプリをダウンロードしてきて、
   そのiアプリが、その人固有のIDを作成するわけ。

   そのIDは、
     その人を特定できる文字列
      (この場合、社内での認証なんで、社員番号とか)
    +ダミーの適当に発生した文字何桁か
   としておく。

   たとえば、社員番号が9001で、
        適当に発生した数字が2478901
   だったとしたら、

   その人のIDは、 90012478901

(2)認証するとき、アプリケーションは、
     ワンタイムの公開鍵と
     そのログインしてきた人の、固有ID中、
         何桁目をとってきて、それを何桁目におくかをおくる。
     (ここで、後々のために、その人を特定できる文字列は、必ず送る)

   上の例だと、9001は、必ず送る。
    あと、今回、頭から6桁目の4と、
             8桁目の8を使い、
    さらに、それをさかさまに、送ることにする。

   なんで、こういう指示になる

1-6
2-5
3-4
4-3
6-2
8-1

  この文字列と、公開鍵をクライアント側(ログインするほう)に送る。

(3)ログインするクライアントのほうは、Felicaをつかう。
   ログインしたい人は、ケータイをかざすと、カードリーダで読み込んで、
   IDを取得し(90012478901)、クライアントのほうで、
    そのIDと、(2)の指示から、番号を組み立てて、(841009)
    それを公開鍵で暗号化する。このへんはjavascriptを使ってやる
   (それとも、こういうアプリ書いたほうが早いか?)

(4)サーバー側に、(3)の結果が送られると、
  そこから、秘密鍵で、組み立てた数字をとりだし(841009)、
  自分が送った規則より、IDを取り出し、(9001)、
  のこりの数字で、正しく送られてきているかチェックする
 (この場合、4と8と正しく着ているか確認)




 こうすると、ワンタイムで、公開鍵を使って暗号化してるんで、解読されにくいし、毎回、サーバーに送信する数字が違うから、規則がわかっても、ぜーんぶ番号を知らない限り、なりすまして送るのもたいへん(もちろん、今回は短い数字で、規則も簡単だから、偶然見破られる可能性もあるけど、ほんとうは、もっと長くする)。

 自分は、IDをしらないから(ケータイに入ってるIDは、表示しないものとする)、ほかの人には教えられない。ほかの人は、ケータイを奪って、解析しないとわかんない。

 で、おサイフケータイなんで、持ち運びもらく。

 あとは、fellica読み込み機が安いといいんだけどね。。。

 あ、もし、この方法、使いたい人がいたら、かってにどうぞ。

 ただ、思いつきで書いただけだから、どこか、特許とられてたりするところがあるかないかとか、そういうことやってる会社があるかないかとかは、一切調べてないので、そのつもりで(そのへんは、自己責任で)。

(実は、この部分は、まえふりだから。あとで、なんでこんな話をしてるのかの理由がわかる)




 で、これが、普及してくれると、なにがいいって、
 ウィリアムのいたずらみたいに、ケータイを持ってない人は、システムが使えない!
 それは、会社がこまる。

 っていうことで、会社がケータイをかって、くれるかもしんない!!

 それがいい

(って、そんだけのために、こんなこと、いってんのかい。 自分で買えよって!!)


 っていうわけで、

Docomoさん、
Fellicaを使った、汎用的なワンタイムパスワードの認証システムの
開発をしてください。

おねがいりんこのぷー

(って、言ってるんだよね。小倉優子って!ちがうかな。。。ちょっち自信ない。
 じつはきょうは、この言葉が書きたくて、ここまで無理やり引っ張った ^^;)