|
Kiil Mõni päev tagasi avaldati kuulujutt: "Kas avaliku WiFi kaudu internetiühendus ohustab pangakontode turvalisust? Artikkel tutvustab mõningaid olukordi HTTPS-i kasutamisel võrgukrüpteeritud edastuseks ning vastuse põhjal on endiselt vaidlusi. Kuna internet muutub üha populaarsemaks, muutub rakendus üha laialdasemaks ning mõned võrguturvalisuse probleemid tõmbavad üha enam netikasutajate tähelepanu; siin räägime TLS/SSL-ist, mida me sageli nimetame HTTPS-iks, alates põhimõttest kuni tegeliku rakenduseni, et näha, mis see on ja millistele probleemidele tähelepanu pöörata HTTPS-i ja sellega seotud turvatehnikate kasutamisel. Küberjulgeolek on terviklik sündmus, mis hõlmab isiklike arvutite, protokollide, andmeedastuse ning tarkvaraarendusettevõtete ja veebilehtede turvalisust. Loodan, et tulevikus selgitades turvaga seotud küsimusi vähehaaval, mõistab rohkem inimesi võrguturvalisust ja saab võrku turvalisemalt kasutada. Artikkel saab olema pikk ning plaanitakse jagada praegu kolmeks osaks: Esimene osa kirjeldab peamiselt HTTPS-i põhimõtet; Teine osa kirjeldab peamiselt SSL-sertifikaadi verifitseerimise protsessi ja mõningaid kasutusabinõusid. Kolmas osa toob esile mõned HTTPS-rünnakute juhtumid. 1. Mis on HTTPS?Enne kui räägime HTTPS-ist, räägime sellest, mis on HTTP – protokoll, mida tavaliselt kasutame veebis surfades. HTTP-protokolli edastatud andmed on krüpteerimata ehk selges tekstis, mistõttu on väga ebaturvaline edastada privaatset teavet HTTP protokolli abil. Selleks, et tagada nende privaatsete andmete krüpteerimine ja edastamine, kavandas Netscape SSL (Secure Sockets Layer) protokolli, mis krüpteerib HTTP protokolli kaudu edastatud andmeid, andes sellega HTTPS-i alguse. SSL-i praegune versioon on 3.0, mis on määratletud RFC 6101-s IETF (Internet Engineering Task Force) poolt, ning seejärel uuendas IETF SSL 3.0, mille tulemusena on TLS (Transport Layer Security) 1.0, mis on määratletud RFC 2246-s. Tegelikult on meie praegune HTTPS TLS protokoll, kuid kuna SSL ilmus suhteliselt varakult ja seda toetavad praegused brauserid, on SSL endiselt sünonüüm HTTPS-ile, kuid kas see on TLS või SSL, on möödunud sajandi teema, SSL-i viimane versioon on 3.0 ning TLS jätkab meie krüpteerimisteenuste pakkumist ka tulevikus. TLS-i praegune versioon on 1.2, määratletud RFC 5246-s, kuid seda ei kasutata veel laialdaselt. Neile, kes on huvitatud ajaloost, võite vaadata http://en.wikipedia.org/wiki/Transport_Layer_Security, kus on üksikasjalik kirjeldus TLS/SSL-ist.
2. Kas HTTPS on turvaline?Vastus on jah, see on ohutu. Järgmiste nädalate jooksul lubab Google HTTPS-i kõigile kohalikele domeenidele üle maailma, kasutajad peavad enne otsingut lihtsalt oma Google'i kontoga sisse logima ning kõik otsingutoimingud krüpteeritakse TLS-protokolli abil, vt järgmist: http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Kuidas HTTPS töötabHTTPS nõuab käepigistust kliendi (brauseri) ja serveri (veebisait) vahel enne andmete edastamist ning mõlema poole parooliinfo määratakse käepigistusprotsessi käigus. TLS/SSL protokoll ei ole pelgalt krüpteeritud edastusprotokollide komplekt, vaid ka kunstiteos, mille kunstnikud on hoolikalt kujundanud, kasutades asümmeetrilist krüpteerimist, sümmeetrilist krüpteerimist ja HASH-algoritme. Lihtne kirjeldus käepigistuse protsessist on järgmine:
- Brauser saadab veebilehele komplekti krüpteerimisreegleid, mida ta toetab.
- Veebileht valib neist hulga krüpteerimis- ja HASH-algoritme ning saadab oma identiteediandmed brauserile tagasi sertifikaadi kujul. Sertifikaat sisaldab teavet nagu veebisaidi aadress, krüpteerimise avalik võti ja sertifikaadi väljastaja.
- Pärast veebilehe sertifikaadi saamist teeb brauser järgmist:
- Kontrolli sertifikaadi legitiimsust (kas sertifikaadi väljastav asutus on usaldusväärne, kas sertifikaadi veebiaadress on sama mis külastatav aadress jne), kui sertifikaat on usaldusväärne, kuvatakse brauseriribasse väike lukk, vastasel juhul antakse teade, et sertifikaati ei usaldata.
- Kui sertifikaati usaldatakse või kasutaja aktsepteerib mitteusaldusväärset sertifikaati, genereerib brauser juhusliku arvu paroole ja krüpteerib need sertifikaadi avaliku võtmega.
- Käepigistuse sõnum arvutatakse kokkulepitud HASH-i abil, sõnum krüpteeritakse genereeritud juhusliku numbriga ning lõpuks saadetakse kogu eelnevalt genereeritud info veebilehele.
4. Pärast andmete saamist brauserist teeb veebileht järgmist: - Kasuta oma privaatvõtit parooli dekrüpteerimiseks, parooliga brauseri saadetud käepigistussõnumi dekrüpteerimiseks ja kontrolli, et HASH on sama, mis brauseri saadetud.
- Käepigistuse sõnum krüpteeritakse parooliga ja saadetakse brauserisse.
5. Brauser dekrüpteerib ja arvutab käepigistuse sõnumi HASH-i, kui see on kooskõlas serveri saadetud HASH-iga, lõpeb käepigistusprotsess ning kõik suhtlusandmed krüpteeritakse juhusliku parooliga, mille eelmine brauser genereeris ja kasutades sümmeetrilist krüpteerimisalgoritmi.
Siin saadavad brauser ja veebileht üksteisele krüpteeritud käepigistuse sõnumi ja kontrollivad, et veenduda, et mõlemad pooled on saanud sama parooli ning suudavad andmeid normaalselt krüpteerida ja dekrüpteerida ning teha testi reaalse andmete edasiseks edastamiseks. Lisaks on HTTPS poolt tavaliselt kasutatavad krüpteerimis- ja HASH-algoritmid järgmised: - Asümmeetrilised krüpteerimisalgoritmid: RSA, DSA/DSS
- Sümmeetrilise krüpteerimise algoritmid: AES, RC4, 3DES
- HASH-algoritm: MD5, SHA1, SHA256
Nende hulgas kasutatakse asümmeetrilist krüpteerimisalgoritmi genereeritud parooli krüpteerimiseks käepigistuse protsessi ajal, sümmeetrilist krüpteerimisalgoritmi reaalse edastatud andmete krüpteerimiseks ning HASH-algoritmi andmete terviklikkuse kontrollimiseks. Kuna brauseri loodud parool on kogu andmete krüpteerimise võti, krüpteeritakse see edastamise ajal asümmeetrilise krüpteerimisalgoritmiga. Asümmeetriline krüpteerimisalgoritm genereerib avalikke ja privaatvõtmeid, avalikke võtmeid saab kasutada ainult andmete krüpteerimiseks, seega saab neid vabalt edastada, ning veebisaidi privaatvõtmeid kasutatakse andmete dekrüpteerimiseks, seega hoiab veebisait oma privaatvõtit väga hoolikalt, et vältida lekkeid. Iga viga TLS-i käepigistuse protsessis võib katkestada krüpteeritud ühenduse, takistades privaatse info edastamist. Just seetõttu, et HTTPS on väga turvaline, ei leia ründajad alguskohta, mistõttu kasutavad nad võltssertifikaate, et kliente petta ja saada selgetekstilist teavet, kuid neid meetodeid saab tuvastada, millest räägin järgmises artiklis. Kuid 2010. aastal avastasid turvaeksperdid TLS 1.0 protokolli käsitlemisel haavatavuse: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/ tegelikult avastasid turvaeksperdid selle rünnakumeetodi nimega BEAST juba 2002. aastal, kuid seda ei avalikustatud. Microsoft ja Google on selle haavatavuse parandanud. Vaata: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 HTTPS-i lihtsustatud versioon töötab ka sümmeetrilise krüpteerimise ja asümmeetrilise krüpteerimise puhul. |