|
Kiila Rumor Crusher julkaistiin muutama päivä sitten: "Uhkaako julkisen WiFi-yhteyden kautta internet-yhteys pankkitilien turvallisuuden? Artikkelissa esitellään joitakin tilanteita HTTPS:n käytössä verkkosalatussa siirrossa, ja vastauksen perusteella kiistoja on edelleen. Internetin suosion kasvaessa sovellus leviää yhä laajemmin, ja jotkin verkkoturvallisuusongelmat herättävät yhä enemmän huomiota nettikäyttäjiltä. Tässä puhumme TLS/SSL:stä, jota usein kutsumme HTTPS:ksi, periaatteesta varsinaiseen sovellukseen ja nähdäksemme, mitä se on ja mihin ongelmiin kannattaa kiinnittää huomiota HTTPS:ää ja siihen liittyviä tietoturvamenetelmiä käytettäessä. Kyberturvallisuus on kokonaisvaltainen tapahtuma, joka koskee henkilökohtaisten tietokoneiden, protokollien, tiedonsiirron sekä ohjelmistokehitysyritysten ja verkkosivustojen turvallisuutta. Toivon, että selittämällä tietoturvaan liittyviä asioita vähitellen tulevaisuudessa yhä useammat ihmiset ymmärtävät verkon turvallisuutta ja voivat käyttää verkkoa turvallisemmin. Artikkeli tulee olemaan pitkä, ja sen on tarkoitus jakaa toistaiseksi kolmeen osaan: Ensimmäinen osa kuvaa pääasiassa HTTPS:n periaatetta; Toinen osa kuvaa pääasiassa SSL-sertifikaattien varmennusprosessia ja joitakin varotoimia käytöstä. Kolmannessa osassa esitellään joitakin HTTPS-hyökkäyksiä. 1. Mikä on HTTPS?Ennen kuin puhutaan HTTPS:stä, puhutaanpa siitä, mitä HTTP on, eli protokolla, jota yleensä käytämme selaillessamme verkkoa. HTTP-protokollan lähettämä data on salaamatonta, eli selkotekstiä, joten yksityisen tiedon siirtäminen HTTP-protokollalla on hyvin turvatonta. Jotta nämä yksityiset tiedot voidaan salata ja siirtää, Netscape suunnitteli SSL (Secure Sockets Layer) -protokollan, joka salasi HTTP-protokollan lähettämän datan, mikä synnytti HTTPS:n. SSL:n nykyinen versio on 3.0, joka määritellään RFC 6101:ssä IETF:n (Internet Engineering Task Force) toimesta, ja sen jälkeen IETF päivitti SSL 3.0:n, mikä johti TLS (Transport Layer Security) 1.0:aan, joka määritellään RFC 2246:ssa. Itse asiassa nykyinen HTTPS-protokollamme on TLS-protokolla, mutta koska SSL ilmestyi suhteellisen varhain ja sitä tuetaan edelleen nykyisissä selaimissa, SSL on edelleen synonyymi HTTPS:lle, mutta se, onko se TLS vai SSL, on viime vuosisadan juttu, viimeisin SSL-versio on 3.0, ja TLS jatkaa salauspalveluiden tarjoamista meille tulevaisuudessa. TLS:n nykyinen versio on 1.2, määritelty RFC 5246:ssa, eikä sitä vielä laajasti käytetä. Historiasta kiinnostuneille voit katsoa http://en.wikipedia.org/wiki/Transport_Layer_Security, jossa on yksityiskohtainen kuvaus TLS/SSL:stä.
2. Onko HTTPS turvallinen?Vastaus on kyllä, se on turvallista. Seuraavien viikkojen aikana Google ottaa HTTPS:n käyttöön kaikissa paikallisissa verkkotunnuksissa ympäri maailmaa, käyttäjien tarvitsee kirjautua Google-tilillään ennen hakua, ja kaikki hakutoiminnot salataan TLS-protokollalla, ks. http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Miten HTTPS toimiiHTTPS vaatii kädenpuristuksen asiakkaan (selaimen) ja palvelimen (verkkosivuston) välillä ennen datan siirtoa, ja molempien osapuolten salasanatiedot vahvistetaan kättelyprosessin aikana. TLS/SSL-protokolla ei ole pelkästään joukko salattuja siirtoprotokollia, vaan myös taiteilijoiden huolellisesti suunnittelema taideteos, joka käyttää epäsymmetristä salausta, symmetristä salausta ja HASH-algoritmeja. Yksinkertainen kuvaus kättelyprosessista on seuraava:
- Selain lähettää sivustolle joukon salaussääntöjä, joita se tukee.
- Verkkosivusto valitsee niistä joukon salausalgoritmeja ja HASH-algoritmeja ja lähettää identiteettitietonsa selaimelle varmenteen muodossa. Varmenne sisältää tietoja kuten verkkosivuston osoitteen, salauksen julkisen avaimen ja varmenteen myöntäjän.
- Saatuaan verkkosivuston varmenteen selain tekee seuraavaa:
- Varmista varmenteen laillisuus (onko varmenteen myöntäjä laillinen, onko varmenteessa oleva verkkosivuston osoite sama kuin vierailtava osoite jne.), jos varmenteeseen luotetaan, selainpalkissa näytetään pieni lukko, muuten annetaan kehotus, että varmenteeseen ei luoteta
- Jos varmenteeseen luotetaan tai käyttäjä hyväksyy epäluotettavan varmenteen, selain luo satunnaisen määrän salasanoja ja salaa ne varmenteessa annetulla julkisella avaimella.
- Kättelyviesti lasketaan sovitun HASH:n avulla, ja viesti salataan generoidulla satunnaisluvulla, ja lopuksi kaikki aiemmin generoitu tieto lähetetään verkkosivustolle.
4. Saatuaan selaimesta tiedot verkkosivusto tekee seuraavaa: - Käytä omaa yksityistä avaintasi salasanan purkamiseen, käytä salasanaa selaimen lähettämän kättelyviestin purkamiseen ja varmista, että HASH on sama kuin selaimen lähettämä.
- Kättelyviesti salataan salasanalla ja lähetetään selaimeen.
5. Selain purkaa ja laskee kättelyviestin HASH:n, jos se on yhteneväinen palvelimen lähettämän HASH:n kanssa, kättelyprosessi päättyy, ja kaikki viestintädata salataan satunnaisella salasanalla, jonka edellinen selain luo symmetrisen salausalgoritmin avulla.
Tässä selain ja verkkosivusto lähettävät salatun kättelyviestin toisilleen ja varmistavat, että molemmat osapuolet ovat saaneet saman salasanan, voivat salata ja purkaa tiedot normaalisti sekä testata todellisen datan myöhempää siirtoa. Lisäksi HTTPS:n yleisesti käyttämät salaus- ja HASH-algoritmit ovat seuraavat: - Epäsymmetriset salausalgoritmit: RSA, DSA/DSS
- Symmetriset salausalgoritmit: AES, RC4, 3DES
- HASH-algoritmi: MD5, SHA1, SHA256
Näistä epäsymmetristä salausalgoritmia käytetään luodun salasanan salaamiseen kättelyprosessin aikana, symmetristä salausalgoritmia todellisen lähetetyn datan salaamiseen ja HASH-algoritmia datan eheyden varmistamiseen. Koska selaimen luoma salasana on avain koko datan salaukseen, se salataan epäsymmetrisellä salausalgoritmilla siirron aikana. Epäsymmetrinen salausalgoritmi tuottaa julkiset ja yksityiset avaimet, julkisia avaimia voi käyttää vain datan salaamiseen, joten ne voidaan lähettää vapaasti, ja verkkosivuston yksityisiä avaimia käytetään tietojen purkamiseen, joten verkkosivusto säilyttää yksityisen avaimensa erittäin tarkasti vuotojen estämiseksi. Mikä tahansa virhe TLS-kädenpuristusprosessin aikana voi rikkoa salatun yhteyden ja estää yksityisen tiedon siirron. Juuri siksi, että HTTPS on erittäin turvallinen, hyökkääjät eivät löydä lähtökohtaa, joten he käyttävät väärennettyjä varmenteita huijatakseen asiakkaita saadakseen selväkielistä tietoa, mutta nämä menetelmät voidaan tunnistaa, mistä kerron seuraavassa artikkelissa. Kuitenkin vuonna 2010 tietoturva-asiantuntijat löysivät haavoittuvuuden TLS 1.0 -protokollan käsittelyssä: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/ itse asiassa tämä hyökkäysmenetelmä nimeltä BEAST, löydettiin tietoturva-asiantuntijoiden toimesta jo vuonna 2002, mutta sitä ei julkistettu. Microsoft ja Google ovat korjanneet tämän haavoittuvuuden. Katso: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 HTTPS:n yksinkertaistettu versio toimii myös symmetrisen salauksen ja epäsymmetrisen salauksen välillä. |