0:00:00.000,0:00:14.820 33C3 intromusiikki 0:00:14.820,0:00:20.190 Herald: Seuraava esitelmä käsittelee [br]TLS 1.3 käyttöönottoa 0:00:20.190,0:00:23.509 ja sen esittävät Filippo Valsorda [br]sekä Nick Sullivan, 0:00:23.509,0:00:26.989 jotka he molemmat työskentelevät [br]Cloudflarelle. 0:00:26.989,0:00:32.110 Joten toivottakaamme lämpimästi [br]tervetulleeksi Nick ja Filippo! 0:00:32.110,0:00:39.490 aplodeja 0:00:39.490,0:00:43.820 Filippo: Hei kaikki. Puheenaiheenamme[br]tänään on TLS 1.3. 0:00:43.820,0:00:48.340 TLS 1.3 on tietenkin uusin versio [br]TLS:stä, joka tulee sanoista 0:00:48.340,0:00:52.960 "Transport Layer Security".[br]Se on ehkä tutuin 0:00:52.960,0:00:57.900 vihreästä lukon kuvasta selaimessa,[br]tai vanhasta nimestään: SSL, 0:00:57.900,0:01:02.510 jota yritämme edeelleen tappaa.[br]TLS on 0:01:02.510,0:01:07.890 läpinäkyvä turvallisuusprotokolla,[br]joka voi turvallisesti tunneloida 0:01:07.890,0:01:12.460 mielivaltaista sovellusliikennettä.[br]Sitä käyttävät tietenkin web-selaimet, 0:01:12.460,0:01:16.760 sitä käyttävät sähköpostipalvelimet[br]turvaamaan keskinäistä 0:01:16.760,0:01:22.270 SMTP liikennettään. Sitä käyttävät [br]Tor-solmut keskinäiseen kommunikointiinsa. 0:01:22.270,0:01:26.810 Mutta se kehittyi yli 20 vuoden ajan, 0:01:26.810,0:01:31.320 mutta pohjimmiltaan se koskee asiakasta[br]ja palvelinta jotka haluavat kommunikoida 0:01:31.320,0:01:36.119 turvallisesti verkon yli.[br]Kommunikoidakseen turvallisesti verkon yli 0:01:36.119,0:01:41.170 niiden täytyy luoda avainmateriaalia,[br]sopia keskenään avainmateriaalista 0:01:41.170,0:01:47.349 molemmin puolin salatakseen[br]tulevan liikenteen. 0:01:47.349,0:01:51.989 Se, miten avainmateriaalista sovitaan,[br]hoidetaan vaiheessa, jota kutsumme 0:01:51.989,0:01:57.890 "kättelyksi". Kättelyssä on mukana[br]julkisen avaimen kryptografiaa ja 0:01:57.890,0:02:02.670 dataa, jota lapioidaan asiakkaalta[br]palvelimelle, palvelimelta asiakkaalle. 0:02:02.670,0:02:07.170 Tältä kättely näyttää TLS 1.2:ssa. 0:02:07.170,0:02:12.790 Asiakas aloittaa tanssit[br]lähettämällä "Client Hello"-viestin, 0:02:12.790,0:02:18.960 jossa kertoo, mitä tuettuja[br]parametreja se voi käyttää. 0:02:18.960,0:02:23.430 Palvelin vastaanottaa sen ja lähettää[br]oman viestinsä, joka on 0:02:23.430,0:02:28.200 "Server Hello", joka sanoo "Selvä![br]Käytetään tätä salausalgoritmien yhdistelmää, 0:02:28.200,0:02:33.230 jota sanot tukevasi, ja tässä on minun[br]avainosuuteni käytettäväksi 0:02:33.230,0:02:39.270 tässä avaintenvaihtoalgoritmissa.[br]Lisäksi, tässä on sertifikaatti, 0:02:39.270,0:02:45.300 jonka on allekirjoittanut auktoriteetti,[br]joka todistaa, että todellakin olen 0:02:45.300,0:02:50.370 Cloudflare.com. Ja tässä on allekirjoitus [br]sertifikaatista todistamaan, että tämä 0:02:50.370,0:02:55.450 avainosuus on todellakin se, jota haluan [br]sinun käyttävän avainten luomiseen." 0:02:55.450,0:03:00.940 Asiakas vastaan ottaa sen ja generoi[br]oman avainosuutensa, eli oman puolensa 0:03:00.940,0:03:06.200 Diffie-Hellman avaintenvaihdosta,[br]ja lähettää avainosuuden sekä 0:03:06.200,0:03:10.999 viestin kertoakseen: "Se oli siinä.[br]Kättely on nyt paketissa". 0:03:10.999,0:03:15.490 Tätä kutsutaan "Finished" viestiksi.[br]Palvelin vastaanottaa sen, luo 0:03:15.490,0:03:20.679 oman "Finished" viestinsä ja [br]vastaa sillä. Eli 0:03:20.679,0:03:25.930 nyt voimme vihdoin lähettää sovellusdataa. [br]Kerrataanpa vielä prosessi: 0:03:25.930,0:03:30.022 Asiakas -> Palvelin, Palvelin -> Asiakas;[br]Asiakas -> Palvelin, Palvelin -> Asiakas. 0:03:30.022,0:03:34.960 Meidän täytyi tehdä 2 edestakaista matkaa [br]asiakkaan ja palvelimen välillä ennen 0:03:34.960,0:03:40.730 mitään muuta. Emme ole lähettäneet [br]tavuakaan sovelluskerroksella 0:03:40.730,0:03:46.010 ennen tätä. Tämä tietenkin [br]matkapuhelinverkoissa 0:03:46.010,0:03:50.539 tai tietyissä maailmankolkissa[br]voi kerryttää 0:03:50.539,0:03:55.320 satojen millisekuntien viiveen. [br]Ja tämä täytyy tehdä 0:03:55.320,0:04:00.930 joka kerta, kun uutta yhteyttä avataan.[br]Joka kerta asiakkaan ja palvelimen 0:04:00.930,0:04:06.490 täytyy kulkea kahdesti välinsä[br]luodakseen avaimet ennen 0:04:06.490,0:04:12.730 kuin yhteyttä voi oikeasti[br]käyttää. TLS 1.1 0:04:12.730,0:04:17.950 ja 1.0 eivät eronneet suuresti [br]1.2:sta. Voisikin kysyä: miksi sitten 0:04:17.950,0:04:23.750 pitää kokonainen esitys TLS 1.3:sta,[br]joka on luultavasti vain taas yksi 0:04:23.750,0:04:31.430 iteraatio samasta konseptista? No, [br]TLS 1.3 on oikeasti iso uudelleensuunnittelu. 0:04:31.430,0:04:36.740 Erityisesti kättely on uudelleen järjestetty. [br]Ja tämän näkyvin tulos 0:04:36.740,0:04:43.139 on se, että yksi kokonainen [br]edestakainen matka on karsittu pois. 0:04:43.139,0:04:48.929 Eli, tältä näyttää TLS 1.3-kättely. 0:04:48.929,0:04:53.479 Kuinka 1.3 poistaa edestakaisen matkan?[br]Miten se pystyy siihen? Se kykenee siihen 0:04:53.479,0:04:59.799 ennustamalla, mitä [br]avaintenvaihtoalgoritmia 0:04:59.799,0:05:04.740 palvelin tulee käyttämään, ja[br]lähettämällä ennakkoon avainosuuden 0:05:04.740,0:05:10.029 tuota algoritmia varten palvelimelle.[br]Eli ensimmäisessä viestissä meillä oli 0:05:10.029,0:05:15.529 "Client Hello", tuetut parametrit[br]ja avainosuus algoritmille, 0:05:15.529,0:05:21.549 josta asiakas uskoo palvelimen pitävän.[br]Palvelin vastaanottaa viestin 0:05:21.549,0:05:27.239 ja jos kaikki menee hyvin, se ajattelee:[br]"Ah! Okei! Tykkään tästä avainosuudesta. 0:05:27.239,0:05:32.789 Tässä on oma avainosuuteni samaa[br]algoritmia varten, ja tässä muut 0:05:32.789,0:05:37.719 parametrit, joita meidän tulisi käyttää."[br]Se välittömästi sekoittaa avainosuudet 0:05:37.719,0:05:42.319 saadakseen jaetun yhteisen avaimen, koska[br]nyt sillä on molemmat avainosuudet - 0:05:42.319,0:05:47.089 asiakkaan ja palvelimen - ja lähettää[br]taas sertifikaatin ja allekirjoituksen 0:05:47.089,0:05:51.339 sertifikaatista, ja sitten välittömästi[br]lähettää "Finished"-viestin, koska 0:05:51.339,0:05:56.339 se ei tarvitse mitään muuta asiakkaalta. [br]Asiakas vastaanottaa tuon, ottaa 0:05:56.339,0:06:02.020 avainosuuden, luo jaetun yhteisen avaimen [br]ja lähettää oman "Finished" viestinsä, 0:06:02.020,0:06:07.009 ja on valmis lähettämään sitä sovellus-[br]dataa, jota olikaan lähettämässä. 0:06:07.009,0:06:12.650 Esimerkiksi HTTP-pyyntösi.[br]Nyt prosessi meni näin: 0:06:12.650,0:06:15.919 Asiakas -> Palvelin, Palvelin -> Asiakas. 0:06:15.919,0:06:21.330 Ja olemme valmiita lähettämään[br]sovelluskerroksen dataa. Eli, jos olit 0:06:21.330,0:06:27.239 avaamassa HTTPS-yhteyttä, selaimesi 0:06:27.239,0:06:32.769 ei tarvitse odottaa nelinkertaista viivettä, [br]nelinkertaista pingiä. Sen täytyy 0:06:32.769,0:06:38.929 odottaa vain kaksinkertainen, ja tämä[br]tietysti säästää satoja millisekunteja 0:06:38.929,0:06:46.199 viivettä kun avataan uusia yhteyksiä.[br]Tämä oli onnellinen tapaus. 0:06:46.199,0:06:52.299 Näin käy kun ennustus osuu oikeaan[br]ja palvelin tykkää asiakkaan 0:06:52.299,0:06:58.449 avainosuudesta. Jos palvelin ei tue[br]avainosuutta, jonka 0:06:58.449,0:07:05.169 asiakas lähetti, se lähettää kohteliaan[br]pyynnön käyttää jotain toista algoritmiä, 0:07:05.169,0:07:10.530 jota asiakas sanoi tukevansa. Tätä viestiä[br]kutsutaan nimellä "Hello Retry Request". 0:07:10.530,0:07:16.469 Siinä on eväste, joten se voi olla tilaton[br]mutta periaatteessa se on varakeino, 0:07:16.469,0:07:21.970 jolla palataan käytännössä TLS 1.2[br]kaltaiseen kättelyyn. Eikä se ole kovin 0:07:21.970,0:07:26.939 vaikea toteuttaa, koska asiakas jatkaa[br]uudella "Client Hello":lla, joka näyttää 0:07:26.939,0:07:34.489 periaattessa täysin samalta kuin[br]täysin tuorekin. Nyt... 0:07:34.489,0:07:42.179 Tässä kohtaa olen valehdellut. TLS 1.2[br]ei aina ole 2 edestakaista matkaa. 0:07:42.179,0:07:47.779 Suurin osa yhteyksistä, joita näemme [br]esimerkiksi Cloudflaren reunalta ovat 0:07:47.779,0:07:53.299 istunnon jatkamisia. Eli asiakas on ollut[br]yhteydessä k.o. sivustolle aiemmin. 0:07:53.299,0:07:59.079 Ja voimme käyttää tätä, voimme hyödyntää[br]tätä ja tehdä kättelystä nopeamman. 0:07:59.079,0:08:06.290 Tämä tarkoittaa, että asiakas muistaa[br]jotain avainmateriaalista, jotta pystyy 0:08:06.290,0:08:10.959 avaamaan seuraavan yhteyden vain yhdellä[br]edestakaisella matkalla myös TLS 1.2:ssa. 0:08:10.959,0:08:16.019 Eli tältä se näyttää. Tässä on normaali[br]TLS 1.2 täysi kahden edestakaisen 0:08:16.019,0:08:22.479 matkan yhteys. Ja tässä palvelin lähettää[br]lipun uutta istuntoa varten. Istuntolippu 0:08:22.479,0:08:30.029 ei ole sen kummempi kuin salattu[br]kapseloitu blob sisältäen avainmateriaalia 0:08:30.029,0:08:35.100 jonka asiakas säilyttää. Lippu on[br]salattu ja allekirjoitettu avaimella, 0:08:35.100,0:08:40.039 jonka vain palvelin tietää. Eli se on[br]täysin läpinäkymätön asiakkaalle. 0:08:40.039,0:08:45.040 Mutta asiakas säilyttää sen sekä[br]yhteyden avainmateriaalin, 0:08:45.040,0:08:49.340 jotta seuraavan kerran kun se avaa[br]yhteyttä samalle sivustolle 0:08:49.340,0:08:54.439 se lähettää "Client Hello":n ja[br]istuntolipun. 0:08:54.439,0:08:59.180 Jos palvelin tunnistaa lipun, se purkaa[br]salauksen ja löytää sisältä 0:08:59.180,0:09:04.090 avainmateriaalin. Ja nyt, vain yhden edes-[br]takaisen matkan jälkeen, palvelimella on 0:09:04.090,0:09:09.820 yhteistä avainmateriaalia asiakkaan kanssa[br]koska asiakas säilytti sen viime kerrasta 0:09:09.820,0:09:15.460 ja palvelin juuri purki sen [br]salatusta istuntolipusta. 0:09:15.460,0:09:20.890 Ok? Eli nyt palvelimella on jo käytet-[br]tävissä yhteisiä jaettuja avaimia ja se 0:09:20.890,0:09:26.150 lähettää "Finished" viestin ja asiakas [br]vastaa "Finished" viestillä ja pyynnöllä. 0:09:26.150,0:09:31.550 Eli tämä on TLS 1.2. Tätä tapahtuu jo [br]joka päivä useimpien 0:09:31.550,0:09:37.380 modernien TLS-yhteyksien kanssa. 0:09:37.380,0:09:43.530 TLS 1.3-istunnon jatkaminen ei ole kovin[br]erilainen. Siinäkin on istuntolipun käsite 0:09:43.530,0:09:48.300 Istuntolipun sisällön nimi on muutettu[br]"PSK":ksi, mutta se tulee vain sanoista 0:09:48.300,0:09:53.220 "Pre-shared Key", koska sitähän se on:[br]pelkkää avainmateriaalia, josta 0:09:53.220,0:09:58.480 oli sovittu aiemmin.[br]Ja se toimii samalla tavalla: 0:09:58.480,0:10:02.830 palvelin vastaanottaa istuntolipun,[br]purkaa salauksen ja hyppää 0:10:02.830,0:10:07.450 "Finished" viestiin. 0:10:07.450,0:10:13.070 Ongelma istunnon jatkamisessa on se, että[br]jos hyökkääjällä on hallussaan 0:10:13.070,0:10:17.130 istuntolippu - eli avain, jota palvelin [br]käyttää salamaan istuntolipun, 0:10:17.130,0:10:21.540 jonka sisällä avainmateriaali on - 0:10:21.540,0:10:27.050 hyökkääjä voi passiivisesti, tai jopa[br]tulevaisuudessa kaapatun yhteyden 0:10:27.050,0:10:33.460 tapauksessa, purkaa istuntolipun[br]"Client Hello":sta, löytää sieltä PSK:n 0:10:33.460,0:10:38.320 ja käyttää sitä purkamaan koko yhteyden[br]salauksen. Tämä ei ole hyvä. 0:10:38.320,0:10:42.519 Tämä tarkoittaa, että joku voi tehdä [br]passiivisesti purkaa salausta 0:10:42.519,0:10:47.819 hallinnoimalla istuntolippua. Tähän[br]vastataan yleensä sanomalla, että 0:10:47.819,0:10:52.540 istuntoliput vanhenevat nopeasti. Mutta[br]eikö olisi mukavaa, jos meidän ei 0:10:52.540,0:10:56.270 tarvitsisi luottaa siihen. Ja on olemassa[br]julkaisuja, jotka kertovat meille, 0:10:56.270,0:11:01.310 että toteutukset eivät aina tee tätä[br]oikein. Siispä, 0:11:01.310,0:11:07.050 TLS 1.3 sen sijaan mahdollistaa[br]Diffie-Hellmanin käytön 0:11:07.050,0:11:11.760 istunnon jatkamisessa. 1.2:ssa ei ollut[br]keinoja suojautua 0:11:11.760,0:11:16.720 istuntolipun joutumiselta vääriin[br]käsiin. 1.3:ssa voi sen sijaan 0:11:16.720,0:11:21.409 lähettää avainosuuden osana [br]"Client Hello":ta 0:11:21.409,0:11:25.499 ja palvelin lähettää avainosuuden [br]"Server Hello":n yhteydessä, 0:11:25.499,0:11:31.710 ja osapuolet suorittavat Diffie-Hellmanin.[br]Diffie-Hellmania käytettiin 0:11:31.710,0:11:36.009 jatkosuojauksen toteuttamiseen esimerkiksi[br]sen varalta, että sertifikaatin yksityinen 0:11:36.009,0:11:41.339 avain joutuisi vääriin käsiin 1.2:ssa, ja [br]tässä sitä käytetään jatkosuojauksen 0:11:41.339,0:11:46.290 toteuttamiseen istunnon jatkamisessa.[br]Nyt, saatatte miettiä: 0:11:46.290,0:11:51.240 "Tämä näyttää periaatteessa normaalilta[br]1.3 kättelyltä, 0:11:51.240,0:11:55.770 mikä virka PSK:lla on ylipäätään?"[br]Tästäpä puuttuukin jotakin, 0:11:55.770,0:11:59.510 sertifikaattia ei ole. Koska ei ole [br]tarvetta uudelleen autentikoida 0:11:59.510,0:12:04.620 sertifikaatin avulla, koska asiakas ja [br]palvelin juttelivat aiemmin, joten 0:12:04.620,0:12:09.099 palvelin tietää tarkistaneensa jo[br]palvelimen sertifikaatin, 0:12:09.099,0:12:12.819 ja mikäli palvelin pystyy purkamaan[br]istuntolipun salauksen, se tarkoittaa, 0:12:12.819,0:12:17.879 että palvelin on se joksi itseään väittää.[br]Joten kaksi avainosuutta yhdistetään. 0:12:17.879,0:12:22.860 Sitten yhdistetään PSK:n kanssa, jotta[br]saadaan avain, jolla salataan loput 0:12:22.860,0:12:29.580 yhteydestä. On olemassa vielä yksi [br]uusi ominaisuus, jonka 0:12:29.580,0:12:34.701 TLS 1.3 istunnon jatkaminen tuo mukanaan.[br]Se on se seikka, että se 0:12:34.701,0:12:40.830 mahdollistaa kättelyn ilman edestakaista[br]matkaa (0-RTT). Muistutuksena, 0:12:40.830,0:12:47.280 kaikki kättelyt 1.3:ssa koostuvat enim-[br]mäkseen yhdestä edestaikaisesta matkasta. 0:12:47.280,0:12:52.140 TSL 1.2 istunnon jatkamiset voivat olla[br]minimissään yhden edestakaisen matkan. 0:12:52.140,0:12:58.331 TLS 1.3 istunnon jatkamiset voivat toimia[br]ilman edestakaista matkaa. Kuinka se 0:12:58.331,0:13:04.210 toimii? Ajatellaanpa. [br]Alkuun on PSK. 0:13:04.210,0:13:10.119 Pre-shared Key.[br]Asiakas voi käyttää sitä salaamaan 0:13:10.119,0:13:15.680 tämän alkudatan, jonka haluaa lähettää[br]palvelimelle. Joten asiakas avaa 0:13:15.680,0:13:20.439 yhteyden, palvelimeen johon on aiemmin[br]jo ollut yhteydessä, 0:13:20.439,0:13:25.349 ja lähettää "Client Hello":n, [br]istuntolipun, 0:13:25.349,0:13:29.920 avainosuuden Diffie-Hellmaniin ja [br]alkudatan. Alkudata on 0:13:29.920,0:13:34.410 blob sovellusdataa - se voi olla[br]esimerkiksi HTTP-pyyntö - 0:13:34.410,0:13:39.409 salattuna PSK:lla.[br]Palvelin vastaanottaa tämän, 0:13:39.409,0:13:45.369 purkaa istuntolipun, löytää PSK:n,[br]käyttää PSK:ta purkamaan 0:13:45.369,0:13:50.770 alkudatan ja jatkaa sitten normaalisti:[br]yhdistää avainosuudet, lisää PSK:N, 0:13:50.770,0:13:55.270 luo uuden avaimen lopulle yhteydelle[br]ja jatkaa yhteyttä. 0:13:55.270,0:14:00.289 Eli mitä tässä tapahtui? Voimme lähettää[br]sovellusdataa välittömästi yhteyden 0:14:00.289,0:14:05.339 avaamisen yhteydessä. Tämä tarkoittaa,[br]että poistimme suorituskyvyn 0:14:05.339,0:14:11.320 yleiskustannukset TLS:ssä. 0:14:11.320,0:14:16.460 0-RTT kättelyissä on kuitenkin kaksi[br]vaaran paikkaa, jotka ovat teoriassa 0:14:16.460,0:14:22.540 mahdoton poistaa. Yksi on se, että [br]se kiva asia joka tuli PSK ECDHE moodin 0:14:22.540,0:14:27.829 mukana, se jossa käytetään Diffie-[br]Hellmania istunnon jatkamiseen 0:14:27.829,0:14:33.040 1.3:ssa ei auta 0-RTT datan kanssa. 0:14:33.040,0:14:38.620 Käytämme Diffie-Hellmania kun saavumme[br]dian vihreään laatikkoon. 0:14:38.620,0:14:44.000 Tietysti alkudata on salattu vain [br]PSK:lla. Mietitäänpä taas 0:14:44.000,0:14:49.150 hyökkääjää. Hyökkääjä jollain keinolla[br]varasti istuntolippumme salausavaimet. 0:14:49.150,0:14:54.969 Se voi katsoa "Client Hello":a, purkaa [br]istuntolipun, saada PSK:n, 0:14:54.969,0:15:00.029 käyttää PSK:ta purkamaan alkudatan[br]salauksen. 0:15:00.029,0:15:05.350 Se voi tehdä tämän kaapatustakin liiken-[br]teestä, jos saa istuntolipun myöhemmin. 0:15:05.350,0:15:11.519 Siispä alkudata ei ole jatkosuojattu[br]istuntolipun avainten suhteen. 0:15:11.519,0:15:16.679 Pelkkä PSK on kuitenkin hyödytön, jos [br]käytämme Diffie-Hellmania palvelimen 0:15:16.679,0:15:23.020 vastauksessa. Se on hyödyllinen ainoastaan[br]asiakkaan ensimmäisen viestin kohdalla. 0:15:23.020,0:15:28.340 Kerrataanpa. Tässä on paljon[br]asiaa. TLS 1.2 toi 0:15:28.340,0:15:33.379 jatkosuojauksen sen varalle, että[br]sertifikaatin yksityinen avain 0:15:33.379,0:15:39.119 joutuisi vääriin käsiin jo kauan sitten[br]käyttämällä ECDHE moodeja. 0:15:39.119,0:15:45.030 Siis 1.2 yhteydet voivat olla aina jatko-[br]suojattuja sertifikaatin väärinkäyttöä 0:15:45.030,0:15:50.300 vastaan. TLS 1.3 toimii samoin. 0:15:50.300,0:15:55.090 Ei ole moodia joka olisi jatkosuojaamaton[br]sertifikaatin väärinkäytön varalta. 0:15:55.090,0:16:01.279 Mutta jos ajatellaan mitä istuntolipun[br]avaimelle voi käydä: 0:16:01.279,0:16:06.000 TLS 1.2 ei koskaan ole jatkosuojattu. 0:16:06.000,0:16:11.149 TLS 1.2:ssa istuntolipun murtaminen[br]johtaa aina kykyyn passiivisesti 0:16:11.149,0:16:15.819 ja jatkossa murtaa jatkettujen istuntojen[br]salaus. 0:16:15.819,0:16:22.689 1.3:ssa sen sijaan, jos käytämme PSK ECDHE:tä,[br]ainoastaan alkudatan salaus 0:16:22.689,0:16:28.270 voidaan purkaa käyttämällä[br]pelkästään istuntolippua. 0:16:28.270,0:16:33.199 Kuten sanoin, vaaran paikkoja on kaksi. 0:16:33.199,0:16:39.329 Toinen se, että 0-RTT dataa voidaan[br]käyttää toistohyökkäyksessä. 0:16:39.329,0:16:45.449 Olkoon tilanne tämä: alkudata[br]sisältää dataa, joka on jollain tapaa 0:16:45.449,0:16:51.709 autentikoitu. Se voi olla HTTP-pyyntö,[br]joka sisältää evästeitä. 0:16:51.709,0:16:58.070 Tuo HTTP-pyyntö jollain tapaa[br]suorittaa transaktion, 0:16:58.070,0:17:03.150 okei? Ehkä se on tilisiirto. Ohjeistaa[br]palvelinta tekemään jotain. Hyökkääjä 0:17:03.150,0:17:07.580 haluaa toistaa tuota tapahtumaa. Se ei[br]tietenkään voi purkaa sen salausta 0:17:07.580,0:17:13.149 - sehän on suojattu TLS:llä. Eli se ei voi[br]nähdä evästeen sisältöä eikä se voi 0:17:13.149,0:17:17.689 muokata sitä, koska se on TLS-suojattu.[br]Mutta se voi kaapata salatun 0:17:17.689,0:17:23.069 viestin ja lähettää sen uudelleen 0:17:23.069,0:17:27.900 palvelimelle. Jos palvelimia on yksi,[br]tähän on helppo ratkaisu. 0:17:27.900,0:17:32.520 Pidä kirjaa nähdyistä viesteistä[br]ja ajattele kutakuinkin näin: 0:17:32.520,0:17:37.500 "Ei. Tämä näyttää täsmälleen samalta kuin[br]mitä sain aiemmin." Mutta jos esimerkiksi 0:17:37.500,0:17:42.270 kuten Cloudflare pyörität useita data-[br]keskuksia ympäri maailmaa, et voi pitää 0:17:42.270,0:17:47.650 yhdenmukaisia tiloja jatkuvasti, reaali-[br]ajassa, kaikkien koneiden välillä. Olisi 0:17:47.650,0:17:52.370 ei koneita, jotka tämän viestin saatuaan[br]ajattelisivat näin: 0:17:52.370,0:17:57.530 "Toki, minulla on istuntolipun avain,[br]dekryptaan PSK:n, käytän PSK:ta, 0:17:57.530,0:18:02.080 dekryptaan alkudatan, löydän sieltä jotain,[br]ja suoritan sen, mitä se käskee minun 0:18:02.080,0:18:07.510 tehdä." Tämä ei tietenkään ole suotavaa. 0:18:07.510,0:18:13.010 Yksi TLS.n tarjoama vastatoimi on,[br]että asiakas lähettää samassa 0:18:13.010,0:18:18.689 paketissa arvon, joka kertoo[br]millisekunteina, kuinka kauan sitten sain 0:18:18.689,0:18:23.790 haltuuni istuntolipun. Palvelin katsoo[br]sitä arvoa, ja jos se ei täsmää 0:18:23.790,0:18:29.080 sen omaan näkemykseen tästä [br]tiedosta, se hylkää viestin. 0:18:29.080,0:18:34.020 Tämä tarkoittaa, että jos hyökkääjä[br]kaappaa viestin ja 10s myöhemmin 0:18:34.020,0:18:40.000 yrittää toistohyökkäystä, ajat eivät[br]täsmää ja palvelin hylkää viestin. 0:18:40.000,0:18:44.510 Tämä ei kuitenkaan ole täysi ratkaisu,[br]sillä tarpeeksi nopea hyökkääjä voi 0:18:44.510,0:18:50.369 silti tehdä toistohyökkäyksiä.[br]Eli, palvelin voi ainoastaan joko 0:18:50.369,0:18:55.970 hyväksyä 0-RTT datan tai [br]hylätä sen. 0:18:55.970,0:19:00.570 Se ei voi vain ottaa jotain osaa siitä tai[br]kurkistaa siihen ja päättää sitten, koska 0:19:00.570,0:19:05.540 "Server Hello" viesti kertoo [br]hyväksyttiinkö vai hylättiinkö se. 0:19:05.540,0:19:09.759 Ja asiakas jatkaa alkudatan lähettämistä[br]kunnes se saa "Server Hello" viestin. 0:19:09.759,0:19:15.960 Tässä on kilpailu. Joten palvelimen täytyy[br]sokkona pättää "Otanko 0-RTT data vastaan 0:19:15.960,0:19:20.990 vai hylkäänkö sen kaiken?" Jos se hyväksyy[br]sen, ja sitten huomaa sen olevan jotain 0:19:20.990,0:19:26.750 mitä se ei voi prosessoida koska "Herran-[br]jestas, täällä on HTTP POST, joka käskee 0:19:26.750,0:19:32.470 siirtämään rahaa. En voi tehdä tätä, jos[br]en tiedä ettei tämä ole toistohyökkäys." 0:19:32.470,0:19:37.060 Palvelimen täytyy saada jonkinlainen[br]vahvistus. Hyvä uutinen on se, että jos 0:19:37.060,0:19:40.600 palvelin odottaa "Finished" [br]viestiä... Palvelin lähettää 0:19:40.600,0:19:45.280 "Server Hello":n, "Finished":n ja [br]odottaa asiakkaan vastaavaa. 0:19:45.280,0:19:51.050 Kun asiakkaan oma saapuu, se tarkoittaa,[br]ettei kyseessä ollut toistohyökkäys, 0:19:51.050,0:19:54.950 sillä tuo "Finished" viesti [br]viimeistelee koko kättelyn 0:19:54.950,0:19:59.769 yhdessä tietyn satunnaisarvon kanssa,[br]jonka palvelin lähetti. Kyseessä ei siis 0:19:59.769,0:20:04.380 voi olla toistohyökkäys. Eli nämä ovat[br]palvelimen vaihtoehdot: se voi hyväksyä 0:20:04.380,0:20:08.780 alkudatan ja jos se on jotain mikä[br]ei ole idempotenttia, jotain mikä on 0:20:08.780,0:20:14.610 vaarallista, jos se toistetaan, se voi[br]yksinkertaisesti odottaa vahvistusta. 0:20:14.610,0:20:18.850 Mutta se tarkoittaa, että se on laitettava[br]välimuistiin, ja tässä on riski, mikäli 0:20:18.850,0:20:25.580 hyökkääjä lähettää HTTP POST:n valtavalla [br]rungolla tarkoituksenaan täyttää muisti. 0:20:25.580,0:20:31.840 Tajusimme voivamme auttaa tässä, jos[br]kirjoitamme istuntolippuihin, 0:20:31.840,0:20:37.240 mikä on maksimimäärä alkudataa,[br]jonka asiakas voi lähettää. 0:20:37.240,0:20:41.500 Jos huomaamme jonkun lähettävän enemmän,[br]kyseessä on hyökkääjä ja 0:20:41.500,0:20:47.499 katkaisemme yhteyden, tyhjennämme[br]välimuistin vapauttaaksemme muistia. 0:20:47.499,0:20:52.969 Mutta. Jokatapauksessa. Vastatoimista [br]huolimatta, ellemme pysty pitämään 0:20:52.969,0:20:58.780 yhtenäistä maailmanlaajuista tilaa [br]palvelimien välillä, meidän täytyy kertoa 0:20:58.780,0:21:03.429 sovellukselle toistohyökkäyksen mahdol-[br]lisuudesta. Spesifikaatio tietää tämän. 0:21:03.429,0:21:08.150 TLS 1.3 spesifikaatio YKSISELITTEISESTI toteaa 0:21:08.150,0:21:14.420 protokollien EI tule käyttää [br]0-RTT:tä ilman profiilia, joka 0:21:14.420,0:21:19.159 määrittelee sen käytön. Eli tarkoittaa[br]"tietämättä mitä ne ovat tekemässä". 0:21:19.159,0:21:24.419 Tämä tarkoittaa, että TLS-pinon APIen[br]täytyy tehdä 1-RTT oletuksena, 0:21:24.419,0:21:30.360 joihin toistohyökkäykset eivät toimi,[br]ja sitten antaa palvelimen 0:21:30.360,0:21:35.571 kutsua joitakin API:ja hylätäkseen [br]tai odottaakseen vahvistusta, 0:21:35.571,0:21:41.470 ja antaa asiakkaan päättää, mitä tähän[br]vaaralliseen toistohyökkäysalttiiseen 0:21:41.470,0:21:46.040 dataan tulee. Tämä riippuu 0:21:46.040,0:21:49.840 protokollasta, mutta entäpä [br]lempiprotokollamme? Entäpä 0:21:49.840,0:21:55.329 HTTP? HTTP:n pitäisi olla[br]helppo. HTTP-spesifikaatio, 0:21:55.329,0:22:00.759 käykää vaikka lukemassa, sanoo:[br]"GET-pyynnöt ovat idempotentteja, 0:22:00.759,0:22:06.149 niiden ei tule muuttaa mitään palveli-[br]mella". Selvä! Sallimme nyt ainoastaan 0:22:06.149,0:22:10.670 GET-pyynnöt alkudatassa, koska niitä ei[br]voi hyödyntää toistohyökkäyksissä! 0:22:10.670,0:22:16.640 Jes! Ei. Internetissä on [br]takuuvarmasti palvelin, 0:22:16.640,0:22:23.020 jossa on sen kaltaista kuin[br]“send-money.php?to=filippo&amount=this” 0:22:23.020,0:22:28.870 ja se on GET-pyyntö. Ja jos hyökkääjä[br]kaappaa tämän, mikä on alkudataa, 0:22:28.870,0:22:33.510 ja sitten käyttää tätä toistohyökkäykses-[br]sä toista palvelinta vastaan, se 0:22:33.510,0:22:38.780 suoritetaan kahdesti.[br]Ja se ei käy päinsä. 0:22:38.780,0:22:43.300 Mitä siis voidaan tehdä? 0:22:43.300,0:22:46.890 Teemme kompromisseja! 0:22:46.890,0:22:51.779 Jos tunntet sovelluksesi, voit tehdä hyvin[br]spesifejä kompromisseja. Esimerkiksi 0:22:51.779,0:22:57.020 Google on ajanut QUIC:iä[br]0-RTT:llä hyvinkin pitkään. 0:22:57.020,0:23:02.200 Uskoakseni 3 vuotta? Se tarkoittaa, että[br]he tuntevat oman sovelluksena oiken hyvin. 0:23:02.200,0:23:07.419 Ja he tietävät ettei heillä ole[br]"send-money.php" päätepisteitä. 0:23:07.419,0:23:12.710 Mutta jos olet kuin Cloudflare, joka[br]hallinnnoi suurta määrää sovelluksia, 0:23:12.710,0:23:17.720 et voi tehdä noin laajoja olettamuksia,[br]ja täytyy sen sijaan yrittää 0:23:17.720,0:23:22.570 löytää kultainen keskitie. Me [br]saattaisimme esimerkiksi päättää 0:23:22.570,0:23:28.730 salli GET-pyynnöt juurihakemistoon.[br]Eli "GET /", 0:23:28.730,0:23:33.200 mikä saattaisi tuoda eniten hyötyä, sillä[br]ehkä suurin osa yhteyksistä alkaa noin, 0:23:33.200,0:23:38.710 ja se on vähiten todennäköinen[br]aiheuttamaan hankaluuksia. 0:23:38.710,0:23:43.140 Mietimme edelleen kuinka sovellamme[br]tätä sovelluksiin. Eli jos tiedossasi 0:23:43.140,0:23:48.199 on sovellus, joka tulisi kärsimään [br]jostain noin yksinkertaisesta, 0:23:48.199,0:23:53.840 lähetä meille sähköpostia. Mutta [br]itseasiassa, jos sinulla on noin 0:23:53.840,0:23:59.160 haavoittuvainen sovellus, minulla[br]on huonoja uutisia. Thai Duong et. al. 0:23:59.160,0:24:04.150 osoittivat, että tämän päivän selaimet,[br]ilman TLS 1.3:a tai muutakaan, 0:24:04.150,0:24:09.740 toistavat HTTP-pyyntöjä[br]verkkovirheiden sattuessa. 0:24:09.740,0:24:15.670 Ja ne toistavat ne hiljaisesti.[br]Eli lopputulema ei välttämättä ole 0:24:15.670,0:24:21.990 huonompi kuin nykytila. Selvä.[br]Näen, että kaikki alkavat olla 0:24:21.990,0:24:27.959 levottomia ja ajattelevat[br]"Kryptografit ovat taas asialla! 0:24:27.959,0:24:32.740 He tekevät tarvitsemastamme turvallisuus-[br]protokollasta tarpeettoman monimutkaisen 0:24:32.740,0:24:38.889 turvatakseen työpaikkansa[br]seuraavaksi 15 vuodeksi!" Eikö? 0:24:38.889,0:24:44.479 Ei. Ei. Voin itseasiassa taata, että 0:24:44.479,0:24:49.709 yksi suurista muutoksista, mielestäni[br]suurempi kuin edestakaiset matkat 1.3:ssa, 0:24:49.709,0:24:54.770 on, että kaikkea punnitaan saadun hyödyn[br]ja sen aiheuttaman monimutkaisuuden 0:24:54.770,0:24:59.180 kannalta. Ja vaikka 0-RTT pääsi jatkoon 0:24:59.180,0:25:02.630 valtaosa ei päässyt. 0:25:02.630,0:25:07.890 Nick: Selvä. Kiitos Filippo. 0:25:07.890,0:25:13.640 TLS 1.3 ollessa iteraatio TLS:stä[br]mekin menimme taaksepäin, tai, 0:25:13.640,0:25:18.120 "me", jotka olemme ihmiset jotka tutkimme[br]TLS:ää, katsoimme taaksepäin ja 0:25:18.120,0:25:22.770 kertasimme olemassaolevia TLS 1.2 ominai-[br]suuksia, jotka vaikuttivat järkeviltä 0:25:22.770,0:25:27.439 aikanaan ja päätimme, oliko kompleksisuus[br]tai vaara, jotka nämä TLS:n ominaisuudet, tai 0:25:27.439,0:25:32.349 protokollat, tai primitiivit toivat mukanaan 0:25:32.349,0:25:37.739 järkeviä säilyttää. Ja yksi iso, joka [br]sattui prosessin alussa on 0:25:37.739,0:25:43.790 "staattinen RSA" moodi. Näin TLS on[br]toiminut SSL:n ajoista lähtien. 0:25:43.790,0:25:48.179 Sen sijaan, että käytettäisiin Diffie-[br]Hellmania yhteisen avaimen luontiin, 0:25:48.179,0:25:52.320 asiakas luo oman jaetun avaimensa, ja [br]salaa sen palvelimen sertifikaatin 0:25:52.320,0:25:56.570 julkisella avaimella, joka on RSA-avain,[br]ja lähettää sen sitten 0:25:56.570,0:26:00.770 sellaisenaan palvelimelle.[br]Ja palvelin sitten käyttää omaa 0:26:00.770,0:26:04.650 yksityistä avaintaan purkamaan salauksen ja[br]luomaan yhteisen avaimen. Eli asiakas 0:26:04.650,0:26:09.710 luo kaiken avainmateriaalin tässä[br]tapauksessa. Yksi asia on melko selvä 0:26:09.710,0:26:13.650 tässä on, että jos sertifikaatin[br]yksityinen avain murretaan, 0:26:13.650,0:26:18.149 vaikka vuosiakin myöhemmin, joku[br]jolla on tallenteet tapahtumista voi 0:26:18.149,0:26:23.480 mennä taaksepäin ja purkaa tämän avain-[br]materiaalin ja siten koko keskustelun. 0:26:23.480,0:26:28.419 Tämä poistettiin ihan TLS 1.3-prosessin[br]alkuvaiheessa, noin kaksi vuotta sitten. 0:26:28.419,0:26:33.919 Joten suureksi yllätykseksemme,[br]ja kaikkien, jotka kuuluvat 0:26:33.919,0:26:39.680 TLS:ää koskevaan sähköpostitus-[br]listaa, ihan vasta äskettäin, 0:26:39.680,0:26:44.610 standardointiprosessin loppuvaiheessa,[br]kun TLS 1.3 oli melkein valmis, 0:26:44.610,0:26:50.800 tämä sähköposti ilmestyi. Ja tämä on[br]Andrew Kennedyltä, joka työskentelee 0:26:50.800,0:26:56.550 BITS:lle, mikä tarkoittaa pääpiirteittäin,[br]että hän työskentelee pankeille. Hän sanoo 0:26:56.550,0:27:01.670 "RSA-avaintenvaihdon tuen lopettaminen[br]TLS 1.3:ssa aiheuttaa suuria ongelmia 0:27:01.670,0:27:06.760 finanssilaitoksille, joista melkein kaikki[br]käyttävät TLS:ää sisäisesti ja joilla on 0:27:06.760,0:27:12.510 suuria, turvallisuuskriittisiä investoin-[br]teja ulkopuoliseen TLS-dekryptaamiseen. 0:27:12.510,0:27:17.810 "Ulkopuoliseen (3. osapuolen) TLS-dekryp-[br]taamiseen" hmm.. (naurua - aplodeja) 0:27:17.810,0:27:23.490 Se todella kuulostaa kriittiseltä...[br]kriittiseltä jollekin, eikö? 0:27:23.490,0:27:26.140 (naurua - aplodeja)[br]Eli... 0:27:26.140,0:27:32.200 (naurua)[br](aplodeja) 0:27:32.200,0:27:37.039 Yksi valonpilkahduksista oli Kenny [br]Patersonin vastaus tähän, 0:27:37.039,0:27:41.680 joka kuului näin: "Minun näkemykseni[br]pyyntöäsi koskien: ei. 0:27:41.680,0:27:44.920 Perustelu: Yritämme rakentaa turvallisem-[br]paa internettiä." Korostus 0:27:44.920,0:27:47.350 on oma lisäykseni, mutta hän varmasti[br]tarkoitti sitä 0:27:47.350,0:27:54.100 (aplodeja) 0:27:54.100,0:27:58.840 Tämän jälkeen pankkiväki saapui IETF:ään[br]ja näytti tämän dian kuvaillakseen, kuinka 0:27:58.840,0:28:04.460 vaikeaa heidän järjestelmänsä[br]debuggaaminen on. Tämä on yksinkertaista.. 0:28:04.460,0:28:09.270 Ilmeisesti pankkiympäristössä. Nuo ovat[br]eri kytkimiä, reitittimiä, 0:28:09.270,0:28:14.480 väliohjelmistoja, web-sovelluksia, ja [br]kaikki keskustelevat TLS:llä. 0:28:14.480,0:28:19.730 Tämän keskustelun jälkeen[br]päädyimme kompromissiin. 0:28:19.730,0:28:24.160 Protokollan vaarantamisen sijaan [br]Matthew Green 0:28:24.160,0:28:28.900 opetti heille, kuinka käyttää Diffie-[br]Hellmania väärin. Lopulta he kykenivät 0:28:28.900,0:28:33.110 siihen, mitä halusivat ilman,[br]että me - tai kukaan muu 0:28:33.110,0:28:36.780 akateemisessa yhteisössä, tai [br]TLS yhteisössä - palautti 0:28:36.780,0:28:41.720 TLS:ään tämän turvattoman osan. 0:28:41.720,0:28:45.580 Jos haluat lukea tämän, se kertoo[br]kuinka tähän pystytään. Joka tapauksessa 0:28:45.580,0:28:49.970 - emme laittaneet sitä takaisin.[br]Kiteytettynä, älkää tehkö näin! 0:28:49.970,0:28:54.300 (aplodeja) 0:28:54.300,0:29:00.100 Eli tapoimme staattisen RSA:n, ja mitä[br]muuta tapoimme? No, kun katsotaan 0:29:00.100,0:29:03.769 taaksepäin hyötyihin ja haittoihin,[br]TLS 1.2 käyttää tiettyjä primitiivejä, 0:29:03.769,0:29:08.519 jotka vain eivät ole kestäneet [br]ajan hammasta. 0:29:08.519,0:29:12.130 RC4 jonosalain. Poissa![br](aplodeja) 0:29:12.130,0:29:14.790 3DES (Triple DES) lohkosalain. Poissa![br](aplodeja) 0:29:14.790,0:29:21.529 MD5, SHA1... molemmat poissa. Yo![br](jatkuvia aplodeja) 0:29:21.529,0:29:26.480 On vielä rakennelmia, jotka...[br]perus lohkosalain rakennelmia, 0:29:26.480,0:29:31.640 jotka ovat poissa: AES-CBC.[br]Poissa. RSA-PKCS1-1.5, 0:29:31.640,0:29:36.810 tämä on tiedetty ongelmalliseksi[br]jo vuodesta 1998, myöskin poissa! 0:29:36.810,0:29:41.770 Myös useita ominaisuuksia kuten kompressio[br]ja uudellenneuvottelu on poistettu, jonka 0:29:41.770,0:29:47.130 korvasi hyvin kevyt "avaimen päivitys"[br]mekanismi. Siis TLS 1.3:ssa 0:29:47.130,0:29:52.490 mikään näistä ei läpäissyt hyöty vs.[br]kompleksisuus -testiä. Ja monet näistä 0:29:52.490,0:29:58.030 haavoittuvuksista, joita saatatte[br]tunnistaa, on mahdottomia TLS 1.3:ssa. 0:29:58.030,0:30:04.010 (aplodeja) 0:30:04.010,0:30:09.149 0:30:09.149,0:30:14.549 0:30:14.549,0:30:18.680 0:30:18.680,0:30:24.030 0:30:24.030,0:30:27.640 0:30:27.640,0:30:32.340 0:30:32.340,0:30:37.520 0:30:37.520,0:30:41.810 0:30:41.810,0:30:47.020 0:30:47.020,0:30:53.090 0:30:53.090,0:30:59.300 0:30:59.300,0:31:02.669 0:31:02.669,0:31:06.980 0:31:06.980,0:31:11.649 0:31:11.649,0:31:16.129 0:31:16.129,0:31:21.290 0:31:21.290,0:31:27.860 0:31:27.860,0:31:33.410 0:31:33.410,0:31:36.920 0:31:36.920,0:31:41.949 0:31:41.949,0:31:47.940 0:31:47.940,0:31:51.960 0:31:51.960,0:31:56.540 0:31:56.540,0:32:01.199 0:32:01.199,0:32:05.599 0:32:05.599,0:32:10.760 0:32:10.760,0:32:15.690 0:32:15.690,0:32:21.970 0:32:21.970,0:32:27.800 0:32:27.800,0:32:33.301 0:32:33.301,0:32:37.441 0:32:37.441,0:32:43.410 0:32:43.410,0:32:49.199 0:32:49.199,0:32:55.679 0:32:55.679,0:33:02.509 0:33:02.509,0:33:07.860 0:33:07.860,0:33:13.619 0:33:13.619,0:33:18.139 0:33:18.139,0:33:23.859 0:33:23.859,0:33:29.780 0:33:29.780,0:33:35.950 0:33:35.950,0:33:42.090 0:33:42.090,0:33:46.770 0:33:46.770,0:33:52.990 0:33:52.990,0:33:58.579 0:33:58.579,0:34:04.090 0:34:04.090,0:34:09.439 0:34:09.439,0:34:13.619 0:34:13.619,0:34:18.949 0:34:18.949,0:34:25.959 0:34:25.959,0:34:31.729 0:34:31.729,0:34:36.760 0:34:36.760,0:34:41.779 0:34:41.779,0:34:47.990 0:34:47.990,0:34:53.490 0:34:53.490,0:34:58.670 0:34:58.670,0:35:04.040 0:35:04.040,0:35:10.130 0:35:10.130,0:35:14.670 0:35:14.670,0:35:18.820 0:35:18.820,0:35:23.400 0:35:23.400,0:35:28.620 0:35:28.620,0:35:33.060 0:35:33.060,0:35:38.720 0:35:38.720,0:35:44.350 0:35:44.350,0:35:49.830 0:35:49.830,0:35:55.580 0:35:55.580,0:35:59.420 0:35:59.420,0:36:04.230 0:36:04.230,0:36:10.920 0:36:10.920,0:36:12.840 0:36:12.840,0:36:15.710 0:36:15.710,0:36:20.670 0:36:20.670,0:36:25.840 0:36:25.840,0:36:30.310 0:36:30.310,0:36:34.170 0:36:34.170,0:36:40.120 0:36:40.120,0:36:45.360 0:36:45.360,0:36:50.570 0:36:50.570,0:36:54.730 0:36:54.730,0:36:59.760 0:36:59.760,0:37:03.461 0:37:03.461,0:37:07.910 0:37:07.910,0:37:13.250 0:37:13.250,0:37:19.920 0:37:19.920,0:37:24.630 0:37:24.630,0:37:29.200 0:37:29.200,0:37:34.330 0:37:34.330,0:37:39.980 0:37:39.980,0:37:46.080 0:37:46.080,0:37:51.590 0:37:51.590,0:37:57.330 0:37:57.330,0:38:02.400 0:38:02.400,0:38:07.860 0:38:07.860,0:38:12.220 0:38:12.220,0:38:15.550 0:38:15.550,0:38:21.380 0:38:21.380,0:38:27.561 0:38:27.561,0:38:32.521 0:38:32.521,0:38:36.330 0:38:36.330,0:38:40.980 0:38:40.980,0:38:46.910 0:38:46.910,0:38:52.810 0:38:52.810,0:38:59.020 0:38:59.020,0:39:04.190 0:39:04.190,0:39:09.300 0:39:09.300,0:39:14.190 0:39:14.190,0:39:18.370 0:39:18.370,0:39:23.230 0:39:23.230,0:39:29.230 0:39:29.230,0:39:34.130 0:39:34.130,0:39:38.620 0:39:38.620,0:39:43.550 0:39:43.550,0:39:49.980 0:39:49.980,0:39:55.650 0:39:55.650,0:40:00.610 0:40:00.610,0:40:04.950 0:40:04.950,0:40:10.510 0:40:10.510,0:40:16.330 0:40:16.330,0:40:21.670 0:40:21.670,0:40:27.230 0:40:27.230,0:40:32.550 0:40:32.550,0:40:38.180 0:40:38.180,0:40:44.000 0:40:44.000,0:40:49.071 0:40:49.071,0:40:54.950 0:40:54.950,0:40:59.860 0:40:59.860,0:41:02.030 0:41:02.030,0:41:07.840 0:41:07.840,0:41:12.940 0:41:12.940,0:41:18.040 0:41:18.040,0:41:22.520 0:41:22.520,0:41:25.780 0:41:25.780,0:41:30.400 0:41:30.400,0:41:35.410 0:41:35.410,0:41:38.860 0:41:38.860,0:41:44.800 0:41:44.800,0:41:50.040 0:41:50.040,0:41:55.300 0:41:55.300,0:42:00.240 0:42:00.240,0:42:05.210 0:42:05.210,0:42:10.720 0:42:10.720,0:42:14.870 0:42:14.870,0:42:20.030 0:42:20.030,0:42:23.870 0:42:23.870,0:42:28.130 0:42:28.130,0:42:32.780 0:42:32.780,0:42:37.640 0:42:37.640,0:42:43.720 0:42:43.720,0:42:49.000 0:42:49.000,0:42:53.761 0:42:53.761,0:42:58.511 0:42:58.511,0:43:02.670 0:43:02.670,0:43:07.960 0:43:07.960,0:43:13.080 0:43:13.080,0:43:18.780 0:43:18.780,0:43:24.880 0:43:24.880,0:43:30.680 0:43:30.680,0:43:35.610 0:43:35.610,0:43:39.640 0:43:39.640,0:43:44.340 0:43:44.340,0:43:48.820 0:43:48.820,0:43:53.920 0:43:53.920,0:43:56.980 0:43:56.980,0:44:01.050 0:44:01.050,0:44:06.320 0:44:06.320,0:44:08.760 0:44:08.760,0:44:13.850 0:44:13.850,0:44:18.830 0:44:18.830,0:44:23.430 0:44:23.430,0:44:28.680 0:44:28.680,0:44:32.950 0:44:32.950,0:44:37.740 0:44:37.740,0:44:43.250 0:44:43.250,0:44:48.850 0:44:48.850,0:44:52.890 0:44:52.890,0:44:57.640 0:44:57.640,0:45:02.950 0:45:02.950,0:45:08.330 0:45:08.330,0:45:13.370 0:45:13.370,0:45:17.990 0:45:17.990,0:45:24.210 0:45:24.210,0:45:28.500 0:45:28.500,0:45:33.970 0:45:33.970,0:45:38.990 0:45:38.990,0:45:45.190 0:45:45.190,0:45:50.510 0:45:50.510,0:45:56.000 0:45:56.000,0:46:00.830 0:46:00.830,0:46:06.960 0:46:06.960,0:46:12.010 0:46:12.010,0:46:17.800 0:46:17.800,0:46:23.630 0:46:23.630,0:46:29.140 0:46:29.140,0:46:34.590 0:46:34.590,0:46:40.030 0:46:40.030,0:46:44.970 0:46:44.970,0:46:50.610 0:46:50.610,0:46:54.980 0:46:54.980,0:47:00.170 0:47:00.170,0:47:05.050 0:47:05.050,0:47:11.160 0:47:11.160,0:47:16.110 0:47:16.110,0:47:21.560 0:47:21.560,0:47:26.510 0:47:26.510,0:47:30.640 0:47:30.640,0:47:36.230 0:47:36.230,0:47:40.830 0:47:40.830,0:47:46.080 0:47:46.080,0:47:50.860 0:47:50.860,0:47:56.210 0:47:56.210,0:47:59.990 0:47:59.990,0:48:11.770 0:48:11.770,0:48:15.690 0:48:15.690,0:48:19.770 0:48:19.770,0:48:23.930 0:48:23.930,0:48:28.160 0:48:28.160,0:48:32.450 0:48:32.450,0:48:34.130 0:48:34.130,0:48:40.230 0:48:40.230,0:48:45.500 0:48:45.500,0:48:50.791 0:48:50.791,0:48:54.800 0:48:54.800,0:48:59.980 0:48:59.980,0:49:06.920 0:49:06.920,0:49:09.570 0:49:09.570,0:49:12.680 0:49:12.680,0:49:17.610 0:49:17.610,0:49:21.170 0:49:21.170,0:49:24.580 0:49:24.580,0:49:28.000 0:49:28.000,0:49:33.250 0:49:33.250,0:49:39.120 0:49:39.120,0:49:43.260 0:49:43.260,0:49:47.700 0:49:47.700,0:49:55.100 0:49:55.100,0:49:57.630 0:49:57.630,0:50:01.720 0:50:01.720,0:50:07.350 0:50:07.350,0:50:11.330 0:50:11.330,0:50:17.670 0:50:17.670,0:50:23.120 0:50:23.120,0:50:27.080 0:50:27.080,0:50:31.820 0:50:31.820,0:50:36.400 0:50:36.400,0:50:42.890 0:50:42.890,0:50:46.660 0:50:46.660,0:50:49.590 0:50:49.590,0:50:54.430 0:50:54.430,0:50:57.940 0:50:57.940,0:51:03.800 0:51:03.800,0:51:09.190 0:51:09.190,0:51:14.600 0:51:14.600,0:51:20.140 0:51:20.140,0:51:21.990 0:51:21.990,0:51:24.950 0:51:24.950,0:51:28.940 0:51:28.940,0:51:32.720 0:51:32.720,0:51:37.120 0:51:37.120,0:51:41.550 0:51:41.550,0:51:45.920 0:51:45.920,0:51:49.670 0:51:49.670,0:51:55.590 0:51:55.590,0:52:01.790 0:52:01.790,0:52:06.210 0:52:06.210,0:52:11.250 0:52:11.250,0:52:17.230 0:52:17.230,0:52:22.550 0:52:22.550,0:52:29.450 0:52:29.450,0:52:35.270 0:52:35.270,0:52:39.620 0:52:39.620,0:52:44.960 0:52:44.960,0:52:49.140 0:52:49.140,0:52:53.050 0:52:53.050,0:52:59.030 0:52:59.030,0:53:03.180 0:53:03.180,0:53:08.820 0:53:08.820,0:53:14.210 0:53:14.210,0:53:19.700 0:53:19.700,0:53:21.950 0:53:21.950,0:53:25.520 0:53:25.520,0:53:29.480 0:53:29.480,0:53:33.200 0:53:33.200,0:53:38.170 0:53:38.170,0:53:41.240 0:53:41.240,0:53:47.440 0:53:47.440,0:53:54.350 0:53:54.350,0:53:59.030 0:53:59.030,0:54:02.650 0:54:02.650,0:54:06.600 0:54:06.600,0:54:11.810 0:54:11.810,0:54:18.430 0:54:18.430,0:54:22.970 0:54:22.970,0:54:27.490 0:54:27.490,0:54:30.960 0:54:30.960,0:54:36.440 0:54:36.440,0:54:42.690 0:54:42.690,0:54:48.810 0:54:48.810,0:54:52.740 0:54:52.740,0:54:59.600 0:54:59.600,0:55:04.180 0:55:04.180,0:55:09.990 0:55:09.990,0:55:16.460 0:55:16.460,0:55:21.610 0:55:21.610,0:55:25.830 0:55:25.830,0:55:30.620 0:55:30.620,0:55:35.990 0:55:35.990,0:55:41.650 0:55:41.650,0:55:45.670 0:55:45.670,0:55:51.620 0:55:51.620,0:55:57.940 0:55:57.940,0:56:01.910 0:56:01.910,0:56:07.310 0:56:07.310,0:56:12.900 0:56:12.900,0:56:18.630 0:56:18.630,0:56:23.910 0:56:23.910,0:56:28.520 0:56:28.520,0:56:32.490 0:56:32.490,0:56:34.610 0:56:34.610,0:56:37.760 0:56:37.760,0:56:43.060 0:56:43.060,0:56:45.800 0:56:45.800,0:56:47.910 0:56:47.910,0:56:53.250 0:56:53.250,0:56:59.290 0:56:59.290,0:57:03.450 0:57:03.450,0:57:06.750 0:57:06.750,0:57:12.690 0:57:12.690,0:57:18.310 0:57:18.310,0:57:23.540 0:57:23.540,0:57:28.110 0:57:28.110,0:57:32.420 0:57:32.420,0:57:37.970 0:57:37.970,0:57:44.040 0:57:44.040,0:57:50.980 0:57:50.980,0:57:54.050 0:57:54.050,0:57:59.300 0:57:59.300,0:58:02.951 0:58:02.951,0:58:08.010 0:58:08.010,0:58:13.990 0:58:13.990,0:58:21.070 0:58:21.070,0:58:28.150 0:58:28.150,0:58:32.950 0:58:32.950,0:58:37.650 0:58:37.650,0:58:42.470 0:58:42.470,0:58:47.460 0:58:47.460,0:58:53.171 0:58:53.171,0:58:57.600 0:58:57.600,0:59:02.560 0:59:02.560,0:59:08.240 0:59:08.240,0:59:13.010 0:59:13.010,0:59:18.750 0:59:18.750,0:59:24.960 0:59:24.960,0:59:30.340 0:59:30.340,0:59:35.500 0:59:35.500,0:59:41.610 0:59:41.610,0:59:44.540 0:59:44.540,0:59:47.480 0:59:47.480,0:59:51.750 0:59:51.750,0:59:57.110 0:59:57.110,1:00:02.350 1:00:02.350,1:00:08.640 1:00:08.640,1:00:14.480 1:00:14.480,1:00:18.490 1:00:18.490,1:00:22.780 1:00:22.780,1:00:28.070 1:00:28.070,1:00:33.100 1:00:33.100,1:00:38.330 1:00:38.330,1:00:41.860 1:00:41.860,1:00:43.890 1:00:43.890,1:00:47.450 1:00:47.450,1:00:49.590 1:00:49.590,1:00:53.480 1:00:53.480,1:00:58.800 1:00:58.800,1:01:03.020 1:01:03.020,1:01:06.600 1:01:06.600,1:01:08.670 1:01:08.670,1:01:11.430 1:01:11.430,1:01:20.010 1:01:20.010,1:01:39.080 1:01:39.080,1:01:43.981