QuizGenerator(β)におけるパスワード秘匿化の仕組み

管理者blog

本記事では、learningBOXにおいて、どのようにパスワードを秘匿化しているか紹介します。

ログイン認証はパスワード一般的

eラーニングシステムに限らず、ログインして使うシステムの多くでは、パスワードを使ってログイン認証を行います。金融機関などのシステムでは、「ワンタイムパスワード生成器」や、「ログイン毎にメールやSMSによる認証を実施する」など、パスワードに依存しない認証システムも使われていますし、弊社が提供しているeラーニングシステムの中にも筆跡認証を搭載したものもあります。しかし、こういった認証方法は、依然としてそれほど普及しておらず、learningBOXにおいても、パスワードによるログイン認証を行っております。

パスワードの秘匿化(保護)は重要な課題

パスワードの漏洩箇所として、ユーザ端末への攻撃、通信の傍受、サーバへの攻撃の3つがあります。

ユーザ端末への攻撃

ユーザ端末への攻撃としては、「コンピュータ・ウィルスなどへの感染」と、「フィッシングサイトへの誘導」が考えられます。コンピュータ・ウィルスに感染していると、正規のサイトにログインしようとしたときに、パスワードが盗まれてしまう危険性があります。また、コンピュータウィルスなどに感染していなくても、メールなどで、フィッシングサイト(偽サイト)に誘導され、IDとパスワードを入力させられてしまうという危険性がある。

通信の傍受

通信の傍受とは、お使いのパソコンやスマートフォンと、弊社のサーバの間の第三者がパスワードを盗み見ることを指します。learningBOXでは、SSLという技術を使って、お客様と弊社のサーバの間の通信を暗号化することで、通信の傍受によるパスワードの漏洩を防いでいる。

サーバへの攻撃

サーバへの攻撃には様々なものがあります。SQLインジェクション攻撃や、サーバソフトの脆弱性を突いた攻撃、不審者のデータセンタへの侵入や、データセンターでの不正、様々なリスクが存在します。そこで、learningBOXでは、パスワードに「ソルト」をつけ「ハッシュ化」し、さらに「ストレッチ」することでパスワードを秘匿化しています。こうすることによって、攻撃者はおろか、learningBOXの運営チームでさえどのようなパスワードが設定されているかは知ることができないため、パスワードの漏洩を強固に防ぐ事ができます。

ハッシュ

一方向関数のこと、入力されたパスワードをハッシュ関数に通すと、一見ランダムにみえる値が出力される。これをハッシュ値という。元の値からハッシュ値を求めることは簡単だが、ハッシュ値から元の値を計算することはできない。そのため、ハッシュ値のみ保存することで、元のパスワードを秘匿化できる。2000年ごろに開発されたシステムでは、md5やsha1のハッシュを保存しているものが一定数あったと思うが、2017年現在ではハッシュ化だけではパスワードの秘匿化は不十分である。

ただし、ありとあらゆるパスワードのハッシュ値を予め求めておき、逆引き辞書を作ることで、ハッシュ値から元の値を推測できる可能性がある。特に8桁までの英数などで作られたパスワードであれば、現実的なコストで推測できてしまう。また、レインボーテーブルなどを使った高度な攻撃を使うと、推測に掛かる時間を桁違いに短縮できる場合がある。

ストレッチ

ハッシュ化を繰り返し行う。例えば、ハッシュ化を1024倍行うことで、パスワードの解読に掛かる時間を1024倍に引き伸ばすことができる。もちろん、1024倍高速なコンピュータが出来てしまえば同じ時間で解読されてしまうのだが、適切にストレッチ処理を行うことでパスワードの解読に掛かる時間を飛躍的に伸ばすことができる。

ソルト

ハッシュ化してストレッチしたとしても、同じパスワードは同じ値となってしまう。同じハッシュ値が複数登録されていると、「ありがちなパスワード」が使われているということがバレてしまう。ハッシュ化する前に、パスワードの前後に付ソルト(ランダムな文字列)を加することで、同じパスワードでも異なるハッシュ値になり、元のパスワードを推測しにくくなる。また、詳しくは説明しないが、ソルトを付加することでパスワードが長くなるため、レインボーテーブルによる解読を著しく困難にする効果もある。

まとめ

learningBOXでは、パスワードを保存そのものを保存しない事でパスワードの秘匿化を行っています。また、パスワードの秘匿化の際には元のパスワードを推測されないように出来る限りの対策を講じています。しかしながら、「12345678」や「password」などの”簡単”なパスワードを設定された場合は不正アクセスのリスクが高まりますのでパスワードを適切に設定するようお願いします。

今後の課題

「12345678」や「password」などの”簡単”なパスワードを設定できないような制限を検討しております。また、”あやしい”アクセスがないかの監視を徹底するなど、最新のセキュリティー技術を取り込んで行きます。