web-dev-qa-db-ja.com

パスワードを分割する利点はありますか?

私は LANMAN(LM)ハッシュ について読んでいて、アルゴリズムの特定の部分に興味があります。

LMハッシュは次のように計算されます。

  1. ユーザーのASCIIパスワードは大文字に変換されます。
  2. このパスワードは、14バイトになるようにヌルが埋め込まれます。
  3. 14バイトのパスワードは2つの7バイトの半分に分割されます。
  4. これらの値は、2つのDES=キーを作成するために使用され、それぞれ7バイトのハーフから1つです。
  5. 2つのキーのそれぞれを使用して、定数をDES暗号化しますASCII string "KGS!@#$%" 、2つの8バイトの暗号化テキスト値が生成されます。
  6. これら2つの暗号文の値は連結されて16バイトの値(LMハッシュ)を形成します。

リンクされているWikipediaの記事で概説され、他で説明されているセキュリティ上の弱点はたくさんありますが、特にステップ3から6に興味があります。この設計につながった原因に興味があります。パスワードを分割し、2つの半分を個別に暗号化してから、2つの半分を組み合わせて1つのハッシュを再度作成することには、実際のセキュリティ上の利点はありますか?または、これは「あいまいさによるセキュリティ」の単なる例ですか?

45
Bill the Lizard

パスワードをハッシュに分割することは利点がない利点があります。これは、今日ではもはや関連しない曖昧な理由で行われました。

LanManハッシュがこのように機能するのは、LanManハッシュがDESに基づいて構築されているためです。 DESは56ビットのキーを受け入れます。したがって、7バイトのチャンクをDESキーを形成するものとして扱うことは自然なことです。使用する良い方法はありません。 DES一度に7バイト以上をハッシュするには、DESからより長いパスワード用のハッシュを構築する方法が必要であるため、LanManハッシュの設計者はパスワードを2つに分割することを決定しました半分。

今日、この方法でパスワードハッシュを作成することは決してありません。 Bcrypt、Scrypt、PBKDF2、または同等のものを使用するか、SHA256などの既存のプリミティブに基づいて同様のものを構築します。しかし、当時、Bcrypt、Scrypt、SHA256などは存在しなかったため、LanMan設計者がこの種の壊滅的なエラーを引き起こす機会が開かれました。

現代の標準では、LanManハッシュは扱いにくいデザインです。 多数多数攻撃 がその上にあります。とても弱いです。 LanManハッシュを回避できる可能性がある場合、今日はだれも使用すべきではありません。 (他の人が指摘したように、そのセキュリティは当時の基準でさえも不器用です。公正なポイントです。)

38
D.W.

パスワードの分割は弱点であり、利点ではありません。各パスワードを個別に半分に分割できます。 ASCII文字(32〜126のコードを含む)で始まり、小文字を削除すると、127-32-26 = 69の可能な文字がパスワードのアルファベットに含まれます。これにより、 697半分以下2です。43。言い換えれば、これは力ずくで非常に扱いやすいです。辞書も必要ありません。

これはあいまいさによるセキュリティではありません。これは無能による不安です。

編集:「ブルートフォースで非常に扱いやすい」は、さまざまな最適化の道も開きます。 LanManはソルト化されていないため、事前計算されたテーブルは効率的である可能性があります(テーブル構築のコストを一度支払う、次に攻撃するいくつか)ハーフパスワード-oneパスワードはtwoハーフパスワードであるため、単一のパスワードであっても実際に価値があります) 。 2003年に、Philippe Oechslinは 時間メモリトレードオフの改善 (「レインボーテーブル」という用語を作り出した記事です)とLanManパスワードを解読するための計算されたテーブルを公開しました。彼は英数字のパスワード(文字と数字、特別な記号はなし)に制限されていたため、2のスペース37。テーブルの累積サイズは1.4 GBになり、クラック効率は99.9%、攻撃時間は1分未満になります。

243スペース、つまり64倍大きいテーブルサイズと攻撃時間は、どちらも因数16増加します(つまり、642/3)なので、約23 GB(今日のディスクではそれほど多くありません)と15分の攻撃について話します。実際、ボトルネックはハードディスクでのルックアップであり、スマートな攻撃者はSSDを使用するため、機械的なハードディスクよりも50倍速くルックアップを実行できるため(32 GB SSDは70 $ ...)。テーブル構築の労力(1回限りの支出)は、1台のPCで数週間、まともなクラウドで数日かかるため、かなり安価です。

どうやら 、そのようなテーブルはすでに存在しています...

54
Thomas Pornin

何かがより複雑になったからといって、必ずしもそれがより安全になるわけではありません。 Windowsボックスでパスワードクラッカーを実行したところ、パスワードが8文字の文字列に分割され、他の文字列とは無関係に各文字列が分割されたため、処理が非常に速くなりました。

したがって、実用的な観点から見ると、パスワードを分割することは有益ではありません。@ Thomasは、数学的に有益でない理由をすでにカバーしています。

3
MasterZ