36
PŘECHOD PŘECHOD NA HTTPS NA HTTPS Michal Špaček Michal Špaček www.michalspacek.cz www.michalspacek.cz @spazef0rze @spazef0rze Tato verze slajdů obsahuje navíc poznámky nejen pro ty, kteří na přednášce nebyli.

Přechod na HTTPS

Embed Size (px)

Citation preview

Page 1: Přechod na HTTPS

PŘECHODPŘECHODNA HTTPSNA HTTPS

Michal ŠpačekMichal Špačekwww.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze

Tato verze slajdů obsahuje navíc poznámkynejen pro ty, kteří na přednášce nebyli.

Page 2: Přechod na HTTPS

WiFi PineappleWiFi Pineapplewww.wifipineapple.com

Tohle zařízení za $99.99 umí pomocí útoku nazvaného Karma přesvědčit vaše počítače a telefony, aby se připojily na útočníkem ovládanou Wi-Fi síť. Tahle krabička odpoví kladně na dotaz, jestli náhodou nevysílá síť, kterou má váš počítač uloženou. Pokud se na tuhle krabičku připojíte, tak mizera může číst a měnit veškerý nezašifrovaný provoz.

Page 3: Přechod na HTTPS

Tady vidíte příklad jedné takové Wi-Fi sítě v Burger Kingu kdesi na benzínce. Když jsem na ni byl připojen, tak do každé stránky načtené po HTTP byl vložen banner. Všimněte si té reklamy na auto dole uprostřed. Ta na původní stránce není, nacpal ji tam ten Burger King, aby provoz Wi-Fi nemusel platit ze svého. Do HTTPS stránek se nic nevkládalo.

Page 4: Přechod na HTTPS

Ale vkládání reklam není to nejhorší, pamatuje si na HackingTeam? To je ta firma, co dělá špehovací software, který si koupila mj. česká policie. Toto je slajd přímo z jedné prezentace HackingTeamu. Jejich software do stránek na HTTP vkládá exploity, které si jen tak, s obsahem běžné stránky, stáhnete do svého zařízení a díky bezpečnostním chybám např. ve Flashi se potichu nainstalují. Ty exploity pak umožní odposlouchávat třeba vaše telefonní hovory, zkoumat co máte na disku počítače apod.

Page 5: Přechod na HTTPS

HTTPS as a ranking signalPřecházet na HTTPS byste měli kvůli uživatelům, aby nějaký mizera nemohl jednoduše poslouchat, co posílají na server nebo měnit stránky, které si stahují. Google sice nedávno oznámil, že weby na HTTPS bude preferovat, ale sám Google tvrdí, že HTTPS má velmi malou váhu a ovlivňuje to asi procento dotazů. Kvůli Google na HTTPS nepřecházejte.

Page 6: Přechod na HTTPS

ENCRYPTION&

AUTHENTICATIONHTTPS zajišťuje šifrování přenosu proti odposlechu a modifikaci a ověřuje protistranu, uživatelé tak vědí s kým komunikují. Bylo by trochu hloupé, kdyby šifrovaná data posílali mizerovi a ten si je v klidu rozšifroval a přečetl nebo změnil.

Page 7: Přechod na HTTPS

HTTP Secure

HTTP over SSLHTTPS znamená HTTP Secure, dříve často HTTP over SSL. Jenže poslední verze protokolu SSL 3 je z roku 1996 a už by se neměla používat, nejenom kvůli útoku POODLE. Amazon, Twitter, Slevomat a další již protokol SSL nepodporují, udělejte to stejně. Chrome od verze 40 a Firefox od verze 34 již standardně SSL neumí.

Page 8: Přechod na HTTPS

TLSTransport Layer Security

Dnes by se měl používat protokol TLS nejlépe v nejnovější verzi 1.2. Verze 1.3 je v březnu 2015 zatím ve fázi draft. TLS standardně neumí IE6 na WinXP/2000, TLS je tam potřeba zapnout ručně. IE7 již TLS 1.0 umí i na WinXP.

Page 9: Přechod na HTTPS

HTTPS=

How To Transfer Private Shit

SSL, TLS, ABS, BBC, OMG… já si prostě myslím, že HTTPS znamená How To Transfer Private Shit. Nikomu není nic do toho, jaké články si zrovna čtu a nikdo by neměl zasahovat do dat, která do prohlížeče stahuji. To jsou mé soukromé záležitosti.

Page 10: Přechod na HTTPS

Pro to, abyste mohli HTTPS začít na vašem webu používat budete potřebovat certifikát. Pokud má váš web subdomény, tak budete pro každou potřebovat certifikát zvlášť. Můžete využít rozšíření SAN (Subject Alternative Name, jeden certifikát platí pro více domén) nebo tzv. wildcard certifikát, který platí pro *.example.com. Certifikáty nemusí být drahé, za necelé dvě stovky na rok je prodává třeba SSLS.cz. (Aktualizace: v dubnu 2016 byla spuštěna ostrá verze certifikační autority Let's Encrypt, která vystavuje certifikáty zdarma.) Certifikáty vystavují tzv. certifikační autority (CA). Těch je spousta, ale pokud prohlížeč návštěvníka vaši CA nezná, bude hlásit chybu.

Page 11: Přechod na HTTPS

Pokud jste banka nebo očekáváte phishingové útoky na vaši značku, tak zvažte EV (Extended Validation) certifikát. Vaše ověření pak bude trochu náročnější, ale poté se v browseru zobrazí i země a název firmy, pro kterou je certifikát vystaven a uživatel si tak může lépe ověřit, že komunikuje s tím, s kým opravdu chce.

Page 12: Přechod na HTTPS

Foobar International (IE)

Foobar International

Dublin 7

Dublin, IE

Pokud se název vaší firmy neshoduje s názvem vaší domény nebo pokud je jiný, než značka, kterou na webu propagujete, tak by to uživatele mohlo naopak zmást. Kdyby zlavomat.sk provozovala irská firma Foobar International, tak by EV certifikát v prohlížeči vypadal takto a to by moc důvěry nevzbuzovalo. EV certifikáty jsou také mnohem dražší.

Page 13: Přechod na HTTPS

PRIVÁTNÍKLÍČ

Když budete pořizovat nějaký certifikát, tak k němu dostanete soukromý (privátní) klíč. Ten chraňte jako oko v hlavě, nikdy ho neposílejte e-mailem, neposílejte ho na server ani po FTP. Standardní e-mail i FTP jsou nešifrované a klíč může někdo odposlechnout. Použijte šifrovaný přenos SFTP. E-maily šifrujte pomocí PGP nebo S/MIME.

Page 14: Přechod na HTTPS

http://www.spiegel.de/media/media-35511.pdf

Koncem roku 2014 spatřily světlo světa dokumenty NSA, které hovoří o tom, že NSA umí rozšifrovat HTTPS. Novináři se z toho mohli podělat, „HTTPS je k ničemu!“, jenže NSA umí HTTPS rozšifrovat jen když má privátní klíč. EASY.

Page 15: Přechod na HTTPS

Při výměně klíčů mezi serverem a prohlížečem, které se říká RSA jsou šifrovací hesla odvozená od privátního klíče, kdo získá privátní klíč, získá šifrovací hesla a může HTTPS dešifrovat a to i zpětně.

Page 16: Přechod na HTTPS

KRYPTOANALÝZAGUMOVOU HADICÍ

http://xkcd.com/538/

A jak ten privátní klíč získá? Třeba kryptoanalýzou pomocí gumové hadice. Majitel privátního klíče dostane zahradní hadicí přes zadek a klíč milerád vydá. Klíč se dá samozřejmě získat i tak, že někdo odposlechne e-mail, kterým ten klíč posíláte.

Page 17: Přechod na HTTPS

Klíče lze naštěstí vyměnit i jinak. Při výměně klíčů EDH (Ephemeral Diffie–Hellman, někdy též DHE) se používají krátkodobé šifrovací klíče, které nejsou závislé na privátním klíči. Ten slouží jen pro ověření serveru. Když někdo získá privátní klíč, tak je mu celkem k ničemu. Nemůže rozšifrovat zaznamenanou komunikaci ani tu budoucí. (Aktualizace: v květnu 2015 se objevil útok proti výměně klíčů EDH nazvaný Logjam, který funguje s malými 512-bitovými nebo často používanými 1024-bitovými prvočísly. Proto je lepší použít ECDHE (Elliptic-Curve Diffie-Hellman Ephemeral), což je varianta DHE, která používá kryptografii nad eliptickými křivkami. ECDHE je také rychlejší, než obyčejné DHE.)

Page 18: Přechod na HTTPS

PERFECT FORWARD SECRECY

Výměně klíčů pomocí EDH se říká Perfect Forward Secrecy. Tuhle výměnu byste měli na serveru nabízet. Poznáte to v browseru tak, že tam bude uvedeno DHE nebo ECDHE. Bude tam i RSA, ale hlavně, že tam bude DHE.

Page 19: Přechod na HTTPS

https://wiki.mozilla.org/Security/Server_Side_TLS

https://mozilla.github.io/server-side-tls/ssl-config-generator/

Na prvním odkazu naleznete příklady konfigurace webového serveru, jak nastavit šifry a jak nastavit výměnu klíčů. Na druhém odkazu je přímo generátor konfigurace pro Apache apod.

Page 20: Přechod na HTTPS

Certifikát máte. Co dalšího budete pro přesun vašeho webu na HTTPS potřebovat? Zvláštní IP adresa to nebude. Od roku 2003 totiž existuje rozšíření protokolu TLS s názvem SNI.

Page 21: Přechod na HTTPS

SNIServer Name Indication

SNI podporuje Firefox od verze 2, Chrome od verze 6 na WinXP, jakýkoliv Chrome na WinVista a výše, Safari 3, Android 3. Na WinXP SNI nefunguje v žádném IE, na WinVista a výše ho umí IE od verze 7. Pokud potřebujete podporovat starší verze, tak vlastní IP adresu potřebovat budete stále.

Page 22: Přechod na HTTPS

HTTP 301Až budete mít HTTPS připravené, tak přesměrujte návštěvníky

z HTTP na HTTPS pomocí stavového kódu 301.

Page 23: Přechod na HTTPS

HTTPONLY&

SECUREHttponly příznak pro session id cookie už určitě používáte, teď nastavte ještě parametr Secure. Ten zabrání úniku session id po případném downgrade spojení na HTTP.

Page 24: Přechod na HTTPS

Httponly příznak je důležitý, zabrání totiž přístupu JS k session cookie. Když ten příznak nebudete mít nastavený, tak se může stát, že nějaký analytický nástroj bude krást session id vašim uživatelům. Dělá to třeba stat-monitor.cz – takhle krade session id uživatelům webu aaaauto.cz.

Page 25: Přechod na HTTPS

<img src="http://www.mironet.cz">

Když web nemá session cookie označenou jako Secure, tak ji browser pošle i po HTTP. Útočník může donutit browser poslat takovou cookie po HTTP třeba tak, že někam umístí značku IMG s adresou pro načtení HTTP verze webu a bude poslouchat provoz uživatelů na bezdrátové síti.

Page 26: Přechod na HTTPS

Prohlížeč

Mizera

Server

HTTP HTTPS

SSL STRIP

Mizera může proti uživatelům použít útok SSL Strip. Pokud chcete načíst nějakou zabezpečenou stránku, obvykle do prohlížeče píšete adresu bez zadání počátečního https:// – browser pošle nešifrovaný požadavek na server, ten odpoví přesměrováním na HTTPS. Tento úvodní požadavek může zachytit mizera, přepošle ho na server, server odpoví jemu a do prohlížeče vrátí nešifrovanou stránku. Uživatel vyplní přihlašovací údaje, pošle je mizerovi, ten si je přečte, zašifruje a pošle serveru.

Page 27: Přechod na HTTPS

HSTSHTTP Strict Transport Security

Útoku SSL Strip se dá bránit pomocí HSTS. To zajistí, že browser vůbec nebude posílat nešifrovaný požadavek na server, ale místo toho vygeneruje interní přesměrování a rovnou načte stránku z HTTPS. Více v mé přednášce o HSTS.

Page 28: Přechod na HTTPS

Strict-Transport-Security: max-age=31536000; includeSubDomains;

HTTP Strict Transport Security je HTTP hlavička, jejíž hodnota je počet sekund, po které se bude HTTP interně v prohlížeči přesměrovávat na HTTPS. Pro testování nastavze počet vteřin hodně malý, třeba jen pár minut. Parametr includeSubdomains říká, že HSTS platí i pro všechny subdomény. Tahle hlavička může být poslána ale pouze po HTTPS. Musíme tedy doufat, že v odpovědi na první požadavek mizera tuto hlavičku neodstraní.

Page 29: Přechod na HTTPS

https://www.chromium.org/hsts

PRELOAD

Abychom nemuseli doufat, tak můžeme využít tzv. preload list. To je seznam webů, které běží jen na HTTPS. Tento seznam je aktuálně spravován ručně, nejsou tam úplně všechny weby, ale jen ty, které o přidání požádají. Tento seznam je v prohlížeči rovnou od jeho nainstalování a zajistí, že prohlížeč bude už od začátku vědět, že váš web je na HTTPS a rovnou bude posílat požadavky na HTTPS. Mizera má smůlu, protože i ten úplně první požadavek již bude šifrovaný.

Page 30: Přechod na HTTPS

Nainstalujte si do browseru tohle rozšíření, díky němu se vám po HTTPS budou načítat i weby, které ho defaultně nenabízí, třeba Wikipedia (Aktualizace: Wikipedia se načítá od června 2015 pouze na HTTPS a to včetně HSTS, ale toto rozšíření si přesto nainstalujte, weby si do něj můžete přidávat také ručně). Je to takové lokální HSTS, můžete si do rozšíření přidat i weby, které navštěvujete a víte, že HTTPS podporují. Prohlížeč pak bude rovnou načítat stránky po HTTPS, i když do adresy https:// nepřidáte.

Page 31: Přechod na HTTPS

HTTPS má spoustu šifer a nastavení, které se mohou použít při komunikaci, ne všechny jsou však bezpečné. Pro správnou konfiguraci použijte odkazy na slajdu 17 a pro kontrolu nastavení nástroj SSL Server Test. Měli byste dostat známku A nebo A+, horší raději ne.

Page 32: Přechod na HTTPS

MIXED CONTENTMIXED CONTENTPo převodu si dávejte pozor na tzv. mixed content, tedy když do stránek na HTTPS načítáte HTTP obsah, typicky třeba videa, obrázky nebo JavaScript. Browser takový obsah nemusí načíst nebo zobrazit.

Page 33: Přechod na HTTPS

REFERER<meta name="referrer" content="origin">

origin → unsafe-url

Taky pozor na referrer, ten se ze stránek na HTTPS nepředává na HTTP, takže je potřeba si správně odkazy z HTTPS označit, jinak nebudete třeba v GA vědět, odkud návštěvník přišel. Můžete použít meta referrer (dvě „r“), díky němu lze prohlížeči říct, že má posílat referrer i z HTTPS na HTTP. Hodnota origin zajistí poslání pouze domény, unsafe-url předá celé URL včetně parametrů, to používejte s rozmyslem. Meta referrer podporuje Chrome od konce roku 2011 a Firefox od verze 36. IE ho neumí vůbec, Edge naštěstí ano.

Page 34: Přechod na HTTPS

HTTPS

Změna http:// na https:// je změnou URL a tak si oprávněně říkáte, co to udělá s vyhledávači. Oficiálně bohužel moc nevíme. Ze Slevomatu jsem ale dostal nějaká data a můžu říci, že to neudělalo nic. Na grafu je návštěvnost z vyhledávače Google, ten drobný pokles prý není nic důležitého. Se Seznamem je trochu problém, web prochází totiž neskutečně pomalu. Takže bude záležet na tom, jak velký máte web, jak vás má Seznamův robot rád a jaké máte vztahy se zákaznickou podporou Seznamu. (Aktualizace: začátkem října Seznam oznámil, že nové weby na HTTPS jsou hodnoceny stejně jako weby na HTTP, ale přechod doporučil odložit na začátek roku 2016. Více v mém článku Seznam a weby na HTTPS – dobrá i špatná zpráva.)

Page 35: Přechod na HTTPS

HTTPS

HTTP

Do Google Webmaster Tools musíte přidat HTTPS jako extra web. Takhle se tam zobrazil počet zaindexovaných stránek Slevomatu, počet stránek na HTTP klesá, ale stoupá na HTTPS. (Grafy mají rozdílnou osu Y, proto to vypadá, že stránek na HTTPS je více.)

Page 36: Přechod na HTTPS

YMMV

Michal ŠpačekMichal Špačekwww.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze

Slyšel jsem sice nějaké příběhy, že se přechod z HTTP na HTTPS u někoho úplně nepovedl, ale víc o tom nevím. Vaše výsledky se tedy mohou lišit a pokud chcete, tak to raději dělejte mimo vaši sezónu. Nová verze protokolu HTTP 2 sice bude umět i nešifrovaný režim, ale Firefox ani Chrome ho údajně podporovat nebudou. Takže jednou nás šifrovaný web stejně všechny čeká. #HTTPSeverywhere