きっかけ
流行りに乗りたかっただけです。
東北の人間なので関西弁はよくわかりません。
本編
「うちのオカンがね、パスワードDBの情報をどう管理するか悩んでてな。」
『そうなんや。』
「良さそうなのを見つけたのはいいんやが、その名前を忘れたらしいねん。」
『ほんなら一緒に考えてあげるから、特徴言ってみてー。』
「オカンが言うには、どんな長いパスワードでも決まった長さの値に変換されるらしいねん。」
『そりゃお前、ハッシュやな。ハッシュは元の文とは脈絡のない固定長の値に変換するんや。元のパスワードだけでなく文字数も推測できなくなるからええな。』
「俺もハッシュと思ったんやけど、でも変換後の値からパスワードに戻すことができると言うねん。」
『ほなハッシュちゃうかあ。ハッシュは一方向性ゆうて、ハッシュ値からパスワードには戻せへん。いちいちパスワードをハッシュ化して結果を突き合わせるしか一致不一致を確認できひんから、元のパスワード情報はDBで持たずハッシュ値だけ管理しておくことでより安全になるんや。』
「そういえば、パスワード秘匿以外にも改竄チェックやウイルスの検知にも使われる技術って言うてたで。」
『ハッシュやないか!たった1文字、大文字小文字が変わる程度でもハッシュ値は大きく変わるから、ぱっと見で元データが同じかどうかを判断しやすいんや。』
「でも全然違うオカンとオトンのパスワードは変換すると同じ値になるって言うねん。」
『ほなハッシュちゃうかあ。ハッシュ値のパターンは有限だから複数のパスワードが同じハッシュ値になることはあるんやが、衝突発見困難性が保証されてるから、同じハッシュ値を持つパスワードは自力ではまず見つからんで。というかDBはパスワードのハッシュ値しか持たないから認証もハッシュを比較するんや。オカンの言う通りなら他人のパスワードで認証通るからコレ使えへんぞ!』
「あと、データ変換のくせに何故か塩やコショウをまぶすらしいねん。どう言うこっちゃ。」
『そらハッシュしかないやろ!変換アルゴリズムは公開されているから、レインボーテーブルっていうパスワードとハッシュ値の対応表を作られたら簡単にパスワードがバレるんや。そのためにソルトとかペッパーと呼ばれる乱数を加えてから変換処理して、対応表の作成が面倒になるようにしてんねん。』
「でも、変換後の値を逆算したらソルトを加えたパスワードとは一致したって言うねん。」
『ほなハッシュちゃうかあ。ハッシュ値は第二現像計算困難性っていう性質があって、ハッシュ値から別のパスワードを探すことは難しいんや。オカンの言う通りなら今頃悪い奴が勝手にパスワード作り出して不正ログインしてる可能性もあるやんけ。やっぱりコレ使えへんぞ!』
『もうホンマにわからへんやん、今のところ何やと思ってんのよ?』
「オトンが言うにはBashちゃうかって」
『絶対ちゃうやろ、もうええわ。ありがとうございました。』
懺悔
この記事書いてからミルクボーイのネタを初めてみました。面白かったです。