Secure Shell (SSH)

Autentizační protokol

V této kapitole budou popsány tyto metody: Autentizace veřejným klíčem, Autentizace heslem a Hostitelská metoda autentizace. Tento protokol běží nad transportním protokolem SSH a předpokládá existenci jednoho zabezpečeného kanálu. Spoléhá se na nižší vrstvy protokolu, že zajistí integritu a důvěrnost dat. Název této služby je "ssh-userauth". Tato vrstva při spuštění získá od nižší vrstvy identifikátor spojení. Ten jednoznačně identifikuje toto spojení a používá se k podepisování, aby se určila pravost soukromého klíče.

Struktura protokolu

Server určuje, kdy může být která metoda autentizace použita. Klient si může volně vybrat, které serverem podporované metody v jakém pořadí bude zkoušet. Autentizační metody jsou identifikovány jménem. Metoda "none" je rezervována a nesmí se vyskytnout v nabízených metodách. Klient ji může vyžadovat. Pokud server má povoleno pustit klienta bez autentizace, pak uživatele přihlásí. Jinak žádost zamítne a nabídne možné metody autentizace (což je hlavní použití této metody). Server může po určité době neúspěšné autentizace nebo po určitém počtu neúspěšných pokusů klienta odpojit. Doporučené hodnoty jsou 10 minut a 20 pokusů.

Žádost o spojení

Každá žádost má následující strukturu:
SSH_MSG_USERAUTH_REQUEST
1 bajt identifikující typ zprávy.
user name
Řetězec obsahující uživatelské jméno. Je v kódování ISO-10646 UTF-8. Posílá se znovu v každé žádosti a může se měnit. Pokud se uživatel chce přihlásit pod jiným jménem, je nutné nejdříve ukončit spojení.
service name
Řetězec obsahující jméno požadované služby. Je v kódování US-ASCII. Posílá se znovu v každé žádosti a může se měnit. Pokud uživatel chce použít jinou službu, je nutné nejdříve ukončit spojení.
method name
Jméno metody v kódování US-ASCII.

Zbytek zprávy záleží na zvolené metodě. Pokud server danou službu neposkytuje, může ukončit spojení. Jestliže je špatné uživatelské jméno, server od této doby nepovolí žádný přístup, ukončit spojení může až po nějaké době. Může posílat falešné informace s nabídkou autentizace, ale nikdy je nesmí akceptovat.

Žádost o autentizaci může vyžadovat poslaní několika dalších zpráv podle zvolené metody. Klient má vždy možnost ukončit posílání těchto zpráv a požádat o nový pokus. V tom případě server zapomene dosažené výsledky a začne se znovu od začátku.

Odpovědi na žádosti

Pokud server žádost zamítne, odpoví touto zprávou:
SSH_MSG_USERAUTH_FAILURE
1 bajt určující typ zprávy.
authentications that can continue
Řetězec se jmény metod, kterými je možno pokračovat.
partial success
Pravdivostní hodnota určující, zda tato část autentizace byla úspěšná. Pravda znamená, že je nutno pokračovat další metodou, než bude autentizace úspěšná. Nepravda znamená úplný neúspěch.

Pokud server přijme autentizaci odpoví touto zprávou: SSH_MSG_USERAUTH_SUCCESS. Tato zpráva se neposílá při každém kroku vícemetodové autentizace. Odesílá se pouze při úplném úspěšném dokončení autentizace. Klient může poslat několik žádostí současně. Server na všechny neúspěšné pokusy odpovídá zprávou SSH_MSG_USERAUTH_FAILURE. Pokud je pokus uspěsný odpoví SSH_MSG_USERAUTH_SUCCESS, a to pouze jednou. Všechny později došlé žádosti tiše ignoruje.

Po úspěšné autentizaci sever všechny došlé zprávy netýkající se autentizace předává vyžádané službě. Tato služba běží nad autentizační vrstvou.

Žádost o "none" autorizaci

Klient může požádat o přístup bez autentizace. Server ji nesmí nabízet, ale může ji přijmout. Pokud je tato autentizace zakázána, server žádost zamítne a připojí seznam použitelných metod.

Ukončení autentizace

Autentizace je ukončena, pokud servet odešle zprávu SSH_MSG_USERAUTH_SUCCESS. Poté ignoruje všechny další žádosti o autentizaci a hned spustí požadovanou službu.

Titulková zpráva (Banner message)

Některé systémy zobrazují textovou zprávu před tím, než je uživatel přihlášen. UNIXové systémy mohou zobrazit například obsah "/etc/issue". SSH server může kdykoliv před dokončením autentizace odeslat tuto zprávu:
SSH_MSG_USERAUTH_BANNER
1 bajt identifikující typ zprávy.
message
Text zprávy v kódování ISO-10646 UTF-8.
language tag
Určení jazyka podle RFC 1766.

Tato zpráva je zobrazena na obrazovku, pokud to má klient povoleno. Může se skládat i z více řádků.

[<předchozí část<]  [^obsah^]  [>další část>]

xzarsky@fi.muni.cz