私はサポートエンジニアになりたい

元教師・現開発エンジニアの挑戦

ECサイトの利用者認証の考察

インターネット通販用のWebサイト(以下、ECサイトという)で、不正アクセスを防止する対策を考えます。(参考:H31春 応用情報)

 

3種類の利用者認証

  1. 利用者の記憶、知識をもとにしたもの
    例:ID・パスワード
  2. 利用者の所有物をもとにしたもの
    例:ICカード・ディジタル証明証・ワンタイムパスワードマトリックス認証・SMS認証
  3. 利用者の生体の特徴をもとにしたもの
    例:指紋・虹彩・筆跡・顔・網膜・静脈パターン(経年による変化が少ないもの)

安全性と利用しやすさの面を考える

セキュリティ対策がされたECサイトでも、使い勝手(利用者と運営者)が悪ければ意味がないです。

そこで、先ほど紹介した3種の利用者認証の安全性と利用しやすさを考えてみます。

  1. 記憶、知識:安全性△, 利用しやすさ〇
  2. 所有物:安全性〇, 利用しやすさ△
  3. 生体:安全性〇, 利用しやすさ△

2と3は、利用者に認証デバイスまたは認証情報を配布する必要があるため、ECサイトの利用者認証には向いていない場合があります。

ID・パスワード認証のリスク

ID・パスワード認証を狙った攻撃手法が存在している。

  1. ブルートフォース攻撃
    IDを固定して、パスワードに可能性のあるすべての文字を組み合わせてログインを試す
  2. ブルートフォース攻撃
    パスワードを固定して、IDに可能性のあるすべての文字を組み合わせてログインを試す
  3. 類推攻撃
    利用者の個人情報などからパスワードを類推してログインを試す
  4. 辞書攻撃
    辞書や人名録などに載っている単語や、それらの組み合わせた文字列でログインを試す
  5. パスワードリスト攻撃
    セキュリティ強度の低いWebサイトまたはECサイトからIDとパスワードが記録されたファイルを窃取し、解読したID・パスワードのリストを作成しリストを用いて他のサイトへログインを試す

1~4への対策は、パスワードとして設定する文字列を工夫することが重要。

5への対策は、認証情報の管理方法を工夫することが重要。

パスワードの入力試行回数の上限値を設定することで、1の攻撃への対策はできるが2の攻撃からは有効ではない。

また、他のWebサイトやECサイトから流出した認証情報が悪用された場合、対処できない。

(興味本位で不必要にサイトへ登録するのは止めましょう。そのサイトのセキュリティ対策が甘いと危ないので)

 

パスワードをハッシュ化してパスワードが知られることを防ぐ

パスワードをハッシュ関数によりハッシュ化し、平文のパスワードの代わりにハッシュ値を秘密認証情報のDBに登録する。

ハッシュ化の特性

  • 入力データが同じであれば、常に同じメッセージダイジェストが生成される。
  • 入力データが少しでも異なっていれば、生成されるメッセージダイジェストは大きく異なったものになる。
  • メッセージダイジェストから元の入力データを再現することが困難である。
  • 異なる入力データから同じメッセージダイジェストが生成される可能性が非常に低い。

ハッシュ値からパスワードの割り出しは難しく、万が一DBから情報が流出しても、平文のパスワードを知られてしまうことを防止します。

(暗号化はもとに戻すことを前提にしているが、ハッシュ化はもとに戻すことを前提にしていないため、ハッシュ化する前のパスワードを割り出すことが技術的に難しい)

it-trend.jp

ハッシュ化でも防げないレインボー攻撃

  • 攻撃者が、膨大な数のパスワード候補とそのハッシュ値の対応テーブル(Rテーブル)をあらかじめ作成(または入手)する
  • 窃取したアカウント情報中のパスワードのハッシュ値をキーとして、Rテーブルを検索する。一致したハッシュ値があれば、パスワードが割り出される。

レインボー攻撃はオフラインで行われ、時間や検索回数の制約がないため、パスワードが割り出される可能性が高い。

レインボー攻撃の対策としてパスワードにソルトを結合する

  • 会員が設定したパスワードのバイト列に、ソルトと呼ばれる十分な長さのバイト列を結合する(ソルトは会員ごとに異なるものとする)
  • ソルトを結合した全体のバイト列をハッシュ化する
  • ID、ハッシュ値、ソルトを秘密認証情報のDBに登録する

ソルトを使った対策により、Rテーブルの作成が難しくなるため、パスワードの割り出しがしにくくなる。

会員に求めるパスワードのルール

  1. 会員自身の個人情報をもとにしたパスワードを設定しないこと
  2. 辞書や人名録に載っている単語をもとにしたパスワードを設定しないこと
  3. 会員が他サイトで利用しているパスワードを使いまわさないこと

1,2は推測されやすいパスワードになるためNGです。総務省のサイトに安全なパスワードと危険なパスワードの例が載っているため参考にしてください。

www.soumu.go.jp

 

3はセキュリティ強度が低い他サイトから流出したパスワードによって,不正ログインされる場合があります。

具体的にいうと、流出したパスワードを使ってパスワードリスト攻撃して不正ログインされるリスクがあります。

 

参考:

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_1/2019h31h_ap_pm_qs.pdf

www.ap-siken.com