1 00:00:04,220 --> 00:00:07,299 [Translated by Jouko Voutilainen (KYBS2004 course assignment at JYU.FI)] 2 00:00:09,287 --> 00:00:12,407 "Cryptoneulan löytäminen tavuheinäsuovasta" 3 00:00:14,084 --> 00:00:16,911 Hän on haittaohjelmatutkija Check Pointilla 4 00:00:16,911 --> 00:00:20,048 ja tulee Israeli Institute of Technologysta. 5 00:00:20,048 --> 00:00:25,302 Hän aikoo kertoa meille jotain avainvirtauksen uudelleenkäytöstä ja siitä, 6 00:00:25,302 --> 00:00:28,166 miten välttää jatkuvat yölliset yritykset 7 00:00:28,166 --> 00:00:30,629 ymmärtää salaustekniikkaprotokollaa, 8 00:00:30,629 --> 00:00:32,011 mutta oliko se vaivan arvoista. 9 00:00:32,531 --> 00:00:35,440 Tarkoitan että sen sijaan, 10 00:00:35,440 --> 00:00:38,888 että vietät yösi automatisoinnissa sen sijaan, 11 00:00:38,888 --> 00:00:41,301 että tarkistat sen itse. 12 00:00:45,388 --> 00:00:46,780 Katsotaanpa. 13 00:00:46,930 --> 00:00:47,609 Kiitos. 14 00:00:47,931 --> 00:00:49,842 Antakaa hänelle vielä kunnon aplodit. 15 00:00:49,842 --> 00:00:54,171 [Yleisö taputtaa] 16 00:00:56,551 --> 00:00:58,152 Hei, olen Ben. 17 00:00:58,152 --> 00:01:02,354 Olen Check Pointin haittaohjelmien haavoittuvuuksien tutkimusryhmästä. 18 00:01:02,354 --> 00:01:03,845 Tämä mainittiin jo aiemmin, 19 00:01:03,845 --> 00:01:07,129 mutta halusin mainita sen uudelleen. 20 00:01:07,129 --> 00:01:10,921 Minä tarkastelen teoreettisen tietojenkäsittelytieteen 21 00:01:10,921 --> 00:01:13,169 sovelluksia torjuakseni ongelmia, 22 00:01:13,169 --> 00:01:15,151 joita kohtaamme tietoturva-alalla. 23 00:01:17,221 --> 00:01:20,090 Vähemmän kaunisteltuna tämä tarkoittaa sitä, 24 00:01:20,090 --> 00:01:22,242 että olen amatöörimatematiikko, 25 00:01:22,242 --> 00:01:24,256 joka jotenkin tunkeutui alalle. 26 00:01:24,256 --> 00:01:25,204 Älä kerro kenellekään, 27 00:01:25,204 --> 00:01:27,451 erityisesti kaikille kanssani työskenteleville ihmisille. 28 00:01:28,091 --> 00:01:30,300 On tarpeeksi vaikeaa pitää tämä salassa, 29 00:01:30,300 --> 00:01:31,299 kun otetaan huomioon, 30 00:01:31,299 --> 00:01:34,311 että kun annoin pomolleni ensimmäisen luonnoksen tästä esityksestä, 31 00:01:34,311 --> 00:01:35,994 hän katsoi sitä ja sanoi: 32 00:01:35,994 --> 00:01:39,706 "Aiotko todella esittää tämän kaavojen kanssa? He tulevat lynkkaamaan sinut." 33 00:01:39,706 --> 00:01:41,222 Joten ensinnäkin, 34 00:01:41,222 --> 00:01:42,105 älä lynkkaa minua. 35 00:01:42,105 --> 00:01:44,769 Toiseksi yritin parhaani poistaakseni suurimman osan kaavoista. 36 00:01:44,769 --> 00:01:47,749 Yksi kaava on jossakin yhdellä dioista. 37 00:01:51,119 --> 00:01:56,406 Tämä esitys käsittelee automaattista havaitsemista 38 00:01:56,406 --> 00:01:58,930 salausavaimen uudelleenkäyttöhaavoittuvuuksista 39 00:01:58,930 --> 00:02:00,981 Haluaisin sukeltaa suoraan aiheeseen, 40 00:02:00,981 --> 00:02:03,031 mutta valitettavasti minun täytyy ensin selittää, 41 00:02:03,031 --> 00:02:05,293 mikä tämä haavoittuvuus on. 42 00:02:05,293 --> 00:02:06,379 Ja vielä valitettavammin, 43 00:02:06,379 --> 00:02:07,787 jotta voin selittää sen merkityksen, 44 00:02:07,787 --> 00:02:09,432 minun täytyy selittää, 45 00:02:09,432 --> 00:02:10,640 miten virtasalaus toimii. 46 00:02:10,640 --> 00:02:13,566 Joten käydään se läpi mahdollisimman nopeasti. 47 00:02:18,766 --> 00:02:22,488 OK, näin virtasalaus toimii: 48 00:02:22,488 --> 00:02:23,967 periaatteessa on olemassa tämä laite, 49 00:02:23,967 --> 00:02:25,868 jota kutsutaan pseudosatunnaisluvun generaattoriksi. 50 00:02:25,868 --> 00:02:29,131 Ja pseudosatunnaisluvun generaattori hyväksyy lyhyen avaimen 51 00:02:29,131 --> 00:02:30,789 ja tuottaa mitä tahansa, 52 00:02:30,789 --> 00:02:32,777 joka käytännössä näyttää kohinalta. 53 00:02:32,777 --> 00:02:36,322 He ketkä eivät olleet tuttuja avaimen suhteen, 54 00:02:38,452 --> 00:02:40,320 se näyttää kohinalta. 55 00:02:40,952 --> 00:02:44,033 Sitä voi käyttää salaamisessa. 56 00:02:44,033 --> 00:02:44,563 Miten? 57 00:02:44,563 --> 00:02:46,110 Lisäät symmetrisen avaimen, 58 00:02:46,110 --> 00:02:48,095 jonka molemmat osapuolet, 59 00:02:48,095 --> 00:02:49,400 kuten esimerkiksi Alice ja Bob, 60 00:02:49,400 --> 00:02:50,579 tuntevat yrittäessään kommunikoida, 61 00:02:50,579 --> 00:02:52,437 ja pseudosatunnaisluvun generaattori 62 00:02:52,437 --> 00:02:53,722 tuottaa tämän avainvirran, 63 00:02:53,722 --> 00:02:54,561 joka näyttää kohinalta, 64 00:02:54,561 --> 00:02:58,518 ja suoritat XOR:n selkokieliselle tekstille (tässä tapauksessa hymiölle). 65 00:02:58,518 --> 00:03:00,172 Tämä johtaa salattuun tekstiin, 66 00:03:00,172 --> 00:03:02,280 joka on selkokielinen teksti eksklusiivinen 67 00:03:02,280 --> 00:03:03,895 tai -operaattorin (XOR) avainvirran kanssa. 68 00:03:03,895 --> 00:03:08,556 Ja maallikoille, jotka eivät tunne avainta tai sijaintia, 69 00:03:08,556 --> 00:03:09,596 näyttää myös kohinalta. 70 00:03:09,596 --> 00:03:11,170 Tämä on XOR-operaation ominaisuus. 71 00:03:11,170 --> 00:03:12,552 Kun otat mukavan selkokielisen tekstin ja 72 00:03:12,552 --> 00:03:13,967 XORaat sen jotakin kohinan kaltaista vastaan, 73 00:03:13,967 --> 00:03:15,382 saat myös jotakin, 74 00:03:15,382 --> 00:03:17,033 joka näyttää kohinalta. 75 00:03:17,443 --> 00:03:18,863 Mitä voit tehdä seuraavaksi? 76 00:03:18,863 --> 00:03:21,126 Nyt tässä on salattu teksti. 77 00:03:21,126 --> 00:03:21,978 Se näyttää kohinalta, 78 00:03:21,978 --> 00:03:24,971 mutta jos XORaat sen uudelleen samalla avainvirralla, 79 00:03:24,971 --> 00:03:27,736 jota Bob toisella puolella viestintää käyttää, 80 00:03:27,736 --> 00:03:29,538 saat alkuperäisen tekstin takaisin. 81 00:03:29,538 --> 00:03:30,273 Miksi? 82 00:03:30,273 --> 00:03:32,199 Koska tämä on toinen XOR-operaation ominaisuus. 83 00:03:32,199 --> 00:03:35,646 Jos XORaat jotakin saman elementin kanssa, 84 00:03:35,646 --> 00:03:37,059 oli se sitten kohinaa tai ei, 85 00:03:37,059 --> 00:03:40,806 kahdesti, saat sen kumoamaan itsensä. 86 00:03:40,806 --> 00:03:41,738 Jos XORaat kohinan kanssa 87 00:03:41,738 --> 00:03:42,790 , XORaat sen uudelleen kohinan kanssa, 88 00:03:42,790 --> 00:03:44,369 kohinan kumoaa itsensä 89 00:03:44,369 --> 00:03:46,437 ja saat alkuperäisen tekstin takaisin. 90 00:03:46,957 --> 00:03:51,062 Joten mikä on avaimen uudelleenkäyttö? 91 00:03:51,062 --> 00:03:52,237 Avaimen uudelleenkäyttö 92 00:03:52,237 --> 00:03:55,668 on hämmästyttävästi saman avaimen käyttöä kahdesti, 93 00:03:55,668 --> 00:03:57,612 salataksesi kaksi selkokielistä viestiä. 94 00:03:58,562 --> 00:04:01,126 Kuten näette, otetaan tietty avain. 95 00:04:01,126 --> 00:04:03,052 Tämä on avain. 96 00:04:03,052 --> 00:04:09,284 Ja XOR:aamme tekstin ensimmäisen selkokielisen viestin avaimella 97 00:04:09,284 --> 00:04:12,213 ja toisen selkokielisen viestin jälleen samalla avaimella. 98 00:04:12,213 --> 00:04:14,380 Ja saamme kaksi kokonaisuutta kohinaa. 99 00:04:14,380 --> 00:04:15,197 Kuten aiemmin mainittiin, 100 00:04:15,197 --> 00:04:17,341 jos XOR:aamme kohinaan, 101 00:04:17,341 --> 00:04:18,103 saamme jotakin, 102 00:04:18,103 --> 00:04:19,090 joka näyttää kohinalta, 103 00:04:19,090 --> 00:04:20,421 ellei tiedä avainta, 104 00:04:20,421 --> 00:04:21,687 jolla avainvirta on alun perin generoitu 105 00:04:21,687 --> 00:04:22,304 Ja nyt, 106 00:04:22,304 --> 00:04:24,303 jos Eve on viestinnän keskellä, 107 00:04:24,303 --> 00:04:26,896 hän salakuuntelee tätä kommunikaatiota, 108 00:04:26,896 --> 00:04:30,666 Ja hän saa tämän kohinan ja tämän toisen kohinan. 109 00:04:30,666 --> 00:04:32,697 ja se näyttää kaikki kohinalta hänelle. 110 00:04:32,697 --> 00:04:34,311 Ja tietenkin hän ei voi tehdä mitään. 111 00:04:34,311 --> 00:04:36,459 Eikä ole olemassa avaimen uudelleenkäytön haavoittuvuutta, 112 00:04:36,459 --> 00:04:38,548 joten voit nyt nousta ylös istuimistasi ja mennä kotiin. 113 00:04:38,548 --> 00:04:40,119 Ei, ei todellakaan. 114 00:04:40,119 --> 00:04:41,476 Tämä on mitä tapahtuu, 115 00:04:41,476 --> 00:04:44,590 kun salaat kaksi erilaista selkokielistä viestiä samalla avaimella. 116 00:04:44,590 --> 00:04:46,605 On mahdollista, että Eve, 117 00:04:46,605 --> 00:04:48,071 jolla on pääsy molempiin salattuihin viesteihin, 118 00:04:48,071 --> 00:04:52,003 suorittaa kahden salakirjoitetun viestin XOR-operaatio. 119 00:04:52,003 --> 00:04:55,765 Ja mitä me sanoimme aiemmin saman elementin kahdesti toistuvasta XOR-operaatiosta? 120 00:04:55,765 --> 00:04:57,247 Tässä avain esiintyy kahdesti. 121 00:04:57,247 --> 00:04:58,730 Sinulla on ensimmäinen selkokielinen teksti 122 00:04:58,730 --> 00:04:59,385 XOR-avain, 123 00:04:59,385 --> 00:05:01,225 toinen selkokielinen teksti XOR-avain. 124 00:05:01,225 --> 00:05:03,964 Ja jos XOR:aat kaksi salattua viestiä suoritetaan, 125 00:05:03,964 --> 00:05:05,719 avain kumoaa itsensä, 126 00:05:05,719 --> 00:05:08,609 ja sinä saat ensimmäisen selkokielisen viestin XOR:aamaan 127 00:05:08,609 --> 00:05:09,757 toisen selkokielisen tekstin. 128 00:05:09,757 --> 00:05:10,907 Tämä ei ole jotain, 129 00:05:10,907 --> 00:05:13,050 mitä haluat mahdollistaa, 130 00:05:13,050 --> 00:05:15,262 kuten voit nähdä täällä. 131 00:05:15,262 --> 00:05:18,683 Even on hyvin helppo tarkastella tätä asiaa 132 00:05:18,683 --> 00:05:22,777 ja saada erittäin hyvä käsitys alkuperäisistä selkokielisistä viesteistä. 133 00:05:22,777 --> 00:05:26,440 Tämä johtuu redundanssista kahdessa alkuperäisessä selkokielisessä tekstissä. 134 00:05:27,230 --> 00:05:29,075 Meidän tilanteessamme, 135 00:05:29,075 --> 00:05:30,436 jossa tulemme työskentelemään 136 00:05:30,436 --> 00:05:32,377 ja mainitsemaan hetken kuluttua, 137 00:05:32,377 --> 00:05:34,022 se on vähän vaikeampaa. 138 00:05:34,022 --> 00:05:35,465 Se ei ole niin ilmeistä. 139 00:05:35,465 --> 00:05:37,646 Se ei vain hypi silmille. 140 00:05:37,646 --> 00:05:41,970 Itse asiassa kaikki vaiva ja algoritmit ovat omistautuneet 141 00:05:41,970 --> 00:05:44,120 alkuperäisen selkokielisen tekstin erottamiseen, 142 00:05:44,120 --> 00:05:44,985 mutta tämä on esimerkki, 143 00:05:44,985 --> 00:05:45,686 jotta voit katsoa sitä 144 00:05:45,686 --> 00:05:47,447 ja nähdä kuinka kauhea tämä haavoittuvuus on, 145 00:05:47,447 --> 00:05:48,895 jos se on olemassa. 146 00:05:48,895 --> 00:05:51,047 Se ei ole kovin kiva asia. 147 00:05:51,047 --> 00:05:54,823 Joten mihin se on hyvä? 148 00:05:54,823 --> 00:05:56,528 Miksi haluamme tunnistaa avaimen uudelleenkäytön? 149 00:05:56,528 --> 00:05:58,076 Tässä on ensimmäinen esimerkki: 150 00:05:58,076 --> 00:05:59,537 Tämä on dokumentti Venona-projektista. 151 00:05:59,537 --> 00:06:03,615 Venona-projekti kesti 40 vuotta 1940-luvulta 1980-luvulle, 152 00:06:03,615 --> 00:06:06,918 USA:n aloittamana salakuunnella Neuvostoliiton viestintää. 153 00:06:06,918 --> 00:06:10,475 Tämä aloitettiin ennen kuin NSA edes perustettiin. 154 00:06:11,105 --> 00:06:14,444 Neuvostoliitto käytti uudelleen avainvirtaansa. 155 00:06:14,444 --> 00:06:15,542 Yhden kerran padejaan. 156 00:06:15,542 --> 00:06:18,041 Oikein käytettynä yhden kerran padit on murtamattomia salauksia, 157 00:06:18,041 --> 00:06:20,734 mutta he käyttivät näitä uudestaan, 158 00:06:20,734 --> 00:06:23,036 ja mitä tapahtui oli, 159 00:06:23,036 --> 00:06:26,729 että haavoittuvuus jonka näimme tuli esille siitä syystä. 160 00:06:26,729 --> 00:06:30,294 Ja USA:n tiedustelu onnistui keräämään 161 00:06:30,294 --> 00:06:34,588 tietoa noista salatuista viesteistä seuraavan 40 vuoden ajan. 162 00:06:34,588 --> 00:06:36,070 Kyse ei ole siitä, 163 00:06:36,070 --> 00:06:39,667 että Neuvostoliitto jatkoi haavoittuneen tiedon lähettämistä 40 vuoden ajan. 164 00:06:39,667 --> 00:06:42,887 Sitä kesti vain 4 vuotta ja sen jälkeen he viisastuivat. 165 00:06:42,887 --> 00:06:46,144 Mutta 40 vuoden ajan Amerikkalaiset jatkoivat tätä projektia 166 00:06:46,144 --> 00:06:47,626 keräten yhä enemmän tietoa 167 00:06:47,626 --> 00:06:49,623 ja he saivat paljon hyödyllistä tietoa 168 00:06:49,623 --> 00:06:53,186 kuten vakoojapiirien nimiä ja identiteettejä. 169 00:06:54,030 --> 00:06:55,516 Eli tässä on yksi käyttötapa sille. 170 00:06:55,516 --> 00:06:57,465 Jos pystyt tarkastelemaan verkkoliikennettä 171 00:06:57,465 --> 00:07:01,312 ja toteamaan että "hei, tässä on avaimen uudelleenkäyttöä". 172 00:07:01,312 --> 00:07:02,242 Se on hyödyllistä. 173 00:07:02,242 --> 00:07:06,483 Voit aloittaa hyökkäämällä verkkoliikenteeseen ja etsimään tietoa. 174 00:07:06,483 --> 00:07:08,370 Tämä on toinen käyttötarkoitus. 175 00:07:08,370 --> 00:07:11,101 Nyt aion häpeilemättömästi mainostaa kollegaani Nitayta, 176 00:07:11,101 --> 00:07:12,193 koska hän on mahtava. 177 00:07:13,073 --> 00:07:18,276 Aiemmin tänä vuonna tutkimme tiettyä lunnasohjelmaa nimeltä Dircrypt. 178 00:07:18,276 --> 00:07:20,757 Se on käytännössä kuin Cryptolockerin wannabe. 179 00:07:20,757 --> 00:07:25,059 Se saastuttaa tietokoneeseesi ja alkaa salata tiedostojasi. 180 00:07:25,979 --> 00:07:29,565 Valitettavasti kun Nitay kaivautui syvemmälle lähdekoodiin, 181 00:07:29,565 --> 00:07:33,377 huomasin, että heidän salaus toteuttaa avainten uudelleenkäyttöä. 182 00:07:33,377 --> 00:07:37,606 Se käyttää virtasalausta RC4. 183 00:07:37,606 --> 00:07:38,722 Tämä on hyvä kohta mainita, 184 00:07:38,722 --> 00:07:40,590 että kaikki mitä puhun juuri nyt 185 00:07:40,590 --> 00:07:42,633 koskee vain virtasalauksia 186 00:07:42,633 --> 00:07:44,039 ja kertakäyttöisiä malleja, 187 00:07:44,039 --> 00:07:44,931 jotka ovat kuin virtasalaus, 188 00:07:44,931 --> 00:07:46,699 ei lohkosalauksia kuten AES . 189 00:07:46,699 --> 00:07:48,440 DES ja vastaavat. 190 00:07:48,440 --> 00:07:52,004 Selvitimme että näin tapahtuu. 191 00:07:55,814 --> 00:08:02,380 Jokainen Dircryptin salausavaimella RC4 salattu tiedosto käytti samaa avainta. 192 00:08:02,380 --> 00:08:04,028 Se oli viiden kirjaimen avain, 193 00:08:04,028 --> 00:08:05,654 "black" kaikki pienillä kirjaimilla. 194 00:08:05,654 --> 00:08:06,825 Tämä tarkoittaa, 195 00:08:06,825 --> 00:08:11,120 että kaikki salatut tiedostot voitaisiin teoriassa palauttaa 196 00:08:11,120 --> 00:08:14,160 hyödyntämällä redundanssia selkokielisessä tekstissä. 197 00:08:14,160 --> 00:08:15,407 Joka tapauksessa tämä ei ollut jotain, 198 00:08:15,407 --> 00:08:17,247 jonka haittaohjelman toimija suunnitteli tekevänsä. 199 00:08:17,247 --> 00:08:18,720 Hauska juttu on, 200 00:08:18,720 --> 00:08:20,527 että emme edes joutuneet menemään niin pitkälle, 201 00:08:20,527 --> 00:08:26,006 koska haittaohjelma itse asiassa sisällytti avaimen jokaiseen tiedostoon. 202 00:08:26,006 --> 00:08:27,893 Emme oikeastaan tiedä miksi, 203 00:08:27,903 --> 00:08:31,300 todennäköisesti se näytti siltä, että tunnistaisimme sen sillä hetkellä. 204 00:08:32,270 --> 00:08:37,651 Joten, jos haittaohjelman tekijä ei olisi tehnyt tätä, 205 00:08:37,651 --> 00:08:43,972 olisimme voineet palauttaa sen selkokielisen tekstin tai suuren osan siitä kuitenkin. 206 00:08:43,972 --> 00:08:47,231 Jos meillä olisi ollut tapa katsoa tiedostoja ja tulla oivallukseen, 207 00:08:47,231 --> 00:08:48,515 että tässä on tehty avaimen uudelleenkäyttöä, 208 00:08:48,515 --> 00:08:53,090 Nitay ei olisi joutunut istumaan ruudun edessä katsomassa IDA Pro:ta 209 00:08:53,090 --> 00:08:57,440 verisin silmin yhä toistuvina öinä. 210 00:08:57,440 --> 00:09:01,185 Olisimme voineet vain katsoa tiedostoja ja sanoa: 211 00:09:01,185 --> 00:09:03,116 "Hei, täällä on avaimen uudelleenkäyttöhaavoittuvuus", 212 00:09:03,116 --> 00:09:05,852 ja edetä siitä ja säästää paljon aikaa ja vaivaa. 213 00:09:06,802 --> 00:09:08,202 Tämä on jotain samankaltaista. 214 00:09:08,202 --> 00:09:10,159 Tämä on liikennettä Ramnit haittaohjelmasta. 215 00:09:10,159 --> 00:09:13,189 Ramnit-haittaohjelma tuli esiin noin vuonna 2010. 216 00:09:13,189 --> 00:09:17,374 Se varastaa tunnistetietoja ja sitä käytettiin talouspetoksessa. 217 00:09:17,374 --> 00:09:23,760 Ramnit lähettää liikenteensä erityisellä kotikutoisella protokollalla portista 443. 218 00:09:23,760 --> 00:09:24,976 Se ei ole oikeastaan SSL, 219 00:09:24,976 --> 00:09:26,342 mutta se käyttää porttia 443. 220 00:09:26,342 --> 00:09:28,939 Tämä protokolla sisältää lohkoja, 221 00:09:28,939 --> 00:09:30,900 ja jotkut lohkot voivat olla salattuja. 222 00:09:31,470 --> 00:09:34,499 Jokainen lohko salataan samalla avaimella, 223 00:09:34,499 --> 00:09:38,611 ja pseudosatunnaislukugeneraattori käynnistetään uudelleen ennen jokaista käyttöä. 224 00:09:38,611 --> 00:09:41,115 Joten tässä tapauksessa avaimen uudelleenkäyttö tapahtuu lohkon tasolla. 225 00:09:41,115 --> 00:09:44,564 Jokainen lohko salataan käyttämällä samaa avainta. 226 00:09:45,714 --> 00:09:48,619 Jos voimme tarkastella tätä liikennettä ja ymmärtää, 227 00:09:48,619 --> 00:09:51,131 että "täällä on jotain avaimen uudelleenkäyttöä", 228 00:09:51,131 --> 00:09:52,053 se on hyödyllistä, 229 00:09:52,053 --> 00:09:55,727 koska tarkastellessamme liikennettä emme tiedä siitä mitään. 230 00:09:55,727 --> 00:09:58,291 Nyt jos voitaisiin vain tarkastella liikennettä 231 00:09:58,291 --> 00:10:00,955 että jotain avaimen uudelleenkäyttöä on tapahtunut täällä, se on mielenkiintoista. 232 00:10:00,955 --> 00:10:05,236 Emme odota avaimen uudelleenkäyttöä normaalissa liikenteessä. 233 00:10:07,642 --> 00:10:10,009 Tämä on viimeinen esimerkkimme, 234 00:10:10,009 --> 00:10:12,498 jos uskot, että vain haittaohjelmat ja epämääräiset hahmot 235 00:10:12,498 --> 00:10:13,753 harrastavat avaimen uudelleenkäyttöä. 236 00:10:13,753 --> 00:10:21,147 Microsoft toteutti Officen 2003 versiossaan dokumentin salaustoiminnon. 237 00:10:21,932 --> 00:10:22,932 Käytännössä 238 00:10:27,287 --> 00:10:29,571 Joka kerta, kun tallensit tiedoston, 239 00:10:29,571 --> 00:10:32,305 muokkasit sitä ja tallensit sen uudelleen, 240 00:10:32,305 --> 00:10:34,001 se salattiin uudelleen samalla avaimella. 241 00:10:34,001 --> 00:10:35,156 Avain oli sidottu tiedostoon, 242 00:10:35,156 --> 00:10:36,418 ja se oli yksi ja sama avain joka kerta. 243 00:10:36,418 --> 00:10:39,330 Joku, joka seurasi hakemistoasi pitkään, 244 00:10:39,330 --> 00:10:41,429 voisi katsoa tiedostoja uudelleen ja uudelleen 245 00:10:41,429 --> 00:10:44,608 ja nähdä, miten erilaiset selkokieliset tiedostot 246 00:10:44,608 --> 00:10:45,907 salattiin uudelleen 247 00:10:45,907 --> 00:10:47,747 ja uudelleen samalla avainvirralla. 248 00:10:47,967 --> 00:10:50,307 Tämä mahdollistaa avaimen uudelleenkäyttöhyökkäyksen. 249 00:10:50,307 --> 00:10:52,717 Ihmisten kesti aikaa huomata tämä. 250 00:10:52,717 --> 00:10:54,365 Jos voisimme vain katsoa tiedostoja ja 251 00:10:54,365 --> 00:10:56,012 tulla ymmärrykseen, että 252 00:10:56,012 --> 00:10:57,195 "Oho! Täällä on taas avaimen uudelleenkäyttöä!", 253 00:10:57,195 --> 00:10:59,657 se olisi voitu havaita paljon aikaisemmin. 254 00:11:00,987 --> 00:11:05,993 Joten miten onnistumme tekemään tämän? 255 00:11:05,993 --> 00:11:07,520 Nyt vietän neljä diaa selittäen, 256 00:11:07,520 --> 00:11:08,336 kuinka hienoa olisi, 257 00:11:08,336 --> 00:11:10,781 jos voisimme vain katsoa tätä tavuläjää 258 00:11:10,781 --> 00:11:11,780 ja ymmärtää, 259 00:11:11,780 --> 00:11:13,278 että tässä on avaimen uudelleenkäyttöä. 260 00:11:13,348 --> 00:11:16,108 Se olisi kiva. Mutta miten me tämän toteutamme? 261 00:11:17,314 --> 00:11:21,396 Noh. Muistatteko onko kukaan jäänyt jumiin 262 00:11:21,396 --> 00:11:25,457 vanhoissa 90-luvun seikkailuissa kuten Sam and the Sorcerer ja Monkey Island. 263 00:11:25,457 --> 00:11:27,939 Kun olet täysin jumissa etkä tiedä mitä tehdä, 264 00:11:27,939 --> 00:11:28,900 niin mitä teet? 265 00:11:28,900 --> 00:11:29,444 Kyllä. 266 00:11:29,444 --> 00:11:32,219 Yrität kaikkea mahdollista kunnes joku toimii. 267 00:11:32,219 --> 00:11:35,756 Eli tämä on mitä teemme tässä. 268 00:11:35,756 --> 00:11:39,900 Käytännössä jos otamme jokaisen tavun alkuperäisestä syötteestä 269 00:11:39,900 --> 00:11:45,645 ja XOR:aamme sen jokaisen muun tavun kanssa, saamme tämän tilan, 270 00:11:45,645 --> 00:11:47,842 jossa jokainen XOR:attu tavu XOR:attu toisillaan. 271 00:11:47,842 --> 00:11:53,502 Esimerkiksi tämä ruutu on XOR:n tulos R:n ja R:n kohdassa. 272 00:11:53,502 --> 00:11:54,385 ja se tulee olemaan Null-tavu, 273 00:11:54,385 --> 00:11:57,340 sillä XOR itsensä kanssa on null-tavu. 274 00:11:57,340 --> 00:12:00,911 Ja jokainen ruutu tässä tilassa, 275 00:12:00,911 --> 00:12:06,078 on käytännössä oman sarakkeensa ja rivinsä merkin XOR. 276 00:12:06,078 --> 00:12:07,221 Mihin tämä on hyvä? 277 00:12:07,221 --> 00:12:08,581 Näemme kohta. 278 00:12:08,581 --> 00:12:10,075 Ensinnäki tältä se näyttää. 279 00:12:10,075 --> 00:12:14,134 Vinosarakkeessa kaikki ovat null-tavuja. 280 00:12:14,134 --> 00:12:19,253 Koska siinä on XOR:attu arvo itsellään. Eli. 281 00:12:19,933 --> 00:12:22,519 Mikä on suunnitelmamme yllä olevan perusteella? 282 00:12:22,519 --> 00:12:24,071 Jos otamme syötteen, 283 00:12:24,071 --> 00:12:27,334 tarkastellaan tyypillistä syötettä, 284 00:12:27,334 --> 00:12:29,499 jolle haluamme suorittaa toimintoja 285 00:12:29,499 --> 00:12:31,544 ja löytää jotain mielenkiintoista. 286 00:12:31,544 --> 00:12:33,062 Otetaan tämä syöte. 287 00:12:33,062 --> 00:12:34,610 Siellä on kaikenlaisia häiriöitä. 288 00:12:34,610 --> 00:12:39,762 Jossain täällä on kätketty kaksi salausviestiä 289 00:12:39,762 --> 00:12:42,059 Ne ovat molemmat eri selkotekstejä, 290 00:12:42,059 --> 00:12:43,034 jotka on salattu samalla avaimella. 291 00:12:43,034 --> 00:12:45,281 Tämä on se asia, jonka haluamme löytää. 292 00:12:45,281 --> 00:12:48,196 Ja jos XOR:ataan jokainen tavu toisensa kanssa, 293 00:12:48,196 --> 00:12:50,007 jossain täällä, okei? 294 00:12:50,007 --> 00:12:52,524 Tämä on tämän salausviestin ensimmäinen tavu 295 00:12:52,524 --> 00:12:55,305 XOR:attuna tämän salausviestin ensimmäisen tavun kanssa. 296 00:12:58,245 --> 00:12:59,284 Miksi tämä kiinnostaa meitä? 297 00:12:59,284 --> 00:13:01,333 Aiemman näkemämme takia. 298 00:13:01,883 --> 00:13:04,395 Jos XOR:ataan salauksen 299 00:13:04,395 --> 00:13:09,090 ensimmäinen tavu, avain peruuttaa itsensä. 300 00:13:09,090 --> 00:13:11,804 Sama pätee, 301 00:13:11,804 --> 00:13:14,335 jos XOR-muunnetaan molempien salausviestien toinen tavu. 302 00:13:14,335 --> 00:13:17,514 Ja tätä viivaa pitkin, okei? 303 00:13:17,514 --> 00:13:21,067 Jos siirrymme yhden yksikön ylöspäin 304 00:13:21,067 --> 00:13:22,326 ja yhden yksikön oikealle, 305 00:13:22,326 --> 00:13:26,438 siirrymme käytännössä seuraavaan merkkiin molemmissa merkkijonoissa. 306 00:13:26,438 --> 00:13:36,330 Tämän valkoisen viivan varrella voit nähdä kaksi salausviestiä XOR:aavan toisensa. 307 00:13:36,330 --> 00:13:39,358 Kaksi eri salausviestiä voidaan lukea tätä viivaa pitkin. 308 00:13:39,358 --> 00:13:40,680 Miksi tämä on tärkeää jälleen? 309 00:13:40,680 --> 00:13:42,136 Koska aiemmin näimme, 310 00:13:42,136 --> 00:13:43,194 mitä tapahtuu, jos teemme niin. 311 00:13:43,194 --> 00:13:44,411 Avain kumoaa itsensä. 312 00:13:44,411 --> 00:13:47,449 Voit itse asiassa nähdä hymynaaman ja lähettää viestejä. 313 00:13:47,449 --> 00:13:50,221 Täällä se ei ole yhtä ilmeistä, 314 00:13:50,221 --> 00:13:53,410 mutta se on silti askel, 315 00:13:53,410 --> 00:13:55,326 joka auttaa meitä. 316 00:13:55,326 --> 00:13:56,823 Mitä meidän tarvitsee tehdä. 317 00:13:56,823 --> 00:13:57,846 Miksi? 318 00:13:57,846 --> 00:14:05,532 Tulemme tähän koko juttuun olettaen jotain selkotekstin jaosta. 319 00:14:05,532 --> 00:14:08,627 Selkokieli on eri kuin satunnaiset merkit, 320 00:14:08,627 --> 00:14:09,348 eikö? 321 00:14:09,348 --> 00:14:11,870 Odotamme kirjaimia, odotamme välimerkkejä. 322 00:14:11,870 --> 00:14:18,845 Odotamme joka tapauksessa jakelun olevan erilainen verrattuna tasaisesti jakautuneisiin satunnaisiin merkkeihin. 323 00:14:18,845 --> 00:14:20,546 Tämä ei ole selkotekstin jakelu. 324 00:14:20,546 --> 00:14:22,577 Tämä on XOR-testijakelu. 325 00:14:22,577 --> 00:14:23,303 Tämä on jakelu, 326 00:14:23,303 --> 00:14:23,972 jonka saat, 327 00:14:23,972 --> 00:14:27,856 kun valitset satunnaisen selkotekstin merkin selkotekstin jakelusta 328 00:14:27,856 --> 00:14:32,301 ja sitten toisen satunnaisen merkin selkotekstin jakelusta 329 00:14:32,301 --> 00:14:33,883 ja XOR-muunnat ne. 330 00:14:33,883 --> 00:14:35,763 Saat toisen jaon. 331 00:14:35,763 --> 00:14:38,245 Ja tämä jako on taas erilainen kuin satunnainen jako. 332 00:14:38,245 --> 00:14:42,266 Eli meille se näyttää erilaiselta, eikö? 333 00:14:42,266 --> 00:14:47,859 Jos katsomme tavua joka tuli kahdesta eri selkokielisestä merkistä jotka XOR:attiin, 334 00:14:47,859 --> 00:14:50,458 se näyttäytyy meille erilaiselta 335 00:14:50,458 --> 00:14:53,506 kuin vain satunnainen tavu pitkässä juoksussa. 336 00:14:55,534 --> 00:14:57,773 Joten mitä me aiomme tehdä? 337 00:14:57,773 --> 00:15:00,313 Me skannaamme tämän tilan, 338 00:15:00,313 --> 00:15:00,957 josta mainitsin aikaisemmin. 339 00:15:00,957 --> 00:15:04,159 Me rakennamme sen ensin ja sitten skannaamme sen diagonaalisesti, 340 00:15:04,159 --> 00:15:09,905 koska todisteet ovat kuin rikospaikka, ja raskauttavat todisteet ovat 341 00:15:09,905 --> 00:15:17,363 kaikki tavut jotka tulevat näyttämään epäilyttäviltä eivätkä tulleet satunnaisesta jakelusta. 342 00:15:17,363 --> 00:15:21,292 Ne ilmestyvät diagonaalin varrelle. 343 00:15:21,292 --> 00:15:26,397 Meillä ei ole kaikkia värejä ja väriohjauksia, 344 00:15:26,397 --> 00:15:27,384 ja meillä vain syöte, 345 00:15:27,384 --> 00:15:29,067 mutta jos skannaamme sen diagonaalisesti, 346 00:15:29,067 --> 00:15:32,630 tiedämme että täällä jossain on avaimen uudelleenkäyttöä. 347 00:15:32,630 --> 00:15:35,284 Lopulta törmäämme tähän diagonaaliin. 348 00:15:35,284 --> 00:15:40,715 Aiomme tarkastella jokaista tavua kuin pientä todisteen palasta, 349 00:15:40,715 --> 00:15:45,750 jotka saattavat ohjata meitä ymmärtämään, että kyseessä on ollut avaimen uudelleenkäyttöä. Ja nyt me 350 00:15:45,750 --> 00:15:47,780 katsomme kahta salaustekstiä, 351 00:15:47,780 --> 00:15:50,527 jotka on salattu samalla virtausavaimella, 352 00:15:50,527 --> 00:15:53,808 ja työskentelemme diagonaalien kanssa. 353 00:15:53,808 --> 00:15:54,874 Joka kerta kun törmäämme tavuun, 354 00:15:54,874 --> 00:15:57,970 poimimme sen ja analysoimme sen selvittääksemme, 355 00:15:57,970 --> 00:16:02,488 tukeeko se vai kumoaa hypoteesimme. 356 00:16:02,488 --> 00:16:04,696 Jos kuljemme diagonaalia pitkin 357 00:16:04,696 --> 00:16:10,104 ja löydämme ylivoimaisen määrän todisteita, 358 00:16:10,104 --> 00:16:13,782 jotka tukevat hypoteesiamme, että avaimen uudelleenkäyttöä on tehty 359 00:16:13,782 --> 00:16:16,417 nostamme hälytyksen ja sanomme, että 360 00:16:16,417 --> 00:16:17,849 tässä oli tarpeeksi todisteita. 361 00:16:17,849 --> 00:16:19,397 Ei ole mahdollista, että tämä olisi vain sattumaa. 362 00:16:19,397 --> 00:16:21,038 Avaimen uudelleenkäyttöä on tapahtunut tässä. 363 00:16:21,038 --> 00:16:25,757 Haavoittuvainen salateksin avaimen uudelleenkäyttöhyökkäys 364 00:16:25,757 --> 00:16:30,086 on tässä kohtaa ja sen pituus on näin ja näin. 365 00:16:33,600 --> 00:16:37,310 Tämä on se kaava josta varoitin jo aiemmin. 366 00:16:38,460 --> 00:16:41,597 Tämä on lyhennelmä aiheeseen liittyvästä matematiikasta. 367 00:16:41,597 --> 00:16:44,531 Käytännössä sanoin että katso todisteita, 368 00:16:44,531 --> 00:16:47,118 aion kertoa mitä sillä tarkoitin. 369 00:16:47,118 --> 00:16:51,382 Käytännössä on rubriikki 370 00:16:51,382 --> 00:16:54,426 joka päättää kuinka paljon tavu, 371 00:16:54,426 --> 00:16:56,318 todiste, vaikuttaa 372 00:16:56,318 --> 00:16:57,856 hypoteesiimme ja 373 00:16:57,856 --> 00:16:59,481 laittaa meidät ajattelemaan, 374 00:16:59,481 --> 00:17:01,519 että hypoteesi on todennäköisempi. 375 00:17:01,869 --> 00:17:07,147 Tämä on käytännössä laskentaa eroavaisuuden ja todennäköisyyden välillä, 376 00:17:07,147 --> 00:17:11,357 että tavu syntyi salaustekstin XOR-operaatiosta sinisissä luvuissa. 377 00:17:13,197 --> 00:17:14,506 Ja todennäköisyys, 378 00:17:14,506 --> 00:17:17,136 että se tapahtuisi satunnaisesti. 379 00:17:17,769 --> 00:17:19,252 En mene kaavaan, 380 00:17:19,252 --> 00:17:22,031 mutta jokatapauksessa se on oleellinen. 381 00:17:22,031 --> 00:17:24,151 Mitä tulee kysymykseen siitä, 382 00:17:24,151 --> 00:17:25,451 kuinka paljon todisteita tarvitaan, 383 00:17:25,451 --> 00:17:26,290 tämä on tärkeä kysymys, 384 00:17:26,290 --> 00:17:28,668 voimme asettaa riman korkealle tai matalalle. 385 00:17:28,668 --> 00:17:32,815 Todistuskokeen vuoksi asetimme riman siten, 386 00:17:32,815 --> 00:17:35,900 että yhden väärän positiivisen tuloksen hyväksymme. 387 00:17:35,900 --> 00:17:39,531 Tietysti voit asettaa sen pienemmäksi. 388 00:17:39,531 --> 00:17:40,846 Se riippuu siitä, 389 00:17:40,846 --> 00:17:42,714 missä yhteydessä aiot käyttää tätä asiaa. 390 00:17:43,554 --> 00:17:45,257 Kysymys on, 391 00:17:45,257 --> 00:17:47,058 jos asetamme todistusriman niin korkealle, 392 00:17:47,058 --> 00:17:48,943 voimmeko todella havaita jotain? 393 00:17:51,692 --> 00:17:52,628 Saattaa hyvinkin olla niin, 394 00:17:52,628 --> 00:17:53,910 että jos vaadimme vain, 395 00:17:53,910 --> 00:17:57,003 kun törmäämme kahteen salakirjoitettuun tekstiin, 396 00:17:57,003 --> 00:17:59,215 joita etsimme, 397 00:17:59,215 --> 00:18:00,738 emme pysty löytämään niitä, 398 00:18:00,738 --> 00:18:02,854 koska todisteita ei ole tarpeeksi. 399 00:18:03,224 --> 00:18:05,566 Mutta käy ilmi, 400 00:18:05,566 --> 00:18:06,663 että meillä on tämä kaava, 401 00:18:06,663 --> 00:18:11,159 jonka löysimme käyttämällä niin kutsuttua Chebyshevin epäyhtälöä. 402 00:18:11,159 --> 00:18:12,593 Lyhyesti sanottuna, 403 00:18:12,593 --> 00:18:18,052 niin kauan kuin etsimämme salakirjoitettu teksti 404 00:18:18,052 --> 00:18:20,232 on tarpeeksi pitkä, 405 00:18:20,232 --> 00:18:21,649 jokainen tavu antaa meille 406 00:18:21,649 --> 00:18:23,663 jonkin verran todisteita, 407 00:18:23,663 --> 00:18:26,093 positiivisia todisteita, jotka kertovat meille, 408 00:18:26,093 --> 00:18:28,738 että tämä saattaa olla oikea asia. 409 00:18:29,678 --> 00:18:31,788 Periaatteessa, jos tekstinpätkä on tarpeeksi pitkä, 410 00:18:31,788 --> 00:18:33,420 meillä on tarpeeksi todisteita. 411 00:18:33,420 --> 00:18:34,285 Ainoa kysymys on, 412 00:18:34,285 --> 00:18:35,117 että se on numeropeli, 413 00:18:35,117 --> 00:18:36,432 mikä on todennäköisyys, 414 00:18:36,432 --> 00:18:38,530 että epäonnistumme joka tapauksessa, 415 00:18:38,530 --> 00:18:40,428 vaikka teksti oli teoriassa tarpeeksi pitkä, 416 00:18:40,428 --> 00:18:41,676 ja odotimme sen toimivan. 417 00:18:41,676 --> 00:18:44,242 Siihen Chebyshevin epäyhtälö on tarkoitettu. 418 00:18:44,242 --> 00:18:46,987 Se rajaa ylhäältä todennäköisyyden, 419 00:18:46,987 --> 00:18:48,037 että jotain epätodennäköistä tapahtuu. 420 00:18:48,037 --> 00:18:49,536 Joten jos tekstinpätkä on tarpeeksi pitkä, 421 00:18:49,536 --> 00:18:51,099 ja jos katsot kaavaa, 422 00:18:51,099 --> 00:18:52,982 voit päätellä, 423 00:18:52,982 --> 00:18:57,293 että "tarpeeksi pitkä" on logaritminen syötteen pituudessa, 424 00:18:57,293 --> 00:18:58,012 mikä on hyvä. 425 00:18:58,012 --> 00:18:59,142 Jos kaksinkertaistamme syötteen, 426 00:18:59,142 --> 00:19:03,251 tarvitsemme vain yhden merkin lisää salakirjoitetussa tekstissä hälytyksen käynnistymiseksi. 427 00:19:05,271 --> 00:19:09,465 Periaatteessa tätä se on. Kun katsomme kaavaa... 428 00:19:09,465 --> 00:19:15,024 en todellakaan odota kenenkään täällä 429 00:19:15,024 --> 00:19:18,405 vain katsomalla sitä ja ymmärtävän, 430 00:19:18,405 --> 00:19:20,006 miten keksimme tämän asian, 431 00:19:20,006 --> 00:19:21,701 mutta se on vain todiste siitä, 432 00:19:21,701 --> 00:19:22,410 että tutkimme sitä. 433 00:19:22,410 --> 00:19:24,389 Tämä algoritmi tulisi toimimaan teoriassa. 434 00:19:25,593 --> 00:19:26,526 Nyt kaikki tämä on hienoa, 435 00:19:26,526 --> 00:19:31,088 mutta meidän täytyy todella näyttää, 436 00:19:31,088 --> 00:19:32,752 miten se toimii käytännössä, 437 00:19:32,752 --> 00:19:34,833 koska en usko, 438 00:19:34,833 --> 00:19:36,248 että kaavan tarkasteleminen vakuutti ketään 439 00:19:36,248 --> 00:19:37,130 täällä kovin paljoa. 440 00:19:37,663 --> 00:19:42,925 Periaatteessa katsomme jonkinlaista lämpökarttaa. 441 00:19:43,508 --> 00:19:45,922 Näet, mitä algoritmi näkee, 442 00:19:45,922 --> 00:19:46,986 kun se toimii. 443 00:19:47,519 --> 00:19:50,799 Kun algoritmi läpikäy tekemämme alueen 444 00:19:50,799 --> 00:19:52,747 se katsoo eri tavuja 445 00:19:52,747 --> 00:19:56,826 ja jokainen tavu näyttää enemmältä tai vähemmältä todisteita meidän 446 00:19:56,826 --> 00:20:01,389 hypoteesiamme varten liittyen avaimen uudelleenkäyttöön. 447 00:20:01,938 --> 00:20:07,782 Tavut, jotka antava lisää todisteita, 448 00:20:07,782 --> 00:20:08,857 merkitään punaisella, 449 00:20:08,857 --> 00:20:11,994 ja vähemmän todisteita sisältävät tavut sinisellä. 450 00:20:12,954 --> 00:20:17,443 Algoritmi etsii pääasiassa viivoja muodostavia diagonaaleja. 451 00:20:17,443 --> 00:20:20,301 Hypoteesillemme on paljon todisteita, 452 00:20:20,301 --> 00:20:21,867 jotka näkyvät punaisella. 453 00:20:21,867 --> 00:20:24,599 Nyt katsomme todistusaineiston lämpökarttaa, 454 00:20:24,599 --> 00:20:28,095 joka liittyy aiemmin mainitsemaani Ramnit-viestintään. 455 00:20:29,295 --> 00:20:34,620 Elikkä.. Ensimmäiseksi älä kiinnitä huomiota tähän. 456 00:20:34,620 --> 00:20:36,386 Tämä on päädiagonaali, 457 00:20:36,386 --> 00:20:40,731 jossa syöte on XOR:attu itsellään 458 00:20:40,731 --> 00:20:41,714 Kaikki tavut ovat nulleja, 459 00:20:41,714 --> 00:20:44,025 joten se näyttää algoritmin kannalta epäilyttävältä 460 00:20:44,025 --> 00:20:46,018 eikä näytä yhtään satunnaiselta. 461 00:20:46,018 --> 00:20:49,158 Mutta jos katsot hieman pidemmälle, 462 00:20:49,158 --> 00:20:50,972 voit nähdä sen täältä. 463 00:20:50,972 --> 00:20:53,231 Tämä on pitkä diagonaali, 464 00:20:53,231 --> 00:20:54,762 ainutlaatuinen diagonaali, 465 00:20:54,762 --> 00:20:58,158 jossa algoritmi havaitsee kiinnostavan ilmiön, 466 00:20:58,158 --> 00:21:02,536 koska diagonaalin varrella on viiva todisteita. 467 00:21:06,133 --> 00:21:10,728 Kyllä, koska se on itse asiassa elliptinen niille, 468 00:21:10,728 --> 00:21:12,459 jotka eivät jostain syystä näe laserpointteria. 469 00:21:12,459 --> 00:21:18,060 Tämä on kartta toisesta tapauksesta. 470 00:21:18,060 --> 00:21:19,285 Se on hieman vaikeampi. 471 00:21:19,285 --> 00:21:20,604 En tiedä, näkeekö kukaan sen täältä, 472 00:21:20,604 --> 00:21:24,047 mutta jälleen kerran päädiagonaali on merkityksetön. 473 00:21:24,246 --> 00:21:29,942 Tämä on kahden Dircrypt-haittaohjelman salaaman tiedoston lämpökartta, 474 00:21:29,942 --> 00:21:31,703 josta aiemmin puhuin. 475 00:21:32,303 --> 00:21:38,282 Ja molemmat tiedostot salattiin käyttäen samaa avainvirtaa, 476 00:21:38,282 --> 00:21:41,054 joten avaimen uudelleenkäyttöä 477 00:21:41,054 --> 00:21:42,461 pitäisi pystyä havaitsemaan. 478 00:21:42,461 --> 00:21:43,510 Jos katsomme tätä, 479 00:21:43,510 --> 00:21:45,974 se näkyy punaisena diagonaalina viivana jossain täällä. 480 00:21:45,974 --> 00:21:48,767 Ja tässä se on 481 00:21:48,767 --> 00:21:49,786 eikö niin? 482 00:21:50,903 --> 00:21:52,211 Diagonaali menee tuosta. 483 00:21:52,211 --> 00:21:53,099 Se on punainen diagonaali, 484 00:21:53,099 --> 00:21:55,547 jossa jokainen tavu näyttää epäilyttävältä, 485 00:21:55,547 --> 00:21:57,112 näyttää enemmän tai vähemmän siltä, 486 00:21:57,112 --> 00:22:00,292 kuin se olisi tullut ei satunnaisesti, 487 00:22:00,292 --> 00:22:05,817 vaan selkokielisten tavujen XOR-selkokielisistä tavuista, 488 00:22:05,817 --> 00:22:07,212 eikö niin? 489 00:22:07,212 --> 00:22:09,067 Joten, en tiedä, 490 00:22:09,067 --> 00:22:09,625 huomasitteko, 491 00:22:09,625 --> 00:22:11,981 mutta olemme käytännössä onnistuneet suunnitelmassamme. 492 00:22:12,811 --> 00:22:14,361 Olemme pystyneet vain 493 00:22:14,361 --> 00:22:15,443 ottamaan syötteen, 494 00:22:15,443 --> 00:22:18,568 tietämättä siitä mitään etukäteen, 495 00:22:18,568 --> 00:22:23,618 ja laskemaan kaikenlaisia ominaisuuksia 496 00:22:23,618 --> 00:22:25,982 eri tavujen XOR:ista. 497 00:22:25,982 --> 00:22:28,396 Ja algoritmi pystyy, 498 00:22:28,396 --> 00:22:30,127 aivan kuten voit katsoa tätä diagonaalia 499 00:22:30,127 --> 00:22:33,424 ja automaattisesti havaita missä avaimen uudelleenkäyttö on, 500 00:22:33,424 --> 00:22:35,715 niin pystyy myös algoritmi. 501 00:22:37,395 --> 00:22:38,396 Katsotaan, 502 00:22:38,396 --> 00:22:41,983 onko meillä aikaa demonstrointiin 503 00:22:48,724 --> 00:22:50,531 Katsotaanpa. Näyttää siltä, 504 00:22:50,531 --> 00:22:53,871 että toinen demo ei toimi jostain syystä. 505 00:23:00,035 --> 00:23:01,218 No, ei se mitään. 506 00:23:01,218 --> 00:23:03,276 Toinen demo ei ollut yhtä jännittävä kuin tämä, 507 00:23:03,276 --> 00:23:06,573 koska se näytti käynnissä olevan skriptin. 508 00:23:06,573 --> 00:23:07,532 Skripti, 509 00:23:07,532 --> 00:23:08,742 joka luo tämän. 510 00:23:09,619 --> 00:23:16,629 Käytännössä... Ramnit-haittaohjelma, jonka näimme aiemmin, 511 00:23:16,629 --> 00:23:18,760 lähettää tätä kommunikaatiota, 512 00:23:18,760 --> 00:23:20,274 ja skripti iteroi sen yli. 513 00:23:20,274 --> 00:23:23,056 Ja lopulta ohjelman suorittamisen piti todella nähdä... 514 00:23:23,056 --> 00:23:26,751 Skripti kulkemassa tätä diagonaalia pitkin 515 00:23:26,751 --> 00:23:28,399 keräten todistusaineistoa. 516 00:23:28,399 --> 00:23:31,897 Näen tämän määrän positiivista todistusaineistoa, 517 00:23:31,897 --> 00:23:33,489 ja se kasvaa ja kasvaa. 518 00:23:33,489 --> 00:23:34,820 Lopulta se päättyy, 519 00:23:34,820 --> 00:23:37,617 koska se kulkee syötteen lopun yli, 520 00:23:37,617 --> 00:23:41,961 ja sitten se sanoo: "Aha, löysin sen! Löysin avaimen uudelleenkäytön!" 521 00:23:41,961 --> 00:23:44,075 ja se tulostaa kaksi siirtymää. 522 00:23:44,075 --> 00:23:47,262 Tämä on itse asiassa se jännittävämpi asia. 523 00:23:47,262 --> 00:23:49,585 Ei tarvitse katsoa demoa ymmärtääksesi 524 00:23:49,585 --> 00:23:50,677 mitä täällä tapahtuu. 525 00:23:53,547 --> 00:24:02,490 Olemme onnistuneet suunnitelmassamme käyttäen aiemmin hahmottelemaani suunnitelmaa, 526 00:24:03,415 --> 00:24:07,402 ja toivon todella, että tästä on 527 00:24:07,402 --> 00:24:09,071 hyötyä. Aion ladata sen 528 00:24:09,071 --> 00:24:13,179 ja heti kun saan koodin tilaan, 529 00:24:13,179 --> 00:24:15,377 jossa voin antaa sen jonkun tarkasteltavaksi 530 00:24:15,377 --> 00:24:16,891 ja myöhemmin katsoa heitä silmiin, 531 00:24:16,891 --> 00:24:21,288 tämä ladataan kaikkien niiden hyväksi, 532 00:24:21,288 --> 00:24:22,951 jotka haluavat tarkastella sitä. 533 00:24:23,467 --> 00:24:26,281 Ja tämä se periaatteessa on. 534 00:24:26,281 --> 00:24:30,528 Toivon, että ymmärrätte nyt paremmin, 535 00:24:30,528 --> 00:24:32,299 mikä avaimen uudelleenkäyttö on 536 00:24:32,299 --> 00:24:35,705 ja miten havaitsemme sen tällä menetelmällä. 537 00:24:36,421 --> 00:24:38,408 Ok, ja kiitos. 538 00:24:38,691 --> 00:24:46,233 [Yleisö taputtaa] 539 00:24:50,094 --> 00:24:51,910 Onko mitään kysyttävää? 540 00:24:51,940 --> 00:24:52,940 Okei 541 00:24:57,810 --> 00:24:59,543 Lämpökartta? 542 00:24:59,767 --> 00:25:00,783 Tämä. 543 00:25:17,034 --> 00:25:20,914 Olin ihmetellyt sitä täysin ei-epäilyttävää vaakasuoraa viivaa alhaalla. 544 00:25:20,914 --> 00:25:24,827 Kyllä, vaakasuorat viivat ovat todennäköisesti artefakteja. 545 00:25:24,827 --> 00:25:26,320 Periaatteessa mikä on vaakasuora viiva täällä, 546 00:25:26,320 --> 00:25:32,427 Tämä on tietty merkki jostakin entisestä selkokielisestä tekstistä, 547 00:25:32,427 --> 00:25:35,503 XOR:attuna muuhun selvitettyyn tekstiin. 548 00:25:35,503 --> 00:25:38,984 Se ei käytännössä liity siihen, 549 00:25:38,984 --> 00:25:40,163 mistä olemme aiemmin puhuneet, 550 00:25:40,163 --> 00:25:42,212 koska kun poimimme kaksi salattua viestiä, 551 00:25:42,212 --> 00:25:43,776 se ilmestyy diagonaalille. 552 00:25:43,776 --> 00:25:48,905 Hmm, luultavasti se on yksi tietty tavu salausavaintekstissä, 553 00:25:48,905 --> 00:25:52,236 jossa XOR itsessään tuottaa jonkinlaisen poikkeaman. 554 00:25:52,801 --> 00:25:55,397 Onneksi se ei näy diagonaalissa, 555 00:25:55,397 --> 00:25:57,944 joten emme kärsi vääristä positiivisista tuloksista sen takia. 556 00:25:57,944 --> 00:25:59,481 OK, kiitos. 557 00:26:04,105 --> 00:26:11,398 Kun segmentit ovat saman kokoisia, 558 00:26:11,398 --> 00:26:14,827 salausavain uudelleenkäytetään. 559 00:26:14,827 --> 00:26:16,958 Kun nämä segmentit on tunnistettu, 560 00:26:16,958 --> 00:26:20,071 kuinka paljon manuaalista salauksen 561 00:26:20,071 --> 00:26:22,485 purkamista tarvitaan tekstin palauttamiseen? 562 00:26:22,485 --> 00:26:29,296 Itse asiassa näin esseen julkaistuna juuri tästä aiheesta. 563 00:26:29,296 --> 00:26:30,844 On olemassa automaattisia menetelmiä, 564 00:26:30,844 --> 00:26:34,090 joilla voi saada selville tekstin niissä tapauksissa, 565 00:26:34,090 --> 00:26:36,387 joissa tiedetään kahden salausavaintekstin 566 00:26:36,387 --> 00:26:37,703 olevan alttiita hyökkäykselle. 567 00:26:37,703 --> 00:26:40,183 Se ei toimi 100% tapauksissa, 568 00:26:40,183 --> 00:26:42,930 mutta näin tehtiin todellisessa tapauksessa, 569 00:26:42,930 --> 00:26:44,595 jossa käytettiin Word 2003 -salausta, 570 00:26:44,595 --> 00:26:46,793 ja se toimi melko hyvin. 571 00:26:46,793 --> 00:26:51,622 Sinun ei tarvitse käyttää manuaalista työtä salauksen purkamiseen; 572 00:26:51,622 --> 00:26:54,401 on automaattisia menetelmiä sen tekemiseen. 573 00:26:57,279 --> 00:26:58,473 Kyllä, 574 00:26:59,253 --> 00:27:03,697 Eli sinun täytyy tietää tavujen jakautuminen tekstin osalta. 575 00:27:03,697 --> 00:27:05,356 Aivan. 576 00:27:05,356 --> 00:27:10,435 Nämä lämpökartat onkin luotu arvauksen perusteella siitä, 577 00:27:10,435 --> 00:27:14,948 miltä teksti näyttää. 578 00:27:14,948 --> 00:27:17,978 Siinä pitäisi olla joitain isoja kirjaimia, 579 00:27:17,978 --> 00:27:21,345 pieniä kirjaimia ja merkkejä ja niin edelleen. 580 00:27:21,345 --> 00:27:23,065 Toivottavasti tämä arvaus on 581 00:27:23,065 --> 00:27:26,576 tarpeeksi lähellä minkä tahansa todellisen tekstin tapausta, 582 00:27:26,576 --> 00:27:30,189 jotta hälytys nousee riippumatta tarkasta jakaumasta. 583 00:27:30,509 --> 00:27:32,345 Yksi kysymys IRC:stä. 584 00:27:32,345 --> 00:27:33,894 Kyllä kiitos. 585 00:27:33,894 --> 00:27:35,259 Kysymys internetistä kuuluu: 586 00:27:35,259 --> 00:27:38,538 "Onko näitä dokumentteja jossain saatavilla?" 587 00:27:39,280 --> 00:27:41,460 Onko nämä dokumentit jossain saatavilla? 588 00:27:42,612 --> 00:27:45,065 Dokumentteja ei ole, 589 00:27:45,065 --> 00:27:45,880 mutta kuten sanoin, 590 00:27:45,880 --> 00:27:48,910 suunnittelen työstäväni sen ja lataavani sen nettiin. 591 00:27:48,910 --> 00:27:52,791 Ilmoitan heti, kun se on saatavilla. 592 00:27:53,691 --> 00:27:54,906 Kiitos 593 00:27:55,721 --> 00:28:00,573 Kiitos, että näytit tänään yleisesti ottaen stream-salausten haavoittuvuudet. 594 00:28:01,083 --> 00:28:05,090 Suositukseni kenelle tahansa on 595 00:28:05,090 --> 00:28:07,748 olla käyttämättä virtasalausalgoritmeja ollenkaan. 596 00:28:08,368 --> 00:28:10,219 Joten jos joku, 597 00:28:10,219 --> 00:28:12,407 mukaan lukien haittasuunnittelijat, 598 00:28:12,407 --> 00:28:15,124 haluaa suunnitella oman salausjärjestelmänsä, 599 00:28:15,124 --> 00:28:17,452 mikä on selvästi typerä idea, 600 00:28:17,452 --> 00:28:23,466 heidän pitäisi käyttää näitä AEAD-salauksia, 601 00:28:23,466 --> 00:28:26,297 eli todennettuja salausalgoritmeja. 602 00:28:26,297 --> 00:28:27,699 Tämä on totta. 603 00:28:27,699 --> 00:28:37,401 Koska mitä et maininnut, pelkän tiedon salauksen lisäksi tarvitset 604 00:28:37,401 --> 00:28:40,680 myös "key message digestin", 605 00:28:40,680 --> 00:28:44,107 jonka nämä uusimmat salaukset tarjoavat. 606 00:28:44,107 --> 00:28:45,194 Ja tämä on syy siihen, 607 00:28:45,194 --> 00:28:47,663 miksi uusissa versioissa kuljetuskerroksen tietoturvasta, 608 00:28:47,663 --> 00:28:49,138 joita kehitetään, 609 00:28:49,138 --> 00:28:51,259 et löydä enää näitä virtasalauksia, 610 00:28:51,259 --> 00:28:52,506 koska ne ovat turvattomia. 611 00:28:52,506 --> 00:28:53,484 Tämä on totta. 612 00:28:53,484 --> 00:28:57,709 Itse asiassa haittaohjelmat käyttävät usein virtasalauksia, 613 00:28:57,709 --> 00:28:59,262 koska niitä on helppo toteuttaa. 614 00:28:59,262 --> 00:29:00,977 RC4 on esimerkiksi erittäin suosittu, 615 00:29:00,977 --> 00:29:02,261 koska se on helppo toteuttaa. 616 00:29:02,261 --> 00:29:03,930 Ja tämä on syy, 617 00:29:03,930 --> 00:29:04,976 miksi sitä käytetään. 618 00:29:04,976 --> 00:29:05,883 Kuten voit ymmärtää, 619 00:29:05,883 --> 00:29:08,890 todellisen turvallisuuden saavuttaminen 620 00:29:08,890 --> 00:29:11,228 ei ole ensimmäinen asia mielessä, 621 00:29:11,228 --> 00:29:13,504 en tiedä mitä Microsoft ajatteli, 622 00:29:13,504 --> 00:29:16,583 mutta haittaohjelmien tekijöitä tämä ei kiinnosta. 623 00:29:16,583 --> 00:29:18,234 He ajattelevat: "Ok, käytetään salauksia", 624 00:29:18,234 --> 00:29:20,243 mutta ilmeisesti he eivät ajatelleet 625 00:29:20,243 --> 00:29:22,437 paljoakaan pidemmälle kuin sitä. 626 00:29:22,705 --> 00:29:23,937 Palataan kolmoseen. 627 00:29:24,328 --> 00:29:27,345 Hei, nopea kysymys täältä. 628 00:29:28,005 --> 00:29:31,018 Palataan visualisointiosuuteen. 629 00:29:31,018 --> 00:29:35,208 Teetkö vain bitti bitiltä, 630 00:29:35,208 --> 00:29:36,856 koska tässä on kaksi väriä, 631 00:29:36,856 --> 00:29:38,320 vai onko siinä enemmän värejä? 632 00:29:38,320 --> 00:29:39,070 Joo, 633 00:29:39,070 --> 00:29:46,296 Katsoin RGB-arvojen satunnaista jakautumista punaisesta siniseen ja 634 00:29:46,296 --> 00:29:48,893 laskin sen keskiarvon ja keskihajonnan, 635 00:29:48,893 --> 00:29:50,582 joka on tietysti keskellä. 636 00:29:50,582 --> 00:29:57,804 Sitten katsoin näiden todisteiden jakautumista 637 00:29:57,804 --> 00:30:00,151 ja käytin vastaavuustoimintoa 638 00:30:00,151 --> 00:30:06,042 ensimmäisestä keskiarvosta todistetaulukon keskiarvoon. 639 00:30:06,042 --> 00:30:16,136 Laskin kalibroidut arvot todistusarvoista suhteessa todistusarvojen keskijakaumaan. 640 00:30:16,136 --> 00:30:20,147 ja jaoin ne keskihajonnalla saadakseni tämän. 641 00:30:20,147 --> 00:30:21,528 Tämä on tavu tavulta? 642 00:30:21,528 --> 00:30:22,445 Kyllä, 643 00:30:22,445 --> 00:30:24,346 tavu tavulta 644 00:30:27,546 --> 00:30:31,369 Sanoit, että virtasalaukset, 645 00:30:31,369 --> 00:30:34,227 kuten RC4, ovat alttiita tälle ongelmalle, 646 00:30:34,227 --> 00:30:36,456 mutta mitä tapahtuu, 647 00:30:36,456 --> 00:30:43,201 kun käytät CTR-tilaa tai jotain tällaista? 648 00:30:43,201 --> 00:30:47,141 Ovatko nämä myös alttiina tälle ongelmalle? 649 00:30:47,141 --> 00:30:49,345 Minäpä selitän, 650 00:30:49,345 --> 00:30:52,058 että salaustyyppi jota tämä ongelma koskee, 651 00:30:52,058 --> 00:30:54,324 on jokainen salaus, 652 00:30:54,324 --> 00:30:58,319 jossa sinun on keksittävä jonkinlainen avainvirta. 653 00:30:58,319 --> 00:30:59,834 Periaatteessa on olemassa satunnainen avain, 654 00:30:59,834 --> 00:31:04,187 ja saat salakirjoitetun tekstin käyttämällä XOR-toimintoa selkokielisen tekstin 655 00:31:04,187 --> 00:31:05,428 ja avaimen välillä. 656 00:31:05,428 --> 00:31:07,363 Minkään muun tyyppinen salakirjoitus, 657 00:31:07,363 --> 00:31:09,624 kuten lohkosalaus tai vastaava, 658 00:31:09,624 --> 00:31:12,463 ei ole haavoittuvainen tälle hyökkäykselle. 659 00:31:12,463 --> 00:31:15,050 Mutta mitä tapahtuu, 660 00:31:15,050 --> 00:31:19,033 kun käytät laskuritilaa ja käytät uudelleen noncea? 661 00:31:19,127 --> 00:31:20,220 En ymmärrä. 662 00:31:20,220 --> 00:31:22,218 Voitko toistaa kysymyksen? 663 00:31:22,488 --> 00:31:27,358 Kun käytät laskuritilaa ja uudelleenkäytät noncea. 664 00:31:27,358 --> 00:31:28,509 Uskoisin, 665 00:31:28,509 --> 00:31:32,865 että eikö tämä johtaisi samaan ongelmaan? 666 00:31:32,865 --> 00:31:34,676 Luulisin... 667 00:31:34,676 --> 00:31:35,725 Kun sinä... 668 00:31:35,725 --> 00:31:36,752 Mitä? 669 00:31:36,752 --> 00:31:38,623 Kun käytät AES ja laskuritilaa. 670 00:31:38,623 --> 00:31:39,052 Aa kyllä... 671 00:31:39,052 --> 00:31:40,251 Ei, ei. 672 00:31:40,251 --> 00:31:45,789 Koska tarkoitat, jos XOR on jossain päin salauksen toimintaa? 673 00:31:45,789 --> 00:31:46,095 Ei, 674 00:31:46,095 --> 00:31:48,613 tämä on todella erityinen sivuvaikutus siitä, 675 00:31:48,613 --> 00:31:50,444 että teet lineaarisen salauksen. 676 00:31:50,444 --> 00:31:51,303 Salakirjoitettu teksti on 677 00:31:51,303 --> 00:31:54,556 lineaarinen funktio selkokielisestä tekstistä 678 00:31:54,556 --> 00:31:56,005 ja satunnaisesta avaimesta. 679 00:31:56,005 --> 00:31:58,552 Hetkellä, jolloin salauksen toiminto sisältää 680 00:31:58,552 --> 00:32:00,550 XOR-toiminnon, 681 00:32:00,550 --> 00:32:01,998 mutta se ei ole täysin lineaarinen. 682 00:32:01,998 --> 00:32:04,306 Siinä on vaiheita jotka varmistavat 683 00:32:04,306 --> 00:32:05,178 ettei se ole lineaarinen 684 00:32:05,178 --> 00:32:07,692 tällöin tulos ei ole haavoittuvainen tälle hyökkäykselle. 685 00:32:07,692 --> 00:32:09,424 Ok, kiitos. 686 00:32:10,504 --> 00:32:12,086 No, me ollaan kai valmiita. 687 00:32:12,621 --> 00:32:13,885 Joten kiitos vielä kerran. 688 00:32:13,885 --> 00:32:14,908 Mmhm 689 00:32:15,035 --> 00:32:19,247 [Yleisö taputtaa] 690 00:32:20,227 --> 00:32:26,077 [Translated by Jouko Voutilainen (KYBS2004 course assignment at JYU.FI)]