認証

前置き

私は結構ミスタイプが多い。結構というか猛烈に多い。私が使うキーボードはいつもバックスペースキーだけツヤツヤしているくらいである。
よってパスワードの認証でよくコケる。
よって長いパスワードを設定する気にならない。
今設定しているパスワードは何パターンかあるが、いずれも昔から使ってきて慣れたやつであり、これは曲がりなりにもSEを気取る人間として色々まずいだろう。
でも面倒くさいから長いパスワードつける気にならないんだよね。

認証に関して

現在Web上で流行っている認証方法は以下のようなものだろうか。

  1. キーワード認証
  2. 秘密の質問認証
  3. 画像認証

1のキーワード認証は言わずもがな、IDとパスワードを打って、それが完全一致していたらOKというものである。
2の秘密の質問は多くの場合パスワードを忘れた場合のフォローに使われる。登録者しか知らない(ハズ)の秘密の質問を用意し、それに答えられたらパスワードをメールアドレスに送るなどだろうか。初恋の人とか結構知っている人もいそうだが。
3はSPAM防止によく使われる手法である。揺らいでいるランダムな画像、人間の目での識別は容易だが機会では識別が難しい画像の解析結果をユーザーに入力させ、各種ロボットSPAMの攻撃を完全にシャットアウトする手法である。


共通しているのはいずれも完全な一致をさせるところだろうか。

オフラインの認証

オフライン上で流行っている認証方法(というかセキュリティ)は以下のようなものだ。

  1. 指紋認証
  2. 虹彩(こうさい)認証
  3. カード(磁気など)認証

鍵は言わずもがな、玄関のロックなどに使用する鍵である。針金(古いか?)などに耐性がないのも多い。
指紋認証は最近携帯などについたりもしているが、虹彩もそうだが人体の一部を使用して認証を行う形式であり、その複雑さが模写が難しいといわれている。
カードや他の類似物は、いわゆる電子ロック型で、電気の力でロックと認証を行っている。カード以外にも色々ありそうだが詳細は不明。
掲載はしなかったがナンバーロック(数字を入力して鍵を解除)などもあるが、この辺はWebで公開している認証と大差はないので却下。

やってほしい認証

私は面倒くさがりなので、パスワードを全部覚えているとか、長いパスワードを一所懸命打つとか、正直勘弁してほしいタイプである。
もっと手軽にやってくれねーもんかなと思うし、色々なシステムで別々のパスを設定するのも面倒くさい。
かといってカメラとかで虹彩認証とか行わせようものなら、その虹彩画像を持っていかれてエライ事になるかもしれないし、いちいちカメラに目玉を近づけるのも馬鹿らしい。
で、詳細な検討はまた別記するが、以下のような認証をしてほしいと思ったりする。

  1. アバウトなキーワード認証
  2. カード認証
  3. 指紋認証

2、3はいずれもノートPCなどにデフォルトで装置がつくことが前提。
例えばFeliCaであれば、IDmMD5なりSHA1なりでハッシュ化して送るだけでいけると思うのだが、ハードを持ち運ぶのもハードをいちいち差すのも面倒くさいので、デフォルト搭載は必須である。PaSoRiSDKなら20万出してちゃんと買ってるのでプログラムくらいは作ろう。どっかのメーカーさん依頼してくれないかな。


1はどんだけセキュリティルーズなんだという気もしないでもないが、私の感覚では1文字くらいのミスタイプは見逃してくれよという感じなのである。
例えば32文字のパスワードを打って、一文字ミスしちゃったからまた全部打ち直しとかはめげるし、それを避けるために紙に印刷したりメモ帳に打ち込んでからコピペで入力したりするわけだ。これもセキュリティ的には甘いでしょう。
アルゴリズム的にはdiff系のアルゴリズム使って、一文字文字が前後しちゃったとか、大文字小文字間違えちゃったとか、誤差範囲を決めて多少の間違いを許してくれれば、長いパスワードも設定する気になるという話。
このアバウトな認証で設定した長いパスワードと、厳格な認証で設定した短いパスワードとどっちが強固なのかはあんまり検証してないが、多分文字数に2倍くらい開きがあれば長いパスワードの方が強固じゃないかな。


パスワードクラックで最強はブルートフォースアタックなので、ブルートフォースアルゴリズム上一定以上の文字列は不可能に近い。
辞書アタックは比較的長い文字にも対応出来るが、それでも16文字などをクラックしやすい辞書アタックなどは現存していないと思う。(単語+単語+単語などはあるが、それでヒットするパスは設定しないだろう)
もう少し長いパスワードを設定しやすいようアバウトな認証を正式提案してみたいのだが、俺のようなものぐさが世の中にどれだけいるかという話かな。
どっちかというとFeliCaまたは指紋リーダデフォルト搭載の方が可能性がある気もしないでもない。これなら32文字以上のパスであることも保証出来るし、例えばIDにMD5かけてパス発行するタイプのように連想はしにくいので、破られにくいだろうしね。