C#...などなど2011年3月9日パスワードのクラッキングを難しくする「ソルト」と「ストレッチング」とは今日下の記事を読んだ。Anonymousによってハックされ話題になった。Hoglundがファウンダーである。rootkitsなどのすばらしい書籍も書いており、この業界ではかなりの有名人だ。この事件は一体どのようにして起きたのか。Anonymousについて調査した結果を公表しようとしたことに対する、Anonymousの報復攻撃ということのようだ。Injectionの脆弱性から、ソーシャルエンジニアリングも絡めて芋づる式にメールアカウントやサーバーのログインパスワードなどが取得されて行く過程が大変興味深い。ここで言及されていた、パスワードハッシュを作成する際の「ソルト」と「ストレッチング」について、初耳だったのでメモ。ソルトについては以下のエントリが詳しい。JULYの日記(...)非可逆処理を行う際に、ランダムなデータをパスワードに付け加えてから処理を行うと、同じパスワードであっても、処理結果は違ったものになります。この付加されるデータを「ソルト」と言います。パスワード情報を保存する時は、このソルトの値と処理結果の値を保存しておきます。検証する時には、入力されたパスワードと保存されているソルトの値を組み合わせて非可逆処理を行い、その結果と保存されている値を比較します。Wikipediaという事で、ソルトを付加して非可逆処理を行うと「レインボーテーブル」を使ったクラッキングがやりにくくなるとの事。これだけだとブルートフォースアタックにはあまり効果が無い。ストレッチングについては以下を参照。key)を使ってパスワードを非可逆処理しておく。するとユーザーが入力したパスワードをチェックする時にも同じ回数の計算処理を行うので1秒程度の時間がかかってしまうが、利便性が損なわれる程ではない。ところが悪意を持ったクラッカーがブルートフォースでパスワードを取得しようとした場合にも1回の試行につき1秒程度(コンピュータの性能にもよるが)の時間がかかり、合計すると通常のブルートフォースよりも桁違いに長い時間となってしまい現実的ではなくなる、という事らしい。^^ついでに検索にヒットした下の記事も読んで改めて参考になった。@ITくれぐれも簡単なパスワードの使用には注意したい。追記:パスワードについて非常に分りやすい説明を見つけたので、リンクを。追記:また新しい記事が出たのでリンクを追加。さんのコメント...ラジオ体操を毎日するのもいいかも?ストレッチングはいい手ですね。電池の持ちにはご注意を。