Asi by bylo lepší zabývat se v článku jen konfigurací Apache a nepouštět se do obecných a bohužel nesprávných tvrzení.
Při konfiguraci SSL na straně serveru nezapomeňte zakázat protokoly SSL V2, V3 a TLS v1.0. Jinak budou uživatelská jména a hesla přenášena ve formátu prostého textu.
Zmíněné verze protokolů se zakazují proto, že jsou známé útoky, přes které je možné šifrovanou komunikaci napadnout a v krajním případě dešifrovat její obsah. Ani u jednoho ale neplatí, že jsou jména a hesla přenášena v otevřeném tvaru.
Poznámka: HTTP Strict Transport Security (HSTS) je bezpečnostní mechanismus, který chrání síťovou komunikaci mezi webovým prohlížečem a webovým serverem před downgrade útoky a zjednodušuje ochranu proti únosu spojení (tzv. cookie hijacking).
S ochranou proti úniku spojení nemá HSTS nic společného. Je to prostě hlavička, která řekne prohlížeči „příště při komunikaci se mnou používej jen bezpečné HTTPS“. Nechrání tedy první komunikaci prohlížeče se serverem, a naopak klade i určité nároky na HTTPS – nepůjde přeskočit taková ta různá varování o expirovaném certifikátu. HSTS se samozřejmě nastavuje s nějakou platností – aby to dávalo smysl, musí být minimálně v měsících, Qualys SSL Labs vyžaduje pro stupeň A+ alespoň půl roku. Takže je potřeba mít vše dobře připravené, mít správně nastavenou infrastrukturu pro výměnu certifikátů, protože s HSTS zapomeňte na to, že v případě potřeby na server dáte nějaký „méně kvalitní“ certifikát a uživatelé holt odkliknou nějaké varování. S HSTS zkrátka není cesty zpět.
V článku je odkaz na stránku https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/TechGuidelines/TG02102/BSI-TR-02102-2.html, kde je PDF soubor ke stažení, stažené PDF má 22 stránek a je nazvané „Technical Guideline TR-02102-2
Cryptographic Mechanisms: Recommendations and Key Lengths; Part 2 – Use of Transport Layer Security (TLS)“. Tenhle dokument myslíte? Tam ovšem nic takového uvedeno není, ani nic vzdáleně podobného. Jediné místo, kde se tam hovoří o protokolech SSLv2 a SSLv3, je kapitola 3.2, dohromady je to 7 vět. To přečtete rychle.
Myslel jsem si, že to v článku byla jen nešťastná formulace. Teď uvažuju o tom, zda by článek o konfiguraci HTTPS v Apachi měl psát někdo, kdo nemá ani základní představu, jak vypadá HTTP protokol, nebo jak se TLS a HTTP skládá do HTTPS. Je mi líto. Chybu může udělat každý, ale důležitá je také jistá sebereflexe – vědět, že se v tématu neorientujete, a když vás někdo upozorní na chybu, jít do toho původního dokumentu a tam zkusit najít něco, co vaše tvrzení dokládá. Buď byste měl v ruce něco, co přímo můžete citovat nebo odkázat, nebo byste alespoň relativně včas zjistil svůj omyl.
7 vet je opravdu malo na cteni, je treba cist ten dokument cely (otrava, ze?). Tak to ale v branzi chodi. BSI samozrejme neuvadi, co presne ma na mysli tim, ze rezim TLS v1.0 "bude prenaset data ve formatu prosteho textu". TLS v 1.0 je dosti zastaraly a byla zde prokazana rada moznych utoku, ktere vedou ke kompromitaci spojeni. Podobne otazky patri do vetve Cryptosession (ktera bude mozna na ROOT.CZ take vychazet).
Kazdopadne, u TLS v 1.0 je mozny downgrade na rezim
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff),
coz je ladici rezim, kde se zadne sifrovani nepouziva. Budete potrebovat "spolupraci" na strane serveru a tady pada podezreni na prislusne binarni knihovny. Neni to samozrejme jedina moznost kompromitace, popsanych utoku je cela rada.
Mimochodem, binarni knihovny, podporujici rezim TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff) je mozne dolozit prakticky u vsech klientu s Androidem do verze 5.x (vcetne). U novejsich verzi Androidu to asi o moc slavnejsi nebude.
TLS v1.1 a TLS v1.2 samozrejme rezim TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff) podporuji take, ale vynuceny downgrade (nedobrovolny) je zatim neproveditelny. Resp. zadna narodni bezpecnostni autorita tuto moznost nepotvrdila. I tak je TLS v1.1 oznacen BSI jako nedoporuceny a nema se jiz dale pouzivat.
Bylo by férovější, kdybyste to napsal naplno, že v tom dokumentu nic takového není a že jste si to vymyslel. Ale OK, beru i tohle vaše zakamuflované přiznání. Ještě to chce opravit v článku, diskusi čte jen menšina lidí.
Tu poznámku o čtení celého dokumentu jste si mohl odpustit – já jsem z toho dokument přečetl relevantní části pro tuhle diskusi, těch sedm vět byl odkaz pro vás, abyste to nemusel dlouho hledat. Zvlášť směšné je to tvrzení od vás – možná jste ten dokument četl celý, ale stejně jste ho nepochopil.
To, že jsou ty protokoly slabé a je možné na ně zaútočit a získat část nebo celý obsah šifrované komunikace v otevřeném tvaru, je jasné – pro to jsou ty protokoly považované za zastaralé, málo bezpečné a silně se doporučuje je nepoužívat. Pořád je to ale něco úplně jiného, než že zrovna jména a hesla budou přenášena vždy v otevřeném tvaru (nebo-li že stačí poslouchat na síti a přihlašovací údaje odposlechnete).
BSI samozrejme neuvadi, co presne ma na mysli tim, ze rezim TLS v1.0 "bude prenaset data ve formatu prosteho textu".
Neuvádí. Navíc „přenášet data“ je něco úplně jiného, než „přenášet jména a hesla“. Jaké přesně jsou možné útoky na TLS 1.0 nemusí BSI uvádět, protože každý, o problematice něco ví, si to dokáže dohledat. Ale s výjimkou použití prázdné šifrovací funkce žádný útok nezpůsobí, že data budou přenášena v otevřeném tvaru. Bránit se použití TLS_EMPTY_RENEGOTIATION_INFO_SCSV
lze na straně serveru, takže zmiňovat to jako důvod vypnutí TLS 1.0 na serveru je špatně. U novějších protokolů také jen vypínáte slabé šifry a ne celé protokoly – moc protokolů by vám totiž nezbylo (záleží na nátuře, buď by vám zbylo TLS 1.3 nebo nic). Pokud se obáváte, že na serveru TLS_EMPTY_RENEGOTIATION_INFO_SCSV
vypnete ale knihovna to nebude respektovat a dál tu „šifru“ půjde používat, měl byste se úplně stejně být toho, že vypnete TLS 1.0 nebo SSLv3 ale knihovna to dál bude používat.
Jinak protokoly TLS 1.0 a 1.1 nemají žádné známé neřešitelné problémy (na rozdíl od SSLv2 a SSLv3), nebo-li pokud se klient i server budou bránit známým útokům, např. BEAST, bude komunikace bezpečná. Což je důvod, proč se podpora těchto protokolů ukončuje až teď – je to spíš preventivní ukončení, protože víme, že ty protokoly jsou děravé a každý se děsí, kdy se tam objeví nějaká další díra, ale pokud se použijí správně, je možné je pořád ještě používat bezpečně. Druhá věc je, že bezpečnostní řešení, které potřebuje speciální konfiguraci, aby bylo bezpečné, není moc dobré, protože vždy hrozí, že se někde na něco zapomene.
Rozumim, Vy proste mate jiny nazor, a ten je nejlepsi. Sva tvrzeni nijak nedokladate, proste jsou platna a hotovo.
Muzete napriklad uvest nejaky podklad pro tvrzeni " Pokud se obáváte, že na serveru TLS_EMPTY_RENEGOTIATION_INFO_SCSV vypnete ale knihovna to nebude respektovat a dál tu „šifru“ půjde používat, měl byste se úplně stejně být toho, že vypnete TLS 1.0 nebo SSLv3 ale knihovna to dál bude používat."
Tohle je totiz uplna hloupost a v mem textu nic podobneho neni. Vtip je v tom, ze TLS v1.0 umoznoval (za jistych okolnosti) downgrade na NULL cipher neboli TLS_EMPTY_RENEGOTIATION.
U TLS v1.1 a v1.2 to prokazano neni.
Podobne je to i se zbytkem Vasich ostatnich tvrzeni.
Muj clanek je o hardeningu te casti Apache, ktera se tyka sifrovaneho provozu. Konkretne se jedna o to, aby server "vynutil" na klientech prechod na https, kde budeme pouzivat pouze vybrane sifrove sady v ramci TLS v1.2. A jako podklad pro tento "implementacni scenar" jsem zvolil dopourceni BSI Technical Guideline TR-02102–2, kde jsem navic ocitoval i nektera jejich oduvodneni, proc nepouzivat SSLv2, SSLv3, TLSv1.0 a TLS v1.1.
Mozna jste od clanku ocekaval neco jineho, ale to je jiz Vase zalezitost.
Michal Vymazal: Ne, nejde o názor. Vy jste v článku uvedl chybné a nesmyslné tvrzení, že v protokolech SSLv2, SSLv3 a TLS 1.0 budou uživatelská jména. Po dotazu jste se odkazoval na dokument BSI, kde ovšem žádné takové tvrzení není. To jsem doložil.
Proč je to tvrzení nesmyslné jsem nedoložil, ale když chcete… Je potřeba trochu znát, jak HTTP a TLS dohromady skládá HTTPS. TLS je univerzální šifrovaný tunel, kterým mohu procházet různé protokoly. HTTP (ve verzích 0.9 a 1.x) je textový protokol skládající se z hlaviček a těla. Uživatelská jména a hesla při přihlašování k webové stránce se přenášejí buď v hlavičkách (při použití HTTP autentizace) nebo (dnes u webů prakticky výhradně) v těle požadavku jako formulářová data. HTTPS je protokol HTTP tunelovaný skrze TLS spojení. To znamená, že TLS neví nic o tom, kde uvnitř je uživatelské jméno a heslo – to je záležitost HTTP protokolu. Pokud by tedy uvedené protokoly přenášely nešifrovaně uživatelské jméno a heslo, musely by přenášet nešifrovaně i vše okolo, nebo-li celý vnitřek komunikace. Jinými slovy, šifrovací protokoly SSLv2, SSLv3 a TLS 1.0 by od roku 1995 deset let vše přenášely nešifrovaně a nikdo by si toho nevšiml, až v roce 2006 by si toho konečně někdo všiml a malým updatem na TLS 1.1 by se najednou šifrování zprovoznilo. Ale nikomu by to nešifrování dál nevadilo a dalších víc než deset let by se v pohodě TLS 1.0 používalo.
Samozřejmě, kdokoli si to přečte, a ví trochu o co jde, musí se smíchy válet po zemi. Bohužel je to jen ale rozepsání důsledků vašeho tvrzení v článku.
Vtip je v tom, ze TLS v1.0 umoznoval (za jistych okolnosti) downgrade na NULL cipher neboli TLS_EMPTY_RENEGOTIATION.
Už to z vás pomalu leze a začínáte chápat, proč je to tvrzení v článku nesmyslné. Za prvé píšete „za jistých okolností“. Ano, samozřejmě, za jistých okolností – což je úplně něco jiného, než (implicitní) „vždy“, které je v článku. Přičemž ty jisté okolnosti jsou mimo jiné to, že to server musí podporovat. Takže pro obranu před tímto útokem stačí vypnout podporu nulové šifry na serveru, a nemusíte vypínat TLS 1.0.
Dále nulová šifra samozřejmě znamená, že není šifrováno vůbec nic – takže by byla nešifrovaná celá komunikace, ne jen jméno a heslo.
Shrnuto a podtrženo – v článku tvrdíte, že budou vždy přenášeny přihlašovací údaje nešifrovaně, přičemž chybně jsou obě tvrzení. Nebude to vždy, ale jen pokud útočník na komunikaci zaútočí a server takový útok umožní. A pokud už útočník takový útok provede, nebude se to týkat jen uživatelských jmen a hesel, ale nešifrované bude celá komunikace.
Podobne je to i se zbytkem Vasich ostatnich tvrzeni.
Ano, jsou logická, pravdivá a nesnažím se tvrdit, že je něco napsaného v textu, kde to napsané není.
Muj clanek je o hardeningu te casti Apache, ktera se tyka sifrovaneho provozu.
To jsem psal v prvním komentáři, že by v článku měla být popsána jen konfigurace Apache a neměl byste se pouštět do obecných úvah „proč to nakonfigurovat právě takhle“, když tomu (bohužel) nerozumíte.
A jako podklad pro tento "implementacni scenar" jsem zvolil dopourceni BSI Technical Guideline TR-02102–2, kde jsem navic ocitoval i nektera jejich oduvodneni, proc nepouzivat SSLv2, SSLv3, TLSv1.0 a TLS v1.1.
Neocitoval, vy jste si je vymyslel. Pro vaši informaci, citace vypadá tak, že je napsaná v uvozovkách, je u ní uvedeno, odkud se cituje tak, abych dokázal citaci v původním dokumentu najít. A v tom původním dokumentu najdu buď přesný text citace, nebo třeba bude lehce upravený slovosled, abych vytvořil samostatnou větu z něčeho, co se v původním textu váže na okolní text. Případně tam bude to samé v jiném jazyce. Takže pokud by ten váš výmysl s přihlašovacím jménem a heslem byl citací, musel bych být schopen v původním dokumentu najít slovo „password“ – ono tam je, jednou a v úplně jiném kontextu. Nevím, jak ještě víc byste chtěl dokázat tvrzení, že si vymýšlíte – za mne jako důkaz bohatě stačí už to, že jste třikrát napsal, že citujete z dokumentu BSI, přitom jste ani jednou nepoužil citaci (nevložil jste sem konkrétní text BSI), ani jednou jste neodkázal na konkrétní kapitolu dokumentu (na rozdíl od mne – a tvrdíte, že já svá tvrzení nedokazuju), dokonce ani na konkrétní stránku jste nebyl schopen odkázat.
Důvod, proč nepoužívat TLS 1.0 a TLS 1.1 je ten, že jsou to z dnešního pohledu už slabé protokoly – mají známé díry, které je sice možné vhodnou konfigurací serveru a klienta zalepit, ale často si nemůžete být jistý, že druhá strana tu záplatu opravdu má. Což je zároveň důvod, proč už relativně dlouho platí, že se doporučuje tyhle protokoly opustit, ale k tomu, že přestanou být prohlížeči (ve výchozí konfiguraci) podporované dochází až letos. Jinými slovy platilo (a pořád platí), pokud máte dobrý důvod tyhle protokoly podporovat (např. musíte podporovat staré HTTPS klienty, kteří novější protokol neumí), nakonfigurujte je tak, aby byly bezpečné, a pak je můžete dál používat. Což je diametrálně odlišné od SSLv2 a SSLv3, které zabezpečit nejde – proto je k nim jednoznačný postoj „nepoužívat“, a pokud někde máte zařízení, které nic jiného neumí, je potřeba se k tomu chovat, jako by ten provoz byl nešifrovaný.
Mozna jste od clanku ocekaval neco jineho, ale to je jiz Vase zalezitost.
Očekával bych, že v článku nebudou zjevné nesmysly.
Skonceme to. Ja myslim, ze uz jste se vytrapil dost :-) Vtip je samozrejme v tom, ze TLS v1.0 je nachylny k tzv. "plain-text-attack". Jedna se o chybu v navrhu TLS v1.0 a tyka se modu s rezimem CBC. Plain-text-attack v BSI dokumentu zminen je a najdete jej nikoliv v textu, ale v tabulce.
Problem jsem nechtel rozvijet proto, ze patri do oblasti serialu Cryptosession, ktery mozna bude na ROOT.CZ tez vychazet. Tam se muzete podobnymi dotazy opravdu vyradit.
A pro priste - pokud necemu nerozumite, pak staci se normalne (a zdvorile) zeptat. Autor rad normalne (a zdvorile) odpovi. Staci obvykle dotaz typu "co jste vlastne myslel vetou typu ....".
Jo, a dokumenty narodnich bezpecnostnich autorit pouzivame v branzi naprosto bezne. Ony totiz ty autority nejsou hloupe a dokazi zpracovat podnety od kohokoliv z verejnosti. Delaji to ve svem vlastnim zajmu a dokazi reagovat opravdu rychle - v radu hodin (kdyz uznaji za vhodne). Porovnejte s reakci spravcu ISO 27000 a mame jasno.
Kdybyste nepsal do článku nesmysly a pak se v diskusi nevymlouval, tolik bychom se netrápili.
O plain-text-attack psát nemusíte, ani o tom, že je zmíněný v dokumentu BSI. To všichni vědí. Co ale uniklo vám, je to, že to neznamená, že jsou přihlašovací jména a hesla protokoly SSLv2, SSLv3 a TLS 1.0 přenášena nešifrovaně. Resp. vám už to také došlo, akorát to nechcete naplno přiznat. Asi jste si uvědomil, že bych vám mohl předložit dump TLS 1.0 komunikace a chtít po vás, ať z něj ten login a heslo získáte – když je to podle vás nešifrované.
A pro priste - pokud necemu nerozumite, pak staci se normalne (a zdvorile) zeptat. Autor rad normalne (a zdvorile) odpovi. Staci obvykle dotaz typu "co jste vlastne myslel vetou typu ....".
Takže já se zde normálně a zdvořile zeptám: Proč píšete články o bezpečnosti, když na to nemáte? Sice znáte názvy jednotlivých protokolů, šifer nebo útoků, ale nedokážete to propojit dohromady.
Tady je hlavní problém v tom, že jste do článku napsal nesmyslnou zkratku, a místo abyste to přiznal a opravil to, jenom se do toho dál zamotáváte a vymýšlíte si, že citujete dokumenty BSI.
Můžete se jak chcete dál tvářit, že vy tomu rozumíte a já ne, bohužel jste ale před tím napsal nesmysl do článku, tady do diskuse jste několikrát napsal, že citujete BSI nebo že něco plyne z textu BSI, ale ani jednou jste z toho textu nic necitoval ani nic neodkázal. Každému soudnému člověku je už jenom z toho jasné, že si vymýšlíte – což byste neměl zapotřebí, pokud byste problematice alespoň trochu rozuměl. Já bezpečnosti moc nerozumím, bohužel se ukázalo, že vy jí rozumíte ještě méně.
Jo, a dokumenty narodnich bezpecnostnich autorit pouzivame v branzi naprosto bezne.
Tady mám také jeden normální a zdvořilý dotaz: Tohle je zbabělý pokus o argumentační faul, nebo opravdu stále nechápete, v čem je váš problém? Dokumenty BSI tu vůbec nikdo nezpochybňuje. Zpochybněna je vaše interpretace. Resp. kdokoli, kdo sleduje tuhle diskusi, kromě vás, už dávno ví, že byla vyvrácena – protože kdyby v těch dokumentech skutečně bylo to, co tvrdíte, už byste to dávno citoval nebo alespoň odkázal. Jenže tvrzení „přihlašovací jména a hesla jsou při použití protokolů SSLv2, SSLv3 nebo TLS 1.0 přenášena v otevřeném tvaru“ v těch dokumentech nikde není, a ani z těch dokumentů nijak neplyne. Je to čistě jen váš výmysl. Což je právě ten důvod, proč nemáte na to psát články o bezpečnosti.
Neustále se snažíte zaštiťovat BSI, jenže to, co já rozporuju, jsou vaše výroky. Argument, že jen citujete BSI, už jste sám vyvrátil tím, že jste ani v několikátém komentáři nebyl schopen odkázat nebo citovat cokoli od BSI, co by váš výrok potvrzovalo.