|
Klin Rumor Crusher je pred nekaj dnevi objavil "Ali bo dostop do interneta z javnim WiFi-jem ogrozil varnost bančnih računov? Članek uvaja nekatere situacije pri uporabi HTTPS za šifriranje omrežja, in glede na odgovor še vedno obstajajo spori. Ker internet postaja vse bolj priljubljen, aplikacija postaja vse bolj razširjena, nekatere varnostne težave v omrežju pa bodo privabljale vedno več pozornosti uporabnikov interneta, tukaj bomo govorili o TLS/SSL, kar pogosto imenujemo HTTPS, od principa do same aplikacije, da vidimo, kaj je in na katere težave je treba biti pozoren pri uporabi HTTPS in sorodnih varnostnih tehnik. Kibernetska varnost je celosten dogodek, ki vključuje varnost osebnih računalnikov, protokolov, prenosa podatkov ter podjetij in spletnih strani za razvoj programske opreme. Upam, da bo z postopnim razlaganjem varnostnih vprašanj v prihodnosti več ljudi razumelo varnost omrežja, da bodo lahko omrežje uporabljali varneje. Članek bo dolg in za zdaj je načrtovano, da bo razdeljen na tri dele: Prvi del večinoma opisuje načelo HTTPS; Drugi del večinoma opisuje postopek preverjanja SSL potrdil in nekatere previdnostne ukrepe za uporabo. Tretji del predstavlja nekaj primerov HTTPS napadov. 1. Kaj je HTTPS?Preden govorimo o HTTPS, poglejmo, kaj je HTTP, protokol, ki ga običajno uporabljamo pri brskanju po spletu. Podatki, ki jih prenaša HTTP protokol, so nešifrirani, torej v navadnem besedilu, zato je prenos zasebnih podatkov z uporabo HTTP protokola zelo nevaren. Da bi zagotovili šifriranje in prenos teh zasebnih podatkov, je Netscape zasnoval protokol SSL (Secure Sockets Layer) za šifriranje podatkov, ki jih prenaša HTTP protokol, s čimer je nastal HTTPS. Trenutna različica SSL je 3.0, ki je definirana v RFC 6101 s strani IETF (Internet Engineering Task Force), nato pa je IETF nadgradil SSL 3.0, kar je privedlo do TLS (Transport Layer Security) 1.0, definiranega v RFC 2246. Pravzaprav je naš trenutni HTTPS TLS protokol, vendar ker se je SSL pojavil razmeroma zgodaj in ga še vedno podpirajo sodobni brskalniki, je SSL še vedno sinonim za HTTPS, vendar je to TLS ali SSL, ki je stvar prejšnjega stoletja, zadnja različica SSL je 3.0, in TLS nam bo še naprej zagotavljal šifrirne storitve v prihodnosti. Trenutna različica TLS je 1.2, definirana v RFC 5246, in še ni široko uporabljena. Za tiste, ki jih zanima zgodovina, si lahko ogledate http://en.wikipedia.org/wiki/Transport_Layer_Security, ki vsebuje podroben opis TLS/SSL.
2. Je HTTPS varen?Odgovor je da, varno je. V prihodnjih tednih bo Google omogočil HTTPS za vse lokalne domene po svetu, uporabniki se morajo pred iskanjem prijaviti le s svojim Google računom, vse iskalne operacije pa bodo šifrirane s protokolom TLS, glej: http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Kako deluje HTTPSHTTPS zahteva stik z roko med odjemalcem (brskalnikom) in strežnikom (spletno stranjo) pred prenosom podatkov, podatki o geslih obeh strani pa se določijo med postopkom rokovanja. Protokol TLS/SSL ni le niz šifriranih prenosnih protokolov, temveč tudi umetniško delo, ki so ga skrbno zasnovali umetniki, z uporabo asimetričnega šifriranja, simetričnega šifriranja in HASH algoritmov. Preprost opis postopka stiskanja roke je naslednji:
- Brskalnik pošlje nabor pravil šifriranja, ki jih podpira, na spletno stran.
- Spletna stran iz njih izbere nabor šifrirnih algoritmov in HASH algoritmov ter pošlje svoje identitetne podatke nazaj brskalniku v obliki potrdila. Potrdilo vsebuje informacije, kot so spletni naslov, javni ključ šifriranja in izdajatelj potrdila.
- Po pridobitvi potrdila o spletni strani brskalnik izvede naslednje:
- Preverite legitimnost potrdila (ali je avtoriteta, ki izdaja potrdilo, legitimna, ali je spletni naslov v potrdilu enak naslovu, ki ga obiskujete itd.), če je potrdilo zaupanja vredno, se v vrstici brskalnika prikaže majhna ključavnica, sicer se bo prikazalo opozorilo, da certifikat ni zaupanja vreden.
- Če je potrdilo zaupanja vredno ali če uporabnik sprejme nezaupanja vredno potrdilo, brskalnik ustvari naključno število gesel in jih šifrira z javnim ključem, ki je naveden v potrdilu.
- Sporočilo za roko se izračuna z dogovorjenim HASH-om, sporočilo je šifrirano z generirano naključno številko, nato pa se vse prej ustvarjene informacije pošljejo na spletno stran.
4. Po prejemu podatkov iz brskalnika spletna stran izvede naslednje: - Uporabite svoj zasebni ključ za dešifriranje gesla, uporabite geslo za dešifriranje sporočila za roko, ki ga je poslal brskalnik, in preverite, ali je HASH enak tistemu, ki ga pošlje brskalnik.
- Sporočilo s stiskom roke je šifrirano z geslom in poslano brskalniku.
5. Brskalnik dešifrira in izračuna HASH sporočila roke, če je skladen z HASH-om, ki ga pošlje strežnik, se postopek roke konča, nato pa bodo vsi komunikacijski podatki šifrirani z naključnim geslom, ki ga je ustvaril prejšnji brskalnik, z uporabo simetričnega šifrirnega algoritma.
Tukaj si brskalnik in spletna stran izmenjata šifrirano sporočilo za roko in preverita, da zagotovita, da sta obe strani pridobili isto geslo, da lahko podatke normalno šifrirata in dešifrirata ter opravita test za kasnejši prenos resničnih podatkov. Poleg tega so algoritmi šifriranja in HASH, ki jih HTTPS pogosto uporablja, naslednji: - Algoritmi asimetričnega šifriranja: RSA, DSA/DSS
- Simetrični algoritmi šifriranja: AES, RC4, 3DES
- HASH algoritem: MD5, SHA1, SHA256
Med njimi se asimetrični šifrirni algoritem uporablja za šifriranje generiranega gesla med postopkom rokovanja, simetrični šifrirni algoritem za šifriranje dejanskih prenesenih podatkov, HASH algoritem pa za preverjanje integritete podatkov. Ker je geslo, ki ga ustvari brskalnik, ključ do šifriranja celotnih podatkov, je med prenosom šifrirano z asimetričnim šifrirnim algoritmom. Algoritem asimetričnega šifriranja bo generiral javne in zasebne ključe, javni ključi se lahko uporabljajo le za šifriranje podatkov, zato jih je mogoče prenašati po lastni presoji, zasebni ključi spletne strani pa se uporabljajo za dešifriranje podatkov, zato bo spletna stran zelo skrbno hranila svoj zasebni ključ, da prepreči uhajanje podatkov. Vsaka napaka med postopkom TLS ročnega stika lahko prekine šifrirano povezavo in prepreči prenos zasebnih podatkov. Prav zato, ker je HTTPS zelo varen, napadalci ne najdejo izhodišča, zato uporabljajo lažne certifikate, da zavajajo stranke in pridobijo čiste informacije, vendar je mogoče te metode prepoznati, o čemer bom govoril v naslednjem članku. Vendar pa so varnostni strokovnjaki leta 2010 odkrili ranljivost pri obravnavi protokola TLS 1.0: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/ je bila ta metoda napada, imenovana BEAST, odkrita že leta 2002, vendar ni bila javno objavljena. Microsoft in Google sta to ranljivost odpravila. Glej: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 Poenostavljena različica HTTPS deluje tudi v simetričnem šifriranju proti asimetričnemu šifriranju. |