LMハッシュのソースを表示
←
LMハッシュ
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''LMハッシュ'''('''LanMan'''、'''LAN Managerハッシュ'''とも)は、もともと[[LAN Manager]]や[[Windows NT]]以前の[[Microsoft Windows|Windows]]で[[パスワード]]を保存するために使われていた[[暗号学的ハッシュ関数|ハッシュ関数]]であるが、[[#脆弱性|後述]]のように、すでに[[パスワードクラック|破られて]]いる。過去のLAN Managerへの[[後方互換性]]を図るため、LMハッシュはのちのWindowsでも生成されていたが、[[マイクロソフト]]自身がこのハッシュ生成をオフにするよう管理者へ推奨している。そして、[[Microsoft Windows Vista|Windows Vista]]ではデフォルトでオフとなるに至ったが、[[サードパーティー]]製の[[Server Message Block|CIFS]]実装の中には、未だにLMハッシュを使うものが存在する。 == アルゴリズム == LMハッシュの計算方法は次のようになっている<ref>{{Cite web|和書|url=http://technet.microsoft.com/ja-jp/library/dd277300.aspx|title=Windows 2000 セキュリティ強化ガイド 第3章|accessdate=2013-11-28|publisher=[[マイクロソフト]]}}</ref><ref name="davenport">{{cite web | url=https://davenport.sourceforge.net/ntlm.html#theLmResponse | title=The NTLM Authentication Protocol | accessdate=2006-06-05 | last=Glass | first=Eric | year=2003 es}}</ref>。 # パスワードは最長14文字に規制される<ref group="注">14文字を超えるパスワードからは、LMハッシュを生成することができない。</ref>。 # パスワードの小文字を[[大文字]]に変換する。 # パスワードをOEM[[コードページ]]として解釈する<ref>{{cite web | url=http://msdn.microsoft.com/nl-nl/goglobal/cc563921%28en-us%29.aspx | title=List of Localized MS Operating Systems | accessdate=2012-12-16 | publisher=[[マイクロソフト]]}}</ref>。 # 14バイトに足りない分を[[ヌル文字]]でパディングする<ref name="KB828861">{{Cite web|和書|url=http://support.microsoft.com/kb/828861|title=NoLMHash ポリシーが有効になっている場合、クラスター サービス アカウントのパスワードを 15 文字以上に設定する必要があります。|publisher=[[マイクロソフト]]|date=2006-10-30|accessdate=2013-11-28}}</ref>。 # 14バイトの長さになったパスワードを前後7バイトずつに分ける。 # それぞれの片割れ(7バイト = 56ビット)を[[Data Encryption Standard|DES]]の鍵として使えるように、7ビットごとに区切り、区切った1つ1つの最上位に0のビットを1ビット追加して(例えば、<code>1010100</code>を<code>'''0'''1010100</code>とする)64ビットの長さに変換する。なお、DESの実質の鍵長は56ビットであるが、[[パリティビット]]である8ビットを加えた64ビットの形でやりとりされる。この過程で挿入したビットは、そのパリティビットの位置に当たり、DESの計算には使われない。 #生成した鍵で[[ASCII]]文字列の「<code>KGS!@#$%</code>」<ref group="注">この「KGS!@#$%」という文字列は、'''K'''ey of '''G'''len and '''S'''teve、そして、 '''Shift + 12345'''を意味するとされる。Glen ZornとSteve Cobbは [http://www.ietf.org/rfc/rfc2433.txt RFC 2433] ([[MS-CHAP|Microsoft PPP CHAP Extensions]])の著者である。</ref>を暗号化する。DESの[[暗号利用モード]]はECBモードとし、パディングモードは<code>NONE</code>とする。 # こうして得られた2つの暗号文字列をつなげた16バイトの値がLMハッシュとなる。 == 脆弱性 == LMハッシュは、標準化された[[ブロック暗号]]である[[Data Encryption Standard|DES]]を使ってはいるものの、設計段階でいくつもの脆弱性を抱えた実装であり、元のパスワードを決定可能となってしまっている<ref>{{cite web|url=http://download.microsoft.com/download/f/4/a/f4a67fc8-c499-461d-a025-8155fb4f7a0f/Windows%20Passwords%20Master%201.5%20Handout%20-%20Jesper%20Johansson.ppt|title=Windows Passwords: Everything You Need to Know|publisher=[[マイクロソフト]]|author=Jasper M. Johansson|date=29 June 2004|accessdate=2013-11-28|lang=en|format=[[Microsoft PowerPoint|PPT]]}}</ref>。まず、パスワードが最長14文字に制限されているため、[[ASCII#ASCII印字可能文字|ASCIIの印字可能文字]]が95文字しかないことを考えれば、鍵空間は<math>95^{14} \approx 2^{92}</math> に限られる。 そして、7文字以上のパスワードは半分に分けてそれぞれをハッシュ化するため、7文字ごとに解析することができるという脆弱性がある。パスワード7文字が取りうる組み合わせは<math>95^{7} \approx 2^{46}</math>しかなく、 14文字を一気に解析するのと比べて[[組合せ爆発|はるかに少なくなる]]。英数字のみのパスワードであれば、通常のデスクトップパソコンでも、数時間程度で[[総当り攻撃]]により元のパスワードを得ることができる。 さらに言えば、ハッシュを取る前に小文字は大文字となっているので、7文字分の鍵空間は<math>69^{7} \approx 2^{43}</math>まで減ることとなる。 また、LMハッシュにはハッシュ値の事前計算を防ぐための[[ソルト (暗号)]]が使われていない。そのため、[[レインボーテーブル]]のような、[[時間と空間のトレードオフ]]を利用した攻撃が成立する。 さらに、7文字以下のパスワードを使った場合、後半7バイトはすべてヌル文字で埋められ、<code>0xAAD3B435B51404EE</code>という決まった値を生成するので、短いパスワードを簡単に判別できる。 [[2003年]]には、[[Ophcrack]]という、レインボーテーブルを使ったツールが登場し、事前に計算したデータにより、英数字のみのパスワードを数秒で破れるようになっている。 他にも{{仮リンク|RainbowCrack|en|RainbowCrack}}、{{仮リンク|L0phtCrack|en|L0phtCrack}}、{{仮リンク|Cain|en|Cain (software)}}といった攻撃ツールがあり、LMハッシュは簡単に破れるようになってしまっている。 LMハッシュの使い方にも問題があり、パスワードの代わりにハッシュをそのまま送ることで認証を突破可能となる。 == 対策 == LMハッシュの生成方法、そして認証方法に由来する脆弱性へ対応するために、マイクロソフトでは[[1993年]]の[[Microsoft Windows NT 3.1|Windows NT 3.1]]で[[NT LAN Manager|NTLMv1]]プロトコルを導入した。 NTLMのハッシュでは[[Unicode]]に対応し、<code>LMhash=DESeach(DOSCHARSET(UPPERCASE(password)), "KGS!@#$%")</code>という計算法から、<code>NThash=[[MD4]]([[UTF-16]]-LE(password))</code>として、 さらには解析を容易にするパディングや長さ制限は廃止している。ただし、認証ステップでは56ビットの強度しかないDESが依然として使われていたほか、ソルトも施されないままであった。 さらに、NTLMの導入後もLMハッシュによる認証が[[デフォルト (コンピュータ)|デフォルト]]で有効となったままの期間が続き、セキュリティは向上しないままであった。パスワードの長さに管理者が最低ラインを設けられる様になるまでにも時間がかかった。 のちのWindowsでは[[ケルベロス認証]]を取り入れた[[NT LAN Manager|NTLMv2]]が実装され、LAN Managerが時代遅れとなっても、[[Microsoft Windows Vista|Windows Vista]]・[[Microsoft Windows Server 2008|Windows Server 2008]]より前のWindowsではLAN Managerや[[Microsoft Windows Millennium Edition|Windows Me]]以前、そして[[NetBIOS]]を利用するアプリケーションの[[後方互換性]]のためにLMハッシュはデフォルトで生成されていた。そのため、特に必要がなければLM認証やNTLM認証をオフにすることが推奨されてきた<ref name="mskb">{{Cite web|和書 | url=http://support.microsoft.com/kb/299656/ja | title=Windows でパスワードの LAN Manager ハッシュが Active Directory とローカル SAM データベースに保存されないようにする方法 | work=Microsoft Knowledge Base | accessdate=2013-11-28 es}}</ref>。 Windows VistaやWindows Server 2008以降では、デフォルトでLMハッシュを生成しなくなったが、アカウントごとのセキュリティポリシーや、[[Active Directory]]のグループポリシーで有効にすることもできる。同じ設定を、[[Microsoft Windows XP|Windows XP]]以前の[[Windows NT系]]システムでLMハッシュを無効にするのに使うこともできる<ref name="mskb" />。この他にも、LMハッシュを生成できない15文字以上のパスワードを設定するという対策法もある<ref name="KB828861"/>。 == サードパーティー == [[サードパーティー]]による[[Server Message Block|CIFS]]実装では、LMハッシュを置き換える新しいプロトコルの実装に長い時間がかかっている。とりわけ、[[オープンソース]]のソフトウェアの場合、 新しいプロトコルの実装のために[[リバースエンジニアリング]]が必要となるため、例えば[[NT LAN Manager|NTLMv2]]の実装に[[Samba]]では5年、JCIFSでは10年を費やしている。 {| class="wikitable" |- |+ [[NT LAN Manager|NTLM]]プロトコルへの対応状況 ! 製品 ! NTLMv1への対応 ! NTLMv2への対応 |- | [[Microsoft Windows NT|Windows NT]] 3.1 | Gold版(1993年) | 未サポート |- | Windows NT 3.5 | Gold版(1994年) | 未サポート |- |- | Windows NT 3.51 | Gold版(1995年) | 未サポート |- | Windows NT 4 | Gold版(1996年) | Service Pack 4<ref>{{cite web|url=http://support.microsoft.com/kb/194507|title=Windows NT 4.0 Service Pack 4 Readme.txt File (40-bit)|date=1998-10-25|accessdate=2010-05-27|publisher=[[マイクロソフト]]}}</ref> (1998年10月) |- | [[Microsoft Windows 95|Windows 95]] | 未サポート | ディレクトリサービスクライアント([[Microsoft Windows 2000|Windows 2000]] Serverと同時の2000年2月にリリース) |- | [[Microsoft Windows 98|Windows 98]] | Gold版 | ディレクトリサービスクライアント(Windows 2000 Serverと同時の2000年2月にリリース) |- | [[Microsoft Windows 2000|Windows 2000]] | Gold版 | Gold版 |- | [[Microsoft Windows Millennium Edition|Windows Me]] | Gold版 | ディレクトリサービスクライアント(Windows 2000 Serverと同時の2000年2月にリリース) |- | [[Samba]] | ? | Version 3.0<ref>{{cite web|url=http://www.samba.org/samba/history/samba-3.0.0.html|title=The Samba Team announces the first official release of Samba 3.0|date=2003-09-24|accessdate=2010-05-27|publisher=samba.org}}</ref> (2003年9月) |- | JCIFS | 未サポート | Version 1.3.0 (2008年10月)<ref>{{cite web|url=http://jcifs.samba.org/|title=The JCIFS library: News|accessdate=2010-05-27}}</ref> |- | [[IBM]] [[AIX]] (SMBFS) | 5.3 (2004)<ref>{{cite web|url=http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.commadmn/doc/commadmndita/commadmndita_pdf.pdf|format=pdf|title=AIX 5L Version 5.3: Networks and Communication Management|page=441|publisher=[[IBM]]|date=15 Mar 2010|accessdate=18 Sep 2012}}</ref> | v7.1でも未対応<ref>{{cite web|url=http://pic.dhe.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.commadmn/doc/commadmndita/commadmndita_pdf.pdf|format=pdf|title=AIX 7.1: Networks and Communication Management|page=479|publisher=[[IBM]]|date=5 Dec 2011|accessdate=18 Sep 2012}}</ref> |} == 関連項目 == * [[パスワードクラック]] * [[辞書攻撃]] ==注釈== {{reflist|group=注}} == 出典 == {{reflist}} == 外部リンク == {{Wikibookslang|en|Reverse Engineering/Cracking Windows XP Passwords}} * [http://lasecwww.epfl.ch/~oechslin/publications/crypto03.pdf Making a Faster Cryptanalytic Time-Memory Trade-Off, Philippe Oechslin, Advances in Cryptology - CRYPTO 2003] * [http://ophcrack.sourceforge.net/ Ophcrack, the time-memory-trade-off-cracker] * [http://www.oxid.it/ Cain and Abel] * [http://dl.packetstormsecurity.net/Crackers/NT/l0phtcrack/l0phtcrack.rant.nt.passwd.txt A L0phtCrack Technical Rant from Mudge considering LM Hash implementation] {{cryptography navbox|hash}} {{DEFAULTSORT:LMはつしゆ}} [[Category:ハッシュ関数]] [[Category:パスワード管理]] [[Category:マイクロソフトのAPI]]
このページで使用されているテンプレート:
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Cryptography navbox
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Wikibookslang
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
LMハッシュ
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報