NT LAN Manager
NTLMはチャレンジ&レスポンス認証(英語版)プロトコルであり、クライアントの認証には3つのメッセージが用いられ、データ完全性の検証のためにさらに1つのメッセージが用いられる
クライアントがサーバへのネットワークパスを確立し、対応機能を告知するNEGOTIATE_MESSAGEを送信する
サーバがクライアントの身元を確立するためのCHALLENGE_MESSAGEを返信する
クライアントがAUTHENTICATE_MESSAGEと共にチャレンジを返信する
NTLMプロトコルでは1つあるいは2つのパスワードのハッシュ値が用いられ、サーバ(あるいはドメインコントローラ)に保存される。これらのハッシュ値はパスワードと等価に扱われる。すなわち、何らかの方法でこれらのハッシュ値をサーバから取得することができれば、実際のパスワードを知ることなく認証を行うことが可能となる。ハッシュ値の一方はLMハッシュ(パスワードの最初の14文字からDESを基とした関数によって生成されたハッシュ値)、もう一方はNTハッシュ(パスワードをUTF-16リトルエンディアンで表現したもののMD4)である。どちらも長さは16バイト(128ビット)である
NTLMでは一方向関数も用いられる。バージョン1ではDESをベースとしたLanMan one way function (LMOWF)が、バージョン2ではMD4をベースとしたNT MD4 based one way function (NTOWF)が用いられる。
Windows NT 4.0で導入されたNTLMバージョン2 (NTLMv2) は、NTLMv1を暗号学的により強固にしたものである。
NTLMv2では、8バイトのサーバチャレンジを2つクライアントへ送信する。それぞれに対するレスポンスは、サーバチャレンジ、ランダムに生成されたクライアントチャレンジ、ユーザのパスワードやそのほかの認証情報のHMA-MD5ハッシュの3つのHMAC-MD5ハッシュを含んでいる。
2つのレスポンスでは、クライアントチャレンジのフォーマットが異なっている。短い方のレスポンスでは、8バイトのランダム文字列をクライアントチャレンジとして用いる。レスポンスの検証のために、サーバはこのクライアントチャレンジをレスポンスの一部として受け取る。この短いレスポンスでは、8バイトのクライアントチャレンジを16バイトに伸ばしたうえでNTLMv1プロトコルと同様の手法で24バイトのレスポンスとする。非公式のドキュメントでは、このレスポンスはLMv2と呼ばれる。
もう一方のレスポンスでは、(1)NT Timeフォーマットによる現在時刻、(2)8バイトのランダム文字列(以下の式におけるCC2)、(3)ドメイン名、(4)標準化のための埋め草を含む可変長のクライアントチャレンジを用いる。この可変長クライアントチャレンジを含むため、こちらのレスポンスも可変長となる。非公式のドキュメントではこちらのレスポンスはNTv2と呼ばれる。
LMv2とNTv2はいずれも、サーバチャレンジ、クライアントチャレンジ、ユーザのパスワードやそのほかの認証情報のハッシュとなる。