Přehled - SSH protokol


Přehled

SSH je binární protokol založený na paketech, který pracuje na vrcholu jakéhokoliv transportu, který bude předávat tok binárních dat. Normálně se TCP/IP používá jako transport, ale jeho implementace také umožňuje využití libovolného proxy programu k předávání dat do/ze serveru, a zahrnuje přímou podporu pro firewally založené na SOCKS a FWTK.

Paketový mechanismus a s ním spojené autentizace, výměna klíčů, šifrování a mechanismus integrity implementují bezpečnostní mechanismus transportu, který je pak použit k implementaci funkcí bezpečného spojení.

Případný útočník tak má silně omezené možnosti zasahovat a vlastně může jen přerušit spojení.

Host autentizace

Server odešle svůj veřejný RSA host klíč a jiné veřejné RSA klíče. "Serverový klíč'' se mění každou hodinu. Klient porovná obdržený host klíč se svou vlastní databází známých host klíčů.

F­Secure SSH server normálně akceptuje klíč neznámého hostu a uloží jej do své databáze pro budoucí reference (to využívá SSH prakticky ve všech prostředích). Ale F­Secure SSH server může být také nastaven tak, že odmítne přístupk jakýmkoliv hostům, jejichž klíč není znám.



Klient vygeneruje 256 bitové náhodné číslo pomocí kryptograficky silného generátoru náhodných čísel a zvolí šifrovací algoritmus z těch algoritmů, které jsou podporovány serverem, normálně je to IDEA nebo tříklíčový 3DES. Klient zašifruje náhodné číslo (klíč sezení) pomocí RSA a využije při tom oba klíče: host klíč a serverový klíč, a pošle zašifrovaný klíč na server.

Účelem host klíče je svázat spojení s žádaným serverovým hostem (pouze server může dešifrovat zašifrovaný klíč sezení). Druhý klíč, měněný každou hodinu, serverový klíč, se používá k znepřístupnění zaznamenané hostorie dešifrování pro případ, že by byl kompromitován host klíč. Host klíč je normální, RSA klíč, dlouhý 1024 bitů a serverový klíč je dlouhý 768 bitů. Oba klíče jsou vygenerovány pomocí kryptograficky silného generátoru náhodných čísel.

Server dešifruje RSA zašifrování a získá tak klíč sezení. Obě strany začaly používat klíč sezení a spojení je nyní zašifrované. Server vyšle zašifrované potvrzení klientu. Příjetí potvrzení říká klientu, že server byl schopen dešifrovat klíč a proto má v držení příslušné soukromé klíče.

V tomto okamžiku byl počítač serveru autentizován, a šifrování na úrovni transportu a ochrana integrity jsou využity.

Uživatelská autentizace

Uživatel může být autentizován serverem několika způsoby. Dialog pro uživatelskou autentizaci je řízen klientem, který odesílá žádost na server. První žádost vždy deklaruje uživatelské jméno, jak bylo použito pro log in. Server odpovídá na každou žádost buď "success'' a nebo "failure'' (je vyžadována další autentizace).

V současnosti podporovanými metodami autentizace jsou:

Autentizační agent

Autentizační agent je program, který běží na uživatelském lokálním počítači (nebo v budoucnosti na čipové kartě připojené k němu). Agent udržuje uživatelské soukromé RSA klíče. Nikdy nevydává soukromé klíče, ale akceptuje autentizační žádosti a dává zpět vhodné odpovědi.

V prostředí UNIX agent komunikuje s F­Secure SSH serverem pomocí práce s otevřeným souborem, který je zděděn všemi potomky procesu agenta. Jiní uživatelé nemohou získat přístup k agentu. U jiných operačních systémů jsou použity jiné mechanismy.

Když se uživatel spojí s F­Secure SSH serverem, je vyslána autentizační žádost na lokální počítač uživatele, kde běží autentizační agent. Tímto způsobem je možné vydávat nová spojení a procházet libovolně dlouhým řetězcem počítačů, umístěnými kdekoliv na světě, a přitom autentizační proces se vždy koná v lokálním počítači a bez toho, že by autentizační klíče kdykoliv opustily agent.

Kryptografické metody

SSH protokol poskytuje silnou bezpečnost kryptografickými metodami.

SSH využívá RSA pro host autentizaci a uživatelskou autentizaci. Host klíče a klíče pro uživatelskou autentizaci jsou dlouhé 1024 bitů.

Serverový klíč, který se mění každou hodinu, je implicitně dlouhý 768 bitů. Používá se k ochraně předjímaných historií jednotlivých sezení před dešifrováním v případě, že by někdy později byl host klíč kompromitován. Serverový klíč nikdy není uložen na disku.

Výmna klíčů je prováděna zašifrováním 256-bitů dlouhého klíče sezení dvakrát pomocí RSA. Je před každým zašifrováním vycpán nenulovými náhodnými byty. Server host autentizace se děje implicitně s výměnou klíčů (idea je taková, že pouze držitel platného soukromého klíče může dešifrovat klíč sezení, a obdržení zašifrovaného potvrzení říká klientu, že klíč sezení byl úspěšně dešifrován).

Klient host autentizace a RSA uživatelská autentizavce jsou provedeny pomocí výměny výzvy-odezvy, kde odezvou je MD5 dešifrované výzvy plus data, která vážou výsledek k určitému sezení (host klíč a "anti-spoofing cookie").

Výměna klíčů přenáší 256 bitů klíčových dat na server. Jiné šifrovací metody používají různě velké klíče: IDEA používá 128 bitové, tří klíčový 3DES 168 bitový a RC4-ekvivalent 128 bitový na jeden směr.

Všechna náhodná čísla využívaná v SSH jsou generovánapomocí kryptograficky silného generátoru náhodných čísel.