< Return to Video

Deploying TLS 1.3: the great, the good and the bad (33c3)

  • 0:00 - 0:15
    Translated by Roope Salminen
    (ITKST56 course assignment at JYU.FI)
    (33C3 intromusiikki)
  • 0:15 - 0:20
    Herald: Seuraava esitelmä
    käsittelee TLS 1.3:n käyttöönottoa
  • 0:20 - 0:24
    ja sen pitävät Filippo Valsorda
    sekä Nick Sullivan,
  • 0:24 - 0:27
    jotka molemmat
    työskentelevät Cloudflarelle.
  • 0:27 - 0:32
    Joten toivottakaamme lämpimästi
    tervetulleeksi Nick ja Filippo!
  • 0:32 - 0:39
    (aplodeja)
  • 0:39 - 0:44
    Filippo: Hei kaikki. Puheen-
    aiheenamme tänään on TLS 1.3.
  • 0:44 - 0:48
    TLS 1.3 on tietenkin uusin versio
    TLS:stä, joka tulee sanoista
  • 0:48 - 0:53
    "Transport Layer Security".
    Se on ehkä tunnetuin
  • 0:53 - 0:58
    vihreästä lukosta selaimessa,
    tai vanhalta nimeltään SSL,
  • 0:58 - 1:03
    jota yritämme edelleen
    tappaa. TLS on
  • 1:03 - 1:08
    läpinäkyvä turvallisuusprotokolla,
    joka voi turvallisesti tunneloida
  • 1:08 - 1:12
    mielivaltaista sovellusliikennettä.
    Sitä käyttävät tietenkin web-selaimet,
  • 1:12 - 1:17
    sitä käyttävät sähköpostipalvelimet
    turvaamaan keskinäistä
  • 1:17 - 1:22
    SMTP-liikennettään. Sitä käyttävät
    Tor-solmut keskinäiseen kommunikointiinsa.
  • 1:22 - 1:27
    Mutta... Se kehittyi yli 20 vuoden ajan,
  • 1:27 - 1:31
    mutta pohjimmiltaan se koskee asiakasta
    ja palvelinta, jotka haluavat kommunikoida
  • 1:31 - 1:36
    turvallisesti verkon yli.
    Kommunikoidakseen turvallisesti verkon yli
  • 1:36 - 1:41
    niiden täytyy luoda avainmateriaalia,
    sopia keskenään avainmateriaalista
  • 1:41 - 1:47
    molemmin puolin salatakseen
    tulevan liikenteen.
  • 1:47 - 1:52
    Se, miten avainmateriaalista sovitaan,
    hoidetaan vaiheessa, jota kutsumme
  • 1:52 - 1:58
    "kättelyksi". Kättelyssä on mukana
    julkisen avaimen kryptografiaa ja
  • 1:58 - 2:03
    dataa, jota lapioidaan asiakkaalta
    palvelimelle, palvelimelta asiakkaalle.
  • 2:03 - 2:07
    Tältä kättely näyttää TLS 1.2:ssa.
  • 2:07 - 2:13
    Asiakas aloittaa tanssit
    lähettämällä "Client Hello"-viestin,
  • 2:13 - 2:19
    jossa kertoo, mitä tuettuja
    parametreja se voi käyttää.
  • 2:19 - 2:23
    Palvelin vastaanottaa sen ja
    lähettää oman viestinsä, joka on
  • 2:23 - 2:28
    "Server Hello", joka sanoo "Selvä! Käyte-
    tään tätä salausalgoritmien yhdistelmää,
  • 2:28 - 2:33
    jota sanot tukevasi, ja tässä on minun
    avainosuuteni käytettäväksi
  • 2:33 - 2:39
    tässä avaintenvaihtoalgoritmissa.
    Lisäksi, tässä on varmenne,
  • 2:39 - 2:45
    jonka on allekirjoittanut auktoriteetti,
    joka todistaa, että todellakin olen
  • 2:45 - 2:50
    Cloudflare.com. Ja tässä on allekirjoitus
    varmenteesta todistamaan, että tämä
  • 2:50 - 2:55
    avainosuus on todellakin se, jota haluan
    sinun käyttävän avainten luomiseen."
  • 2:55 - 3:01
    Asiakas vastaanottaa sen ja generoi
    oman avainosuutensa, eli oman puolensa
  • 3:01 - 3:06
    Diffie-Hellman avaintenvaihdosta,
    ja lähettää avainosuuden sekä
  • 3:06 - 3:11
    viestin kertoakseen: "Se oli siinä.
    Kättely on nyt paketissa".
  • 3:11 - 3:15
    Tätä kutsutaan "Finished" viestiksi.
    Palvelin vastaanottaa sen, luo
  • 3:15 - 3:21
    oman "Finished" viestinsä
    ja vastaa sillä. Eli
  • 3:21 - 3:26
    nyt voimme vihdoin lähettää sovellusdataa.
    Kerrataanpa vielä prosessi:
  • 3:26 - 3:30
    Asiakas -> Palvelin, Palvelin -> Asiakas;
    Asiakas -> Palvelin, Palvelin -> Asiakas.
  • 3:30 - 3:35
    Meidän täytyi tehdä 2 edestakaista matkaa
    asiakkaan ja palvelimen välillä ennen
  • 3:35 - 3:41
    mitään muuta. Emme ole lähettäneet
    tavuakaan sovelluskerroksella
  • 3:41 - 3:46
    ennen tätä. Tämä tietenkin
    matkapuhelinverkoissa
  • 3:46 - 3:51
    tai tietyissä osissa
    maailmaa voi kerryttää
  • 3:51 - 3:55
    satojen millisekuntien viiveen.
    Ja tämä täytyy tehdä
  • 3:55 - 4:01
    joka kerta, kun uutta yhteyttä avataan.
    Joka kerta asiakkaan ja palvelimen
  • 4:01 - 4:06
    täytyy kulkea kahdesti välinsä
    luodakseen avaimet ennen
  • 4:06 - 4:13
    kuin yhteyttä voi oikeasti
    käyttää. TLS 1.1
  • 4:13 - 4:18
    ja 1.0 eivät eronneet suuresti
    1.2:sta. Voisikin kysyä: "Miksi sitten
  • 4:18 - 4:24
    pitää kokonainen esitys TLS 1.3:sta,
    joka on luultavasti vain taas yksi
  • 4:24 - 4:31
    iteraatio samasta konseptista?" No, TLS
    1.3 on oikeasti iso uudelleensuunnittelu.
  • 4:31 - 4:37
    Erityisesti kättely on restukturoitu.
    Ja tämän näkyvin tulos
  • 4:37 - 4:43
    on se, että yksi kokonainen
    edestakainen matka on karsittu pois.
  • 4:43 - 4:49
    Eli, tältä näyttää TLS 1.3-kättely.
  • 4:49 - 4:53
    Kuinka 1.3 poistaa edestakaisen matkan?
    Miten se pystyy siihen? Se kykenee siihen
  • 4:53 - 5:00
    ennustamalla, mitä
    avaintenvaihtoalgoritmia
  • 5:00 - 5:05
    palvelin tulee käyttämään, ja
    lähettämällä ennakkoon avainosuuden
  • 5:05 - 5:10
    tuota algoritmia varten palvelimelle.
    Eli ensimmäisessä viestissä meillä oli
  • 5:10 - 5:16
    "Client Hello", tuetut parametrit
    ja avainosuus algoritmille,
  • 5:16 - 5:22
    josta asiakas uskoo palvelimen pitävän.
    Palvelin vastaanottaa viestin,
  • 5:22 - 5:27
    ja jos kaikki menee hyvin, se ajattelee:
    "Ah! Okei! Tykkään tästä avainosuudesta.
  • 5:27 - 5:33
    Tässä on oma avainosuuteni samaa
    algoritmia varten, ja tässä muut
  • 5:33 - 5:38
    parametrit, joita meidän tulisi käyttää."
    Se välittömästi sekoittaa avainosuudet
  • 5:38 - 5:42
    saadakseen jaetun yhteisen avaimen, koska
    nyt sillä on molemmat avainosuudet -
  • 5:42 - 5:47
    asiakkaan ja palvelimen - ja lähettää
    taas varmenteen ja allekirjoituksen
  • 5:47 - 5:51
    varmenteesta, ja sitten välittömästi
    lähettää "Finished"-viestin, koska
  • 5:51 - 5:56
    se ei tarvitse mitään muuta asiakkaalta.
    Asiakas vastaanottaa tuon, ottaa
  • 5:56 - 6:02
    avainosuuden, luo jaetun yhteisen avaimen
    ja lähettää oman "Finished" viestinsä,
  • 6:02 - 6:07
    ja on valmis lähettämään sitä sovellus-
    dataa, jota olikaan lähettämässä.
  • 6:07 - 6:13
    Esimerkiksi HTTP-pyynnön.
    Nyt prosessi meni näin:
  • 6:13 - 6:16
    Asiakas -> Palvelin, Palvelin -> Asiakas.
  • 6:16 - 6:21
    Ja olemme valmiita lähettämään
    sovelluskerroksen dataa. Eli, jos olit
  • 6:21 - 6:27
    avaamassa HTTPS-yhteyttä, selaimesi
  • 6:27 - 6:33
    ei tarvitse odottaa nelinkertaista viivettä,
    nelinkertaista pingiä. Sen täytyy
  • 6:33 - 6:39
    odottaa vain kaksinkertainen, ja tämä
    tietysti säästää satoja millisekunteja
  • 6:39 - 6:46
    viivettä kun avataan uusia yhteyksiä.
    Tämä oli onnellinen tapaus.
  • 6:46 - 6:52
    Näin käy, kun ennustus osuu oikeaan
    ja palvelin tykkää asiakkaan
  • 6:52 - 6:58
    avainosuudesta. Jos palvelin
    ei tue avainosuutta, jonka
  • 6:58 - 7:05
    asiakas lähetti, se lähettää kohteliaan
    pyynnön käyttää jotain toista algoritmia,
  • 7:05 - 7:11
    jota asiakas sanoi tukevansa. Tätä viestiä
    kutsutaan nimellä "Hello Retry Request".
  • 7:11 - 7:16
    Siinä on eväste, joten se voi olla tilaton
    mutta periaatteessa se on varakeino,
  • 7:16 - 7:22
    jolla palataan käytännössä TLS 1.2-
    kaltaiseen kättelyyn. Eikä se ole kovin
  • 7:22 - 7:27
    vaikea toteuttaa, koska asiakas jatkaa
    uudella "Client Hello":lla, joka näyttää
  • 7:27 - 7:34
    periaattessa täysin samalta kuin
    täysin tuorekin. Nyt...
  • 7:34 - 7:42
    Tässä kohtaa olen valehdellut. TLS 1.2
    ei aina ole 2 edestakaista matkaa.
  • 7:42 - 7:48
    Suurin osa yhteyksistä, joita näemme
    esimerkiksi Cloudflaren reunalta ovat
  • 7:48 - 7:53
    istunnon jatkamisia. Eli asiakas on ollut
    yhteydessä k.o. sivustolle aiemmin.
  • 7:53 - 7:59
    Ja voimme käyttää tätä, voimme hyödyntää
    tätä ja tehdä kättelystä nopeamman.
  • 7:59 - 8:06
    Tämä tarkoittaa, että asiakas muistaa
    jotain avainmateriaalista, jotta pystyy
  • 8:06 - 8:11
    avaamaan seuraavan yhteyden vain yhdellä
    edestakaisella matkalla myös TLS 1.2:ssa.
  • 8:11 - 8:16
    Eli tältä se näyttää. Tässä on normaali
    TLS 1.2:n täysi kahden edestakaisen
  • 8:16 - 8:22
    matkan yhteys. Ja tässä palvelin lähettää
    lipun uutta istuntoa varten. Istuntolippu
  • 8:22 - 8:30
    ei ole sen kummempi kuin salattu kapse-
    loitu blob sisältäen avainmateriaalia,
  • 8:30 - 8:35
    jonka asiakas säilyttää. Istuntolippu on
    salattu ja allekirjoitettu avaimella,
  • 8:35 - 8:40
    jonka vain palvelin tietää. Eli se on
    täysin läpinäkymätön asiakkaalle.
  • 8:40 - 8:45
    Mutta asiakas säilyttää sen sekä
    yhteyden avainmateriaalin,
  • 8:45 - 8:49
    jotta seuraavan kerran kun se avaa
    yhteyttä samalle sivustolle
  • 8:49 - 8:54
    se lähettää "Client Hello":n
    ja istuntolipun.
  • 8:54 - 8:59
    Jos palvelin tunnistaa istuntolipun, se
    purkaa sen salauksen ja löytää sisältä
  • 8:59 - 9:04
    avainmateriaalin. Ja nyt, vain yhden edes-
    takaisen matkan jälkeen, palvelimella on
  • 9:04 - 9:10
    yhteistä avainmateriaalia asiakkaan kanssa
    koska asiakas säilytti sen viime kerrasta
  • 9:10 - 9:15
    ja palvelin juuri purki sen
    salatusta istuntolipusta.
  • 9:15 - 9:21
    Ok? Eli nyt palvelimella on jo käytet-
    tävissä yhteisiä jaettuja avaimia ja se
  • 9:21 - 9:26
    lähettää "Finished"-viestin ja asiakas
    vastaa "Finished"-viestillä ja pyynnöllä.
  • 9:26 - 9:32
    Eli tämä on TLS 1.2. Tätä tapahtuu
    jo nyt joka päivä useimpien
  • 9:32 - 9:37
    modernien TLS-yhteyksien kanssa.
  • 9:37 - 9:44
    TLS 1.3-istunnon jatkaminen ei ole kovin
    erilainen. Siinäkin on istuntolipun käsite
  • 9:44 - 9:48
    Istuntolipun sisällön nimi on muutettu
    "PSK":ksi, mutta se tulee vain sanoista
  • 9:48 - 9:53
    "Pre-shared Key", koska sitähän se on:
    pelkkää avainmateriaalia, josta
  • 9:53 - 9:58
    oli sovittu aiemmin.
    Ja se toimii samalla tavalla:
  • 9:58 - 10:03
    palvelin vastaanottaa istuntolipun,
    purkaa salauksen ja hyppää
  • 10:03 - 10:07
    "Finished"-viestiin. Nyt...
  • 10:07 - 10:13
    Ongelma istunnon jatkamisessa on se,
    että jos hyökkääjällä on hallussaan
  • 10:13 - 10:17
    istuntolipun avain - eli avain, jota
    palvelin käyttää salamaan istuntolipun,
  • 10:17 - 10:22
    jonka sisällä avainmateriaali on -
  • 10:22 - 10:27
    hyökkääjä voi passiivisesti, tai jopa
    tulevaisuudessa kaapatun yhteyden
  • 10:27 - 10:33
    tapauksessa, purkaa istuntolipun
    "Client Hello":sta, löytää sieltä PSK:n
  • 10:33 - 10:38
    ja käyttää sitä purkamaan koko loppu-
    yhteyden salauksen. Tämä ei ole hyvä.
  • 10:38 - 10:43
    Tämä tarkoittaa, että joku voi
    passiivisesti purkaa salauksen
  • 10:43 - 10:48
    hallinnoimalla istuntolipun avainta.
    Tähän vastataan yleensä sanomalla, että
  • 10:48 - 10:53
    Lippujen avaimet vanhenevat nopeasti.
    Mutta eikö olisi mukavaa, jos meidän ei
  • 10:53 - 10:56
    tarvitsisi luottaa siihen. Ja on itse
    asiassa julkaisuja, jotka kertovat meille
  • 10:56 - 11:01
    että toteutukset eivät aina
    tee tuota oikein. Siispä,
  • 11:01 - 11:07
    TLS 1.3 sen sijaan mahdollistaa
    Diffie-Hellmanin käytön
  • 11:07 - 11:12
    istunnon jatkamisessa. 1.2:ssa
    ei ollut keinoja suojautua istunto-
  • 11:12 - 11:17
    lipun avaimen murtamisen
    seurauksilta. 1.3:ssa voi sen sijaan
  • 11:17 - 11:21
    lähettää avainosuuden
    osana "Client Hello":ta
  • 11:21 - 11:25
    ja palvelin lähettää avainosuuden
    "Server Hello":n yhteydessä,
  • 11:25 - 11:32
    ja osapuolet suorittavat Diffie-Hellmanin.
    Diffie-Hellmania käytettiin
  • 11:32 - 11:36
    jatkosuojauksen toteuttamiseen esimerkiksi
    sen varalta, että varmenteen yksityinen
  • 11:36 - 11:41
    avain joutuisi vääriin käsiin 1.2:ssa, ja
    tässä sitä käytetään jatkosuojauksen
  • 11:41 - 11:46
    toteuttamiseen istunnon jatkamisessa.
    Nyt, saatatte miettiä:
  • 11:46 - 11:51
    "Tämä näyttää periaatteessa
    normaalilta 1.3 kättelyltä,
  • 11:51 - 11:56
    mikä virka PSK:lla on ylipäätään?"
    Tästäpä puuttuukin jotakin.
  • 11:56 - 12:00
    Varmennetta ei ole. Koska ei ole
    tarvetta autentikoida uudelleen
  • 12:00 - 12:05
    varmenteen avulla, koska asiakas ja
    palvelin juttelivat aiemmin, joten
  • 12:05 - 12:09
    asiakas tietää tarkistaneensa jo
    palvelimen varmenteen,
  • 12:09 - 12:13
    ja mikäli palvelin pystyy purkamaan
    istuntolipun salauksen, se tarkoittaa,
  • 12:13 - 12:18
    että palvelin on se joksi itseään väittää.
    Joten kaksi avainosuutta yhdistetään.
  • 12:18 - 12:23
    Sitten ne yhdistetään PSK:n kanssa, jotta
    saadaan avain, jolla salataan loput
  • 12:23 - 12:30
    yhteydestä. On olemassa vielä
    yksi uusi ominaisuus, jonka
  • 12:30 - 12:35
    TLS 1.3 istunnon jatkaminen tuo
    mukanaan. Se on se seikka, että se
  • 12:35 - 12:41
    mahdollistaa kättelyn ilman edestakaista
    matkaa (0-RTT). Muistutuksena,
  • 12:41 - 12:47
    kaikki kättelyt 1.3:ssa koostuvat enim-
    mäkseen yhdestä edestakaisesta matkasta.
  • 12:47 - 12:52
    TSL 1.2 istunnon jatkamiset voivat olla
    minimissään yhden edestakaisen matkan.
  • 12:52 - 12:58
    TLS 1.3 istunnon jatkamiset voivat toimia
    ilman edestakaista matkaa. Kuinka 0-RTT
  • 12:58 - 13:04
    kättely toimii? Ajatellaanpa.
    Alkuun on PSK.
  • 13:04 - 13:10
    Pre-shared Key.
    Asiakas voi käyttää sitä salaamaan
  • 13:10 - 13:16
    tämän alkudatan, jonka haluaa lähettää
    palvelimelle. Joten asiakas avaa
  • 13:16 - 13:20
    yhteyden palvelimeen, johon
    on jo aiemmin ollut yhteydessä,
  • 13:20 - 13:25
    ja lähettää "Client Hello":n,
    istuntolipun,
  • 13:25 - 13:30
    avainosuuden Diffie-Hellmaniin ja
    alkudatan. Alkudata on
  • 13:30 - 13:34
    blob sovellusdataa - se voi olla
    esimerkiksi HTTP-pyyntö -
  • 13:34 - 13:39
    salattuna PSK:lla.
    Palvelin vastaanottaa tämän,
  • 13:39 - 13:45
    purkaa istuntolipun, löytää PSK:n,
    käyttää PSK:ta purkamaan
  • 13:45 - 13:51
    alkudatan ja jatkaa sitten normaalisti:
    yhdistää avainosuudet, lisää PSK:n,
  • 13:51 - 13:55
    luo uuden avaimen lopulle
    yhteydelle ja jatkaa yhteyttä.
  • 13:55 - 14:00
    Eli mitä tässä tapahtui? Voimme lähettää
    sovellusdataa välittömästi yhteyden
  • 14:00 - 14:05
    avaamisen yhteydessä. Tämä tarkoittaa,
    että poistimme suorituskyvyn
  • 14:05 - 14:11
    yleiskustannukset TLS:ssä.
  • 14:11 - 14:16
    0-RTT kättelyissä on kuitenkin kaksi
    vaaran paikkaa, jotka ovat teoriassa
  • 14:16 - 14:23
    mahdoton poistaa. Yksi on se, että
    se kiva asia joka tuli PSK ECDHE moodin
  • 14:23 - 14:28
    mukana, se jossa käytetään Diffie-
    Hellmania istunnon jatkamiseen
  • 14:28 - 14:33
    1.3:ssa, ei auta 0-RTT datan kanssa.
  • 14:33 - 14:39
    Käytämme Diffie-Hellmania kun
    saavumme dian vihreään laatikkoon.
  • 14:39 - 14:44
    Tietysti alkudata on salattu vain
    PSK:lla. Mietitäänpä taas
  • 14:44 - 14:49
    hyökkääjää. Hyökkääjä jollain keinolla
    varasti istuntolippumme salausavaimet.
  • 14:49 - 14:55
    Se voi katsoa "Client Hello":a, purkaa
    istuntolipun, saada PSK:n,
  • 14:55 - 15:00
    käyttää PSK:ta purkamaan
    alkudatan salauksen.
  • 15:00 - 15:05
    Se voi tehdä tämän kaapatustakin liiken-
    teestä, jos saa istuntolipun myöhemmin.
  • 15:05 - 15:12
    Siispä alkudata ei ole jatkosuojattu
    istuntolipun avainten suhteen.
  • 15:12 - 15:17
    Pelkkä PSK on kuitenkin hyödytön, jos
    käytämme Diffie-Hellmania palvelimen
  • 15:17 - 15:23
    vastauksessa. Se on hyödyllinen ainoastaan
    asiakkaan ensimmäisen viestin kohdalla.
  • 15:23 - 15:28
    Kerrataanpa. Tässä on
    paljon asiaa. TLS 1.2 toi
  • 15:28 - 15:33
    jatkosuojauksen sen varalle, että
    varmenteen yksityinen avain
  • 15:33 - 15:39
    joutuisi vääriin käsiin, jo kauan sitten
    käyttämällä ECDHE moodeja.
  • 15:39 - 15:45
    Siis 1.2 yhteydet voivat olla aina jatko-
    suojattuja varmenteen murtamisen
  • 15:45 - 15:50
    varalta. TLS 1.3 toimii samoin.
  • 15:50 - 15:55
    Ei ole moodia, joka olisi jatkosuojaamaton
    varmenteen murtamisen varalta.
  • 15:55 - 16:01
    Mutta, jos ajatellaan mitä
    istuntolipun avaimelle voi käydä:
  • 16:01 - 16:06
    TLS 1.2 ei koskaan tarjoa jatkosuojausta.
  • 16:06 - 16:11
    TLS 1.2:ssa istuntolipun avaimen
    murtaminen johtaa aina kykyyn passiivisesti
  • 16:11 - 16:16
    murtaa tulevien jatkettujen
    istuntojen salaus.
  • 16:16 - 16:23
    1.3:ssa sen sijaan, jos käytämme
    PSK ECDHE:tä, ainoastaan alkudatan salaus
  • 16:23 - 16:28
    voidaan purkaa käyttämällä
    pelkästään istuntolipun avainta.
  • 16:28 - 16:33
    Kuten sanoin, vaaran paikkoja on kaksi.
  • 16:33 - 16:39
    Toinen se, että 0-RTT dataa voidaan
    käyttää toistohyökkäyksessä.
  • 16:39 - 16:45
    Olkoon tilanne tämä: alkudata
    sisältää dataa, joka on jollain tapaa
  • 16:45 - 16:52
    autentikoitu. Se voi olla HTTP-
    pyyntö, joka sisältää evästeitä.
  • 16:52 - 16:58
    Tuo HTTP-pyyntö jollain
    tapaa suorittaa transaktion,
  • 16:58 - 17:03
    okei? Ehkä se on tilisiirto. Ohjeistaa
    palvelinta tekemään jotain. Hyökkääjä
  • 17:03 - 17:08
    haluaa toistaa tuota tapahtumaa. Se ei
    tietenkään voi purkaa sen salausta
  • 17:08 - 17:13
    - sehän on suojattu TLS:llä. Eli se ei voi
    nähdä evästeen sisältöä, eikä se voi
  • 17:13 - 17:18
    muokata sitä, koska se on TLS-suojattu.
    Mutta se voi kaapata salatun
  • 17:18 - 17:23
    viestin ja lähettää sen uudelleen
  • 17:23 - 17:28
    palvelimelle. Jos palvelimia on yksi,
    tähän on helppo ratkaisu.
  • 17:28 - 17:33
    Pidä kirjaa nähdyistä viesteistä
    ja ajattele kutakuinkin näin:
  • 17:33 - 17:38
    "Ei. Tämä näyttää täsmälleen samalta kuin
    mitä sain aiemmin." Mutta jos esimerkiksi,
  • 17:38 - 17:42
    kuten Cloudflare, pyörität useita data-
    keskuksia ympäri maailmaa, et voi pitää
  • 17:42 - 17:48
    yhdenmukaisia tiloja jatkuvasti, reaali-
    ajassa, kaikkien koneiden välillä. Olisi
  • 17:48 - 17:52
    eri koneita, jotka tämän viestin
    saatuaan ajattelisivat näin:
  • 17:52 - 17:58
    "Toki, minulla on istuntolipun avain,
    dekryptaan PSK:n, käytän PSK:ta,
  • 17:58 - 18:02
    dekryptaan alkudatan, löydän sieltä jotain
    ja suoritan sen mitä se käskee minun
  • 18:02 - 18:08
    tehdä." Tämä ei tietenkään ole suotavaa.
  • 18:08 - 18:13
    Yksi TLS.n tarjoama vastatoimi on,
    että asiakas lähettää samassa
  • 18:13 - 18:19
    paketissa arvon, joka kertoo
    millisekunteina, kuinka kauan sitten sain
  • 18:19 - 18:24
    haltuuni istuntolipun. Palvelin katsoo
    sitä arvoa, ja jos se ei täsmää
  • 18:24 - 18:29
    sen omaan näkemykseen tästä
    tiedosta, se hylkää viestin.
  • 18:29 - 18:34
    Tämä tarkoittaa, että jos hyökkääjä
    kaappaa viestin ja 10 s myöhemmin
  • 18:34 - 18:40
    yrittää toistohyökkäystä, ajat eivät
    täsmää ja palvelin hylkää viestin.
  • 18:40 - 18:45
    Tämä ei kuitenkaan ole täysi ratkaisu,
    sillä tarpeeksi nopea hyökkääjä voi
  • 18:45 - 18:50
    silti tehdä toistohyökkäyksiä.
    Eli, palvelin voi ainoastaan joko
  • 18:50 - 18:56
    hyväksyä 0-RTT datan
    tai hylätä sen.
  • 18:56 - 19:01
    Se ei voi vain ottaa jotain osaa siitä tai
    kurkistaa siihen ja päättää sitten, koska
  • 19:01 - 19:06
    "Server Hello"-viesti kertoo (asiakkaalle)
    hyväksyttiinkö vai hylättiinkö se.
  • 19:06 - 19:10
    Ja asiakas jatkaa alkudatan lähettämistä
    kunnes se saa "Server Hello"-viestin.
  • 19:10 - 19:16
    Tässä on kilpailu. Joten palvelimen täytyy
    sokkona päättää "Otanko 0-RTT dataa vastaan
  • 19:16 - 19:21
    vai hylkäänkö sen kaiken?" Jos se ottaa
    sen, ja sitten huomaa sen olevan jotain
  • 19:21 - 19:27
    mitä se ei voi prosessoida koska "Herran-
    jestas, täällä on HTTP POST, joka käskee
  • 19:27 - 19:32
    siirtämään rahaa. En voi tehdä tätä, jos
    en tiedä ettei tämä ole toistohyökkäys."
  • 19:32 - 19:37
    Palvelimen täytyy saada jonkinlainen
    vahvistus. Hyvä uutinen on se, että jos
  • 19:37 - 19:41
    palvelin odottaa "Finished"
    viestiä... Palvelin lähettää
  • 19:41 - 19:45
    "Server Hello":n, "Finished":n ja
    odottaa asiakkaan vastaavaa.
  • 19:45 - 19:51
    Kun asiakkaan oma saapuu, se tarkoittaa,
    ettei kyseessä ollut toistohyökkäys,
  • 19:51 - 19:55
    sillä tuo "Finished" viesti
    viimeistelee koko kättelyn
  • 19:55 - 20:00
    yhdessä tietyn satunnaisarvon kanssa,
    jonka palvelin lähetti. Kyseessä ei siis
  • 20:00 - 20:04
    voi olla toistohyökkäys. Eli nämä ovat
    palvelimen vaihtoehdot: se voi hyväksyä
  • 20:04 - 20:09
    alkudatan ja jos se on jotain mikä
    ei ole idempotenttia, jotain mikä on
  • 20:09 - 20:15
    vaarallista jos se toistetaan, se voi
    yksinkertaisesti odottaa vahvistusta.
  • 20:15 - 20:19
    Mutta se tarkoittaa, että se on laitettava
    välimuistiin, ja tässä on riski, mikäli
  • 20:19 - 20:26
    hyökkääjä lähettää HTTP POST:n valtavalla
    rungolla tarkoituksenaan täyttää muisti.
  • 20:26 - 20:32
    Tajusimme voivamme auttaa tässä,
    jos kirjoitamme istuntolippuihin,
  • 20:32 - 20:37
    mikä on maksimimäärä alkudataa,
    jonka asiakas voi lähettää.
  • 20:37 - 20:42
    Jos huomaamme jonkun lähettävän
    enemmän, kyseessä on hyökkääjä ja
  • 20:42 - 20:47
    katkaisemme yhteyden, tyhjennämme
    välimuistin vapauttaaksemme muistia.
  • 20:47 - 20:53
    Mutta. Joka tapauksessa. Vastatoimista
    huolimatta, ellemme pysty pitämään
  • 20:53 - 20:59
    yhtenäistä maailmanlaajuista tilaa
    palvelimien välillä, meidän täytyy kertoa
  • 20:59 - 21:03
    sovellukselle toistohyökkäyksen mahdol-
    lisuudesta. Spesifikaatio tietää tämän.
  • 21:03 - 21:08
    TLS 1.3 spesifikaatio YKSISELITTEISESTI toteaa
  • 21:08 - 21:14
    protokollien EI tule käyttää
    0-RTT:tä ilman profiilia, joka
  • 21:14 - 21:19
    määrittelee sen käytön. Eli tarkoittaa
    "tietämättä mitä ne ovat tekemässä".
  • 21:19 - 21:24
    Tämä tarkoittaa, että TLS-pinon APIen
    täytyy tehdä oletuksena 1-RTT,
  • 21:24 - 21:30
    johon toistohyökkäykset eivät
    toimi, ja sitten antaa palvelimen
  • 21:30 - 21:36
    kutsua joitakin API:a hylätäkseen
    tai odottaakseen vahvistusta,
  • 21:36 - 21:41
    ja antaa asiakkaan päättää, mitä tähän
    vaaralliseen toistohyökkäysalttiiseen
  • 21:41 - 21:46
    dataan tulee. Tämä riippuu
  • 21:46 - 21:50
    protokollasta, mutta entäpä
    lempiprotokollamme? Entäpä
  • 21:50 - 21:55
    HTTP? HTTP:n pitäisi olla
    helppo. HTTP-spesifikaatio,
  • 21:55 - 22:01
    käykää vaikka lukemassa, sanoo:
    "GET-pyynnöt ovat idempotentteja,
  • 22:01 - 22:06
    niiden ei tule muuttaa mitään palveli-
    mella". Selvä! Sallimme nyt ainoastaan
  • 22:06 - 22:11
    GET-pyynnöt alkudatassa, koska niitä ei
    voi hyödyntää toistohyökkäyksissä!
  • 22:11 - 22:17
    Jes! Ei. (huokaus) Internetissä on
    takuuvarmasti palvelin,
  • 22:17 - 22:23
    jossa on jotain sen kaltaista kuin
    “send-money.php?to=filippo&amount=this”
  • 22:23 - 22:29
    ja se on GET-pyyntö. Ja jos hyökkääjä
    kaappaa tämän, mikä on alkudataa,
  • 22:29 - 22:34
    ja sitten käyttää tätä toistohyök-
    käyksessä toista palvelinta vastaan, se
  • 22:34 - 22:39
    suoritetaan kahdesti.
    Ja se ei käy päinsä.
  • 22:39 - 22:43
    Mitä siis voidaan tehdä?
  • 22:43 - 22:47
    Teemme kompromisseja!
  • 22:47 - 22:52
    Jos tunntet sovelluksesi, voit tehdä hyvin
    spesifejä kompromisseja. Esimerkiksi
  • 22:52 - 22:57
    Google on ajanut QUIC:iä
    0-RTT:llä hyvinkin pitkään.
  • 22:57 - 23:02
    Uskoakseni 3 vuotta? Se tarkoittaa, että
    he tuntevat sovelluksensa oikein hyvin.
  • 23:02 - 23:07
    Ja he tietävät, ettei heillä ole
    "send-money.php" päätepisteitä.
  • 23:07 - 23:13
    Mutta jos olet kuin Cloudflare, joka
    hallinnnoi suurta määrää sovelluksia,
  • 23:13 - 23:18
    et voi tehdä noin laajoja olettamuksia,
    ja täytyy sen sijaan yrittää
  • 23:18 - 23:23
    löytää kultainen keskitie. Me
    saattaisimme esimerkiksi päättää
  • 23:23 - 23:29
    sallia GET-pyynnöt ainoastaan
    juurihakemistoon. Eli "GET /",
  • 23:29 - 23:33
    mikä saattaisi tuoda eniten hyötyä, sillä
    ehkä suurin osa yhteyksistä alkaa noin,
  • 23:33 - 23:39
    ja se on vähiten todennäköinen
    aiheuttamaan hankaluuksia.
  • 23:39 - 23:43
    Mietimme edelleen kuinka sovellamme
    tätä sovelluksiin. Eli jos tiedossasi
  • 23:43 - 23:48
    on sovellus, joka tulisi kärsimään
    jostain noin yksinkertaisesta,
  • 23:48 - 23:54
    lähetä meille sähköpostia. Mutta
    itse asiassa, jos sinulla on noin
  • 23:54 - 23:59
    haavoittuvainen sovellus, minulla
    on huonoja uutisia. Thai Duong et. al.
  • 23:59 - 24:04
    osoittivat, että tämän päivän selaimet,
    ilman TLS 1.3:a tai muutakaan,
  • 24:04 - 24:10
    toistavat HTTP-pyyntöjä
    verkkovirheiden sattuessa.
  • 24:10 - 24:16
    Ja ne toistavat ne hiljaisesti.
    Eli lopputulema ei välttämättä ole
  • 24:16 - 24:22
    huonompi kuin nykytila. Selvä.
    Näen, että kaikki alkavat olla
  • 24:22 - 24:28
    levottomia ja ajattelevat
    "Kryptografit ovat taas asialla!
  • 24:28 - 24:33
    He tekevät tarvitsemastamme turvallisuus-
    protokollasta tarpeettoman monimutkaisen
  • 24:33 - 24:39
    turvatakseen työpaikkansa
    seuraavaksi 15 vuodeksi!" Eikö?
  • 24:39 - 24:44
    Ei. Ei. Voin itseasiassa taata, että
  • 24:44 - 24:50
    yksi suurista muutoksista, mielestäni
    suurempi kuin edestakaiset matkat 1.3:ssa,
  • 24:50 - 24:55
    on, että kaikkea punnitaan saadun hyödyn
    ja sen aiheuttaman monimutkaisuuden
  • 24:55 - 24:59
    kannalta. Ja vaikka 0-RTT pääsi jatkoon
  • 24:59 - 25:03
    valtaosa ei päässyt.
  • 25:03 - 25:08
    Nick: Selvä. Kiitos Filippo. Toimiiko
    mikrofonini? Kuuletteko minut? Selvä.
  • 25:08 - 25:14
    TLS 1.3:n ollessa iteraatio TLS:stä
    mekin katsoimme taaksepäin, tai,
  • 25:14 - 25:18
    "me", jotka olemme ihmiset jotka tutkivat
    TLS:ää, katsoimme taaksepäin ja
  • 25:18 - 25:23
    kertasimme olemassa olevia TLS 1.2:n omi-
    naisuuksia, jotka vaikuttivat järkeviltä
  • 25:23 - 25:27
    aikanaan ja päätimme, oliko kompleksisuus
    tai vaara, jonka nämä TLS:n ominaisuudet tai
  • 25:27 - 25:32
    protokollat tai primitiivit toivat mukanaan
  • 25:32 - 25:38
    järkeviä säilyttää. Ja yksi iso,
    joka sattui prosessin alussa on
  • 25:38 - 25:44
    "staattinen RSA" moodi. Näin TLS on
    toiminut SSL:n ajoista lähtien.
  • 25:44 - 25:48
    Sen sijaan, että käytettäisiin Diffie-
    Hellmania yhteisen avaimen luontiin,
  • 25:48 - 25:52
    asiakas luo oman jaetun avaimensa, ja
    salaa sen palvelimen varmenteen
  • 25:52 - 25:57
    julkisella avaimella, joka on
    RSA-avain, ja lähettää sen sitten
  • 25:57 - 26:01
    sellaisenaan palvelimelle. Ja
    palvelin sitten käyttää omaa
  • 26:01 - 26:05
    yksityistä avaintaan purkamaan salauksen
    ja löytää yhteisen avaimen. Eli asiakas
  • 26:05 - 26:10
    luo kaiken avainmateriaalin tässä
    tapauksessa. Yksi asia on melko selvä
  • 26:10 - 26:14
    tässä on, että jos varmenteen
    yksityinen avain murretaan,
  • 26:14 - 26:18
    vaikka vuosiakin myöhemmin, joku
    jolla on tallenteet tapahtumista voi
  • 26:18 - 26:23
    mennä taaksepäin ja purkaa tämän avain-
    materiaalin ja siten koko keskustelun.
  • 26:23 - 26:28
    Tämä poistettiin ihan TLS 1.3-prosessin
    alkuvaiheessa, noin kaksi vuotta sitten.
  • 26:28 - 26:34
    Joten suureksi yllätykseksemme,
    ja kaikkien, jotka kuuluvat
  • 26:34 - 26:40
    TLS:ää koskevaan sähköpostitus-
    listaan, ihan vasta äskettäin,
  • 26:40 - 26:45
    standardointiprosessin loppuvaiheessa,
    kun TLS 1.3 oli melkein valmis,
  • 26:45 - 26:51
    tämä sähköposti ilmestyi. Ja tämä on
    Andrew Kennedyltä, joka työskentelee
  • 26:51 - 26:57
    BITS:lle, mikä tarkoittaa pääpiirteittäin,
    että hän työskentelee pankeille. Hän sanoo
  • 26:57 - 27:02
    "RSA-avaintenvaihdon tuen lopettaminen
    TLS 1.3:ssa aiheuttaa suuria ongelmia
  • 27:02 - 27:07
    finanssilaitoksille, joista melkein kaikki
    käyttävät TLS:ää sisäisesti ja joilla on
  • 27:07 - 27:13
    suuria, turvallisuuskriittisiä investoin-
    teja ulkopuoliseen TLS-dekryptaamiseen.
  • 27:13 - 27:18
    "Ulkopuoliseen (3. osapuolen) TLS-dekryp-
    taamiseen" hmm.. (naurua - aplodeja)
  • 27:18 - 27:23
    Se todella kuulostaa kriittiseltä...
    kriittiseltä jollekin, eikö?
  • 27:23 - 27:26
    (naurua - aplodeja)
    Eli...
  • 27:26 - 27:32
    (naurua)
    (aplodeja)
  • 27:32 - 27:37
    Yksi valonpilkahduksista oli Kenny
    Patersonin vastaus tähän,
  • 27:37 - 27:42
    joka kuului näin: "Minun näkemykseni
    pyyntöäsi koskien: ei.
  • 27:42 - 27:45
    Perustelu: Yritämme rakentaa TURVALLISEM-
    PAA internetiä." Korostus
  • 27:45 - 27:47
    on oma lisäykseni, mutta
    hän varmasti tarkoitti sitä.
  • 27:47 - 27:54
    (aplodeja)
  • 27:54 - 27:59
    Tämän jälkeen pankkiväki saapui IETF:ään
    ja näytti tämän dian kuvaillakseen, kuinka
  • 27:59 - 28:04
    vaikeaa heidän järjestelmänsä
    debuggaaminen on. Tämä on yksinkertaista..
  • 28:04 - 28:09
    Ilmeisesti pankkiympäristössä. Nuo
    ovat eri kytkimiä, reitittimiä,
  • 28:09 - 28:14
    väliohjelmistoja, web-sovelluksia
    ja kaikki keskustelevat TLS:llä.
  • 28:14 - 28:20
    Tämän keskustelun jälkeen
    päädyimme kompromissiin.
  • 28:20 - 28:24
    Protokollan vaarantamisen
    sijaan Matthew Green
  • 28:24 - 28:29
    opetti heille, kuinka käyttää Diffie-
    Hellmania väärin. Lopulta he kykenivät
  • 28:29 - 28:33
    siihen, mitä halusivat ilman,
    että me - tai kukaan muu
  • 28:33 - 28:37
    akateemisessa yhteisössä tai
    TLS-yhteisössä - palautti
  • 28:37 - 28:42
    TLS:ään tämän turvattoman osan.
  • 28:42 - 28:46
    Jos haluat lukea tämän, se kertoo
    kuinka tähän pystytään. Joka tapauksessa
  • 28:46 - 28:50
    - emme laittaneet sitä takaisin.
    Kiteytettynä, älkää tehkö näin!
  • 28:50 - 28:54
    (aplodeja)
  • 28:54 - 29:00
    Eli tapoimme staattisen RSA:n, ja mitä
    muuta tapoimme? No, kun katsotaan
  • 29:00 - 29:04
    taaksepäin hyötyihin ja haittoihin,
    TLS 1.2 käyttää tiettyjä primitiivejä,
  • 29:04 - 29:09
    jotka vain eivät ole
    kestäneet ajan hammasta.
  • 29:09 - 29:12
    RC4 jonosalain. Poissa!
    (aplodeja)
  • 29:12 - 29:15
    3DES (Triple DES) lohkosalain. Poissa!
    (aplodeja)
  • 29:15 - 29:22
    MD5, SHA1... molemmat poissa. Yo!
    (jatkuvia aplodeja)
  • 29:22 - 29:26
    On vielä rakennelmia, jotka...
    peruslohkosalainrakennelmia,
  • 29:26 - 29:32
    jotka ovat poissa: AES-CBC.
    Poissa. RSA-PKCS1-1.5,
  • 29:32 - 29:37
    tämä on tiedetty ongelmalliseksi
    jo vuodesta 1998, myöskin poissa!
  • 29:37 - 29:42
    Myös muita ominaisuuksia, kuten kompressio
    ja uudellenneuvottelu, on poistettu.
  • 29:42 - 29:47
    Jälkimmäisen korvasi hyvin kevyt "avaimen
    päivitys"-mekanismi. Siis TLS 1.3:ssa
  • 29:47 - 29:52
    mikään näistä ei läpäissyt hyöty vs.
    kompleksisuus -testiä. Ja monet näistä
  • 29:52 - 29:58
    haavoittuvuksista, joita saatatte
    tunnistaa, ovat mahdottomia TLS 1.3:ssa.
  • 29:58 - 30:04
    (aplodeja)
  • 30:04 - 30:09
    TLS 1.3:n filosofia monessa kohtaa
    on yksinkertaistaa ja lujittaa
  • 30:09 - 30:15
    mahdollisimman paljon. Tästä on
    useita pieniä esimerkkitapauksia.
  • 30:15 - 30:19
    Osa tämän julkaisun kirjoittajista
    saattaa löytyä yleisöstä. Oli tapa
  • 30:19 - 30:24
    käytää lohkosalaimia itse
    tallennekerroksella tavalla,
  • 30:24 - 30:28
    joka ei ollut niin kestävä kuin se
    voisi olla. Se on korvattu paljon
  • 30:28 - 30:32
    yksinkertaisemmalla tavalla.
    TLS 1.2:ssa oli tällainen
  • 30:32 - 30:38
    erikoinen "Catch 22", jossa
    salaimen neuvottelua suojaa
  • 30:38 - 30:42
    "Finished"-viesti, joka on viestin
    autentikointikoodi, mutta
  • 30:42 - 30:47
    tuon koodin algoritmi päätettiin
    salainneuvottelussa, joten
  • 30:47 - 30:53
    siinä oli tällainen takaisinsyöttö-
    efekti. Hyökkäykset kuten FREAK, LogJam ja
  • 30:53 - 30:59
    CurveSwap onnistuivat hyödyntämään näitä
    alentaakseen yhteyksien turvallisuuksia.
  • 30:59 - 31:03
    Tätä tapahtui ihan käytännössä.
    Syy on, että näitä salausalgoritmien
  • 31:03 - 31:07
    joukkoja kättelyssä ei ole
    digitaalisesti allekirjoitettu
  • 31:07 - 31:12
    yksityisellä vaimella. Tämä muutettiin
    TLS 1.3:ssa. Kaikki allekirjoituksen
  • 31:12 - 31:16
    yläpuolella oleva on
    allekirjoitettu. Tämä on hienoa!
  • 31:16 - 31:21
    Mitä muuta muutimme? Tai, mitä
    muuta TLS 1.3 muutti verrattuna
  • 31:21 - 31:28
    TLS 1.2:een? Vähemmän, mutta parempia
    valintoja. Kryptografiassa paremmat
  • 31:28 - 31:33
    valinnat tarkoittavat aina vähemmän
    valintoja. Nyt on tietyt ehdokkaat
  • 31:33 - 31:37
    käyrille ja äärellisille kunnille, joita
    voi käyttää. Ei mielivaltaisia palvelimen
  • 31:37 - 31:42
    keksimiä DH-ryhmiä, ei mielivaltaisia
    käyriä. Ja tämä sopivien parametrien listan
  • 31:42 - 31:48
    karsiminen, johtaa siihen
    että 1-RTT toimii niin usein.
  • 31:48 - 31:52
    Kuten Filippo sanoi,
    asiakkaan täytyy arvata
  • 31:52 - 31:57
    mitä avaimenmuodostus-
    metodeja palvelin tukee,
  • 31:57 - 32:01
    ja lähettää sopiva avainosuus. Jos on
    olemassa lyhyt lista pelkästään turvallisia
  • 32:01 - 32:06
    vaihtoehtoja, tätä tapahtuu
    useammin. Eli, kun konfiguroit
  • 32:06 - 32:11
    TLS-palvelintasi, se ei enää näytä
    monimutkaiselta pikaruokalistalta,
  • 32:11 - 32:16
    vaan enemmänkin häämenulta. Ota yksi
    jokaisesta kategoriasta ja lopputulos on
  • 32:16 - 32:22
    herkullisempikin. Voit tutkia tätä
    Wiresharkissakin, sekin on yksinkertaista.
  • 32:22 - 32:28
    Salausalgoritmit, laajennukset,
    käyrät ja voit jatkaa siitä.
  • 32:28 - 32:33
    Filippo: TLS 1.3 korjasi myös
    sen, mikä mielestäni oli yksi
  • 32:33 - 32:37
    suurimpia suunnitteluvirheitä
    TLS 1.2:ssa. Puhuimme siitä,
  • 32:37 - 32:43
    miten jatkosuojaus toimii istuntojen
    jatkamisessa 1.2:ssa ja 1.3:ssa.
  • 32:43 - 32:49
    Mutta TLS 1.2 on vieläkin ongelmallisempi.
    TLS 1.2 käärii istuntolippujen
  • 32:49 - 32:56
    sisään vanhan yhteyden
    varsinaisen pääsalaisuuden.
  • 32:56 - 33:03
    Eli se ottaa varsinaiset alkuperäisen yhteyden
    liikenteen salaamiseen käytetyt avaimet,
  • 33:03 - 33:08
    salaa ne istuntolipun avaimella, ja
    lähettää ne asiakkaalle, jotta se voi
  • 33:08 - 33:14
    lähettää ne takaisin ensi kerralla.
    Puhuimme riskistä, että hyökkääjä saa
  • 33:14 - 33:18
    istuntolipun avaimet haltuunsa,
    dekryptaa instuntoliput ja murtaa
  • 33:18 - 33:24
    jatkosuojauksen ja
    dekryptaa jatketut istunnot.
  • 33:24 - 33:30
    TLS 1.2:ssa asiat ovat vielä huonommin.
    Jos hyökkääjä dekryptaa istuntoliput, se
  • 33:30 - 33:36
    voi takaperoisesti dekryptata
    koko alkuperäisen
  • 33:36 - 33:42
    jatkamattoman istunnon. Ja
    tämä on täysin tarpeetonta.
  • 33:42 - 33:47
    Meillä on tiivistefunktioita, yksisuun-
    taisia funktioita, joihin laitetaan syöte
  • 33:47 - 33:53
    ja saadaan jotain, josta ei päästä
    takaisin alkuperäiseen. Näin 1.3 tekee.
  • 33:53 - 33:59
    1.3. johtaa uusia, tuoreita avaimia
    seuraavaa istuntoa varten
  • 33:59 - 34:04
    ja käärii ne istuntolipun sisään, jotta
    niistä saadaan PSK. Eli vaikka
  • 34:04 - 34:09
    dekryptaisit 1.3 istuntolipun,
    voit yrittää murtaa
  • 34:09 - 34:14
    seuraavaa yhteyttä ja olemme nähneet,
    että saatat pystyä dekryptaamaan
  • 34:14 - 34:19
    ainoastaan alkudatan, tai koko yhteyden,
    käytetystä moodista riippuen. Mutta
  • 34:19 - 34:26
    et mitenkään voi dekryptata alkuperäistä
    jatkamattoman istunnon yhteyttä.
  • 34:26 - 34:32
    Tämä olisi itsessään riitävän huono asia,
    mutta 1.2 tekee toisen päätöksen, joka
  • 34:32 - 34:37
    ihmetytti minua. Koko "käytetään pää-
    salaisuutta" saataa johtua siitä, että
  • 34:37 - 34:42
    istuntoliput olivat pelkkä laajennus
    1.2:ssa, mitä ne eivät ole 1.3:ssa.
  • 34:42 - 34:48
    Mutta 1.2 lähettää "New Session
    Ticket"-viestin alkuperäisen
  • 34:48 - 34:53
    kättelyn alussa
    - salaamattomana! Tarkoitan siis,
  • 34:53 - 34:59
    salattuna istuntolipun avaimilla, mutta
    ei nykyisen istunnon avaimilla.
  • 34:59 - 35:04
    Eli mikä tahansa palvelin, joka tukee
  • 35:04 - 35:10
    istuntolippuja, tulee kaikkien
    yhteyksien alussa - vaikka
  • 35:10 - 35:15
    istunnon jatkamista ei ikinä tapahtuisi -
    lähettämään istuntolipun, joka ei ole
  • 35:15 - 35:19
    muuta kuin sen yhteyden
    hetkelliset (katoavat) avaimet
  • 35:19 - 35:23
    käärittynä istuntolipun
    avaimilla. Nyt, jos olet
  • 35:23 - 35:29
    Maailmanlaajuinen pahantekijä,
    joka haluaa suorittaa
  • 35:29 - 35:33
    joukkovalvontaa ja haluaisit
    dekryptata jälkikäteen
  • 35:33 - 35:39
    kaikki yhteydet, ja jotenkin saisit
    käsiisi istuntolippujen avaimet,
  • 35:39 - 35:44
    se mitä löytäisit kaikkien
    TLS 1.2-yhteyksien alusta, on
  • 35:44 - 35:50
    istuntoavaimet salattuna
    istuntolipun avaimilla.
  • 35:50 - 35:56
    1.3 ratkaisee tämän ja 1.3:ssa tällaiset
    hyökkäykset ovat täysin mahdottomia.
  • 35:56 - 35:59
    Ainoa asia, jonka voisit passivisesti,
    siis jälkikäteen, dekryptata
  • 35:59 - 36:04
    on alkudata. Et mitenkään voisi
    dekryptata jatkamattomia yhteyksiä ja
  • 36:04 - 36:11
    mitään mikä tulee 0-RTT:n jälkeen.
  • 36:11 - 36:13
    Nick: Eli se on turvallisempi.
    Lyhyesti sanottuna.
  • 36:13 - 36:16
    Filippo: Toivon mukaan!
    Nick: ...toivottavasti.
  • 36:16 - 36:21
    Ja mistä tiedämme sen olevan turvallisempi?
    Nämä turvallisuusparametrit ja turvallisuus-
  • 36:21 - 36:26
    vaatimukset koskien TLS:ää on
    formalisoitu ja, toisin kuin aiemmissa
  • 36:26 - 36:30
    TLS-versioissa, formalisointia
    harjoittavat akateemikot otettiin
  • 36:30 - 36:34
    mukaan aiemmin. Useat julkaisut
    ovat analysoineet tilakonetta
  • 36:34 - 36:40
    ja TLS 1.3:n eri moodeja, ja
    nämä ovat auttaneet paljon
  • 36:40 - 36:45
    protokollan kehityksessä.
  • 36:45 - 36:51
    Kuka siis oikeastaan kehittää
    TLS 1.3:a? No, kyseessä
  • 36:51 - 36:55
    on järjestö nimeltä IETF, joka tulee
    sanoista Internet Engineering Taskforce.
  • 36:55 - 37:00
    Se on ryhmä vapaaehtoisia, jotka tapaavat
    kolmesti vuodessa, joilla on postituslistoja
  • 37:00 - 37:03
    ja he väittelevät loputtomasti näistä
    protokollista. He määrittelevät internetissä
  • 37:03 - 37:08
    käytettävät protokollat. Ja alunperin,
    ensimmäinen asia mitä tästä näin - tässä
  • 37:08 - 37:13
    on twiittini syyskuulta 2013 - oli
    toivomuslista koskien TLS 1.3:a.
  • 37:13 - 37:20
    Ja sen jälkeen IETF julkaisi
    ensimmäisen version...
  • 37:20 - 37:25
    Dokumentit, jotka määrittelevät proto-
    kollia tunnetaan nimellä RFC, ja
  • 37:25 - 37:29
    ennen kuin jostakin tulee RFC, siitä käy-
    tetään nimeä "Internet Draft". Eli
  • 37:29 - 37:34
    aloitetaan Internet Draft 0:sta, ja sitä
    iteroidaan, kunnes lopulta se joko
  • 37:34 - 37:40
    hylätään tai hyväksytään RFC:ksi. Ensim-
    mäinen oli siis melkein 3 vuotta sitten
  • 37:40 - 37:46
    huhtikuussa 2014, ja nykyinen
    luonnos (18), jonka ajatellaan olevan
  • 37:46 - 37:52
    melkein valmis, on vaiheessa jota
    kutsutaan "Last Call":ksi IETF:ssä,
  • 37:52 - 37:57
    julkaistiin vastikään lokakuussa.
    Tietoturvallisuusympäristössä tällä
  • 37:57 - 38:02
    aikavälillä on nähty todella monia
    erilaisia hyökkäyksiä TLS:ää vastaan.
  • 38:02 - 38:08
    Esim: Triple Handshake, POODLE, FREAK,
    LogJam, DROWN (josta oli esitys aiemmin
  • 38:08 - 38:12
    tänään), Lucky Microseconds, SLOTH.
    Kaikki nämä eri akronyymit - joista
  • 38:12 - 38:16
    ehkä olette tai ette ole kuullut -
    ovat tapahtuneet kehitystyön aikana.
  • 38:16 - 38:21
    Eli TLS 1.3 on kehittyvä
    dokumentti, ja toivottavasti
  • 38:21 - 38:28
    siitä tulee lyhyt. Tarkoitan
    siis, että TLS 1.2 oli 79 sivua.
  • 38:28 - 38:33
    Se on vähän vaikeaselkoinen, mutta lukekaa
    toki jos kiinnostaa. TLS 1.3 sen sijaan,
  • 38:33 - 38:36
    jos lopusta karsii ylimääräistä tavaraa
    pois, tulee aika lähelle. Ja se on
  • 38:36 - 38:41
    helppolukuisempi. Se on paljon tarkempi,
    vaikka sieltä löytyykin kiinnostavia
  • 38:41 - 38:47
    ominaisuuksia kuten 0-RTT istunnon jatka-
    minen. Kuinka se käytännössä kirjoitetaan?
  • 38:47 - 38:53
    Vastaus on... Github! Ja postituslista!
    Eli, jos haluat lähettää pull pyynnön
  • 38:53 - 38:59
    tähän TLS-työryhmään, sieltä se löytyy.
    Tällä tavoin luonnos oikeasti muotoutuu.
  • 38:59 - 39:04
    Ja kannattanee lähettää viesti
    postituslistaan, jossa kuvailet
  • 39:04 - 39:09
    muutoksiasi, jos haluat. Ehdottaisin,
    jos joku haluaa osallistua - nyt on aika
  • 39:09 - 39:14
    myöhäistä - onhan se "Last Call"-vaiheessa,
    mutta postituslista on vielä avoinna.
  • 39:14 - 39:18
    Olen työstänyt tätä useiden muiden
    kanssa, Filippo mukaan lukien. Olimme
  • 39:18 - 39:23
    osallisina luonnoksessa, työskennelleet
    yli vuoden tämän parissa. Voitte käydä
  • 39:23 - 39:29
    katsomassa Githubista ongelmat ja
    näette, kuinka paljon työtä se on vaatinut.
  • 39:29 - 39:34
    Luonnos on muuttunut
    vuosien ja kuukausien varrella.
  • 39:34 - 39:39
    Esim. luonnos 9:ssä oli tämä
    monimutkainen puumalli
  • 39:39 - 39:44
    kierrosavaimen laskennalle, tässä
    näette "htk"... kaikki nämä eri asiat
  • 39:44 - 39:50
    liittyivät TLS-kättelyn eri avaimiin.
    Tämän inspiraation lähteenä oli QUIC,
  • 39:50 - 39:56
    Googlen protokolla, jonka Filippo mainitsi
    aiemmin, sekä julkaisu nimeltä "OPTLS".
  • 39:56 - 40:01
    Ja siinä oli useita eri moodeja:
    semistaattinen Diffie-Hellman ja tämä
  • 40:01 - 40:05
    puumallinen avaintenlaskenta. Ajan
    mittaan tätä pelkistettiin tästä
  • 40:05 - 40:11
    monimutkaisesta kaaviosta siihen, mitä
    nyt käytämme TLS 1.3:ssa. Joka on hyvin
  • 40:11 - 40:16
    yksinkertainen avaimenjohtamisalgoritmi.
    Vaati paljon työtä päästä jostain suuresta
  • 40:16 - 40:22
    johonkin näin pieneen. Mutta se onnistui!
    Muita TLS 1.3:n kanssa sattuneita,
  • 40:22 - 40:27
    kryptografisesti vähemmän
    merkittäviä asioita, on
  • 40:27 - 40:33
    nimeäminen! Jos joku on seurannut
    kehitystä, TLS 1.3 ei välttämättä ole
  • 40:33 - 40:38
    yksimielinen valinta tämän protokollan
    nimeksi. Kuten Filippo mainitsi, 1.0,
  • 40:38 - 40:44
    1.1, 1.2 ovat melko pieniä iteraatioita
    jopa SSLv3:een verrattuna, kun taas
  • 40:44 - 40:49
    TLS 1.3 on aika iso muutos.
    Siispä nimelle on paljon
  • 40:49 - 40:55
    vaihtoehtoja! Otetaanpa äänestys
    kättä nostamalla. Kenen
  • 40:55 - 41:00
    mielestä nimen pitäisi olla 1.3?
    (nauraa)
  • 41:00 - 41:02
    Kiitos Filippo! (Filippo nauraa)
    Jep, eli aika suuri osa.
  • 41:02 - 41:08
    Entäpä TLS 2? Ketään? Oho. Tämä
    näyttää itse asiassa enemmältä kuin...
  • 41:08 - 41:13
    Filippo: Muistakaa että SSLv2
    on juttu! Ja se on kamala juttu!
  • 41:13 - 41:18
    Nick: Ette halua sekoittaa sitä
    meihin! No entä sitten TLS 4?
  • 41:18 - 41:23
    Edelleen merkittävä osa ihmisiä...
    Entäs TLS 2017? Noniin...
  • 41:23 - 41:26
    Selvä. TLS 7 ketään? Okei...
  • 41:26 - 41:30
    Filippo: TLS Millenium 2019 X?
  • 41:30 - 41:35
    Kyllä! Myyty!
    Nick: TLS Vista?
  • 41:35 - 41:39
    (naurua) - (Nick ja Filippo nauravat)
    (aplodeja)
  • 41:39 - 41:45
    Nick: Paljon vaihtoehtoja! Mutta ihan
    vain muistutuksena, muu maailma ei
  • 41:45 - 41:50
    oikeastaan käytä nimeä TLS. Tässä on
    Google trends, kiinnostus aikajanalla,
  • 41:50 - 41:55
    kun vertaillaan "SSL vs. TLS". SSL on nimi,
    jota suuri osa maailmasta käyttää. SSL:n
  • 41:55 - 42:00
    korkein versio on versio 3, ja siinä on
    syy miksi ihmiset ajattelivat, että
  • 42:00 - 42:05
    "TLS 4" on hyvä ajatus. Koska: "Ihmiset
    ovat hämillään: 3 on enemmän
  • 42:05 - 42:11
    kuin 1.2 jne. jne."
  • 42:11 - 42:15
    Tämä äänestys ei ollut ainoa. Tässä
    on epävirallisia Twitter-äänestyksiä.
  • 42:15 - 42:20
    "Mmm, pekonia!" oli hyvä.
    52 % Ryan Hurstin äänestykessä.
  • 42:20 - 42:24
    (naurua)
  • 42:24 - 42:28
    Versionumerot TLS:ssä
    ovat inhottava aihe.
  • 42:28 - 42:33
    Esim. olemassa olevat versiot TLS:stä
    - jos katsotaan verkon yli kulkevaa tietoa,
  • 42:33 - 42:38
    ne eivät täsmää. Eli SSL 3
    on 3.0, mikä täsmää.
  • 42:38 - 42:44
    Mutta TLS 1 on 3.1, 3.2...
    TLS 1.2 on 3.3 ja alun perin
  • 42:44 - 42:49
    uskoakseni TLS 1.3:n
    luonnokseen 16 asti se oli 3.4
  • 42:49 - 42:54
    Eli ikäänkuin pikkupäivitys
    TLS 1.2:een, hyvin hämmentävää.
  • 42:54 - 42:59
    Internetmittausten jälkeen pääteltiin,
  • 42:59 - 43:03
    että moni palvelin, jos lähetät "Client
    Hello":n arvolla "3.4", katkaisee yhteyden.
  • 43:03 - 43:08
    Tämä on oikeasti todella huono juttu, se
    estää selaimia alentamasta yhteyttä
  • 43:08 - 43:13
    turvallisesti. Mitä palvelimen kuuluisi
    tehdä, jos se näkee version joka on
  • 43:13 - 43:19
    korkeampi kuin 3.3, on vain vastata "3.3"
    sanoakseen: "Tämän parempaan en pysty".
  • 43:19 - 43:25
    Mutta kävi ilmi, että moni näistä vain
    hajoaa. Joten 3.3 on nyt "Client Hello":ssa
  • 43:25 - 43:31
    ja 3.4 neuvotellaan aliprotokollana.
    Eli tämä on sotkuista.
  • 43:31 - 43:36
    Eikö? Mutta punnitsemme hyötyjä moni-
    mutkaisuutta vastaan, ja tämä on niitä
  • 43:36 - 43:40
    missä palvelimien toimivuus painaa
    enemmän kuin lisääntynyt monimutkaisuus,
  • 43:40 - 43:44
    jonka tuo uuden asian lisääminen. Ja tämän
    estämiseksi tulevaisuudessa
  • 43:44 - 43:49
    David Benjamin ehdotti jotain nimeltä
    GREASE, missä jokaiseen TLS-neuvottelun
  • 43:49 - 43:54
    osaan tulee, asiakkaana, lisätä
    jotain satunnaista tavaraa,
  • 43:54 - 43:57
    jotta palvelimet tottuvat
    näkemään asioita, jotka eivät ole
  • 43:57 - 44:01
    versioita, joihin ne ovat tottuneet.
    Eli, 0x8a8a. Se on GREASE-d!
  • 44:01 - 44:06
    Filippo: Se on ihan todellinen asia!
    Se on todellinen hyvin hyödyllinen asia!
  • 44:06 - 44:09
    Nick: Tämä tulee olemaan hyvin
    hyödyllinen, tulevaisuutta ajatellen,
  • 44:09 - 44:14
    estämään tällaisia asioita tapahtumasta.
    Mutta on ikävää, että sen täytyi tapahtua.
  • 44:14 - 44:19
    Aikamme on käymässä vähiin, mutta
    me halusimme todella päästä mukaan
  • 44:19 - 44:23
    ja sotkemaan kätemme. Ja yksi asia
    mitä IETF rakastaa, kun kehittelee näitä
  • 44:23 - 44:29
    standardeja on koodin ajaminen. Joten
    aloitimme IETF 95 Hackathonilla,
  • 44:29 - 44:33
    joka pidettiin huhtikuussa ja
    onnistuimme lopulta saamaan Firefoxin
  • 44:33 - 44:38
    lataamaan Cloudflaren isännöimän
    palvelimen TLS 1.3:lla. Tämä oli suuri
  • 44:38 - 44:43
    saavutus silloin. Käytimme NSS:ää,
    joka on Firefoxin turvallisuuskirjasto ja
  • 44:43 - 44:49
    "Mint":iä, joka oli uusi tyhjästä
  • 44:49 - 44:53
    rakennettu versio TLS 1.3:sta Go-kielellä.
  • 44:53 - 44:58
    Ja lopputulema oli, että se toimi! Mutta
    tämä oli ainoastaan konseptitodistus (PoC).
  • 44:58 - 45:03
    Filippo: Rakentaaksemme jotain tuotanto-
    valmiimpaa, katsoimme TLS-kirjastoa,
  • 45:03 - 45:08
    jonka muokkaaminen tuntui meistä
    helpoimmalta. Yllätyksettömästi se
  • 45:08 - 45:13
    ei ollut OpenSSL. Joten päätimme
  • 45:13 - 45:18
    rakentaa 1.3:n Go:n
    crypto/tls-kirjaston päälle,
  • 45:18 - 45:24
    joka löytyy Go:n standardikirjastosta.
    Lopputulos on "tls-tris", ja se on
  • 45:24 - 45:28
    suora korvaaja crypto/tls:lle ja
    se tulee tämän varoituksen
  • 45:28 - 45:34
    saattelemana, joka sanoo: "Kaiken hyvän
    ja oikeudenmukaisuuden nimessä,
  • 45:34 - 45:39
    älä käytä tätä!". Varoitus koski alunperin
    kaikkea, mutta nyt se ei enää niinkään
  • 45:39 - 45:45
    koske tietoturvaa, auditoitutimme tämän,
    mutta se koskee edelleen vakautta.
  • 45:45 - 45:51
    Työstämme tämän saamista ylävirtaan,
    mikä tulee vakiinnuttamaan API:n.
  • 45:51 - 45:56
    Ja voitte seurata ylävirtaprosessia,
    Googlen väki oli ystävällinen ja
  • 45:56 - 46:01
    avasi meille oman haaran kehitystyötä
    varten, ja se ei varmasti tule osumaan
  • 46:01 - 46:07
    seuraavaan Go:n julkaisuun, Go 1.8, mutta
    odotamme innolla, että saamme tämän ylävirtaan.
  • 46:07 - 46:12
    Joka tapauksessa, vaikka käyttäisit
    Go:ta, käyttöönotto on vaikeaa.
  • 46:12 - 46:18
    Ensimmäisen kerran kun otimme Tris:n
    käyttöön, luonnoksen numero oli 13.
  • 46:18 - 46:24
    Ja tukeakseen selaimia tästä
    eteenpäin, meidän täytyi tukea
  • 46:24 - 46:29
    useita luonnosversioita saman
    aikaisesti käyttämällä joskus
  • 46:29 - 46:35
    erikoisia yksityiskohtia. Ja joskus meidän
    täytyi tukea asioita, jotka eivät todellakaan
  • 46:35 - 46:40
    olleet edes luonnoksia, koska selaimet
    alkoivat... hajaantua eri suuntiin.
  • 46:40 - 46:45
    No, joka tapauksessa meillä
    oli testimatriisi, joka ajoi
  • 46:45 - 46:51
    kaikki meidän commit:imme kaikkia
    asiakaskirjastojen versioita vastaan,
  • 46:51 - 46:55
    ja tämä varmisti, että olemme
    aina yhteensopivia selainten kanssa.
  • 46:55 - 47:00
    Ja nykyään asiakkaat ovat itse asiassa
    paljon vakaampia, ja todellakin,
  • 47:00 - 47:05
    saatat jopa jo tietämättäsi
    käyttää sitä. Esim. Chrome Beta,
  • 47:05 - 47:11
    beta-kanavalla se on päällä noin 50 %:lla
    instansseista kokeiluna Googlen puolelta.
  • 47:11 - 47:16
    Ja tältä meidän kuvaajamme
    näyttivät julkaisun aikaan,
  • 47:16 - 47:22
    kun Firefox Nightly laittoi sen oletuksena
    päälle ja kun Chrome Canary laittoi sen
  • 47:22 - 47:27
    oletuksena päälle. Nykyään meno on
    vakaata: noin 700 pyyntöä sekunnissa
  • 47:27 - 47:31
    kulkee TLS 1.3:a käyttäen. Ja omalla
    puolellamme laitoimme sen
  • 47:31 - 47:36
    päälle miljoonille Cloudflaren
    isännöimille sivustoille.
  • 47:36 - 47:41
    Ja, kuten sanottua, spesifikaatio
    on muuttuva dokumentti
  • 47:41 - 47:46
    ja se on kaikille avoin. Sen voi nähdä
    Githubissa. Tris implementaatio on siellä
  • 47:46 - 47:51
    myös, vaikkakin siinä on tämä pelottava
    varoitus, ja tässä blogissa tulemme
  • 47:51 - 47:56
    luultavasti julkaisemaan kaiken jatko-
    tutkimuksen ja tulokset. Kiitos paljon ja
  • 47:56 - 48:00
    jos teillä on kysymyksiä, astukaa esiin,
    uskon että meillä on muutama minuutti.
  • 48:00 - 48:12
    (aplodeja)
  • 48:12 - 48:16
    Herald: Kiitos, meillä on reilusti
    aikaa kysymyksille. Ensimmäinen
  • 48:16 - 48:20
    kysymys tulee internetistä.
  • 48:20 - 48:24
    Signal Angel: Ensimmäisessä kysymyksessä
    ihmiset kysyvät onko viisasta, että
  • 48:24 - 48:28
    päätös 0-RTT:n suhteen menee
    sovellukselle, eli se jätetään
  • 48:28 - 48:32
    sovelluksen kehittäjille?
  • 48:32 - 48:34
    Filippo: (nauraa)
    (aplodeja)
  • 48:34 - 48:40
    Filippo: Hyvä kysymys. Kuten sanoimme,
    tämä tosiaan rikkoo abstraktion.
  • 48:40 - 48:46
    Eli se EI ole oletusarvoisesti rikki.
    Jos ainoastaan päivität Go:n ja
  • 48:46 - 48:51
    saat käyttöösi TLS 1.3:n, et tule
    kohtaamaan yhtään 0-RTT:tä,
  • 48:51 - 48:55
    koska tosiaan se vaatisi yhteistyötä
    sovellukselta. Eli mikäli sovellus ei
  • 48:55 - 49:00
    tiedä mitä tekee sen kanssa, se ei
    yksinkertaisesti voi käyttää sitä, mutta
  • 49:00 - 49:07
    saa kaikki turvallisuushyödyt sekä 1-RTT-
    kättelyn hyödyt joka tapauksessa.
  • 49:07 - 49:10
    Herald: Selvä, seuraava kysymys
    tulee mikrofonista yksi.
  • 49:10 - 49:13
    Kysyjä: Protokollan ensimmäisten
    testien yhteydessä, oletteko
  • 49:13 - 49:18
    saaneet konkreettisia arvoja sille, miltä
    nuo suorituskyvyn parannukset näyttävät?
  • 49:18 - 49:21
    (Filippo huokaisee)
  • 49:21 - 49:25
    Nick: Yhdeltä edestakaiselta matkalta!
    (nauraa) Riippuu siitä paljonko 1-RTT on.
  • 49:25 - 49:28
    Filippo: Nimenomaan. Yksi edestakainen
    matka on... en pysty sanomaan lukua
  • 49:28 - 49:33
    koska tietysti, jos asut San Franciscossa,
    jossa on nopea kuituyhteys, se on
  • 49:33 - 49:39
    mitä? Ehkä 3 millisekuntia? 6...?
    Jos taas asut vaikka jossain maassa,
  • 49:39 - 49:43
    missä EDGE on ainoa
    käytettävissä oleva yhteys,
  • 49:43 - 49:48
    se on ehkä sekunti. Meillä taitaa
    olla keskiarvo, joka on noin... 100
  • 49:48 - 49:55
    ja 200 millisekunnin välillä, mutta emme
    ole virallisesti mitanneet näitä lukuja.
  • 49:55 - 49:58
    Herald: Ok, seuraava kysymys
    tulee mikrofonista 3.
  • 49:58 - 50:02
    Kysyjä: Yksi huomautus, jonka haluan sanoa
    on, että yksi parannus joka saavutettiin
  • 50:02 - 50:07
    TLS 1.3:ssa on että asiakas-
    varmenteisiin lisättiin salaus.
  • 50:07 - 50:11
    Joten asiakasvarmenteet lähetetään
    salattuina, mikä on tärkeää, jos
  • 50:11 - 50:18
    ajattelee asiakasta, joka liikkuu sekä
    joukkovalvovaa elintä, joka voisi
  • 50:18 - 50:23
    jäljittää asiakkaita tällä. Ja toinen
    huomio/kysymys, joka saattaisi...
  • 50:23 - 50:27
    Herald: Kysymykset päättyvät kysymys-
    merkkiin. Joten yritäthän pitää lyhyenä?
  • 50:27 - 50:32
    Kysyjä: Kyllä... Tämä saattaa
    olla tyhmä kysymys...
  • 50:32 - 50:36
    Vakio Diffie-Hellman-ryhmät...
    eivätkö ne olleet ongelma LogJam-
  • 50:36 - 50:43
    hyökkäyksessä, joten... auttaako
    tämä LogJam-hyökkäyksiä vastaan?
  • 50:43 - 50:47
    Nick: Viittaatko siihen pankeille
    suunnattuun ehdotukseen?
  • 50:47 - 50:50
    Kysyjä: Ei ei, yleisesti siihen,
    että voidaan laskea ennakkoon...
  • 50:50 - 50:54
    Nick: Aivan, kyllä, eli LogJamin kohdalla
    oli ongelma, missä oli DH-ryhmä, joka
  • 50:54 - 50:58
    oli oletuksena käytössä monella
    eri palvelimella. Apachen käyttämä,
  • 50:58 - 51:04
    joka oli 1024 (bittiä).
    TLS 1.3:ssa tämä rajoitettiin
  • 51:04 - 51:09
    ennalta laskettuun DH-ryhmään,
    joka on yli 2000 bittiä pienimmilläänkin,
  • 51:09 - 51:15
    ja valtavallakin laskentateholla varustettuna,
    jos on 2000 bitin DH ryhmä, ei ole
  • 51:15 - 51:20
    käytännössä mahdollista tehdä esilasken-
    taa minkäänlaista hyökkäystä varten.
  • 51:20 - 51:22
    Mutta kyllä, tuo on hyvä pointti.
  • 51:22 - 51:25
    Filippo: ...ja koska ne ovat kiinteitä, ei
    ole keinoa pakottaa protokollaa käyttämään
  • 51:25 - 51:29
    mitään muuta, joka ei olisi niin vahva.
    Kysyjä: Selvä, kiitos!
  • 51:29 - 51:33
    Herald: Seuraava kysymys mikrofonista 4.
  • 51:33 - 51:37
    Kysyjä: Kiitos esityksestä!
    Tiivistelmässä mainitsitte, että eräs
  • 51:37 - 51:42
    toinen lopetettava ominaisuus oli SNI,
  • 51:42 - 51:46
    yhdessä 0-RTT:n kanssa, mutta on edelleen
    tapoja implementoida se. Voitteko selventää?
  • 51:46 - 51:50
    Filippo: Pidimme siis tämän esitelmän
    kahdesti sisäisesti, ja tämä kysymys
  • 51:50 - 51:56
    esitettiin molemmilla
    kerroilla. Joten... (nauraa)
  • 51:56 - 52:02
    Eli, SNI on pieni parametri, jonka asiakas
    lähettää palvelimelle kertoakseen,
  • 52:02 - 52:06
    mille sivustolle se yrittää
    yhdistää. Esim. Cloudflarella on
  • 52:06 - 52:11
    useita sivustoja koneidemme takana, joten
    sinun täytyy kertoa meille "Haluan siis
  • 52:11 - 52:17
    oikeasti yhdistää "blog.filippo.io":n. Tämä
    on yksityisyyden kannalta ongelmallista,
  • 52:17 - 52:23
    koska joku voi pelkästään verkon yli
    kulkevista tavuista nähdä, mihin
  • 52:23 - 52:29
    nimenomaiseen sivuun yhdistät. Epäonninen
    seikka on se, että tässä on sama onglema
  • 52:29 - 52:35
    kuin alkudatan jatkosuojauksessa.
    SNI lähetetään "Client Hello":ssa, ja
  • 52:35 - 52:40
    tässä kohtaa ei ole vielä neuvoteltu
    yhtään avainta, joten ei ole mitään millä
  • 52:40 - 52:45
    sen voisi salata. Mutta jos ei lähetä
    SNI:tä ensimmäisessä viestissä,
  • 52:45 - 52:49
    palvelin ei tiedä minkä sertifikaatin
    se lähettää, joten se ei voi lähettää
  • 52:49 - 52:53
    allekirjoitusta ensimäisessä viestissä,
    joten ei ole avaimia. Eli täytyisi tehdä
  • 52:53 - 52:59
    2-RTT, ja nyt olisimme taas samassa
    pisteessä kuin TLS 1.2. Joten,
  • 52:59 - 53:03
    valitettavasti, se ei
    toimi 1-RTT kättelyissä.
  • 53:03 - 53:09
    Nick: HTTP2:n spesifikaatiossa on kuitenkin
    ehdotuksia, jotka mahdollistaisivat multi-
  • 53:09 - 53:14
    pleksaamisen. Tämä on vielä työn alla.
    Voisi olla mahdollista yhdistää ensin
  • 53:14 - 53:20
    yhteen verkkotunnukseen ja sitten luoda
    toinen yhteys olemassa olevan sisällä.
  • 53:20 - 53:22
    Ja tämä voisi mahdollisesti
    suojata SNI:tä.
  • 53:22 - 53:26
    Filippo: Eli joku tarkkailija ajattelisi,
    että menet sivulle blog.filippo.io mutta
  • 53:26 - 53:29
    kun avaat yhteyden, voisit pyytää
    HTTP2:ta näyttämään myös
  • 53:29 - 53:33
    "tämän toisen sivun". Kiitos!
  • 53:33 - 53:38
    Herald: Selvä, seuraava
    kysymys, mikrofoni 7,
  • 53:38 - 53:41
    tai itse asiassa 5, pahoittelut.
  • 53:41 - 53:47
    Kysyjä: Mainitsitte, että TLS 1.3:sta
    on olemassa formaali verifikaatio.
  • 53:47 - 53:54
    Millä ohjelmistolla tämä
    formaali verifikaatio on tehty?
  • 53:54 - 53:59
    Nick: Oli useita ohjelmisto-
    implementaatioita ja protokollia...
  • 53:59 - 54:03
    Katsotaanpa, jos pääsen
    takaisinpäin... tässä.
  • 54:03 - 54:07
    Tamarin on ohjelmisto, jonka on
    kehittänyt muun muassa Cas Cremers
  • 54:07 - 54:12
    Oxfordissa ja Royal Hollowayssa.
    miTLS on uskoakseni kirjoitettu F#:lla
  • 54:12 - 54:18
    INRIA:n toimesta. Ja nqsb-TLS
    on kirjoitettu OCaml:lla.
  • 54:18 - 54:23
    Joten useita eri kieliä käytettiin näiden
    kehityksessä ja käsittääkseni nqsb-TLS:n
  • 54:23 - 54:27
    kehittäjät ovat paikalla...
  • 54:27 - 54:31
    Herald: Selvä, seuraava
    kysymys mikrofoni 8.
  • 54:31 - 54:36
    Kysyjä: Hei! Kiitos. Kiitos
    informatiivisesta esityksestä.
  • 54:36 - 54:43
    SSL:n ja TSL:n historia on täynnä "mikä
    muka voisi mennä vikaan"-ideoita ja hetkiä,
  • 54:43 - 54:49
    jotka lopulta kostautuivat. Joten
    kysymykseni, kun otetaan huomioon,
  • 54:49 - 54:53
    että on useita pienempiä organisaatioita
    tai pienempiä hosting-yrityksiä jne.,
  • 54:53 - 55:00
    jotka luultavasti implementoivat 0-RTT:n
    väärin. Mikä on ensivaikutelmanne? Kuinka
  • 55:00 - 55:04
    todennäköistä on, että tämä todella
    tulee kostautumaan pian? Kiitos.
  • 55:04 - 55:10
    Filippo: Kuten sanoin, olen itse asiassa
    aavistuksen skeptinen vaikutusten suhteen
  • 55:10 - 55:16
    koskien HTTP:tä, sillä selaimet saadaan
    uudelleenlähettämään pyyntöjä jo nyt.
  • 55:16 - 55:22
    Ja olemme nähneet tästä
    julkaisuja ja blogipostauksia. Mutta
  • 55:22 - 55:26
    kukaan ei kyennyt näyttämään
    toteen, että se olisi rikkonut
  • 55:26 - 55:31
    suuren osuuden internetistä. Ollakseni
    rehellinen, en osaa vastata, kuinka
  • 55:31 - 55:36
    pahasti se kostautuu. Mutta muistetaan,
    että tasapainon toinen puoli
  • 55:36 - 55:42
    on se määrä ihmisiä, jotka sanovat
    etteivät aio ottaa TSL:ää käyttöön
  • 55:42 - 55:46
    koska se on "hidas". Ei.
  • 55:46 - 55:52
    Se on 0-RTT, TLS on nopea!
    Menkää ja salatkaa kaikki!
  • 55:52 - 55:58
    Siis nuo ovat ne kaksi huolenaihetta,
    jotka täytyy saada tasapainoon.
  • 55:58 - 56:02
    Lisäksi, oma henkilökohtainen
    mielipiteeni ei paina paljoa.
  • 56:02 - 56:07
    Tämä oli päätös, jonka teki koko
    postituslistasta koostuva yhteisö.
  • 56:07 - 56:13
    Ja voin vakuuttaa, että jokainen on ollut
    hyvin konservatiivinen kaiken suhteen,
  • 56:13 - 56:19
    ottanut huomioon jopa... niin, senkin
    olisiko nimi johtanut ihmisiä harhaan.
  • 56:19 - 56:24
    En osaa ennustaa tulevaisuutta. Voin
    vain sanoa toivovani, että teimme
  • 56:24 - 56:29
    parhaan valinnan tehdäksemme suurimman
    osan verkosta niin turvalliseksi kuin voimme.
  • 56:29 - 56:32
    Herald: Seuraava kysymys
    tulee internetistä.
  • 56:32 - 56:35
    Signal Angel, onko meillä vielä
    kysymys internetistä?
  • 56:35 - 56:38
    Signal Angel: Kyllä meillä on.
  • 56:38 - 56:43
    Mitkä ovat suurimmat implementoinnin
    yhteensopimattomuudet, jotka on löydetty
  • 56:43 - 56:46
    nyt kun lopullinen spesifikaatio
    on melko valmis?
  • 56:46 - 56:48
    Herald: Voitko toistaa kysymyksen?
  • 56:48 - 56:53
    (Signal Angel toistaa kysymyksen)
  • 56:53 - 56:59
    Filippo: Okei. Koskien
    luonnosteluvaihetta?
  • 56:59 - 57:03
    Osa niistä, jotka eivät olleet versio-
    yhteensopivia oli, uskoakseni, enimmäkseen
  • 57:03 - 57:07
    "middleboxeja" ja palomuureja.
  • 57:07 - 57:13
    Nick: Oli joitain todella isoja
    sivustojakin. Paypal taisi olla yksi?
  • 57:13 - 57:18
    Filippo: Vaikkakin, prosessin aikana
    meillä oli yhteensopivuusongelmia monista
  • 57:18 - 57:24
    syistä. Mukaanlukien se, missä
    toinen kehittäjistä kirjoitti väärin
  • 57:24 - 57:28
    muuttujan numeron.
    (nauraa)
  • 57:28 - 57:32
    Luonnosten aikana joskus yhteensopivuus
    meni rikki, mutta oli myös paljon yhteis-
  • 57:32 - 57:38
    työtä asiakasimplementaatioiden ja meidän
    puolemme palvelinimplementaatioiden välillä.
  • 57:38 - 57:44
    Voin onnekseni todeta, että varsinaisten
    1.3 implementaatioiden kanssa tehtiin
  • 57:44 - 57:51
    paljon yhteensopivuustestejä, ja kaikki
    ongelmat saatiin melko nopeasti korjattua.
  • 57:51 - 57:54
    Herald: Okei, seuraava kysymys
    tulee mikrofonista numero 1.
  • 57:54 - 57:59
    Kysyjä: Minulla on 2 nopeaa kysmystä
    koskien istunnon jatkamista.
  • 57:59 - 58:03
    Jos palvelimelle tallennetaan jotain
    dataa istunnosta, eikö se olisi tavallaan
  • 58:03 - 58:08
    jonkinlainen supereväste? Eikö se ole
    yksityisyyden kannalta vaarallista?
  • 58:08 - 58:14
    Ja toinen kysymys on: entä DNS-
    kuormantasaajat tai jotkut muut
  • 58:14 - 58:21
    valtavat määrät palvelimia, missä pyynnöt
    menevät joka kerta eri palvelimelle?
  • 58:21 - 58:28
    Filippo: Ok, eli nämä koskevat yksityiskohtia
    istuntolippujen tehokkaasta jakelusta.
  • 58:28 - 58:33
    TLS 1.3 ottaa huomioon yksityisyydensuojan
    koskien istuntolippuja, ja tosiaan se
  • 58:33 - 58:38
    mahdollistaa palvelimen lähettämään useita
    istuntolippuja. Palvelin voi siis edelleen
  • 58:38 - 58:42
    tietää mikä asiakas sen lähettää, jos niin
    haluaa. Mutta kukaan ulkopuolelta yhteyttä
  • 58:42 - 58:47
    tarkkaileva ei siihen kykene, koska ne
    lähetetään salattuina, toisin kuin TLS 1.2:ssa
  • 58:47 - 58:53
    ja niitä voi olla useita. Kukaan ulko-
    puolinen ei pysty yhdistämään sitä
  • 58:53 - 58:58
    alkuperäiseen yhteyteen. Tämän parempaan
    ei pysty, sillä jos palvelimen ja asiakkaan
  • 58:58 - 59:03
    täytyy käyttää uudelleen jotain jaettua
    tietoa, palvelimen täytyy saada tietää
  • 59:03 - 59:08
    kuka oli kyseessä. Mutta istuntolippuja
    ei voi 1.3:ssa jäljittää kolmannen
  • 59:08 - 59:13
    osapuolen toimesta. Ja... kun tehdään
    kuormantasausta... on eräs mielenkiintoinen
  • 59:13 - 59:19
    julkaisu istuntolippujen jakelusta, mutta
    olennaista on, että kannattaa varmaan
  • 59:19 - 59:25
    selvittää miten asiakkaat liikkuvat
    palvelimien välillä ja löytää tasapaino
  • 59:25 - 59:30
    sen välillä kannattaako istuntolipun
    avain jakaa, jolloin se on tehokkaampaa
  • 59:30 - 59:36
    vai jättää istuntolipun avain jakamatta,
    jolloin niitä on vaikeampi saada käsiinsä.
  • 59:36 - 59:42
    Saattaisit tehdä maantieteellisen
    sijainnin mukaan, tai yhden räkin...
  • 59:42 - 59:45
    Se riippuu ihan toteutuksesta.
  • 59:45 - 59:47
    Herald: Okei, viimeinen
    kysymys menee mikrofonille 3.
  • 59:47 - 59:52
    Kysyjä: Minulla on kysymys koskien
    GREASE-mekanismia, joka toteutetaan
  • 59:52 - 59:57
    asiakkaan puolella. Jos
    ymmärsin oikein, siinä lisätään
  • 59:57 - 60:02
    satunnaisia versionumeroita
    olemattomista TLS- tai SSL-versioista
  • 60:02 - 60:09
    ja siten koulutetaan
    palvelimet mukautumaan
  • 60:09 - 60:14
    spesifikaatioon. Mitkä ovat
    tosielämän testien tulokset?
  • 60:14 - 60:18
    Moniko palvelin menee
    tästä oikeasti nurin?
  • 60:18 - 60:23
    Filippo: Odotusarvoisesti ei yksikään,
    koska ne kaikki ovat nyt ottamassa
  • 60:23 - 60:28
    1.3:a käyttöön, joten kaikki asiakkaat,
    joita ne kohtaavat käyttäisivät GREASE:a.
  • 60:28 - 60:33
    Kuitenkin, juuri kun Google otti GREASE:n
    käyttöön luulen sen rikkoneen... En ole
  • 60:33 - 60:38
    varma, joten en sano mikä palvelin-
    implementaatio, mutta yhden pienemmistä
  • 60:38 - 60:42
    tunnistettiin heti olevan...
    se Haskell-kielellä kirjoitettu!
  • 60:42 - 60:44
    Nick: Aivan!
    Filippo: En muista sen nimeä,
  • 60:44 - 60:47
    en osaa lukea Haskellia, joten en
    tarkalleen tiedä mitä ne tekivät, mutta
  • 60:47 - 60:50
    ne katkaisivat yhteyksiä
    GREASE:n takia.
  • 60:50 - 60:53
    Nick: Ja huomautuksena, GREASE:a käytetään
    myös salausneuvotteluissa ja kaikessa
  • 60:53 - 60:59
    mikä on neuvottelu TLS 1.3:ssa.
    Tämä tosiaan rikkoi
  • 60:59 - 61:03
    pienen osan palvelimista, mutta
    sen verran pienen osan,
  • 61:03 - 61:07
    että ihmiset hyväksyivät sen.
  • 61:07 - 61:09
    Kysyjä: Kiitos!
    Nick: 2 % on liikaa!
  • 61:09 - 61:11
    Herald: Kiitos oikein paljon.
    Filippo: Kiitos!
  • 61:11 - 61:20
    (aplodeja)
  • 61:20 - 61:39
    (33C3 loppumusiikki)
  • 61:39 - 61:44
    Translated by Roope Salminen
    (ITKST56 course assignment at JYU.FI)
Title:
Deploying TLS 1.3: the great, the good and the bad (33c3)
Description:

more » « less
Video Language:
English
Duration:
01:01:44

Finnish subtitles

Revisions Compare revisions