UnsplashのSincerely Mediaが撮影した写真
レインボーテーブル攻撃は、ハッシュ化されたパスワードを逆算・推定するために、あらかじめ作られた「対応表(レインボーテーブル)」を利用する手口です。ハッシュ化しているから安全、という思い込みがあると危険で、設定次第では短時間で解読される可能性があります。この記事では、仕組み、成立条件、実務的な対策を整理します。
レインボーテーブル攻撃は、パスワードそのものではなくパスワードのハッシュ値が漏えいした場合に、そのハッシュ値から元の文字列を推定する手法の一つです。ハッシュ関数は「一方向」であるため理論上は逆算できませんが、攻撃者は大量の候補を事前計算し、照合を高速化します。
ソルトを各ユーザーごとに付与してハッシュ化することで、レインボーテーブルの「使い回し」を困難にします。ソルトがないと、同じパスワードは同じハッシュ値になり、攻撃が成立しやすくなります。
パスワード保存では、総当たりへの耐性を上げるために「計算コストを上げる」設計が求められます。高速に計算できる方式をそのまま使うと、試行回数が稼がれやすくなります。
万一パスワードが推定されても、MFAがあると不正ログインを成立させにくくできます。パスワードだけに依存しない設計が重要です。
パスワードがハッシュで保存されていたとしても、方式や運用が不十分だと推定され、他サービスへの使い回しで被害が拡大します。被害は「当該サービスだけ」で終わらない点が重要です。
漏えい対応では、パスワードリセット、問い合わせ対応、原因調査、再発防止策の実装など、業務負荷が大きくなります。保存方式の設計は、インシデント対応コストを左右します。
レインボーテーブル攻撃は、ハッシュ値から元のパスワードを推定するために、事前計算された対応表を利用する手口です。対策の要点は、ソルト付きハッシュの徹底、パスワード保存に適した方式の採用、長いパスワード・使い回し防止、MFAの併用です。「ハッシュ化しているから安全」とは限らないため、設計と運用をセットで見直すことが重要です。
漏えいしたハッシュ値から、元のパスワードを推定することを狙います。
方式や設定次第です。ソルトがない、弱い方式だと推定される可能性があります。
各ユーザーごとに付与するランダム値で、同じパスワードでもハッシュ値が同一にならないようにします。
使い回しが効きにくくなり、攻撃コストを大きく上げられます。
試行回数を稼がれやすく、総当たりの速度が上がるためです。
短いほど推定されやすいので、長さを優先し、推測されやすい単語は避けます。
一つが推定・漏えいすると、他サービスにも連鎖して不正ログインが起こり得るためです。
有効です。パスワードが推定されても、追加要素がないとログインを成立させにくくできます。
速やかなパスワードリセットと、使い回しの注意喚起、必要に応じたMFA強制が重要です。
保存方式(ソルト+適切な方式)の是正、MFA、強いパスワード運用の順で整備すると効果が出ます。