Moc nechápu smysl toho zkracování....
Rozumím, že spolehlivě nefunguje propagace revokovaných certifikátů do prohlížečů...
Ale - životnost napadených a škodících webů se už teď pohybuje v rámci hodin, tak pokud bude platnost certifikátu i jen desítky dnů, tak stejně takový web bude moci škodit desítky dnů a reálně se nic nezlepší.. Nebo mi něco uniká?
Za mě to celé visí na třech pilířích.
A) za certifikátem jsou i nějaké kryptografické algoritmy, které se ale mohou stát velice rychle zranitelné a rychlá výměna certifikátů zmanená i možnost rychle vylepštovat kryptografické algoritmy. Pamatuji doby s md5, kdy byly platné certifikáty i v době, kdy už nebylo rozhodně správně je provozovat.
B) v rámci certificate transparency se evidují všechny vydané certifikáty, snížením platnosti se sníží i náklady na provoz jejich seznamů, to dost výrazně.
C) zlepšení certificate managementu, aby byl plně automatizovaný a dostatečně robustní, protože jeden napadený server ovlivňuje celé své okolí a hlavně uživatele.
Ač se Google rozhodl sám, tak se o tomhle mluví ve více kruzích. Za mě to je mezikrok jak celý proces udělat ještě více odolné.
Pořád tady platí se tohle omezení na 90 dní se týká pouze certifikátů, které jsou určeny pro veřejný internet a společný prostor, interní či vnitřní certifikáty pořád můžeš mít jakékoliv. Chápu to tak, že ve veřejném prostoru zase nemám takovou volnost si vše dělat podle sebe a musím se přizpůsobit většině.
ano, CT je merkle tree, ale v něm jsou pouze hashe (a pár dalších údajů), log je distribuovaný, což znamená, že se vytváří pravidelně nové a nové stromy a podepisují se navzájem.
Mít data uložená je levné, mít ke k dispozici milionům požadavků za hodin je už o něčem jiném. Nic neroste věčně a o tom kolik dat můžeme mít v CTL se mluví, i nové CT 2.0 už počítá s uzamknutím CTL a vytvořením nového.
ad B) to by me zajimalo, japa chces realizovat usporu, kdyz mas rekneme milion certifikatu platnych rok, vs milion certifikatu platnych mesic. Jen budes mit 12x vetsi provoz pri jejich aktualizacich.
"interní či vnitřní certifikáty pořád můžeš mít jakékoliv"
To chci videt, jak budes chromaka nebo jabko presvedcovat o tom, ze ten tvuj 10 let platnej certifikat ma akceptovat ... jo aha, ono to nejde, jak bys vedel, kdybys to zkusil.
Ja to narozdil od tebe vim, protoze par jabkem postizenych kusu ve sve bubline mam. Jednoho krasneho dne vsichni dorazili, ze ten firemni CA cert ktery meli importovany uz neni duveryhodny.
mohou stát velice rychle zranitelné
To „velice rychle“ je ale v řádu let – to opravdu není důvod, proč zkracovat platnost koncových certifikátů na měsíce. Ostatně i kdyby tu přistáli přátelští mimozemšťané, kteří by nám omylem vyzradili, jak louskat některé kryptografické algoritmy, aby to bylo opravdu „velice rychle“, budeme mít stejně problémy s certifikáty autorit. Protože ty používají úplně stejné algoritmy, a za 30 dní je rozhodně nevyměníte.
v rámci certificate transparency se evidují všechny vydané certifikáty, snížením platnosti se sníží i náklady na provoz jejich seznamů, to dost výrazně.
Jako že když na tom seznamu budete mít víc položek, budou náklady na jeho provoz výrazně nižší? To těžko, ty náklady naopak budou vyšší.
Ač se Google rozhodl sám
Přímo v titulku zprávičky je napsáno, že návrh podal Apple. Minulé zkrácení prosadil také Apple, faktické zkrácení u velkého mnosžtví certifikátů zařídil Let's Encrypt. Shoda na tom, že je potřeba platnost webových certifikátů zkracovat, je poměrně široká.
Vůbec nejde o napadené a škodící weby. Jde o legitimní weby, kterým unikne privátní klíč. Kdyby dneska utekl privátní klíč nějaké bance, Googlu, Alze nebo nějakému menšímu e-shopu, tak se někdo dokáže vydávat za ten web přes rok – pokud by privátní klíč utekl hned na začátku. Banka nebo Google ty klíče snad mají dobře zabezpečené, nicméně už taková Alza má privátní klíče nejspíš uložené jako soubory někde na disku, možná na nějakých VPS. Takže pravděpodobnost úniku není úplně malá.
No a pak je tu samozřejmě specifický případ změny vlastníka domény, kdy původní vlastník může mít dál v držení certifikáty a privátní klíče přes rok po prodeji domény.
Smysl bude mít přidání otisku veřejného klíče do HTTPS DNS záznamu (což by u prohlížečů mohlo projít, padnou všechny výhrady proti DANE). Pak bude možné DV certifikáty od certifikačních autorit zrušit (a tím napravit historický omyl), používat self-signed certifikáty a od CA si případně nechat vystavovat OV certifikáty. V DNS ten certifikát půjde zneplatnit v řádu minut či hodin, podle nastavení DNS.
Seznamy revokovaných certifikátů jsou pro prohlížeče nepraktické, protože udržovat ve všech prohlížečích kompletní seznam všech odvolaných certifikátů není moc efektivní. Online se dotazovat na platnost certifikátu znamená prozrazovat, kdo se na jaký web dívá. A řešit to přikládáním OCSP potvrzení ke certifikátu ze strany serveru se Let's Encrypt nějak nechce, a vzhledem k tomu, že vydávají zdaleka nejvíc TLS certifikátů, bude to tak, jak se rozhodnou. Upřímně se jim moc nedivím, že se jim do toho nechce, protože pak se z té CA stává single point of failure – stačí tu CA odstavit na hodinu a velká část webu bude nedostupná.
Tenhle návrh mi nepřijde úplně praktický. Podle mne to bude náchylné na odmítání komunikace/ověření. Jakmile do hry vstoupí nějaká cache (případně cache proxy
), bude se stávat, že certifikát na webu nebude souhlasit s otiskem v DNS.
Kromě toho by bylo potřeba se vypořádat s dalšími situacemi, například:
* certifikát na serveru s množstvím domén - změna by znamenala zápis do mnoha DNS,
* certifikát vystavený pro více serverů za loadbalancerem, tedy více platných certifikátů se stejným jménem serveru...
Jakmile do hry vstoupí nějaká cache (případně cache proxy), bude se stávat, že certifikát na webu nebude souhlasit s otiskem v DNS.
Asi jste nechtěl napsat cache, ale MitM útočník. No, právě proto se certifikáty používají, aby do toho nemohl vstoupit někdo uprostřed.
certifikát na serveru s množstvím domén - změna by znamenala zápis do mnoha DNS,
Zápis do mnoha domén není problém. Není důvod mít v jednom certifikátu mnoho domén. A když se mění klíč pro certifikát pro větší množství domén, je úplně jedno, jestli jsou ty domény v jednom certifikátu nebo ve více – počet změn v DNS bude pořád stejný.
certifikát vystavený pro více serverů za loadbalancerem, tedy více platných certifikátů se stejným jménem serveru...
To nijak nesouvisí s loadbalancerem, naopak loadbalancer obvykle množství veřejných certifikátů snižuje, protože jeden loadbalancer nahradí více serverů. Každopádně to opět není problém – můžete používat stejný klíč na více loadbalancerech, můžete dát do DNS více otisků klíčů nebo tam můžete dát otisk klíče certifikační autority (třeba vlastní).
Měl jsem opravdu na mysli cache
- například pro DNS dotazy. V takovém případě snadno dojde k tomu, že dostanete již neplatný otisk...
Řekněme, že máte servery s mnoha různými aplikacemi/weby. Některé jsou vytíženější, a tedy je nad nimi loadbalancer, jiné odkazujete napřímo. Na serverech je proto vždy certifikát, obsahující všechny weby zde běžící (jako aliasy). Počty webů na serverech se průběžně vyvíjejí, takže vždy vygenerujete nový certifikát, s novým seznamem aliasů. Například:
1. server = Adam, Bořena, Cyril + 22 dalších,
2. server = Adam, David, Emil, František + 36 dalších,
3. server = Božena, Emil, Gustav, Helena + 26 dalších,
jeden loadbalancer pro web Adam (na 1. a 2. server),
druhý pro server Božena (2. a 3.), oba provoz neterminující.
Každá změna na některém serveru znamená desítky zápisů do DNS.
Pro servery Adam a Božena potřebujete mít zapsané dva platné certifikáty.
(Pokud myslíte, že jde o hypotetický příklad, tak Vás ujišťuji, že je to příklad z praxe.)
V takovém případě snadno dojde k tomu, že dostanete již neplatný otisk...
Nikoli. S běžnou dobou expirací záznamů v DNS cache (odpovídající tomu, co pro záznam uvádí autoritativní server), se počítá. Pokud někdo cachuje výrazně déle, než uvádí TTL, je to jeho problém.
Některé jsou vytíženější, a tedy je nad nimi loadbalancer, jiné odkazujete napřímo.
Proč ten loadbalancer nedáte před všechny?
s novým seznamem aliasů
Proč aliasy? Proč ne samostatné certifikáty pro každý alias?
oba provoz neterminující.
Asi myslíte neterminující TLS. Opět – proč? Tím akorát omezíte možnosti loadbalanceru.
Každá změna na některém serveru znamená desítky zápisů do DNS.
Jedině v případě, kdy budete cpát všechny názvy do jednoho certifikátu, pro každý certifikát použijete nový klíč a do DNS nedáte otisk klíče autority ale otisk klíče koncového certifikátu.
Pro servery Adam a Božena potřebujete mít zapsané dva platné certifikáty.
Nepotřebujete. Ale když chcete, tak můžete. Nebo si tam dáte otisk certifikátu certifikační autority.
Pokud myslíte, že jde o hypotetický příklad, tak Vás ujišťuji, že je to příklad z praxe.
Ano, i v praxi je možné něco nakonfigurovat tím nejblbějším možným způsobem. To je ale problém toho, kdo to tak konfiguruje.
Jinak úplně stejně vám můžu dokázat, že nelze používat certifikační autority. Protože weby A, B, C musí mít společný certifikát od autority X a weby provozované na 1. serveru musí mít certifikát od autority Y a weby B a C nelze přesunout mimo server 1. Vidíte, důkaz, že TLS založené na certifikátech vydávaných certifikačními autoritami nemůže fungovat.
Jenže ono to funguje, akorát to nikdo nekonfiguruje tak blbě, jak jsem popsal. Stejně tak to nemusí nikdo konfigurovat tak blbě, jak jste popsal vy.
Pokud máte TTL 48 hodin, nemusíte si změny všimnout klidně celý den. Běžně máme na serverech TTL v řádu hodin...
Ten popsaný zmatek je prostě kompromisem, který vznikl jistým vývojem. Není to ideální, ale tak to prostě je - a změna by byla drahá. Jeden certifikát per server je prostě nejjednodušší řešení v daném případě - a také nejlevnější.
Ano, pak se certifikát mění často, pro všechny služby naráz.
Neterminující (nikoliv jen z pohledu TLS, ale spíše TCP) loadbalancery používáme naprosto běžně - jsou pro tok dat transparentní, což nám přináší některé výhody. Opět: je to dané aplikací - tedy nejedná se o standardní web.
Zapsáním certifikační autority do DNS v podstatě zcela anulujete výhody tohoto řešení: nemáte jak zjistit, že certifikát je neplatný, nahrazený jiným.
15. 10. 2024, 21:27 editováno autorem komentáře
Pokud máte TTL 48 hodin, nemusí si klient změny všimnout klidně dva dny. Přesto to ničemu nevadí.
Aktualizace desítek DNS záznamů najednou (když už byste ji tedy chtěl provádět) také není něco, co by mělo složit nějaký DNS server.
Jak už jsem psal, nikde není řečeno, že se nové technologie musí přizpůsobovat současným blbým řešením.Třeba daleko častější problém, než to, co popisujete, je nutnost ruční výměny certifikátů. Přesto má Let's Encrypt platnost certifikátů 90 dnů a bude se zkracovat – a podle návrhu u všech CA. Holt ti, kteří musí certifikáty měnit ručně, to buď nějak dokážou zautomatizovat, nebo to budou muset měnit ručně dost často…
Navíc i kdyby se přidala možnost poslat otisk klíče už s odpovědí na DNS HTTPS záznam, ještě dlouho budou prohlížeče podporovat situace, kdy v tom záznamu otisk klíče nebude. Ony budou prohlížeče dlouho počítat s tím, že žádný HTTPS záznam nemusí existovat. Zatím se vůbec nemluví o tom, že by někdy mohl být povinný. Vždyť teprve asi před měsícem se vůbec uživatelé začali s HTTPS DNS záznamy potkávat, když to začal Cloudflare nasazovat na své free služby. Takže máte spoustu let na to z těch minimálně tří nevhodných řešení alespoň jedno změnit.
Certifikační autorita v DNS může být moje vlastí autorita. Pokud by došlo ke kompromitaci koncových privátních klíčů, můžu vyměnit i ty klíče CA.
Pokud mate u TLSA zaznamu nastavene TTL na 48 hodin, tak to proste delate blbe. TTL muzete mit pro kazdy zaznam v DNS jiny a samozrejme, nekde dava mit smysl TTL vetsi a jinde to je naopak nesmysl. Ono to nechce byt otrok minulosti a nesnazit se porad veci delat stejne jak pred dvaceti lety a pak nadavat, ze nove postupy a reseni maji "problem".
TLSA zaznamu muzete mit i nekolik, tedy samozrejme neni problem ani postupna rotace certifikatu zrovnatak neni vubec zadny problem. Mate to dokonce explicitne zminene v RFC 6698 v priloze A4 v prikladech... aneb vase argumenty jsou z kategorie "ajtaka", co ani necte dokumentaci, ale pritom ma "jasno".
V CRL je uvedeno, do kdy musí být vydáno další CRL. Takže správně implementovaná revokace funguje správně – akorát je použitelná jen v případě, kdy máte na ověřování podpisu dost času. Používat na online komunikaci certifikáty, které z principu mají zastaralé údaje, je historický omyl. Správné řešení je mít klíče v DNS chráněném DNSSEC, ale než se k tomu v prohlížečích dopracujeme, bude to ještě chvilku trvat.
Nj ... to je tak, kdyz nekdo netusi co je to DNS ... vis jirsaku, to by krome toho klice potreboval totiz taky.
To ze si muze kdokoli nechat vystavit cert na temer libovolnou domenu, pokud ma pristup k nejakemu (libovolnemu) emailu na ni ani nemluve. Proc by nekdo jako krad nejaky webovej klic? Koho to zajima? Aha, presne nikoho.
Měsíc je doba, po kterou se ještě dají použít nějaká jiná opatření. Rok už by se dal řešit jedině tak, že by se ta doména přestala používat. Jinak samozřejmě ani ten měsíc není ideální – proto máme v PKI zabudován mechanismus revokace certifikátů. Který ovšem nebyl úplně stavět pro situaci, kdy je ověřovatel certifikátu v náramkových hodinkách a řeší se, aby se zobrazení webu nezdrželo o deset milisekund.