Šifrovaný prenos súborov

Najmä pri prenose súborov cez Internet je dôležité zaistenie ochrany dôvernosti prenášaných dát, ale rovnako dôležité je aj zaistenie ich integrity (že neboli počas prenosu zmenené).

Varovanie

Používatelia, väčšinou z neznalosti, vo všeobecnosti podceňujú riziko podvrhnutia falošného obsahu a/alebo sledovania obsahu prenášaných dát a vôbec pri tom nemusí ísť o protizákonný obsah, veď aj také rodné číslo sa dá zneužiť…

V praxi nie je vždy nutné zaistenie oboch cieľov, napr. verejne dostupný obsah (napr. článok na webovom portáli) nie je nutné utajovať. Rovnako tak nie je nutné overovať integritu fotky z dovolenky. Ak však prezradenie a/alebo pozmenenie obsahu môže spôsobiť škodu, či už finančnú, morálnu alebo technickú, je použitie zabezpečenia na mieste.

Na zaistenie dôvernosti i integrity prenášaného obsahu sú v súčasnosti používané kryptografické metódy:

  • na zaistenie dôvernosti symetrické alebo asymetrické šifrovacie algoritmy
  • na zaistenie integrity jednosmerné šifrovacie funkcie (hash)

Poznámka

Kryptografia je veda, ktorá sa zaoberá utajovaním obsahu a používatelia by sa mali vyhýbať používaniu vlastných metód, pretože väčšinou neposkytujú reálnu, ale len zdanlivú ochranu.

Opakom kryptografie je kryptoanalýza, ktorá sa zaoberá získavaním utajovaného obsahu bez znalosti kľúča. Používa sa (správnym spôsobom) najmä na hľadanie zraniteľností šifrovacích algoritmov s cieľom vylepšenia ich ochrany.

V súčasnosti sú, na zaistenie dôvernosti a integrity obsahu, bežne používané viaceré spôsoby, ktoré sú buď nadstavbou bežne používaných protokolov (ktoré tieto problémy vôbec neriešia), alebo sú zabudované do aplikačných protokolov, prípadne sú úplne nezávislé. V oblasti prenosu súborov sú používané:

  • SSH (Secure SHell) – protkol so zabudovanou ochrnaou dôvernosti i integrity prenosu
  • TLS (Transport Layer Security) – ako nadstavba existujúcich protokolov, plní oba ciele, dôvernosť i integritu prenosu
  • digitálny podpis – samostatné riešenie overenia integrity

Zabezpečenie SSH je používané protokolmi SFTP a SCP, zabezpečenie TLS je používané protkolom FTP so STARTTLS a FTPS. Zabezpečenie integrity digitálnym podpisom je používané pri sťahovaní verejne dostupného obsahu cez bežný protokol HTTP pomocou samostatného súboru s digitálnym podpisom (s príponou .asc).

Šifrovanie a kódovanie

často vplyvom filmov (resp. ich nesprávneho prekladu) sú pojmy kódovanie a šifrovanie často zamieňané, čo však nie je správne:

Kódovanie

Zmena formátu obsahu s cieľom jeho ďalšieho spracovania, bez obmedzovania prístupu.

Kódovanie sa bežne používa na zmenu textu na čísla (aby ho mohli spracovávať číslicové počítače), zmenu obrazu (často aj kvôli pridaniu samoopravných kódov, či komprimácie).

Každý môže kódované dáta previesť na pôvodné, stačí len poznať správny algoritmus. Napríklad kódovanie Base64 (používané napr. pri vkladaní obrázkových príloh do emailu):

echo -n "Ahoj svet" | base64
QWhvaiBzdmV0

Výsledok síce vyzerá ako „šifrovaný“, ale každý si ho môže previesť na pôvodný text:

echo -n "QWhvaiBzdmV0" | base64 -d
Ahoj svet
Šifrovanie

Zmena formátu obsahu s cieľom utajenia jeho obsahu a jeho sprístupnenia len na základe znalosti kľúča.

Šifrovacie algoritmy možno vo všeobecnosti rozdeliť na symetrické (na šifrovanie i dešifrovanie používa rovnaký kľúč) a asymetrické (na šifrovanie a dešifrovanie používa rôzne časti kľúča – verejný a súkromný).

Medzi najrozšírenejšie (a zároveň najbezpečnejšie) symetrické šifrovacie algoritmy patrí AES (American Encryption Standard) a medzi najrozšírenejšie asymetrické algoritmy patria EC (Elyptic Curve) a RSA (Rivest Shamir Adleman – mená autorov).

Symetrické šifrovanie poskytuje vyššiu bezpečnosť ako asymetrické šifrovanie s rovnako veľkým kľúčom, a teda vďaka kratšiemu kľúču poskytuje vyšší výkon. V praxi sa asymetrické šifrovanie používa len na zašifrovanie symetrického kľúča a zvyšok obsahu je potom týmto kľúčom šifrovaný symetricky (tzv. hybridné šifrovanie).

Varovanie

Použitie „správneho“ šifrovacieho algoritmu ešte nezaisťuje aj správne šifrovanie. V praxi je známych mnoho prípadov, keď softvér implementoval šifrovanie AES takým spôsobom, že prelomenie šifrovania bolo až triviálne.

FTPS

Základná verzia FTP prenáša riadiaci i dátový kanál v otvorenej podobe, čiže bez akéhokoľvek zabezpečenia. Tento problém je riešený viacerými rozšíreniami FTP, ktorých podpora v klientoch je rôzna. Za všetky spomeniem:

Explicitné FTPS

Klient sa najprv pripojí k serveru nezabezpečeným spôsobom a potom (pred prenosom citlivých dát, ako prihlasovacie údaje, či obsah súborov) požiada o aktiváciu TLS. Zvyšok komunikácie potom prebieha zabezpečenou formou.

Na pripojenie explicitným TLS slúžia rovnaké porty ako bežné FTP.

Implicitné TLS
Porty implicitného FTPS
Kanál Číslo portu
riadiaci 990/tcp
dátový 989/tcp
náhodný

Klient sa pripojí priamo zabezpečeným spôsobom a celý prenos dát riadiacim i dátovým kanálom je zabezpečený od začiatku do konca.

Na pripojenie implicitným TLS slúžia samostatné porty..

Pretože je FTPS nadstavbou bežného FTP, tiež používa dva samostatné kanály, ale šifrovanie (explicitné i implicitné) riadiaceho kanála znemožňuje použitie aktívneho režimu FTP, pretože smerovače/firewally nemôžu vysledovať číslo portu z riadiaceho kanála. Dôsledkom potom je, že prosté FTP funguje, ale vytvorenie šifrovaného FTPS zlyhá.

Podporu FTPS poskytuje:

  • FileZilla – pre Linux, Windows
  • WinSCP – Pre Windows
  • lftp – pre Linux

Varovanie

FTPS s implicitným TLS je považované za zastaraný spôsob pripojenia.

SFTP

SFTP (SSH File transport Protokol) je protokol na zabezpečenú vzdialenú správu súborov. Napriek podobnosti svojho mena s FTP (resp. FTPS), má s FTP spoločnú len vzdialenú správu súborov. SFTP interne zaisťuje dôvernosť i integritu prenosu pomocou SSH a na prenos používa len jeden kanál, čím odpadajú problémy s NAT a firewallmi.

Protokol SFTP môže používať štandardný port SSH alebo samostatný port. V prvom prípade dokáže server SSH rozlíšiť spojenia SSH od SFTP a správne nasmerovať komunikáciu. Pričom podpora SFTP môže byť priamo zabudovaná v serveri SSH alebo môže byť poskytovaná samostatným serverom.

Protokol SFTP poskytuje kompletnú správu súborov, čiže všetko to, čo poskytuje FTP a jeho podporu poskytuje:

  • FileZilla – pre Linux, Windows
  • WinSCP – Pre Windows
  • lftp – pre Linux

Varovanie

Protokol SFTP má veľa verzií (6), z ktorých ani jedna nebola oficiálne uznaná, a podpora týchto verzií v klientskom i serverom softvéri je rôzna (vrátane verzie i kvality implementácie).

SCP

SCP (Secure Copy Protocol) je protkol na zabezpečený prenos súborov, ktorý poskytuje zabezpečene pomocou SSH.

Na rozdiel od FTP, FPTS a SFTP neposkytuje kompletnú správu súborov, ale len ich neinteraktívny prenos – tzn. používateľ musí presne vedieť kam/odkiaľ chce súbor preniesť. V praxi síce nástroje SCP poskytujú určitú interaktivitu, ale tá je dosahovaná pomocou SSH, na ktorom je SCP postavený.

Podporu SCP poskytuje:

  • WinSCP – Pre Windows
  • lftp – pre Linux
  • scp – pre Linux

Varovanie

O apríla 2019 je SCP označené za zastarané a je odporúčaný prechod na SFTP (autori OpenSSH).

Úlohy

  • nainštalujte virtuálny počítač s Linux (pokojne bez GUI) so sieťou v režime sieťového mosta

  • vo virtuálnom stroji vytvorte dva účty pre spolužiakov

  • vo virtuálnom stroji nainštalujte server SSH:

    apt install openssh-server
    
  • v reálnom počítači nainštalujte klienta FileZilla a WinSCP

  • v programe FileZilla vytvorte spojenie na svoj a spolužiakov server pomocou SFTP

  • v programe WinSCP vytvorte spojenie na svoj a spolužiakov server pomocou SFTP a SCP

  • pomocou každého programu a protokolu preneste súbor z a na vzdialený počítač