Když posíláme citlivé informace/dopisy, chceme, aby byly skryty před okolním světem. Takže jsme se ujistili, že je chráněna tím, že jsme ji zalepili do obálky a odeslali na místo určení pomocí poštovní služby Spojených států (USPS). Alespoň takto jsme posílali informace. Ani se nepouštím do diskuze o šifrování a Morseově abecedě, které používají pokročilejší úroveň utajení.
Nyní, protože jsme se my lidé vyvinuli a přizpůsobili internetu, vyměňujeme si informace pomocí zabezpečeného připojení. Dříve jsme používali telnet pro připojení ke vzdálenému serveru pomocí portu 23. Problém byl v tom, že jsme informace posílali prostřednictvím prostého textu, což znamená, že kdokoli, kdo si chtěl informace přečíst, mohl vyčuhovat síť a informace byly kompromitovány (ekvivalent je že by mohli otevřít dopis odeslaný přes USPS a přečíst si ho.)
Tento výsledek není to, co jsme chtěli, když jsme posílali původní zprávu. Musí existovat bezpečný způsob, jak poslat zprávu na vzdálený server, že? Rozhodně a řešením je poslat to přes Secure Shell (SSH).
Jak SSH odesílá šifrované zprávy
Chci tedy bezpečně komunikovat pomocí šifrovaných zpráv z klienta na server a naopak. Dosahuji toho pomocí SSH následovně. SSH naváže zabezpečené spojení mezi dvěma hostiteli přes port 22:Host-1 (server) a Host (klient). Po vzájemném ověření povolili bezpečnou výměnu zpráv.
Typy šifrování
SSH používá tři různé typy šifrování:
- Symetrické šifrování
- Asymetrické šifrování
- Hašování
Tyto typy stručně vysvětlím.
Symetrické šifrování
Také známé jako šifrování sdíleným klíčem, symetrické šifrování je obvykle jeden klíč nebo pár klíčů se používá pro šifrování i dešifrování zprávy. Tento klíč se používá k šifrování celé relace komunikace mezi klientem a serverem.
Klient i server se dohodnou na jedné metodě a vygenerují sdílený klíč, který se samozřejmě nikdy nesděluje třetí straně, a proto se používá k zasílání sdílených/tajných klíčových zpráv. Nejzajímavější na této metodě je, že klíč se nikdy nevyměňuje mezi klientem a serverem. Místo toho každý počítač vypočítá sdílený klíč nezávisle pomocí metody dohodnuté dříve. I když data zachytí počítač třetí strany, není možné je dešifrovat, protože metoda použitá k šifrování dat není známa.
Asymetrické šifrování
Na rozdíl od výše uvedené metody tato metoda používá pro šifrování a dešifrování dvojici klíčů. Tyto klíče jsou známé jako veřejné a soukromé klíče. Veřejný klíč, jak název napovídá, je široce distribuován. Soukromý klíč úzce souvisí s veřejným klíčem z hlediska funkčnosti, ale nelze jej vypočítat pouze na základě znalosti veřejného klíče.
Soukromý klíč je důležitým faktorem v celé komunikaci, protože utajení závisí na tom, že soukromý klíč není prozrazen žádné třetí straně a je to jediný klíč schopný dešifrovat zprávu, která je zašifrována vlastním veřejným klíčem. Pokud si tedy některá strana přeje dešifrovat a číst zprávy, musí vlastnit soukromý klíč.
Zkusme tuto metodu pomocí dvou systémů. Začneme pracovní stanicí, která má dva páry klíčů vygenerované níže:
Poté iniciuji připojení ze serveru k pracovní stanici:
Server tedy ukládá informace o pracovní stanici do svých known_hosts
soubor jako:
Po ověření serveru si server a klient vyjednají klíč relace pomocí algoritmu výměny klíčů Diffie-Hellman. Tento sdílený klíč se používá k šifrování a dešifrování.
Poslední fází je autentizace klienta, a to pomocí páru klíčů SSH. Níže uvedený diagram ukazuje, jak k tomuto procesu dochází:
Když zadám příkaz ssh -v [email protected]
, stane se toto:
Závěr
Účelem tohoto článku bylo upozornit uživatele na to, jak SSH vytváří bezpečnou komunikaci mezi dvěma systémy. Doufám, že jsem vám nabídl nějaký pohled na tento proces.
[Chcete se dozvědět více o SSH? Stáhněte si Advanced SSH Cheat Sheet.]