LMハッシュ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/07/24 10:06 UTC 版)
ナビゲーションに移動 検索に移動LMハッシュ(LanMan、LAN Managerハッシュとも)は、もともとLAN ManagerやWindows NT以前のWindowsでパスワードを保存するために使われていたハッシュ関数であるが、後述のように、すでに破られている。過去のLAN Managerへの後方互換性を図るため、LMハッシュはのちのWindowsでも生成されていたが、マイクロソフト自身がこのハッシュ生成をオフにするよう管理者へ推奨している。そして、Windows Vistaではデフォルトでオフとなるに至ったが、サードパーティー製のCIFS実装の中には、未だにLMハッシュを使うものが存在する。
アルゴリズム
- パスワードは最長14文字に規制される[注 1]。
- パスワードの小文字を大文字に変換する。
- パスワードをOEMコードページとして解釈する[3]。
- 14バイトに足りない分をヌル文字でパディングする[4]。
- 14バイトの長さになったパスワードを前後7バイトずつに分ける。
- それぞれの片割れ(7バイト = 56ビット)をDESの鍵として使えるように、7ビットごとに区切り、区切った1つ1つの最上位に0のビットを1ビット追加して(例えば、
1010100
を01010100
とする)64ビットの長さに変換する。なお、DESの実質の鍵長は56ビットであるが、パリティビットである8ビットを加えた64ビットの形でやりとりされる。この過程で挿入したビットは、そのパリティビットの位置に当たり、DESの計算には使われない。 - 生成した鍵でASCII文字列の「
KGS!@#$%
」[注 2]を暗号化する。DESの暗号利用モードはECBモードとし、パディングモードはNONE
とする。 - こうして得られた2つの暗号文字列をつなげた16バイトの値がLMハッシュとなる。
脆弱性
LMハッシュは、標準化されたブロック暗号であるDESを使ってはいるものの、設計段階でいくつもの脆弱性を抱えた実装であり、元のパスワードを決定可能となってしまっている[5]。まず、パスワードが最長14文字に制限されているため、ASCIIの印字可能文字が95文字しかないことを考えれば、鍵空間は
- Making a Faster Cryptanalytic Time-Memory Trade-Off, Philippe Oechslin, Advances in Cryptology - CRYPTO 2003
- Ophcrack, the time-memory-trade-off-cracker
- Cain and Abel
- A L0phtCrack Technical Rant from Mudge considering LM Hash implementation
|
- LMハッシュのページへのリンク