MW211 EXIT

devlog
設計/パスワード
2012年01月12日
パスワードってのは他人に知られてはいけない。
だから暗号化する。

「A(暗号化前)→B(暗号化後)」を例として話を進めると。

「A」を管理するのは危険だ。
もし管理者が会員全員のパスワードをすべて持っているとしたら
それを覗かれた場合大変なことになるので、かなり神経を使うことになるだろう。

暗号には復号がつきものだ。
でも、パスワードの場合は復号の必要はない。
パスワードが一致すればそれで事足りるのだ。
もし、パスワードを忘れてしまったら?
元のパスワードなんか教えなくたっていい。
再発行すればいいのだ(そして再設定してもらう)
#そもそも忘れるようなパスワードを教えてもらってもまた忘れるかもね

とにかく「A→B」の矢印は「A←B」である必要はない。

ってことで、「→」しか方向がない強力な暗号化機構を用意して
・パスワードは「B」のみを管理して「A」は入力した時だけ使って破棄する
・パスワードの照合(一致)は「→」を使って変換した「B」(?)が
  管理(保持)している「B」と一致するかで判定するようにする
っていうルールにすればよい。

これだと例え「B」が流出しても「→」を使って変換した結果を照合するので
「B→Z」とかになって「B」だけでは役立たずになる。
「?→B」となる「?」がわからなければ意味がない。
そしてそれは「←」がないので事実上無理。
これで、管理者は結構楽になる。

さて「→」にあたる機構、どんなのがあるのか?
ハッシュってのがあって、「md5」とかいろいろ種類がある。
こいつの特徴は「B」が固定した幅の値に収まる。
つまりどんなAであっても、Bは「00~99」になるみたいなもんだ(1でも1000でも)。
ってことは、重複もありうる。
そう、「A」でも「C」でも「→B」となる場合がありうるのだ。
でもこの確率はとっても低いらしい。
(Bの幅が十分に広くて、Aも使えない文字とかもあって入力が限られるから)
そしてなによりも「AorC→B」ってことは、「←」が難しいことが一目瞭然。
(な気がする)
分類:設計