パスワードクラッキング
- オンライン攻撃:サーバに接続してID、パスワードを入力して試す方法
- オフライン攻撃:自らのPC上で、パスワードファイル(ID,ハッシュ化されたパスワード)を解析する
オンライン攻撃に対しては、連続して規定回数以上失敗した場合にアカウントロックアウトにするなどが対策になります。
ブルートフォース
総当り攻撃のこと。IDを固定して、パスワードを試す方法を指します。
オンライン攻撃には、ロクアウトが有効です。
一方、オフライン攻撃には、パスワードを十分な長さにすることが有効です。
一方、パスワードを固定して、IDを試す方法をリバースブルートフォースといいます。
辞書攻撃
パスワードに使用されることの多い単語や人名を組み合わせ、繰り返しログインを試行すること。
パスワードリスト攻撃は、他のサイトで流出したID、パスワードをそのまま使ってログインを試します。
オフライン攻撃におけるパスワード解析の手法
暗号化してあるパスワードを復号鍵(共通鍵or秘密鍵)で復号して、入力されたパスワードと考えら得れうるパスワードのハッシュ値を比較します。
パスワードファイルには、IDとパスワードのハッシュ値が記録されている場合が多いです。
一致するかわかればいいので、ハッシュ値がわかればよいんですね。
現在使われている可能性があるハッシュ関数は、SHA-256,512,SHA3-256,512があります。
比較の方法としては、単語とハッシュ値の一覧表で検索することが一般的です。
DB化されているんだね
ソルト
ハッシュ値にバリエーションをつけるために、ソルトが有効です。
レインボー攻撃
レインボーテーブルを使って、ハッシュ化されたデータを解読する攻撃のことです。
還元関数を用いて一組の単語ーハッシュ値の組を記録しておくことで、多数の単語ーハッシュ値の組を管理します。
ハッシュ値から考えられるパスワード候補を算出する関数を、還元関数といいます。
パスワードをハッシュ関数・還元関数に交互にかけることで、事前にハッシュ値ともとの値(パスワード)の対応表を作っておき、その対応表と付き合わせることで、ハッシュ値から元の値を割り出す方法がレインボー攻撃です。
パスワードを管理するときに、ハッシュ値に変換してから保管することが多いため、ハッシュ値を盗めばレインボー攻撃が可能になるということになります。
様々な攻撃手法と特徴
DoS, DDoS攻撃
大量の通信を送り、サーバーをダウンさせる攻撃。
DDoS攻撃は分散型で攻撃するため、ボットやC&Cサーバを活用します。
中間者、MITB
ブラウザプロセスとWebサーバ間に入り込んで、通信の盗聴、改ざんを行います。
動いているプログラムの中にはいるため、暗号通信していても復号できてしまいます。
改ざんでは、例えば振込先を自分の口座に変えてしまうなどがあります。
MITB攻撃では、間に入り込んで操作されるのを防ぐために、ブラウザプロセスにトランザクション署名をつけることで対応します。
仮に改ざんされても、署名が一致しないことになるため、検証で気づけます。
IPスプーフィング
送信IPアドレスをなりすましすることです。
DNSやNTPサーバなど、UDP通信のときに可能な攻撃です。
TCP通信はコネクションを形成するため、シーケンス番号(SYN)と確認応答番号(ACK)の整合性がなくなってしまいます。
だから、TCP通信では、IPスプーフィングが使われないのです。
サイドチャネル攻撃
暗号化装置における動作を物理的な手段で観測し、暗号化装置が保持している共通鍵(秘密鍵)などの機密情報を推定します。
サイドチャネル攻撃には次のような手法があります。
- タイミング攻撃:暗号化処理速度の変化に注目
- 電力解析攻撃:消費電力の変化に注目
- 故障利用攻撃:意図的にエラーを発生させ、エラー時の動作に注目する
テンペスト
サイドチャネル攻撃の一種で、ディスプレイやPC本体などから漏れ出ている電磁波を捉え、ディスプレイに表示している画像を再現したり、処理しているデータを再現したりします。
電磁波が漏れ出ないように、電磁波を遮断する室内に情報機器を設置するなどが、対策としてあげられます。
リプレイ攻撃
盗聴によって入手した認証情報を利用して、認証を突破することです。
バッファオーバフロー・ヒープオーバフロー
想定外の大きなサイズのデータを攻撃対象に読み込ませ、異常動作を引き起こさせると同時に、送り込んだ不正プログラムを実行させます。
バッファやヒープは、外部から受け取ったデータを保管する領域のことです。
この領域がオーバーしてしまうと、プログラム本体(テキスト領域)を書き換えることになってしまうため、異常動作を引き起こします。