V tomto článku se seznámíme se základními pilíři bezpečnosti, CIA triádou.
Když se začneme
zabývat bezpečností, zjistíme, že se točíme stále dokola
kolem stejných témat. Řešíme, jak zajistit, aby se k systémům
nebo datům nedostal nikdo nepovolaný. Přemýšlíme, zda
informace, kterou se zabýváme, není podvrh. A v neposlední
řadě řešíme, jak zajistit, aby systémy fungovaly a data byla
dostupná.
Protože tato
témata se řeší všude, v každé organizaci, dostala své
oficiální pojmenování – CIA triáda, neboli tři pilíře
bezpečnosti. Jsou jimi důvěrnost (anglicky Confidentiality),
integrita (Integrity) a dostupnost (Availability). Když se podíváme
na počáteční písmena anglických termínů, bude nám jasné,
proč hovoříme o CIA.
Ve skutečnosti
by tato zkratka měla být CIAN. Zajímá nás totiž třeba i to,
zda je identita odesílatele skutečná, nebo kdo skutečně provedl
změnu v systému. Řešíme tedy ještě jednu důležitou
oblast, Nepopiratelnost (Non-repudiation).
Důvěrnost
Důvěrnost
znamená, že informace je dostupná pouze zamýšleným příjemcům
a my se snažíme zajistit, že nikdo jiný k ní nemá přístup.
K zajištění důvěrnosti ve světě informačních
technologií se obvykle používá šifrování. Není to ale jediný
způsob. Můžeme použít i opatření známá z fyzického
světa, např. trezor. Řekněme, že máme zálohovací systém.
Když dojde ke katastrofě a my potřebujeme začít obnovovat data,
zjistíme, že se do toho systému nepřihlásíme, protože heslo
máme bezpečně uložené ve správci hesel na síti – ale síť
nefunguje. Proto se někdy, někde a některá hesla ukládají
v obálce do trezoru. V takovém případě musí existovat
pravidla, kdo a za jakých okolností smí heslo vyzvednout. Třeba:
heslo smí vyzvednout pouze CIO a CISO současně, proti podpisu obou
osob do protokolu. Při vyzvednutí zkontrolují neporušenost obálky
a pečetí (podpisů) na ní.
Morální zastarávání
Zajištění
důvěrnosti má jeden zásadní problém: nelze jí dosáhnout
jediným opatřením a pro vždy. Všechna technická bezpečnostních
opatření dříve nebo později morálně nebo fyzicky zastarají.
Lepidlo na obálce degraduje a může umožnit její otevření
neoprávněnou osobou. Šifrovací algoritmus se díky nárůstu
výpočetního výkonu počítačů podaří prolomit. Ovšem
kombinací procesních, organizačních a technických opatření lze
udržet zajištění důvěrnosti trvale na akceptovatelné úrovni,
i když jednotlivá technická opatření postupně zastarávají.
Při plánování
bezpečnostních opatření s tím musíme počítat a zařídit
se podle toho. Můžeme buď nastavit proces tak, abychom zastarání
předešli. Např. můžeme vyžadovat, aby obálka byla jednou za
rok otevřena a nahrazena novou. Můžeme kontrolovat bezpečnost
šifer a plánovaně data přešifrovat šifrou modernější.
Legitimní
variantou je i vědomá akceptace rizika. Například můžeme data k
patentu zašifrovat aktuálně bezpečnou šifrou a riziko jejího
budoucího prolomení akceptovat, protože pravděpodobnost, že bude
šifra prolomena ještě před podáním patentové přihlášky, a
zároveň dojde k odcizení nosiče dat, je extrémně nízká.
Náklady na další vrstvu ochrany by byly nepřiměřené ve
srovnání s hrozícím rizikem.
Nejběžnější šifrovací algoritmy
Mezi nejčastěji
používané šifrovací algoritmy dnes patří zejména AES (používá
se v TLS, VPN, diskovém šifrování...), RSA (v asymetrickém
šifrování) nebo Diffie–Hellman (pro bezpečnou výměnu klíčů),
což jsou v současné době víceméně standardy. Určitě je ale
dobré alespoň vědět i o dalších, jako ChaCha20 (moderní rychlá
šifra, ideální pro mobilní zařízení; používá se v TLS
(Google, Cloudflare), Twofish (finalista AES soutěže) nebo ECC
(elliptic curve cryptography, kryptografie založená na eliptických
křivkách — moderní, efektivní, dnes preferované před RSA).
Více se na šifrování podíváme v článku Šifrování pro začátečníky.
Integrita
Integrita dat
nebo komunikace znamená jistotu, že informace nebyla neoprávněně
změněna. Příjemce informace si potřebuje být jistý, že je
informace ves tejném stavu, jako ji vytvořil původce, tj. ten, kdo
ji vytvořil (vygeneroval, sepsal apod.). Oba výtisky smlouvy,
uzavřené mezi dvěma stranami, musejí být stejné, jinak vznikne
chaos, každá ze stran bude říkat něco jiného, dokládat to
smlouvou, a kdo má pravdu? Kdo ví. Lékárník si musí být jistý,
že předpis, který mu pacient předkládá, nebyl pozměněný.
V běžném
životě máme jen omezené možnosti, jak potvrdit, že se dokument
nezměnil. Na poštovní poukázce vypisujeme částku čísly i
slovy. Můžeme dokument podepsat, ale to nezaručí, že někdo
nepozmění jeho obsah. Nejsme schopni garantovat nezměněnost
dokumentu. A nejsme ani schopni změnu detekovat.
V digitálním
životě to máme jednodušší. Máme nástroje, které nám
spolehlivě řeknou, zda byla data nebo dokument pozměněný. Když
si stahuju antivirový program, chci mít jistotu, že si ho stahuju
v podobě, kterou vydal jeho výrobce. Nechci si stáhnout něco,
co nějaký hacker upravil. Naštěstí výrobce to napadlo také a
na web dal hash souboru. Já si po stažení souboru spočítám jeho
hash na mém počítači. A když oba hashe souhlasí, vím, že mám
originální, nepozměněný soubor.
Co je to hash?
Hash je unikátní
kryptografický otisk dat. Jasně, chápu. Ale co to znamená?
Zjednodušeně řečeno, hashovací algoritmy převádějí nějaký
vstup (text, soubor s textem, obrázkem, aplikaci, obecně
textová i binární data…) na standardní výstup, tzv. hash,
který je obvykle reprezentovaný pevně dlouhým řetězcem znaků.
Algoritmy zajišťují, že:
Jeden vstup
bude mít vždy ten samý výstup, i když ho budu počítat
opakovaně
Je velmi
obtížné najít dva různé vstupy, které mají stejný hash
(tzv. kolizi, viz níže).
Ověřování integrity počítáním hashe
Když budeme hash počítat opakovaně, dostaneme vždy stejný hash.
A to jak na Windows, na linuxu, na Macu, ve webovém prohlížeči,
kdykoli a kdekoli. Ale jedina drobná
změna způsobí, že se oba hashe budou lišit do té míry, že nám
stačí pohled na prvních pár znaků a na pár znaků posledních a
víme, že je hash jiný.
Nejběžnější hashovací algoritmy
Nejběžnějším
hashovacím algoritmem současnosti je SHA-2, zejm. SHA-256 a
SHA-512. Proč se SHA-2 rozděluje? Ve skutečnosti jde o celou
rodinu algoritmů s různou délkou výstupu. Číslovka za SHA
označuje délku hashe v bitech. Delší hash poskytuje vyšší
odolnost vůči kolizím, zatímco kratší varianty bývají
praktičtější a úspornější. SHA-256 aktuálně představuje
dobrý kompromis mezi bezpečností a použitelností, proto se z něj
stala de facto univerzální volba. Poskytuje vysokou rychlost, jeho
výstup je relativně krátký, ale je pořád dostatečně bezpečný.
Samozřejmě se používá a používalo mnoho dalších algoritmů. Některé jsou běžně použitelné, jiné zastaralé. Co je příčinou
ústupu od starších algoritmů? Nejvážnějším důvodem, proč
se algoritmy opouštějí, je vytvoření kolize. Kolize znamená, že
dva různé vstupy vytvoří stejný hash, což je u kryptografického
hashování zásadní problém. Pokud lze kolize cíleně vytvářet,
útočník může například vytvořit dokument, který má stejný
hash jako dokument jiný, nebo obejít některé mechanismy ověřování
integrity. Algoritmus pak už nelze považovat za dostatečně
bezpečný pro moderní kryptografické použití.
O hashování se můžete víc dočíst v článku Heč, už vím, co je heš!.
Dostupnost
Dostupnost
zajišťuje, že jsou data, informace nebo systém přístupný
oprávněnému uživateli a právě v tom okamžiku, kdy to
potřebuje.
Co je nám
platné, že máme data, když se k nim nedokážeme dostat? Ve
fyzickém světě můžeme potřebu dostupnosti pocítit třeba
v obchodě. Máme nákup v košíku, přijdeme na pokladnu
a pokladní hlásí „nejde terminál!“ Jasně, že nejde, kam by
chodil, nemá nožičky. Ovšem, pokladní tím myslí, že spojení
s bankou není dostupné. Můžete mít v bance miliony,
ale pokud v danou chvíli nemáte hotovost, máte smůlu.
Systém není dostupný a nákup vám bude odepřen. A o tom je celá
dostupnost v praxi: požadovaná služba nebo data existují,
ale v okamžiku, kdy je potřebujeme, nejsou k dispozici.
V digitálním
světě řešíme dostupnost převážně systémů nebo služeb.
Typickým příkladem může být Internet. Organizace nemá
připojení do Internetu kvůli tomu, aby uživatelé mohli trávit
čas na facebooku nebo se podívat na jízdní řád vlaku domů. Pro
organizaci je to byznys nástroj. S jeho pomocí komunikuje
e-mailem s klienty a dodavateli. Má do Internetu vystavený
e-shop nebo služby, které poskytuje. Jeho výpadek znamená výpadek
podnikání.
Proto se firma
rozhodne řešit dostupnost svých služeb, svého e-shopu. V takovém
případě se to obvykle řeší redundancí. Firma nemá pouze
jednoho poskytovatele připojení, ale třeba dva různé. V případě
výpadku jednoho poskytovatele se připojení přepne na druhého a
firma může fungovat dál. Dvojí připojení pochopitelně něco
stojí, ale vyžaduje-li firma vysokou dostupnost a nedostupnost by
stála výrazně víc, než cena druhého připojení, je tohle
cesta, jak dostupnost zajistit.
Co je nejdůležitější?
Občas kladu
zákeřnou otázku: který pilíř je nejdůležitější? Často
dostávám odpověď, že důvěrnost. Nabízí se to, ochrana před
neoprávněným přístupem je přesně to, co si většina lidí pod
pojmem bezpečnost představí. Ale podívejme se na to podrobněji,
na pár příkladech
Historie
transakcí na bankovním účtu je zcela jistě důvěrná informace
a zákony to tak i vyžadují. Takže je nejdůležitější? Může
být. Ale co když jde o transparentní účet? Tam je důvěrnost
transakcí kontraproduktivní, transparentní účet existuje právě
proto, aby každý viděl, co se na účtu dělo.
Co takové
lékařské záznamy? Když půjde pacient na transfúzi krve, musí
dostat správnou skupinu. Neoprávněná změna záznamu v kartě
může znamenat ohrožení pacienta na životě. Je tedy integrita
nejdůležitější?
Přesuňme se do
teplárny. Co když v zimě nebudou dostupné její služby? Lidé
začnou mrznout.
Na těchto
příkladech jsem chtěl ukázat, že se nedá univerzálně říct,
který pilíř je nejdůležitější. Každá organizace si to musí
vyhodnotit sama. A aby to nebylo málo komplikované, i v rámci
jedné organizace se můžou priority výrazně lišit. Každá
služba může mít jinou prioritu a ta se může měnit i v čase.
Podívejme se na
jídelní lístek v kantýně. Ráno je důležitá důvěrnost.
Kuchař nechce, aby lidé věděli, co bude, dokud nemá zajištěnou
dodávku všech surovin. Když lidem naslibuje jako dezert buchty s
mákem, ale dodavatel mu nepřiveze mák, lidé budou zbytečně
zklamaní.
Dopoledne už má
všechny suroviny a začíná vařit. To je chvíle, kdy se
z jídelníčku stává nejdůležitější informační systém
ve firmě. Od zveřejnění musí být zajištěna jeho dostupnost a
integrita. Lidé potřebují vědět, na co se můžou těšit. Ovšem
odpoledne, po zavření kantýny, už jsou data z jídelníčku
stará a nepotřebná. Když nebude dostupný, nebo ho někdo upraví,
už to nikoho nezajímá.
A to je pointa
celé bezpečnosti. Bezpečnost nemá univerzálně jeden
nejdůležitější pilíř, na který se zaměříme. Požadavky
organizace závisí na kontextu, službě, času a mnoha dalších
faktorech.
Nepopiratelnost
Někdy můžeme
uvažovat i o dalších parametrech, jako např. nepopiratelnost.
Nepopiratelnost znamená, že uživatel nemůže popřít provedení
dané akce, nebo že nikdo nemůže zpochybnit původce informace.
Pro zajištění nepopiratelnosti se obvykle používá elektronický
podpis. Nejlépe bude vysvětlit si to na příkladech.
Popření akce
Ve firmě má
každý uživatel přidělené uživatelské jméno a k němu
příslušné heslo. Heslo má povinnost chránit a nikomu
nesdělovat. To je základní princip firemní autentizace. Jestliže
dojde k bezpečnostnímu incidentu, např. přístup do databáze
a následné smazání dat, přičemž se v logu objeví
uživatelské jméno Pepy Nováka, bude mít Pepa co vysvětlovat.
Zaměstnavatel
totiž oprávněně předpokládá, že akci provedl ten, kdo se
úspěšně autentizoval příslušnými přihlašovacími údaji.
Pokud měl heslo znát pouze Pepa, nemůže jednoduše tvrdit, že to
nebyl on. Logy a autentizace zajišťují, že uživatel nemůže
popřít, že akci provedl.
Popření autora
Přijde nám
dokument podepsaný elektronickým podpisem, ve kterém nám finanční
úřad oznamuje nedoplatek na daních. Pokud podpis platně ověříme,
máme jistotu, že dokument skutečně pochází od finančního
úřadu, nikdo jiný totiž nemá přístup k jeho privátnímu
klíči. Nemůžeme tedy tvrdit, že jsme dokument považovali za
podvrh nebo že ho úřad nevytvořil. Elektronický podpis zajišťuje
nezpochybnitelné autorství.
Praktické příklady zajištění ochrany důvěrnosti, integrity a dostupnosti
Při diskusi o CIA triádě mě tak napadlo, že nebude od věci
říct to explicitně: když se bavíme o důvěrnosti, integritě a dostupnosti,
nebavíme se jen o datech. I když data chráníme asi nejčastěji, ale stejně tak
se můžeme bavit o poskytovaných službách nebo produktech. A protože to může být
maličko hůř představitelné, uveďme si pár příkladů:
CIA u produktů
Ochranu důvěrnosti produktu si ukážeme na sběratelských
kartičkách. Některé se prodávají v neprůhledných balíčcích. Výrobce tak chrání
důvěrnost obsahu balíčku před jeho zakoupením. Musel vymyslet bezpečnostní
opatření, které zabrání, aby si sběratel koupil jen balíček s konkrétními
kartami.
Integritu produktů zaručují různé uzávěry, kolky nebo
pečeti. Když si půjdete do koupit nápoj a uvidíte, že víčko je porušené,
pravděpodobně sáhnete po jiné lahvi, budete mít pochybnosti o integritě
produktu.
Dostupnost produktu znamená, že je produkt k dispozici
tehdy, kdy ho zákazník potřebuje. Výrobci proto chrání výrobu před výpadky,
udržují zásoby náhradních dílů, budují záložní výrobní kapacity a plánují
distribuci tak, aby se produkty dostaly na trh i v případě mimořádných
událostí.
CIA u služeb
Důvěrnost služby znamená, že chráním to, jak sloužba
funguje. Jako příklad si uvedeme antispamový filtr poskytovatele e-mailových
služeb. Uživatel vidí, které e-maily skončily ve spamu. Vstupní data (e-maily)
i výstup (rozhodnutí je spam/není spam) jsou tedy známé. Přesná pravidla a
detekční mechanismy jsou ale interní, neveřejné. Poskytovatel tak chrání
důvěrnost fungování služby, aby útočníci nemohli filtr snadno obcházet,
případně aby konkurence nemohla kopírovat know-how.
Integrita služby je důležitá například při řízení dopravy
pomocí semaforů. Pokud by útočník dokázal narušit řídicí systém a změnit nebo
prohodit signály pro změnu barev na semaforech, služba by sice dál „fungovala“,
ale poskytovala by nesprávné výsledky. V důsledku by v křižovatce mohl
vzniknout chaos a zvýšené riziko nehod.
Dostupnost služby je nesjpíš snadno představitelná.
Uživatelé využívají nějakou službu, např. e-mail, a poskytovatel se pokouší
zajistit, že se uživatelé do svých schránek dostanou, když potřebují.
Na těchto příkladech jsem chtěl ukázat, že CIA neřešíme jen
u dat, ale musíme ho řešit v kontextu organizace, kterou pomáháme chránit. Budu
rád, když mi další příklady pošlete do komentářů.
Shrnutí
CIA triáda je
základní stavební kámen bezpečnosti. Teprve když víme, které
pilíře jsou v dané situaci důležité, můžeme nastavit
bezpečnostní opatření tak, aby skutečně odpovídala potřebám
organizace. Nevynakládáme zdroje např. na šifrování tam, kde
důvěrnost není potřebná, ale firma potřebuje dostupnost. Proto
je klíčové rozumět tomu, jak organizace funguje, jaké služby
poskytuje, jaké procesy jsou kritické a které informace mají
jakou hodnotu.