がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

パスワード関連2種の2:暗号化またはハッシュ化への考察

えっと…先に平謝りしておきます。
遅くなってごめんなさい。


とりあえず流れ的には
http://d.hatena.ne.jp/gallu/20060303/p1
http://d.hatena.ne.jp/gallu/20060327/p1
http://d.hatena.ne.jp/NAL-6295/20060412/p1
http://blogs.wankuma.com/jitta/archive/2006/04/11/22357.aspx
あたりをご覧になっていただけると。
いえ別にスタンダードに言及できるなんて一欠けらほども思ってませんし、正直「これ」っていうモノが見つかってるわけでもないのですが。
でもまぁ曲がりなりにも、システムエンジニアとしてもセキュリティエンジニアとしても、お金を頂戴している分際なので。「現時点における落としどころ」くらいは持っていないとなぁ、ってのがありまして。
その辺へのメモだと思っていただければ。


さて。「平文で保存してる」とかいう論外はさておくとして。現状、パスワードに関しては
ハッシュ関数で保存:無論当然不可逆
・暗号化して保存:基本的に復元可能(鍵と暗号ロジックは必要ですが)
の2パターンがあるかと思われます。
長短とかをざっくりとまとめてみますと


ハッシュ関数
長所:
・原則的に「誰も」パスワードを知ることが出来ない
短所:
コリジョンによって「異なるパスワードでも」ログインできる可能性がある
・方式の切り替えにおいて、一定の負荷がシステムないしユーザ(或いはその双方)にかかる
暗号化
長所:
・方式の切り替えにおいて「システム側のみの対応で簡単に」行うことが出来る
短所:
・パスワードを内部(とも限らないんだけど…)が知ることが出来てしまう
・DBにおける領域の最大長とかを考慮しないといけない


まぁ大体見えてきますね。ハッシュのコリジョンはとりあえず「元々ハッシュというモノがもつ問題」なので放置するとして。
「100%、管理者すらも知ることが出来ない」と「暗号(ハッシュ)方式の変更に伴う負荷の問題」とのトレードオフになる感じです。


と、とりあえずココまでが1つの区切り。基本的には「後は状況に合わせて」となるです。
で、最近考えてるのが「暗号(ハッシュ)方式の、変更までを眼目にいれたconfig化」。ちと設計中なので、落ち着いたらまた公表しようかと。
っつか、とりあえずMagicWeaponには突っ込む予定なんですがね。