NTLM

NTLM (zkratka z NT LAN Manager) je autentizační protokol, používaný zejména protokolem SMB a některými implementacemi síťových protokolů Microsoft Windows za účelem ověření uživatele nebo spojení. Je důležitou součástí konceptu Integrated Windows Authentication.

Protokol není oficiálně dokumentován, byl však popsán v rámci práce na projektu Samba. Stejně jako Microsoft Windows, prošel i NTLM značným vývojem, zejména s ohledem na bezpečnost. Jako NTLMv2 je označována novější verze, která se liší zacházením s privátními daty. Starší verze je od té doby označována jako NTLMv1. Kryptografické mechanismy NTLM jsou shodné s mechanismy použitými v protokolu MS-CHAP, jež jsou popsány v RFC 2433 (verze v1) a RFC 2759 (verze v2).

Popis protokolu

Protokol používá sekvenci typu challenge-response (výzva-odpověď), která vyžaduje, aby mezi klientem (který si přeje být autentizován) a serverem (vyžadujícím autentizaci) byly vyměněny celkem tři zprávy:

  1. Klient odešle serveru zprávu typu 1 obsahující informace o klientem podporovaných nebo požadovaných funkcích (velikosti kryptovacích klíčů, požadavek na vzájemnou autentizaci atd.).
  2. Server odpoví zprávou typu 2 obsahující podobné informace o serverem podporovaných nebo požadovaných funkcích (čímž klient dokáže vybrat vhodné autentizační parametry) a - nejdůležitější část - náhodnou výzvu (8 bytů, tzv kryptografická sůl).
  3. Klient pak použije výzvu ze zprávy typu 2, uživatelské jméno a heslo k vypočtení odpovědi. Volba výpočetní metody je závislá na autentizačních parametrech dohodnutých zprávou typu 2, nicméně obecně lze říci, že aplikuje hašovací funkce MD4 nebo MD5 a šifrování DES a výsledkem je zpráva typu 3.

Autentizace v HTTP

Pro uživatele pracuje transparentně jako obálka nad HTTP, případně při komunikaci s proxy.

Komunikace je ještě před GET nebo jiným požadavkem a zhruba vypadá takto:

  1. Klient: odešle požadavek.
  2. Server/proxy: odpoví chybou a pošle NTLM informace (kryptografická sůl) (WWW-Authenticate: NTLM …).
  3. Klient: požadavek zopakuje a připojí v NTLM informace o sobě a spojí to s odpovědí od serveru a zahašuje.

Nadále se v tomto otevřeném TCP socketu další NTLM ověřování neprovádí.

Související články

Odkazy