平文とは、
暗号化されていない文章のことを言う。ひらぶん、あるいは、へいぶんと読む。そのままの状態なので当然簡単に読める。そのため盗み見られたら、パスワードが簡単にばれてしまう。何も隠していない状態と同じだ。
「データベースは漏洩するもの」という意識がなければ、そもそもパスワードの扱いに気を使わない。簡単にプログラムを書こうとして、そのままデータベースに保存してしまう。
こうした平文でパスワードを保存しているデータベースから情報が盗まれると、苦も無くパスワードを知られることになる。古くからあるWebサービスでは、予算を充てて改修していない限り、こうした状態になっているところが、
まだまだ多くあると想像が付く。
次は
暗号化だ。平文で保存するのではなく、
一定の方式で違う文字列に置き換えて、元のパスワードが分からない状態にして保存するというものだ。平文の状態と違い、データベースから情報が漏れても、すぐには元のパスワードは分からない。暗号を元の状態に戻す「
復号」をしなければ、パスワードは手に入らないからだ。
ただし、復号できるということは、
元のパスワードを得ることが可能ということだ。データベースだけでなく
プログラムも盗まれてしまえば復号が可能だ。また、
暗号化の方法を推測されてしまい、解かれてしまうケースもあるだろう。
平文よりはましだが、パスワードを保護する上で、適切かと問われれば疑問が残る。10年以上前なら、パスワードを忘れた人に、メールでパスワードを知らせるWebサービスも多かった。パスワードを忘れた際に、
メールでパスワードが送られてくるWebサービスは、平文か暗号化のどちらかの状態で保存されている。こうしたWebサービスでは、パスワードはそのうち流出すると思っておいた方がよい。