1 00:00:00,000 --> 00:00:05,500 Translated by Robert Ylitalo (KYBS2001 course assignment at JYU.FI) 2 00:00:05,500 --> 00:00:14,430 ♪ (38C3 intromusiikki) ♪ 3 00:00:17,218 --> 00:00:21,502 Seuraava puhujamme on Lukas Stennes. 4 00:00:21,502 --> 00:00:26,566 Hän on tohtoriopiskelija Ruhrin yliopistossa Bochumissa. 5 00:00:26,566 --> 00:00:29,849 Hänen tutkimuksensa keskittyy kryptonalyysiin. 6 00:00:30,290 --> 00:00:36,815 Hän oli myös osa tiimiä, joka paljasti haavoittuvuuden GPRS:ssä. 7 00:00:37,456 --> 00:00:42,461 Itse asiassa hän sai parhaan julkaisun palkinnon tästä tutkimuksesta, jonka hän esittelee nyt. 8 00:00:42,461 --> 00:00:44,532 Eli laatu on taattu. 9 00:00:46,658 --> 00:01:02,712 Lukas puhuu NATOn radioliikenteen salauksen murtamisesta ja esittelee hyökkäyksen Yhdysvaltain armeijan ja NATOn käyttämää korkean taajuuden radioviestinnän salausalgoritmia vastaan. 10 00:01:02,712 --> 00:01:04,993 Tervetuloa, antakaa suuret aplodit! 11 00:01:14,198 --> 00:01:19,283 NATO ja Yhdysvaltain armeija käyttävät turvatonta salausta nimeltä Half Loop 24. 12 00:01:19,283 --> 00:01:21,534 Tässä esityksessä kerron, miten sen voi murtaa. 13 00:01:21,534 --> 00:01:25,328 Aloitetaan kuitenkin aivan alusta. 14 00:01:25,328 --> 00:01:28,651 Selitetään ensin, mitä symmetrinen salaus oikeastaan on. 15 00:01:28,651 --> 00:01:32,844 Tarvitsemme siihen kaksi päähenkilöämme: Alicen ja Benjaminin. 16 00:01:35,182 --> 00:01:40,365 Huomasitte varmaan vitsin, yleensä kryptografiassa puhumme Bobista, ei Benjaminista. 17 00:01:40,645 --> 00:01:50,150 Mutta koska käytän norsuja selityksissä, nimesin hänet Benjaminiksi. 18 00:01:50,150 --> 00:01:57,434 Ja jos ihmettelet, miksi käytän norsuja, ne eivät ole tavallisia norsuja, vaan Casa-fantteja. 19 00:01:57,434 --> 00:02:04,748 Casa-fantit ovat CASA:n maskotteja. CASA tarkoittaa "Cyber Security in the Age of Large-Scale Adversaries". 20 00:02:04,960 --> 00:02:10,252 Se on Ruhrin yliopiston huippuyksikkö kyberturvallisuuden tutkimuksessa. 21 00:02:10,553 --> 00:02:15,595 Nyt Alice ja Benjamin haluavat kommunikoida turvattoman kanavan yli. 22 00:02:15,956 --> 00:02:24,940 Ongelmana on kolmas osapuoli, pahantahtoinen Charlie, joka salakuuntelee heidän viestintäänsä. 23 00:02:25,361 --> 00:02:31,564 Tietenkään Alice ja Benjamin eivät halua Charlien kuuntelevan heitä. 24 00:02:31,564 --> 00:02:34,465 Metaforana voidaan ajatella, että he tekevät näin: 25 00:02:34,465 --> 00:02:37,348 He laittavat viestin erittäin vahvaan laatikkoon. 26 00:02:37,348 --> 00:02:40,390 Laatikon täytyy olla niin vahva, ettei Charlie pysty avaamaan sitä. 27 00:02:40,390 --> 00:02:42,272 Sitten he laittavat laatikkoon lukon. 28 00:02:42,272 --> 00:02:46,656 Lukon täytyy olla niin vahva, ettei kukaan, ei edes Charlie voi murtaa sitä. 29 00:02:46,656 --> 00:02:48,958 Sen jälkeen he voivat lähettää laatikon toisilleen. 30 00:02:48,958 --> 00:02:52,321 Heillä molemmilla on avain, jolla laatikon voi avata ja sulkea. 31 00:02:52,321 --> 00:02:56,424 Näin he voivat viestiä keskenään ilman, että Charlie voi salakuunnella. 32 00:02:56,424 --> 00:03:02,409 Tätä samaa halutaan saavuttaa digitaalisessa maailmassa symmetrisellä salauksella. 33 00:03:02,741 --> 00:03:07,422 Symmetriseksi sitä kutsutaan siksi, että avain on molemmilla osapuolilla sama. 34 00:03:07,422 --> 00:03:15,955 Jos on symmetrinen salaus, on olemassa myös epäsymmetrinen salaus, jota kutsutaan myös julkisen avaimen salaukseksi. Symmetristä kutsutaan joskus salaisen avaimen salaukseksi. 35 00:03:15,955 --> 00:03:18,605 Epäsymmetrisellä salauksella luodaan avain molemmille puolille. 36 00:03:19,166 --> 00:03:29,288 Tämän jälkeen käytetään symmetristä salausta varsinaiseen viestien salaamiseen. 37 00:03:30,901 --> 00:03:35,022 Salausta käytetään nykyään lähes kaikkialla. 38 00:03:35,562 --> 00:03:39,683 Puhelimellasi, kun kirjoitat viestin esimerkiksi Signaliin, viestit salataan. 39 00:03:39,683 --> 00:03:43,815 Toinen hyvä esimerkki on HTTPS eli TLS. 40 00:03:43,815 --> 00:03:51,487 Kun avaat verkkosivun, selaimen osoitepalkissa näkyy lukon kuva, ja siitä näet lisätiedot. 41 00:03:51,707 --> 00:03:59,903 Siellä lukee esimerkiksi jotain tyyliin: TLS, AES ja muuta vastaavaa. 42 00:03:59,903 --> 00:04:09,960 Symmetrisessä salauksessa meitä kiinnostaa erityisesti AES, koska se on lohkosalaus, ja ei mikä tahansa lohkosalaus, vaan se lohkosalaus. 43 00:04:09,960 --> 00:04:12,632 AES tarkoittaa "Advanced Encryption Standard". 44 00:04:12,632 --> 00:04:18,386 Se on todennäköisesti maailman käytetyin salausalgoritmi. 45 00:04:18,386 --> 00:04:23,410 AES ottaa syötteenä 128-bittisen tekstin. 46 00:04:23,410 --> 00:04:28,673 Tätä syötettä kutsutaan selkotekstiksi, ja AES muuntaa sen salatekstiksi. 47 00:04:28,971 --> 00:04:35,023 Salateksti on myös 128-bittinen, ja muunnos perustuu salausavaimeen. 48 00:04:35,023 --> 00:04:47,796 AES:n turvallisuustakuu on se, että jos hyökkääjällä (Charliella) ei ole tietoa salaisesta avaimesta, hän ei pysty palauttamaan salatekstiä alkuperäiseksi. 49 00:04:47,796 --> 00:04:51,727 Eli ilman avainta Charlie ei voi purkaa viestiä. 50 00:04:52,608 --> 00:04:58,049 Se on jo itsessään erittäin hyödyllistä, mutta todellisessa maailmassa... 51 00:04:58,325 --> 00:05:01,046 haluamme salata enemmän kuin vain yhden lohkon. 52 00:05:01,506 --> 00:05:11,050 Siksi tarvitaan jotain, mitä kutsutaan toimintatavaksi (mode of operation), joka määrittelee, miten käsitellään useita lohkoja. 53 00:05:11,630 --> 00:05:14,762 Kuten sanoin, AES on kehittynyt salausstandardi. 54 00:05:14,762 --> 00:05:19,674 Se on standardi, jonka NIST määritteli 2000-luvun alussa. 55 00:05:19,674 --> 00:05:26,256 Kyseessä on siis Yhdysvaltain standardi, ja siitä lähtien sitä on käytetty laajasti. 56 00:05:27,787 --> 00:05:36,801 AES:n turvallisuustakuu on käytännössä se, ettei kukaan voi purkaa salausta ilman avainta. Mutta miksi näin on? 57 00:05:36,801 --> 00:05:39,182 Miksi olemme niin varmoja, ettei kukaan voi tehdä sitä? 58 00:05:39,182 --> 00:05:41,653 Koska kukaan ei ole vielä löytänyt toimivaa hyökkäystä. 59 00:05:41,653 --> 00:05:50,296 Ei ole olemassa matemaattista todistetta, joka osoittaisi AES:n turvallisuuden, mutta kaikille tunnetuille hyökkäyksille se on osoittautunut vastustuskykyiseksi. 60 00:05:50,296 --> 00:05:56,669 Siksi luotamme AES:iin, koska se on selvinnyt yli kahden vuosikymmenen ajan tutkimuksista. 61 00:05:57,631 --> 00:06:05,267 Valitettavasti meillä ei ole aikaa käydä tänään läpi kaikkia yksityiskohtia tästä huippukiinnostavasta algoritmista. 62 00:06:05,267 --> 00:06:13,792 Jos haluat tietää lisää, Christoph Parrin luento YouTubessa on ilmaiseksi katsottavissa kaikille. 63 00:06:13,913 --> 00:06:23,940 Christoph on professori Bochumissa, ja kyseessä on kryptografian johdantoluento, jonka kyberturvallisuuden opiskelijat käyvät siellä. 64 00:06:23,940 --> 00:06:26,281 Pieni sivuhuomautus. 65 00:06:26,337 --> 00:06:31,279 Christoph on nykyään Bochumin Max Planck -instituutin perustajajohtaja. 66 00:06:31,279 --> 00:06:34,180 Ja hän on todella hyvä. 67 00:06:35,081 --> 00:06:45,265 Tässä oli siis lyhyt johdanto symmetriseen salaukseen, mutta tuskin olette täällä vain sen vuoksi. Olette täällä kuulemassa sotilasradiosta, eikö? 68 00:06:45,265 --> 00:06:45,465 Niinpä. 69 00:06:45,465 --> 00:06:49,177 Aloitetaan siis sotilasradiosta. 70 00:06:49,177 --> 00:06:53,049 Aloitetaanpa näyttämällä teille tämä kuva. 71 00:06:53,049 --> 00:06:54,069 Ja nyt... 72 00:06:54,295 --> 00:07:02,749 Annan hetken aikaa miettiä, mikä on tämän kuvan ja tämän puheen eli sotilasradion välinen yhteys. 73 00:07:03,610 --> 00:07:06,472 Itse asiassa mitään todellista yhteyttä ei ole. 74 00:07:06,472 --> 00:07:14,396 Ainoa yhteys on minä itse, sillä otin tämän kuvan noin kaksi ja puoli vuotta sitten Ateenassa. 75 00:07:14,876 --> 00:07:17,938 Olin Ateenassa ensimmäisessä tieteellisessä konferenssissani. 76 00:07:17,938 --> 00:07:23,681 Kyseessä oli FSE, eli Fast Software Encryption -konferenssi, joka on 77 00:07:24,118 --> 00:07:27,309 merkittävin konferenssi symmetrisessä kryptografiassa. 78 00:07:27,569 --> 00:07:42,813 Konferenssin aikaan vietettiin myös Kreikan kansallispäivää, jolloin kaduille tuotiin panssarivaunuja ja taivaalle hävittäjiä. Tunnelma oli kaoottinen, ja silloin otin tämän kuvan. 79 00:07:42,813 --> 00:07:52,625 Siellä konferenssissa osallistuin esitykseen, jonka nimi oli: "Cryptoanalysis of the SODA Cipher for HF Radio Automatic Link Establishment". 80 00:07:52,625 --> 00:07:57,124 Tämä esitys kiinnitti huomioni, ja haluan lyhyesti selittää otsikon merkityksen. 81 00:07:57,124 --> 00:08:04,128 Esityksen piti Marco Stanzari, joka myöhemmin työskenteli kanssamme Half Loop -salauksen murtamisessa. 82 00:08:04,368 --> 00:08:14,312 Otsikossa "cryptanalysis" tarkoittaa salauksen analysointia eli yritystä murtaa se tai arvioida sen turvallisuutta. 83 00:08:14,393 --> 00:08:19,645 SoDark on vain salauksen nimi, ja "cipher" tarkoittaa salausta. 84 00:08:19,871 --> 00:08:25,554 Haluan kuitenkin puhua hieman HF-radiosta ja automaattisesta linkinmuodostuksesta. 85 00:08:27,115 --> 00:08:28,815 Aloitetaan HF-radiosta. 86 00:08:28,815 --> 00:08:43,969 HF tarkoittaa high frequency eli korkeataajuus. Kyseessä on 3–30 MHz välinen taajuusalue, joka mahdollistaa ns. skywave-ilmiön. 87 00:08:43,969 --> 00:08:53,492 Skywave-ilmiössä radiosignaali heijastuu ylemmän ilmakehän hiukkasista takaisin maahan, jolloin se voi kulkea erittäin pitkiä matkoja. 88 00:08:53,492 --> 00:08:56,923 Signaali voi jatkaa heijastumista uudelleen ja uudelleen. 89 00:08:56,979 --> 00:09:01,102 Tämän vuoksi signaali voi kulkea todella pitkälle. 90 00:09:01,583 --> 00:09:10,230 Tämän ansiosta viestintä onnistuu suurien etäisyyksien yli ilman mitään infrastruktuuria. 91 00:09:10,230 --> 00:09:14,233 Et tarvitse satelliitteja, tukiasemia tai mitään muuta. 92 00:09:14,233 --> 00:09:17,015 Tarvitset vain radiolaitteet molemmissa päissä. 93 00:09:17,295 --> 00:09:20,098 Ketkä sitten ovat kiinnostuneita tällaisesta teknologiasta? 94 00:09:20,098 --> 00:09:21,419 Tietysti armeija. 95 00:09:21,419 --> 00:09:24,721 Myös diplomaatit ja kriisinhallintaviranomaiset. 96 00:09:24,721 --> 00:09:27,003 On selvää, että jos 97 00:09:27,115 --> 00:09:35,055 tapahtuu esimerkiksi maanjäristys, joka tuhoaa kaikki tukiasemat, tarvitaan viestintäjärjestelmä, joka ei vaadi infrastruktuuria. 98 00:09:35,055 --> 00:09:37,675 Se on tällaisessa tilanteessa erittäin hyödyllinen. 99 00:09:38,295 --> 00:09:48,935 HF-radion sisällä käytettiin SoDark-salausta, jota Marco analysoi. Half Loop tuli sen tilalle ja sitä käytettiin käsienpuristussanomien salaamiseen. 100 00:09:48,935 --> 00:09:57,055 Sen avulla pyrittiin varmistamaan viestinnän luottamuksellisuus ja aitous. 101 00:09:57,705 --> 00:10:04,737 Puhutaanpa automaattisesta linkinmuodostuksesta, sillä kuten ehkä arvaat, HF-radio ei ole niin yksinkertainen. 102 00:10:04,737 --> 00:10:07,340 Kyse ei ole vain siitä, että lähetät signaalin ja se toimii. 103 00:10:07,340 --> 00:10:20,467 Todellisuudessa se on monimutkaista, ja vielä 80-luvun puoliväliin saakka tarvittiin erittäin taitavia operaattoreita molemmissa päissä, jotta yhteys saatiin muodostettua. 104 00:10:20,467 --> 00:10:25,889 Tämän helpottamiseksi kehitettiin automaattinen linkinmuodostusprotokolla, lyhyesti ALE. 105 00:10:26,370 --> 00:10:27,390 Ja siinä 106 00:10:27,422 --> 00:10:30,063 Emme mene nyt yksityiskohtiin. 107 00:10:30,063 --> 00:10:31,323 Yksinkertaistamme paljon. 108 00:10:31,323 --> 00:10:35,764 Perusidea on, että alussa tapahtuu kolmivaiheinen kättely. 109 00:10:35,764 --> 00:10:39,755 Tämä on hyvin yleistä viestinnässä. 110 00:10:39,755 --> 00:10:44,167 Alice lähettää viestin, jossa hän sanoo "Hei, olen Alice" 111 00:10:44,167 --> 00:10:45,667 ja haluan puhua Bobille. 112 00:10:45,667 --> 00:10:49,258 Sitten Bob vastaa vastaavalla viestillä: "Olen Bob" 113 00:10:49,258 --> 00:10:51,369 ja haluan viestiä Alicen kanssa. 114 00:10:51,369 --> 00:10:54,590 Sitten Alice lähettää uudelleen viestin: "Olen Alice" 115 00:10:54,590 --> 00:10:56,540 ja haluan viestiä kanssasi, Bob. 116 00:10:56,605 --> 00:11:04,161 Tässä siis hyvin yksinkertaistettuna linkki muodostetaan ja viestintä alkaa. 117 00:11:04,161 --> 00:11:07,664 Se voi olla ääntä, keskustelua tai dataa. 118 00:11:07,664 --> 00:11:11,727 Esimerkiksi sähköposteja voidaan lähettää tämän kautta. 119 00:11:11,807 --> 00:11:15,110 Viestintä jatkuu, ja lopuksi lähetetään lopetusviesti. 120 00:11:15,110 --> 00:11:19,373 Alice sanoo: "Haluan lopettaa viestinnän nyt." 121 00:11:19,553 --> 00:11:22,936 Kuten huomaat, tässä näkyy lukon kuva. 122 00:11:22,936 --> 00:11:25,457 Tämä johtuu siitä, että nämä viestit 123 00:11:25,876 --> 00:11:33,522 kättely- ja lopetusviestit salataan joko SoDark:lla tai Half Loopilla. 124 00:11:33,522 --> 00:11:37,034 SoDark on Half Loopin edeltäjä. 125 00:11:37,375 --> 00:11:45,241 Sitä käytettiin todennäköisesti vuoteen 2017 saakka, mutta nykyään viestit salataan Half Loopilla. 126 00:11:45,241 --> 00:11:47,543 Miksi salaus tarvitaan tässä? 127 00:11:48,003 --> 00:11:51,626 Kun kättelyviestit salataan vahvasti... 128 00:11:51,644 --> 00:11:56,258 saadaan aikaan useita hyviä ominaisuuksia. 129 00:11:56,258 --> 00:12:05,585 Ensinnäkin viestien luottamuksellisuus, eli kukaan ilman avainta ei tiedä, ketkä viestivät. 130 00:12:05,585 --> 00:12:09,248 Kuten sanoin, viesti sisältää Alicen ja Bobin identiteetit. 131 00:12:09,248 --> 00:12:13,532 Ilman salausta kuka tahansa näkisi, että Alice ja Bob viestivät keskenään. 132 00:12:13,532 --> 00:12:18,415 Ja kyllä, tiedän että sanoin alussa että Bob on Benjamin, mutta ei se haittaa. 133 00:12:19,417 --> 00:12:21,278 Toinen hyöty on 134 00:12:21,326 --> 00:12:31,261 todennus. Jos Alice ja Bob käyttävät salaista avainta, vain he voivat purkaa viestin ja varmistaa, että se todella tuli toiselta osapuolelta. 135 00:12:31,261 --> 00:12:42,357 Jos Benjamin purkaa viestin ja se sanoo "Hei, olen Alice", hän voi luottaa siihen, että viesti todella tuli Alicelta. Tämä on tärkeää HF-radiolle, kun linkki muodostetaan. 136 00:12:42,357 --> 00:12:51,302 Et voi vain kuunnella toisia ja muodostaa yhteyttä mihin tahansa, joten todennus tukee myös saatavuutta. 137 00:12:51,954 --> 00:12:54,175 Se auttaa varmistamaan viestinnän jatkuvuuden. 138 00:12:54,175 --> 00:13:07,880 Teoriassa kuka tahansa, jolla on voimakas lähetin, voi häiritä taajuutta ja estää Alicea ja Benjaminia viestimästä. 139 00:13:07,880 --> 00:13:18,184 Mutta jos sinulla on avain, voit lähettää tarvittavat kolme viestiä ja linkki muodostuu. Sitten Benjamin ei enää voi muodostaa yhteyttä Aliceen. 140 00:13:18,184 --> 00:13:21,642 Tämäkin osoittaa, miksi salaus on tärkeää. 141 00:13:21,642 --> 00:13:31,502 Lopuksi tällä dialla haluan korostaa, että Half Loop, eli salaus jonka aiomme murtaa seuraavaksi, käytetään vain kättely- ja lopetusviesteissä. 142 00:13:31,502 --> 00:13:40,242 Kaikki mitä selitän koskee vain kättelyviestejä, ei varsinaista siirrettävää sisältöä kuten puhetta tai tiedostoja. 143 00:13:41,062 --> 00:13:47,722 Mennään siis seuraavaksi itse Half Loop 24 -algoritmin yksityiskohtiin, eli algoritmiin, jonka me murtoimme. 144 00:13:48,222 --> 00:13:49,531 Half Loop on itse asiassa... 145 00:13:49,531 --> 00:13:53,322 määritelty jossain sotilasstandardissa. 146 00:13:54,443 --> 00:14:03,597 Jos tunnet FIPS 197 -standardin, eli AES:n virallisen spesifikaation, tämä näyttää sinusta ehkä tutulta. 147 00:14:03,597 --> 00:14:04,968 Tässä on useita vaiheita. 148 00:14:04,968 --> 00:14:09,350 SubBytes, RotateRows, MixColumns ja AddRoundKey. 149 00:14:09,350 --> 00:14:15,002 Nuo vaiheet ovat hyvin samankaltaisia kuin AES:ssä, koska Half Loop muistuttaa paljon AES:ää. 150 00:14:15,002 --> 00:14:17,293 Ja jos mietit, onko tämä 151 00:14:17,545 --> 00:14:19,285 dokumentti salainen tai jotain sellaista, 152 00:14:19,285 --> 00:14:20,045 niin ei ole. 153 00:14:20,045 --> 00:14:20,725 Se on julkinen. 154 00:14:20,725 --> 00:14:29,045 Kuten mainitsin, olin Ateenassa, ja Marcos piti esityksen Half Loopin edeltäjästä. 155 00:14:29,425 --> 00:14:33,725 Esityksen lopussa hän mainitsi, että nyt käytetään tätä Half Loop -salausta. 156 00:14:33,725 --> 00:14:35,705 Kysyin, onko se julkinen? 157 00:14:35,705 --> 00:14:36,425 Hän sanoi kyllä. 158 00:14:36,425 --> 00:14:37,885 Sen voi vain etsiä Googlesta. 159 00:14:37,885 --> 00:14:42,385 Sieltä löytyy Yhdysvaltain puolustusministeriön sivu, josta PDF:n voi ladata. 160 00:14:42,385 --> 00:14:43,725 Täytyy vain selata alaspäin. 161 00:14:43,725 --> 00:14:45,673 Ehkä noin 300 sivua. 162 00:14:45,673 --> 00:14:49,833 Liitteessä G on Half Loopin spesifikaatio. 163 00:14:51,033 --> 00:15:03,373 Annan nyt lisää yksityiskohtia. Half Loopista on kolme versiota: 24, 48 ja 96. Tässä tarkastellaan versiota 24. Tämä numero tarkoittaa lohkon kokoa. 164 00:15:03,373 --> 00:15:04,373 Eli lohkon koko on 24 bittiä. 165 00:15:04,373 --> 00:15:14,393 Muistathan, että AES:ssä sekä selkoteksti että salattu teksti olivat 128 bittiä. Half Loopissa ne ovat 24, 48 tai 96 bittiä. Nyt käsittelemme pienintä versiota. 166 00:15:14,393 --> 00:15:17,626 muut versiot jätetään tämän esityksen ulkopuolelle. 167 00:15:17,966 --> 00:15:26,429 Half Loop on niin sanottu "tweakable" lohkosalaus, ja tässä diassa kutsun sitä kirjaimella E, koska en halua kirjoittaa "Half Loop" joka paikkaan. 168 00:15:27,170 --> 00:15:42,015 Kuten mainitsin, se korvasi SoDark-salauksen. Sivuhuomautuksena: SoDark käytti vain 56-bittisiä avaimia, ja jos tiedät jotain kryptografiasta, 56 bittiä ei riitä. 169 00:15:42,015 --> 00:15:45,501 Sen pystyy helposti murtamaan brute forcella. 170 00:15:45,501 --> 00:15:56,706 Ensisilmäyksellä on hyvä, että vuodesta 2017 alkaen Half Loop on ollut virallisesti määritelty, ja siinä käytetään 128-bittistä avainta. 171 00:15:56,706 --> 00:16:06,691 Oikealla olevassa kuvassa näkyy 24-bittinen selkoteksti, 24-bittinen salattu teksti ja 128-bittinen avain. 172 00:16:06,691 --> 00:16:12,763 Mutta toisin kuin AES:ssä, tässä on lisäsyöte nimeltä T, joka on niin sanottu tweak. 173 00:16:12,997 --> 00:16:19,841 Tweak koostuu nykyisestä ajasta, sanalaskurista ja käytetystä radiotaajuudesta. 174 00:16:20,222 --> 00:16:29,969 Puhumme tästä lisää hetken kuluttua, mitä se tarkoittaa ja miksi se on hyödyllinen ominaisuus. 175 00:16:30,410 --> 00:16:41,537 Kuten sanoin, Half Loop on vahvasti inspiroitunut AES:stä. Aluksi se voi tuntua hyvältä asialta, mutta yksityiskohdilla on merkitystä. 176 00:16:42,501 --> 00:16:48,486 Miksi voidaan sanoa, että se on vahvasti inspiroitunut AES:stä? 177 00:16:48,486 --> 00:16:50,408 Koska se käyttää samoja komponentteja. 178 00:16:50,408 --> 00:17:02,587 Hetken kuluttua käymme läpi Half Loopin tarkemmin ja näemme, että S-Box, eli substitution box, on otettu suoraan AES:stä. Se on lohkosalauksen keskeinen osa. 179 00:17:02,607 --> 00:17:09,342 He käyttävät samaa S-Boxia, mikä on järkevää, koska AES:n S-Box on vahva. 180 00:17:09,443 --> 00:17:12,169 He käyttävät myös lähes samaa avainlaajennusta eli key schedulea. 181 00:17:12,169 --> 00:17:17,889 Jos et tiedä mitä key schedule tarkoittaa, ei hätää. Käymme sen läpi pian. 182 00:17:18,249 --> 00:17:31,149 AES:ssä tila on 16 tavua eli 128 bittiä, kirjoitettuna yleensä 4x4-matriisina. Half Loopissa se on kutistettu 3x1-matriisiksi. 183 00:17:31,149 --> 00:17:35,429 Jokainen matriisin kohta on 1 tavu eli elementti joukossa F2^8. 184 00:17:36,109 --> 00:17:40,709 AES:ssä käytetään 10 kierrosta, ja sama pätee täällä. 185 00:17:42,376 --> 00:17:43,597 Nyt meillä on tämä valmis. 186 00:17:43,597 --> 00:17:46,089 Haluan kertoa lisää tästä tweakista. 187 00:17:46,089 --> 00:17:48,141 Miksi tarvitsemme sen? 188 00:17:48,141 --> 00:17:50,103 Tai miksi haluamme tweakattavan lohkosalauksen? 189 00:17:50,103 --> 00:17:53,596 Katsotaanpa kuuluisaa ECB-Tux-esimerkkiä. 190 00:17:53,596 --> 00:17:59,351 Mitä tapahtuu, jos salaamme kuvan käyttäen ECB-tilaa eli electronic codebook -tilaa? 191 00:17:59,852 --> 00:18:07,228 Muistathan, että AES tai muut lohkosalaimet salaavat yhden lohkon kerrallaan. 192 00:18:07,228 --> 00:18:08,709 Mutta yleensä kuva... 193 00:18:09,145 --> 00:18:16,461 on useampaa lohkoa. Kuvitellaan esimerkin vuoksi, että yksi lohko vastaa yhtä pikseliä. 194 00:18:16,561 --> 00:18:26,699 Jos salaat jokaisen pikselin samalla avaimella ja ilman yhteyttä lohkojen välillä, eli electronic codebook -tilassa, niin silloin... 195 00:18:26,699 --> 00:18:30,512 Lyhyesti sanottuna, ECB:n kanssa salattu kuva näyttää tältä. 196 00:18:31,073 --> 00:18:33,585 Ja tietenkään tämä ei ole turvallista salausta, eikö? 197 00:18:33,585 --> 00:18:38,789 Turvallinen salaus tarkoittaa, että alkuperäisestä viestistä ei paljastu mitään tietoa. 198 00:18:38,993 --> 00:18:45,448 Mutta tässä on selvästi nähtävissä, että kyseessä on Tux-kuva. 199 00:18:45,989 --> 00:18:55,755 Yleensä käytetään jotain toimintatilaa, kuten GCM. Esimerkiksi HTTPS:ssä käytetään GCM:ää. 200 00:18:56,117 --> 00:19:03,353 Mutta jos käytät tweakattavaa lohkosalausta, jossa on lisäsyöte, voit käyttää ECB:tä. Se on kätevää, koska ECB on yksinkertainen. 201 00:19:03,353 --> 00:19:07,995 Jos käytät tweakattavaa lohkosalausta ECB-tilassa, saat... 202 00:19:07,995 --> 00:19:08,995 halutun lopputuloksen. 203 00:19:08,995 --> 00:19:12,577 Saat vain kohinaa, eikä mitään tietoa paljastu. 204 00:19:12,798 --> 00:19:19,161 Tweak on lisäsyöte, joka muuttuu vaikka selkoteksti ei muuttuisi. 205 00:19:19,161 --> 00:19:27,026 Jos meillä on valkoinen pikseli ja toinen samanlainen valkoinen pikseli, saadaan ilman tweakia sama salattu tulos. 206 00:19:27,026 --> 00:19:36,931 Mutta jos lisätään pikselin sijainti eli x- ja y-koordinaatit lisäsyötteenä salaimeen, saadaan eri salattu tulos, vaikka sisältö oli sama. 207 00:19:37,137 --> 00:19:40,228 Tällöin saadaan taas turvallinen ja hyödyllinen lopputulos. 208 00:19:40,228 --> 00:19:44,009 Ja tulos on taas turvallinen. 209 00:19:44,609 --> 00:19:55,122 Lisäksi kannattaa käyttää esimerkiksi laskuria, jotta kun salataan eri kuvia, samassa kohdassa olevat pikselit eivät tuota samaa salaustulosta. 210 00:19:55,122 --> 00:19:58,527 Mutta se on vain sivuhuomautus. 211 00:19:58,573 --> 00:20:06,015 Mennään nyt syvemmälle ja tarkastellaan teknisesti Half Loop 24:n kierrosfunktiota. 212 00:20:06,279 --> 00:20:14,099 Nämä ovat operaatioita, jotka toistetaan uudelleen ja uudelleen. Half Loopissa niitä suoritetaan 10 kertaa. 213 00:20:14,519 --> 00:20:17,799 Näiden jälkeen saadaan salattu tulos eli ciphertext. 214 00:20:17,799 --> 00:20:23,799 Vasemmalla puolella on syöte, eli joko selkoteksti tai nykyinen tila, jos ei olla ensimmäisellä kierroksella. 215 00:20:23,939 --> 00:20:29,859 Tämä on 24 bittiä, joka jaetaan kolmeen tavuun, eli 3 kertaa 8 bittiä. 216 00:20:30,319 --> 00:20:33,259 Ensimmäinen vaihe on kierrosavaimen lisäys. 217 00:20:33,259 --> 00:20:35,718 Kierrosavain johdetaan 218 00:20:35,718 --> 00:20:42,943 128-bittisestä pääavaimesta, ja se yhdistetään tilaan XOR-operaatiolla, eli eksklusiivisella TAI-operaatiolla. 219 00:20:42,943 --> 00:20:44,505 Tämä tehdään jokaiselle bitille. 220 00:20:44,505 --> 00:20:47,207 Jos bitit ovat samat, tulos on nolla. 221 00:20:47,207 --> 00:20:52,710 Jos bitit ovat eri, tilabitti ja avainbitti, tulos on yksi. 222 00:20:53,271 --> 00:21:03,198 Seuraava vaihe on S-box, ja kuten sanoin, tässä käytetään AES:n S-boxia. Toteutuksessa se on vain taulukko, jossa tehdään haku. 223 00:21:03,290 --> 00:21:08,251 Syöte on 8-bittinen, joten mahdollisia arvoja on 256. 224 00:21:08,371 --> 00:21:11,822 Taulukossa on jokaiselle syötteelle oma ulostuloarvo. 225 00:21:11,822 --> 00:21:20,735 Turvallisuuden kannalta taulukon sisältö on tärkeä, mutta meille se ei ole nyt oleellista. 226 00:21:21,315 --> 00:21:27,017 Seuraava vaihe on lineaarikerros, joka koostuu kahdesta osasta. 227 00:21:27,017 --> 00:21:30,698 Ensimmäinen on RotateRow, joka tekee 228 00:21:31,718 --> 00:21:47,458 bittien kierron jokaisessa tavussa. Sitten MixedColumn, joka voidaan kuvata matriisikertolaskuna binäärisellä 24x24-matriisilla. 229 00:21:47,458 --> 00:21:53,018 Koska toimimme biteillä, laskut ovat XOR-operaatioita. 230 00:21:53,018 --> 00:21:57,178 Toisin sanoen, kaikki lasketaan modulo 2, eli jokaisen bitin lopputulos on joko 0 tai 1. 231 00:21:57,178 --> 00:22:00,178 Lopputulos on taas 24 bittiä. 232 00:22:00,178 --> 00:22:03,172 24-bittinen tulos. 233 00:22:03,183 --> 00:22:05,245 Tehdään lyhyt esimerkki. 234 00:22:05,245 --> 00:22:09,799 Syöte on 0x01, 0x02 ja 0x03 heksadesimaaleina. 235 00:22:09,799 --> 00:22:14,953 0 tarkoittaa 8 nollabittiä, 1 on kolme nollabittiä ja yksi ykkönen lopussa. 236 00:22:14,953 --> 00:22:19,596 Meillä on myös kierrosavain, ja ensimmäinen vaihe on kierrosavaimen lisäys. 237 00:22:19,877 --> 00:22:22,619 Tässä on sen operaation tulos. 238 00:22:22,619 --> 00:22:29,925 Jos meillä on 0x7F ja 0x01, vähiten merkitsevä bitti käännetään, jolloin tulokseksi tulee 0x7E. 239 00:22:30,346 --> 00:22:31,046 Ja nyt 240 00:22:31,046 --> 00:22:38,686 Tässä diassa en tietenkään näytä kaikkia 256 S-boxin arvoa, mutta 0x7E löytyy, ja katsotaan mitä saadaan. 241 00:22:38,686 --> 00:22:41,626 Syöte on 0x7E, ja ulostulo on 0xF3. 242 00:22:41,666 --> 00:22:43,806 Aika yksinkertaista, vai mitä? 243 00:22:43,806 --> 00:22:54,086 Lineaarikerros voi olla hieman vaikeampi ymmärtää, mutta luota siihen, että matriisikertolaskun tuloksena saadaan tämä uusi tila. 244 00:22:54,186 --> 00:22:59,286 Kun tehdään välivaiheet, näet täällä rotaation ja sen jälkeen MixedColumn-vaiheen. 245 00:22:59,286 --> 00:23:00,282 MixedColumn on myös... 246 00:23:00,282 --> 00:23:01,923 operaatio AES:ssä. 247 00:23:03,684 --> 00:23:06,606 Tämän jälkeen saadaan tämä ulostulo. 248 00:23:06,847 --> 00:23:09,228 Kuten sanoin, Half Loopissa on 10 kierrosta. 249 00:23:09,228 --> 00:23:13,231 Eli tämä kierrosfunktio suoritetaan 10 kertaa. 250 00:23:13,231 --> 00:23:20,016 Ensimmäisessä kierroksessa lisätään kierrosavain 0, tehdään S-box, lineaarikerros ja siirrytään seuraavaan kierrokseen. 251 00:23:20,016 --> 00:23:27,361 Lisätään kierrosavain 1, tehdään S-box, lineaarikerros ja niin edelleen. 252 00:23:27,361 --> 00:23:29,648 Tämä toistetaan 10 kertaa, mutta 253 00:23:29,648 --> 00:23:35,280 viimeinen kierros on hieman erilainen, koska lineaarikerros ei enää tuo lisäturvaa, joten se voidaan jättää pois. 254 00:23:35,280 --> 00:23:40,793 Lisätään kuitenkin vielä yksi kierrosavain, muuten hyökkääjä voisi laskea takaisinpäin. 255 00:23:40,793 --> 00:23:43,644 Tarvitaan siis avaimen lisäys aivan lopussa. 256 00:23:43,844 --> 00:23:44,924 Siinä on koko Half Loop. 257 00:23:44,924 --> 00:23:46,285 Tässä on koko algoritmi. 258 00:23:46,285 --> 00:23:51,747 Syötetään selkoteksti vasemmalta, tehdään 10 kierrosta ja saadaan salattu teksti. 259 00:23:52,187 --> 00:23:57,540 Mutta yksi asia puuttuu, en ole vielä selittänyt, miten kierrosavaimet saadaan, eikö niin? 260 00:23:57,540 --> 00:23:58,470 Eli tietenkin... 261 00:23:58,470 --> 00:24:00,930 Meillä on pääavain, mutta miten kierrosavaimet saadaan? 262 00:24:00,930 --> 00:24:03,029 Tätä varten käytetään avainlaajennusta eli key schedulea. 263 00:24:03,690 --> 00:24:10,150 Avainlaajennus on lainattu AES:stä pienin poikkeuksin, oikeastaan kahdella poikkeuksella. 264 00:24:10,150 --> 00:24:13,950 Ensinnäkin kierrosavaimia tarvitaan vähemmän, joten määrä on pienempi. 265 00:24:13,990 --> 00:24:19,830 Toiseksi meillä on tweak, joka XORataan alussa. Avain jaetaan kahteen osaan. 266 00:24:19,830 --> 00:24:24,390 Ensimmäiset 64 bittiä ja loput 64 bittiä. 267 00:24:24,390 --> 00:24:27,430 Ensimmäiseen 64 bittiin lisätään tweak T. 268 00:24:27,430 --> 00:24:28,582 Tämä on siis 269 00:24:28,582 --> 00:24:33,422 käytetty taajuus, aikaleima ja sanalaskuri. 270 00:24:33,662 --> 00:24:38,442 Tämä XORataan avaimen ensimmäiseen osaan ja sitten suoritetaan AES-tyyppinen avainlaajennus. 271 00:24:38,442 --> 00:24:41,002 AES:n key schedule on melko yksinkertainen. 272 00:24:41,002 --> 00:24:47,782 Siinä käytetään XOR-operaatioita 32-bittisille sanoille, ja se on FISO-tyyppinen verkko. 273 00:24:48,142 --> 00:24:49,542 Käytetään funktiota G. 274 00:24:49,542 --> 00:24:57,022 Siitä ei tarvitse huolehtia, mutta siinä on lisää S-boxeja ja bittien uudelleenjärjestelyä. 275 00:24:57,166 --> 00:24:58,797 Miten kierrosavaimet sitten saadaan? 276 00:24:58,797 --> 00:25:05,992 Otetaan ensimmäiset 24 bittiä kierrosavaimeksi 0, seuraavat 24 bittiä kierrosavaimeksi 1 ja niin edelleen. 277 00:25:06,293 --> 00:25:08,594 Lopulta jää yksi tavu jäljelle. 278 00:25:08,594 --> 00:25:12,717 Sitten suoritetaan AES-avainlaajennus uudelleen. 279 00:25:12,717 --> 00:25:13,878 Saadaan uusi tila. 280 00:25:13,878 --> 00:25:19,061 Otetaan taas bitit käyttöön, jatketaan vain bittien käyttämistä. 281 00:25:19,442 --> 00:25:21,453 Ja sitten ollaankin jo melkein valmiita. 282 00:25:21,453 --> 00:25:23,865 Kierrosavain 10:stä on kasassa kaksi tavua. 283 00:25:23,865 --> 00:25:25,733 Tarvitaan vielä yksi tavu. 284 00:25:25,733 --> 00:25:33,818 Toistetaan funktio, mutta säilytetään vain ensimmäinen tavu ja hylätään loput. 285 00:25:34,239 --> 00:25:41,223 Nyt meillä on kaikki 264 bittiä, eli 24 bittiä kertaa 11 kierrosta. 286 00:25:43,525 --> 00:25:48,688 Nyt kun tiedämme, miten Half Loop toimii, katsotaan itse hyökkäystä. 287 00:25:49,209 --> 00:25:54,446 Tämä hyökkäys perustuu kahteen tutkimusjulkaisuun. 288 00:25:54,446 --> 00:26:06,719 Ensimmäinen artikkeli on "Breaking Half Loop 24", yhteistyössä Markus Dansarien kanssa, joka esitteli SoDarkin, Half Loopin edeltäjä, joka alun perin kiinnitti huomiomme. 289 00:26:06,719 --> 00:26:11,220 Mukana oli myös Patrick Derbez Ranskasta ja ohjaajani Gregor Leander Bochumista. 290 00:26:11,601 --> 00:26:21,534 Artikkelin lopputulos oli, että Half Loop 24 ei ole turvallinen. Meillä on toimiva hyökkäys, ja se on varsin vahva hyökkäys. 291 00:26:21,534 --> 00:26:23,244 Sanotaanko näin... 292 00:26:24,088 --> 00:26:32,113 Teoreettisesti katsoen, sanoimme että salaus voidaan murtaa, jos hyökkääjä voi salakuunnella 500 vuoden ajan. 293 00:26:32,214 --> 00:26:42,761 Teoriassa tämä on erittäin vahva murtaminen, mutta käytännössä tuskin haittaa, jos hyökkääjän täytyy kerätä 500 vuoden viestintädataa. 294 00:26:43,021 --> 00:26:52,652 Esitin tämän artikkelin viime vuonna Japanissa, FSE-konferenssissa, joka on Fast Software Encryption -konferenssi. 295 00:26:52,652 --> 00:27:02,719 Kollegani Sharam, joka on nyt takaisin Bochumissa mutta tuolloin oli Nijmegenissä Alankomaissa, tuli luoksemme ja sanoi, että hyökkäystä voitaisiin ehkä parantaa. 296 00:27:02,719 --> 00:27:03,440 Hyökkäystä voisi parantaa. 297 00:27:03,440 --> 00:27:05,601 Panostimme siihen lisää aikaa. 298 00:27:05,601 --> 00:27:09,804 Ja huomasimme, että sitä voi parantaa merkittävästi. 299 00:27:09,944 --> 00:27:14,167 Tietenkin koska olemme akateemisessa maailmassa, kirjoitimme uuden artikkelin. 300 00:27:14,167 --> 00:27:19,671 Esitin sen tänä vuonna FSE-konferenssissa Leuvenissa. 301 00:27:19,671 --> 00:27:21,852 Saimme myös parhaimman paperin palkinnon. 302 00:27:21,976 --> 00:27:24,997 Mikä oli tietysti meille todella hienoa. 303 00:27:25,578 --> 00:27:35,422 Ennen kuin menemme yksityiskohtiin, haluan korostaa että kryptografiset hyökkäykset voivat tuntua oudoilta, koska hyökkääjät ovat todella voimakkaita. 304 00:27:35,422 --> 00:27:45,295 Hyökkäyksissä hyökkääjällä, esimerkiksi Charliella, on usein oikeus pyytää Alicelta viestien salaamista, vaikka Alice säilyttää salaisen avaimen. 305 00:27:45,295 --> 00:27:49,767 Charlie voi siis pyytää Alicea salaamaan jonkin selkotekstin. 306 00:27:49,987 --> 00:27:51,714 Ja Alice tekee sen. 307 00:27:51,714 --> 00:27:55,266 Tämä on tietysti hieman outoa, koska oikeassa elämässä näin ei pitäisi tapahtua. 308 00:27:55,266 --> 00:27:59,849 Charlie ei voi vain mennä Alicen luo ja pyytää, että "salaisitko tämän puolestani". 309 00:27:59,989 --> 00:28:03,632 Mutta se menee vielä oudommaksi: Charlie voi myös pyytää purkamaan salauksen. 310 00:28:03,632 --> 00:28:07,454 Charlie voi sanoa "puratko tämän salatekstin C:n". 311 00:28:07,454 --> 00:28:13,238 Alice vastaa selkotekstillä P, eli antaa alkuperäisen viestin. 312 00:28:13,458 --> 00:28:15,319 Tätä jatketaan uudestaan ja uudestaan. 313 00:28:15,319 --> 00:28:19,942 Lopulta Charlie yrittää ehkä selvittää salaisen avaimen. 314 00:28:21,185 --> 00:28:31,078 Voisimme tehdä asiat vielä hullummiksi ja sanoa, että Charlie yrittää vain erottaa käyttikö Alice oikeaa salausta vai täysin satunnaista järjestelmää. 315 00:28:32,298 --> 00:28:35,539 Mutta oletetaan, että Charlie yrittää selvittää avaimen. 316 00:28:35,539 --> 00:28:39,600 Saatat miettiä, miksi hyökkääjät esitetään näin voimakkaina. 317 00:28:39,640 --> 00:28:46,182 Syynä on se, että jos salaus kestää näin voimakkaita hyökkääjiä, voimme luottaa siihen entistä enemmän. 318 00:28:46,182 --> 00:28:53,427 On monia esimerkkejä siitä, että tätä ei alun perin suunniteltu. 319 00:28:53,427 --> 00:29:11,715 Esimerkiksi hyökkäyksissä, kuten Bleichenbacherin hyökkäyksessä, ei tarkoituksella anneta palautetta purkamisesta, mutta käytännössä saattaa paljastua esimerkiksi ensimmäinen bitti purusta. 320 00:29:11,715 --> 00:29:20,645 Jos järjestelmäsi on turvallinen tällaisia hyökkäyksiä vastaan, olet hyvällä tiellä. Ja nyt viimeinen puuttuva palanen on differentiaalikryptoanalyysi. 321 00:29:20,645 --> 00:29:30,319 Emme tietenkään mene tämän keskeisen menetelmän kaikkiin yksityiskohtiin. Se kehitettiin 1990-luvun alussa Bihamin ja Shamirin toimesta. 322 00:29:31,486 --> 00:29:38,119 Muuten, Shamir-nimi voi kuulostaa tutulta, hän on sama henkilö kuin Shamirin salausjakojärjestelmässä ja RSA:ssa. 323 00:29:38,119 --> 00:29:40,100 RSA:n S-kirjain tulee Shamirista. 324 00:29:40,100 --> 00:29:43,552 Shamir oli erittäin aktiivinen ja arvostettu kryptografi. 325 00:29:43,553 --> 00:29:46,714 He kehittivät differentiaalikryptoanalyysin. 326 00:29:46,934 --> 00:29:48,301 Idea siinä on... 327 00:29:48,301 --> 00:29:53,153 että ei katsota vain yhtä selkoteksti–salateksti-paria, vaan myös toista selkotekstiä. 328 00:29:53,153 --> 00:29:59,616 Tässä on selkoteksti P ja toinen selkoteksti, joka on P XOR delta, niillä on siis tietty ero. 329 00:29:59,616 --> 00:30:03,718 Eli kaksi selkotekstiä eroavat toisistaan tietyllä erotuksella delta. 330 00:30:03,718 --> 00:30:10,101 Tässä käytän pientä delta-merkkiä kuvaamaan tätä arvoa. 331 00:30:10,101 --> 00:30:18,945 Yleisesti käytämme isoa deltaa, kolmion muotoista merkkiä, osoittamaan että puhumme erotuksesta. 332 00:30:18,945 --> 00:30:23,416 Delta P tarkoittaa P:n ja P XOR deltan välistä erotusta. 333 00:30:23,416 --> 00:30:32,091 Koska kyseessä on XOR, P XOR P XOR delta antaa erotukseksi delta. 334 00:30:32,091 --> 00:30:45,609 Differentiaalikryptoanalyysin idea on syöttää tietty ero sisään ja toivoa, että ulostulosta voi päätellä jotakin. 335 00:30:45,609 --> 00:30:51,590 Merkintätavasta: emme näytä molempia salausajoja dioissa, vaan vain yhden ja sen erotuksen. 336 00:30:51,590 --> 00:30:55,290 Näytämme vain sen erotuksen, joka kiinnostaa meitä. 337 00:30:55,710 --> 00:31:04,090 Ja itse asiassa analyysiä ei tarvitse tehdä koko algoritmille, riittää, että se tehdään vain osalle algoritmista. 338 00:31:05,910 --> 00:31:09,130 Nyt meillä on kaikki mitä tarvitsemme ja voimme siirtyä itse hyökkäykseen. 339 00:31:09,130 --> 00:31:11,790 Mennään siis vielä teknisemmälle tasolle. 340 00:31:11,870 --> 00:31:13,410 Tämän kuvan olet jo nähnyt. 341 00:31:13,410 --> 00:31:15,170 Kyseessä on taas key scheluder. 342 00:31:15,170 --> 00:31:21,262 Half Loopissa meillä on syötteenä paitsi selkoteksti myös tweak. 343 00:31:21,262 --> 00:31:24,953 Oletetaan nyt, että hyökkääjä voi myös hallita tätä tweakia. 344 00:31:24,953 --> 00:31:26,533 Käytännössä näin ei tietenkään ole. 345 00:31:26,533 --> 00:31:29,934 Mutta oletetaan aluksi, että voimme hallita sitä täysin. 346 00:31:29,934 --> 00:31:36,936 Katsotaan myöhemmin, miten tämä voidaan toteuttaa käytännössä. 347 00:31:37,056 --> 00:31:40,507 Seuraavaksi asetamme eron tweak-arvoon. 348 00:31:40,507 --> 00:31:44,078 Tässä kolmas tavu on se, jossa ero delta on. 349 00:31:44,918 --> 00:31:53,604 Tweak on 64-bittinen ja kaikki muut tavut paitsi kolmas ovat nollia. Ero on siis vain kolmannessa tavussa. 350 00:31:53,765 --> 00:32:00,449 Salaamme siis kaksi selkotekstiä, ja tweakit ovat samanlaisia paitsi kolmannen tavun kohdalla. 351 00:32:00,710 --> 00:32:04,672 Nyt haluamme selvittää, mitä tapahtuu kierrosavaimille. 352 00:32:05,093 --> 00:32:07,445 Tämä on itse asiassa melko yksinkertaista. 353 00:32:07,445 --> 00:32:11,850 Jos ero on kolmannessa tavussa, myös ensimmäisen kierroksen avaimen kolmannessa tavussa on ero. 354 00:32:11,850 --> 00:32:12,790 Eli ensimmäinen kierrosavain 355 00:32:12,790 --> 00:32:17,474 on muuten sama, mutta kolmannessa tavussa on delta. 356 00:32:17,474 --> 00:32:23,818 Kaikki muut ensimmäisen kierroksen bitit pysyvät samoina, koska ero on vain kolmannessa tavussa. 357 00:32:24,099 --> 00:32:29,563 Seuraavaksi sovelletaan key scheluderin kierrosfunktiota. 358 00:32:29,763 --> 00:32:33,196 Koska käytössä on XOR, ero jatkaa etenemistään. 359 00:32:33,196 --> 00:32:36,318 Meillä on delta tässä, ja sitten delta myös tässä. 360 00:32:36,318 --> 00:32:39,170 Eli ei eroa muissa kierrosavaimissa, 361 00:32:39,170 --> 00:32:43,290 mutta kierrosavain 6:n ensimmäisessä tavussa ero ilmenee taas. 362 00:32:43,290 --> 00:32:55,530 Eli jos salaamme P ja P-prime, joissa on eri tweakit, niin kierrosavaimen 6 ensimmäinen tavu eroaa näiden salausten välillä. 363 00:32:57,650 --> 00:33:06,170 Ero etenee edelleen, joten myös kierrosavaimissa 7, 8 ja 9 on yhden tavun ero. 364 00:33:06,170 --> 00:33:09,150 Ja jos ihmettelet, 365 00:33:09,686 --> 00:33:14,787 Tämä data ei vaikuta muihin kohtiin, joten ne pysyvät samoina. 366 00:33:14,987 --> 00:33:19,749 Nyt tarkastellaan Half Loopin koko rakennetta uudelleen. 367 00:33:19,749 --> 00:33:25,090 Punaisella näkyvät ne kierrosavaimet, jotka eroavat näiden kahden salausajon välillä. 368 00:33:25,090 --> 00:33:27,311 Voit jopa merkitä tarkat tavujen paikat. 369 00:33:27,311 --> 00:33:31,672 Ero ilmestyy tänne, tänne, tänne, tänne ja tänne. 370 00:33:32,172 --> 00:33:39,378 Hyökkäyksen tärkein vaihe on käyttää sellaista selkotekstiparia, jonka erotus vastaa tätä rakennetta. 371 00:33:39,378 --> 00:33:42,949 Eli käytämme selkotekstejä, joiden kaksi ensimmäistä tavua ovat samat ja kolmas tavu eroaa delta-arvolla. 372 00:33:42,949 --> 00:33:51,021 Delta voi olla mikä tahansa yhden tavun arvo, kunhan se ei ole nolla. 373 00:33:51,021 --> 00:33:54,022 Kaikki paitsi nolla kelpaavat. 374 00:33:54,562 --> 00:34:00,224 Erotukset kumoavat toisensa ja saamme tilan erotukseksi ison deltan nolla. 375 00:34:00,224 --> 00:34:07,522 Tämä tarkoittaa, että ensimmäisen kierrosavaimen jälkeen salauksissa tila on sama, vaikka tweakit ja selkotekstit olivat eri. 376 00:34:07,522 --> 00:34:10,162 Eli ensimmäisen kierrosavainvaiheen jälkeen tila on identtinen. 377 00:34:10,382 --> 00:34:16,362 Jos syöte S-boxiin on sama, myös S-boxin ulostulo on sama. 378 00:34:16,382 --> 00:34:20,722 Jos lineaarikerroksen syöte on sama, sen ulostulo on myös sama. 379 00:34:20,722 --> 00:34:26,422 Jos syöte avaimenlisäykseen on sama ja kierrosavain on sama, myös tulos on sama. 380 00:34:26,422 --> 00:34:31,622 Tämä toistuu kierrokseen 6 asti. Vasta silloin ero alkaa näkyä. 381 00:34:31,622 --> 00:34:37,666 Ensimmäiset kuusi kierrosta voidaan käytännössä ohittaa ilmaiseksi. 382 00:34:37,666 --> 00:34:45,866 Eli Half Loop 24 -algoritmissa, jossa on 10 kierrosta, voimme differentiaalihyökkäyksessä ohittaa 6 kierrosta. 383 00:34:45,866 --> 00:34:47,946 Se ei tietenkään ole hyvä asia. 384 00:34:48,046 --> 00:34:52,506 Meidän tarvitsee hyökätä vain jäljelle jääviä neljää kierrosta vastaan. 385 00:34:53,786 --> 00:35:03,666 Kun tarkastelemme näitä neljää viimeistä kierrosta, tiedämme että näillä kahdella selkotekstillä ja eri tweak-arvoilla on erityinen yhteys. 386 00:35:03,666 --> 00:35:05,836 Tässä kohdassa tiloissa ei ole vielä eroja. 387 00:35:05,836 --> 00:35:09,207 Tilojen välillä ei ole eroja, joten ero on nolla. 388 00:35:09,508 --> 00:35:15,410 Seuraavaksi ero tuodaan mukaan kierrosavainten avulla. 389 00:35:15,410 --> 00:35:18,001 Täällä aivan lopussa ilmestyy viimeinen ero. 390 00:35:18,001 --> 00:35:21,272 Ja oikealla puolella on lopullinen salattu teksti. 391 00:35:21,272 --> 00:35:27,275 Koska voimme vaihtaa lineaarikerroksen ja kierrosavaimen lisäyksen paikkaa, 392 00:35:27,275 --> 00:35:35,328 voimme ajatella, että sovelletaan ensin lineaarikerroksen käänteisfunktiota kierrosavaimeen ja sitten lisätään se. 393 00:35:35,850 --> 00:35:37,911 Tällöin ero esiintyy tässä kohdassa. 394 00:35:38,132 --> 00:35:40,113 Ja nyt voimme laskea. 395 00:35:40,113 --> 00:35:48,878 Kuinka monta bittitietoa avaimesta tarvitaan, jotta voimme laskea salauksen takaisin ja saada selville tämän erotuksen? 396 00:35:48,898 --> 00:35:53,981 Tarvitsemme selvästi kierrosavaimet 10, 9 ja 8. 397 00:35:53,981 --> 00:36:01,558 Mutta kierrosavaimeen 7 tarvitaan vain ensimmäinen tavu, kun sovelletaan lineaarikerroksen käänteisfunktiota. 398 00:36:01,558 --> 00:36:06,620 Tällä tavoin saamme tietoomme tämän erotuksen. 399 00:36:07,681 --> 00:36:09,561 Kuinka monta bittiä tämä sitten on? 400 00:36:09,561 --> 00:36:18,995 Kolme tavua täältä, kolme täältä, kolme täältä ja yksi täältä. Yhteensä siis 10 tavua eli 80 bittiä. 401 00:36:18,995 --> 00:36:27,547 80 bittiä on paljon, jos haluaa tehdä brute force -hyökkäyksen, mutta vähemmän kuin 128 bittiä. 402 00:36:27,547 --> 00:36:32,929 Joten tämä hyökkäys murtaa Half Loopin, ainakin teoreettisesti. 403 00:36:33,597 --> 00:36:38,488 Hyökkäys toimii niin, että arvataan kaikki nämä 80 bittiä. 404 00:36:38,488 --> 00:36:44,550 Symmetrisessä kryptografiassa arvaaminen tarkoittaa, että käydään kaikki mahdollisuudet läpi silmukassa. 405 00:36:44,550 --> 00:36:48,931 Sitten lasketaan salaus takaisinpäin ja tarkistetaan, onko ero nolla. 406 00:36:48,931 --> 00:36:53,652 Jos ero on nolla, avain on mahdollinen ehdokas, jota pitää tutkia lisää. 407 00:36:53,652 --> 00:36:55,343 Jos ei ole, se hylätään. 408 00:36:55,343 --> 00:36:59,374 Tällöin tiedämme, ettei kyseinen 80 bittiä ole oikea avain. 409 00:36:59,454 --> 00:37:00,833 Sitten toistetaan prosessi. 410 00:37:00,833 --> 00:37:06,593 Useilla selkoteksti–salateksti-pareilla lopulta löydämme oikean 80-bittisen avainyhdistelmän. 411 00:37:06,593 --> 00:37:10,813 Eli hyökkäys toimii 2^80 laskennalla ja kuudella kyselyllä. 412 00:37:10,953 --> 00:37:17,773 Kyselyt tarkoittavat viestejä, jotka Charlie lähettää Alicelle, selkoteksti ja salattu teksti. 413 00:37:17,773 --> 00:37:19,193 Tämä on itse asiassa optimaalista. 414 00:37:19,193 --> 00:37:34,709 Yksityiskohtiin menemättä on helppo osoittaa, että edes brute force -hyökkäys ei onnistu viidellä kyselyllä, koska vaihtoehtoja jää liikaa. 415 00:37:34,709 --> 00:37:36,741 Tarvitaan siis vähintään kuusi kyselyä. 416 00:37:36,741 --> 00:37:41,582 Mutta 2^80 on edelleen paljon. 417 00:37:41,582 --> 00:37:45,823 Se vastaa suurin piirtein Bitcoin-verkon päivittäistä laskentatehoa. 418 00:37:45,823 --> 00:37:51,325 Emme voi tehdä tätä yliopiston tietokoneella, mutta hyökkäystä voidaan parantaa. 419 00:37:51,325 --> 00:37:59,297 Voidaan tehdä esilaskenta ja kokeilla vain kierrosavaimia 10 ja 9. 420 00:37:59,297 --> 00:38:05,750 Tehdään etukäteen hakutaulukko, sitten haetaan sieltä ja tarkistetaan, toimiiko avain vai ei. 421 00:38:05,750 --> 00:38:11,200 Tätä voi vielä parantaa, jos sallitaan kaksi lisäkyselyä, silloin tarvitsee vain 2^48 laskentaa. 422 00:38:11,200 --> 00:38:13,960 2^48 on helposti suoritettavissa. 423 00:38:14,860 --> 00:38:17,930 Me toteutimme hyökkäykset. 424 00:38:17,930 --> 00:38:21,140 Selittämäni hyökkäykset ovat juuri nämä kaksi. 425 00:38:21,140 --> 00:38:21,960 Tarvitset salauskyselyjä. 426 00:38:21,960 --> 00:38:27,140 Eli voit pyytää Alicea salaamaan viestejä. 427 00:38:27,140 --> 00:38:30,540 Mutta sinun ei tarvitse pyytää purkamaan mitään. 428 00:38:30,540 --> 00:38:33,750 Jos saisit pyytää myös purkua, hyökkäyksestä tulisi paljon tehokkaampi. 429 00:38:33,750 --> 00:38:44,140 Aikavaativuus tarkoittaa sitä, kuinka monta salausta tai purkua joudut itse suorittamaan. 2^10 on vain 1024. 430 00:38:44,140 --> 00:38:50,300 Se on hyvin kevyt hyökkäys, mutta vaatii myös enemmän kyselyjä ja purkukyselyjä. 431 00:38:50,300 --> 00:38:53,800 Se ei ole kovin realistinen hyökkäystilanne. 432 00:38:53,952 --> 00:39:03,452 Mutta tässä tilanteessa, jossa tarvitsemme 2^56 tai 2^48 ja 5 gigatavua muistia, no, 5 Gt on mitätön määrä, helppo juttu. 433 00:39:03,792 --> 00:39:06,932 Tämän voi oikeasti muuttaa käytännön hyökkäykseksi. 434 00:39:06,932 --> 00:39:13,372 Tässä asetelmassa ei ole enää kyse teoriasta vaan ALE-protokollasta, eli automaattisesta linkinmuodostuksesta. 435 00:39:13,652 --> 00:39:16,752 Tarvitaan jälleen 2^48, eli juuri tämä hyökkäys. 436 00:39:17,252 --> 00:39:24,064 Lisäksi kahdeksan teoreettista kyselyä. Jos vain voimme pyytää Alicea salaamaan viestejä meille, se vastaa 437 00:39:24,064 --> 00:39:27,345 kahden tunnin salakuuntelua Alicen ja Benjaminin välillä. 438 00:39:27,345 --> 00:39:30,426 Seuraavaksi selitän, miten tämä toimii. 439 00:39:30,426 --> 00:39:34,647 Mutta huomautetaan, että näiden kahden tunnin aikana pitää tietää myös selkotekstit. 440 00:39:34,647 --> 00:39:41,439 Eli ei riitä, että sieppaat radioliikenteen, sinun täytyy salakuunnella tarkasti tiettyä asemaa. 441 00:39:41,439 --> 00:39:46,210 Sinun täytyy tietää, mikä on viestinnän selkoteksti. 442 00:39:47,550 --> 00:39:49,951 Tarkastellaan nyt hyökkäystä käytännössä. 443 00:39:49,971 --> 00:39:53,692 Ensin täytyy ymmärtää, että ALE:ssa 444 00:39:53,692 --> 00:39:57,424 kommunikoimassa ei ole vain kaksi osapuolta vaan koko verkko. 445 00:39:57,424 --> 00:40:00,296 Kaikki verkon jäsenet jakavat saman symmetrisen avaimen. 446 00:40:00,296 --> 00:40:03,998 Eli joukko käyttäjiä ja heillä on kaikilla sama avain. 447 00:40:04,338 --> 00:40:10,982 Tavallisesti osapuolet ovat Alice ja Benjamin tai Bob. 448 00:40:11,062 --> 00:40:17,506 Mutta tässä tapauksessa käytetään kutsutunnuksia, niin sanottuja call sign -koodeja. 449 00:40:17,506 --> 00:40:19,487 Esimerkiksi Alice voi olla AAA. 450 00:40:19,487 --> 00:40:20,427 Eli käytössä on kutsutunnukset. 451 00:40:20,427 --> 00:40:22,168 Niitä voi verrata vaikka 452 00:40:22,370 --> 00:40:29,103 lyhyisiin puhelinnumeroihin. Ne koostuvat kolmesta kirjaimesta, esimerkiksi AAA. 453 00:40:29,363 --> 00:40:39,227 Zoomataan nyt kolmivaiheisen kättelyn ensimmäiseen viestiin, jonka Alice lähettää Benjaminille. 454 00:40:39,447 --> 00:40:51,392 Meillä on Alice ja Benjamin, mutta nyt Alice on AAA ja Benjamin AQ. Ensimmäinen viesti, jonka AAA lähettää AQ:lle 455 00:40:51,392 --> 00:41:07,812 ilmoittaa, että viesti on osoitettu AQ:lle. Se toistetaan ja lopussa sanotaan, että tämä on A. Kutsutunnukset ovat siis kolmikirjaimisia. 456 00:41:07,812 --> 00:41:20,632 Jokainen kirjain on 7 bittiä, eli 3 x 7 = 21 bittiä. Jäljelle jää 3 bittiä, joita käytetään viestin tyypin "to" ja "this is" koodaukseen. 457 00:41:20,712 --> 00:41:31,320 Muistat ehkä, että tweak T on 64-bittinen ja siihen koodataan aika, sanalaskuri ja käytetty taajuus. 458 00:41:31,321 --> 00:41:39,147 Oletetaan, että käytetty taajuus pysyy samana ja aika on ajanhetki. Sanalaskuri kasvaa jokaiselle sanalle. 459 00:41:39,147 --> 00:41:41,909 Ensimmäisessä sanassa laskuri on 1. 460 00:41:41,909 --> 00:41:46,253 Toisessa 24-bittisessä sanassa laskuri on 2 ja luonnollisesti binaarimuodossa. 461 00:41:46,253 --> 00:41:50,456 Kolmannessa sanassa laskuri on 3 eli binäärinä 11. 462 00:41:51,710 --> 00:42:06,216 Oletetaan, että aikaa kuluu ja myöhemmin AAQ eli Benjamin lähettää saman viestin, koska hän haluaa muodostaa linkin AAA:n kanssa. 463 00:42:06,216 --> 00:42:12,781 Tällöin viestit peilautuvat, 2AA, 2AA ja lähettäjänä AAQ. 464 00:42:12,781 --> 00:42:18,031 Nyt kiinnostavaa on, mitä dataa on ennen tätä kohtaa. 465 00:42:18,031 --> 00:42:21,474 Näemme, että selkoteksti on täysin sama. 466 00:42:21,474 --> 00:42:24,964 Paitsi viimeinen tavu eroaa. 467 00:42:24,964 --> 00:42:32,050 Ja tweakissä ero ilmenee kolmannessa tavussa. Siinä on neljä bittiä minuuteista ja neljä bittiä sekunneista. 468 00:42:32,050 --> 00:42:47,326 Jos ero kutsutunnuksissa vastaa ajan eroa, saadaan sopiva pari, jossa on ero selkotekstissä ja tweakissa. 469 00:42:47,326 --> 00:42:50,270 Silloin voimme suorittaa hyökkäyksemme. 470 00:42:50,824 --> 00:42:56,366 Kerrataan, mitä viestityyppejä hyökkäys edellyttää. 471 00:42:56,366 --> 00:43:04,028 Taajuuksien pitää olla samat, oletetaan ALE-verkon taajuuden pysyvän vakiona. 472 00:43:04,308 --> 00:43:11,330 Sanalaskurien pitää olla samat, mutta tämä on helppoa koska molemmat aloittavat sanasta 1. 473 00:43:11,330 --> 00:43:16,471 Kun vertaat kahta sanaa, laskuri on aina sama. 474 00:43:16,732 --> 00:43:17,992 Lisäksi tarvitsemme sen, että 475 00:43:17,992 --> 00:43:20,103 viestit lähetetään saman 60 minuutin aikaikkunan sisällä. 476 00:43:20,103 --> 00:43:36,130 Eli minuutin ylemmät bitit ovat samat, ja ero on vain minuutin viimeisissä neljässä bitissä. Sekunneista kahden bitin täytyy myös täsmätä. 477 00:43:36,130 --> 00:43:45,025 Oletetaan, että nämä arvot jakautuvat satunnaisesti, jolloin tämä osuu kohdalleen sattumalta. 478 00:43:45,025 --> 00:43:48,960 Lisäksi tarvitsemme, että ero 479 00:43:48,960 --> 00:43:53,383 ajan jäljellä olevissa 8 bitissä vastaa kutsutunnuksen erotusta. 480 00:43:54,143 --> 00:43:59,725 Tämäkin tapahtuu lopulta sattumalta, jos verkko on riittävän suuri. 481 00:43:59,726 --> 00:44:10,330 Näiden ehtojen ja lisäoletusten, kuten viestien määrän ALE-verkossa, perusteella voidaan laskea, että tarvitaan noin kaksi tuntia tiedonkeruuta. 482 00:44:10,871 --> 00:44:12,251 Ja siinä se oikeastaan on. 483 00:44:12,251 --> 00:44:15,123 Mutta ennen kuin mennään... 484 00:44:15,123 --> 00:44:27,743 vastaan ensin muutamaan ilmeiseen kysymykseen. Ilmoitimmeko tästä Natolle? Kyllä ilmoitimme, mutta emme koskaan saaneet vastausta. Lähetimme heille paperin ennen julkaisua. 485 00:44:27,743 --> 00:44:38,012 He eivät kuitenkaan koskaan palanneet asiaan, mikä tarkoittaa, että moni ilmeinen kysymys jäi vaille vastausta. Emme siis tiedä kaikkea. 486 00:44:38,012 --> 00:44:43,658 Esimerkiksi emme tiedä, aikooko NATO korvata Half Loopin jollain toisella algoritmilla. Haluaisin tietää. 487 00:44:43,658 --> 00:44:45,208 Valitettavasti emme tiedä. 488 00:44:46,009 --> 00:44:50,020 Toinen ilmeinen kysymys on: miksi ei vain käytetä AES:ää? 489 00:44:50,020 --> 00:44:53,221 AES on hyvin tutkittu salausalgoritmi. 490 00:44:53,221 --> 00:44:54,381 Miksi ei siis AES? 491 00:44:54,381 --> 00:45:00,022 Miksi kehitettiin uusi Half Loop -salaus, joka muistuttaa lähinnä AES:n supistettua versiota? 492 00:45:00,022 --> 00:45:02,188 Taas kerran, hyvä kysymys. 493 00:45:02,188 --> 00:45:05,534 En tiedä selkeää vastausta. 494 00:45:05,574 --> 00:45:08,565 Sanotaan, että AES-lohkot ovat liian suuria. 495 00:45:08,565 --> 00:45:11,412 Korkeataajuisessa radiossa kaistanleveys on rajallinen 496 00:45:11,412 --> 00:45:22,992 eli voidaan lähettää vain pieniä lohkoja, ja siksi ehkä kehitettiin tämä pienimuotoinen versio. Tosin AES:ääkin voi käyttää pienille lohkoille, esimerkiksi counter-modessa. 497 00:45:22,992 --> 00:45:35,503 Lisäksi voidaan lisätä erillinen autentikointi, mutta he tekivät näin. Tässä on vielä muutamia kuvia, jotka ehkä herättävät kysymyksiä, jos et halua kysyä nyt. 498 00:45:35,503 --> 00:45:38,442 jos katsot tätä tallenteena myöhemmin, voit myös ottaa yhteyttä. 499 00:45:38,442 --> 00:45:43,157 Jos katselet tallennetta tai jotain muuta, ole rohkeasti yhteydessä. 500 00:45:43,157 --> 00:45:45,609 Keskustelen mielelläni. Kiitos, se oli siinä. 501 00:45:45,609 --> 00:45:46,470 Kiitos. 502 00:45:57,258 --> 00:45:58,509 Kiitos, Lukas. 503 00:45:59,050 --> 00:46:03,373 Jos haluat esittää kysymyksen ja olet paikan päällä, mene mikrofonin luo. 504 00:46:03,373 --> 00:46:07,297 Jos olet verkossa, laita kysymys IRC:n tallennekanavaan. 505 00:46:07,297 --> 00:46:11,880 Ensimmäinen kysymys tulee netistä, Signal Angelin kautta. 506 00:46:14,922 --> 00:46:18,475 Hei ja kiitos todella mielenkiintoisesta esityksestä. 507 00:46:18,495 --> 00:46:20,917 Meillä on kysymys internetin kautta. 508 00:46:21,257 --> 00:46:28,143 Näytätte onnistuneen käyttämään tunnettuja menetelmiä nykyistä sotilassalausta vastaan. 509 00:46:28,143 --> 00:46:33,207 Tiedättekö, käyttääkö armeija vertaisarviointia vahvistaakseen algoritmejaan? 510 00:46:33,208 --> 00:46:38,962 Huomasin myös, että yksi kirjoittajista vaikutti olevan sotilasyliopistosta. 511 00:46:39,348 --> 00:46:46,200 Voisitteko sanoa, että siviili- ja sotilastutkijat tekevät nyt enemmän yhteistyötä kuin 20 vuotta sitten? 512 00:46:48,552 --> 00:46:50,883 Tämä oli varmaan useampi kysymys. 513 00:46:50,883 --> 00:47:03,446 Ensimmäinen taisi olla, onko vertaisarviointia käytössä. No, riippuu miten vertaisarviointi määritellään, mutta akateemisessa maailmassa se on itsestään selvää. 514 00:47:03,446 --> 00:47:04,517 Juuri näin toimitaan. 515 00:47:04,517 --> 00:47:11,639 Jos haluat suunnitella uuden salauksen, lähetät sen konferenssiin tai lehteen ja saat palautetta muilta tutkijoilta. 516 00:47:11,639 --> 00:47:14,799 Mutta tässä tapauksessa en usko, että mitään vertaisarviointia on ollut. 517 00:47:14,799 --> 00:47:17,000 Tämä standardi vain on olemassa. 518 00:47:17,135 --> 00:47:18,545 En tiedä, onko sisäistä arviointia tehty. 519 00:47:18,845 --> 00:47:21,806 Toivon, että olisi, mutta jos olisi, toivon että he olisivat huomanneet heikkouden. 520 00:47:21,806 --> 00:47:23,126 Toivottavasti. 521 00:47:23,126 --> 00:47:27,328 Mutta toisaalta, olisi myös toivonut, että he olisivat löytäneet haavoittuvuuden itse. 522 00:47:27,328 --> 00:47:28,248 Selvä. 523 00:47:28,508 --> 00:47:31,789 Sitten unohdinkin jo seuraavan kysymyksen. 524 00:47:31,789 --> 00:47:37,070 Olisiko ollut kyse yhteistyöstä sotilas- ja siviilisektorin välillä? 525 00:47:38,190 --> 00:47:44,051 Kyllä, kysymys oli, onko yhteistyö sotilaan ja siviilin välillä lisääntynyt? 526 00:47:45,532 --> 00:47:46,392 No siis... 527 00:47:47,184 --> 00:47:52,976 En oikeastaan osaa sanoa. Kuten sanoin, me ilmoitimme heille, mutta emme saaneet vastausta. 528 00:47:52,976 --> 00:47:59,467 Ehkä se tarkoittaa enemmän ei kuin kyllä, mutta en voi sanoa mitä muualla tapahtuu. 529 00:48:00,488 --> 00:48:07,610 Kuten aiemmin sanoin, viimeinen kysymys olikin miksei käytetä suoraan AES:ää. 530 00:48:08,050 --> 00:48:16,060 Väittäisin, ettei kryptografiassa ole tarvetta käyttää erillisiä salauksia, koska yleisesti käytettävän salauksen tulisi olla niin turvallinen, että armeijakin voi käyttää sitä. 531 00:48:16,060 --> 00:48:20,076 Sen pitäisi olla niin turvallinen, että myös sotilaskäyttö onnistuu huoletta. 532 00:48:21,596 --> 00:48:21,976 Kiitos. 533 00:48:21,976 --> 00:48:24,798 Mikrofoni täällä edessä. 534 00:48:24,798 --> 00:48:28,400 Hei, kiitos esityksestä. 535 00:48:28,560 --> 00:48:34,063 Halusin kysyä, onko todellisessa hyökkäyksessä tweak tiedossa vai ei? 536 00:48:34,063 --> 00:48:38,646 Kyllä, ehkä voin palata tähän kalvoon. 537 00:48:38,646 --> 00:48:39,957 Tässä näkyy tweak, kyllä? 538 00:48:39,957 --> 00:48:44,489 T on tweak, ja se koostuu pääasiassa aikaleimasta. 539 00:48:44,489 --> 00:48:46,050 Ja totta kai aika on tiedossa. 540 00:48:46,050 --> 00:48:48,154 Voit katsoa kellosta. 541 00:48:48,154 --> 00:48:49,104 Tiedät kellonajan. 542 00:48:49,104 --> 00:48:53,114 Sanalaskuri alkaa ykkösestä ja kasvaa siitä ylöspäin. 543 00:48:53,114 --> 00:48:57,784 Käytetty taajuuskin on tiedossa, koska sitä kuunnellaan radiosignaalina. 544 00:48:59,868 --> 00:49:00,198 Kiitos. 545 00:49:00,198 --> 00:49:02,389 Täällä seuraava. 546 00:49:03,129 --> 00:49:06,210 Ensinnäkin, kiitos erittäin kiinnostavasta esityksestä. 547 00:49:06,311 --> 00:49:12,293 Mainitsit, että tarvitaan noin 120 minuuttia dataa. 548 00:49:12,873 --> 00:49:17,245 Ymmärtääkseni Half Loopia käytetään vain kädenpuristuksen salaamiseen. 549 00:49:17,245 --> 00:49:22,377 Kuinka todennäköistä on, että oikeasti saadaan kasaan kaksi tuntia kädenpuristuksia? 550 00:49:22,377 --> 00:49:29,260 Niin, kaksi tuntia on oletus. Oletetaan, että viesti lähetetään aina 551 00:49:29,276 --> 00:49:30,706 unohdin tarkalleen, ehkä kymmenen sekunnin välein. 552 00:49:30,706 --> 00:49:33,257 Sitten voidaan keskustella, kuinka monta viestiä oikeasti lähetetään. 553 00:49:33,257 --> 00:49:37,198 Mutta tuo kymmenen sekuntia per viesti on yksi arvio. 554 00:49:38,999 --> 00:49:41,069 Riippuu toki siitä, kuinka paljon liikennettä on. 555 00:49:41,069 --> 00:49:44,260 Mutta nuo kaksi tuntia eivät tarkoita kahden tunnin viestimäärää. 556 00:49:44,260 --> 00:49:51,242 Se tarkoittaa vain sitä, että joudut odottamaan kaksi tuntia, jotta tarvittavat viestit sattuvat kohdalleen. 557 00:49:51,242 --> 00:49:52,333 Eli... 558 00:49:52,333 --> 00:49:55,830 Sanot siis, että nämä viestit löytyvät kahden tunnin kuluessa? 559 00:49:55,830 --> 00:49:56,584 Kahdessa tunnissa, kyllä. 560 00:49:56,584 --> 00:49:57,844 Selvä, kiitos. 561 00:50:00,153 --> 00:50:00,603 Kiitos. 562 00:50:00,603 --> 00:50:02,653 Meillä on vielä yksi kysymys tuolla. 563 00:50:03,074 --> 00:50:11,617 Tiedän, että AES:ää vastaan on hyökkäyksiä, jos sinulla on käytössä siihen liittyviä avaimia. 564 00:50:11,617 --> 00:50:16,409 Joten kysyisin ensin, liittyykö tämä hyökkäys sellaiseen tapaukseen? 565 00:50:16,409 --> 00:50:24,321 Tämä on itse asiassa hyvin samankaltainen. Kun hyökkääjällä on käytössään liittyviä tweakeja, se vastaa liittyviä avaimia. 566 00:50:24,362 --> 00:50:28,883 Ja nyt, mitä tapahtuu... vaihdetaanpa kalvo nopeasti... 567 00:50:29,317 --> 00:50:35,211 Tässä kalvossa, tai hetkinen, väärä kalvo. 568 00:50:35,452 --> 00:50:38,855 Tässä siis lisätään tweak osaksi avainta. 569 00:50:38,855 --> 00:50:41,717 Ja tämä on itse asiassa todella huono idea. 570 00:50:42,017 --> 00:50:47,352 Ensimmäisessä tweakable block cipher -julkaisussa sanotaan selvästi: älä tee näin. 571 00:50:47,352 --> 00:50:53,296 Jos teet näin, saat turvallisuutta vain suunnilleen puolet bittimäärästä. 572 00:50:53,296 --> 00:50:59,051 Tämä johtaa geneeriseen hyökkäykseen, joka toimii, koska tweak on lisätty avaimen osaksi. 573 00:50:59,523 --> 00:51:09,150 Kuten sanoit, tämä muistuttaa liittyvien avainten hyökkäystä, ja niissä hyökkäykset voivat olla erittäin tehokkaita. AES:ää vastaan on tiedettyjä liittyvien avainten hyökkäyksiä. 574 00:51:09,150 --> 00:51:09,680 Näitä on dokumentoitu. 575 00:51:09,680 --> 00:51:15,995 Luultavasti vain suuremmissa AES-versioissa, mutta kyllä, liittyvät tweakit ovat mahdollisia ja hyökkäykset muistuttavat niitä. 576 00:51:15,995 --> 00:51:18,257 Jos saan, vielä yksi pieni lisäkysymys. 577 00:51:18,257 --> 00:51:18,447 Kyllä. 578 00:51:18,447 --> 00:51:21,379 Miksi he suunnittelivat salauksen tällä tavalla? 579 00:51:21,379 --> 00:51:26,132 Ymmärtääkseni tämä oli jo tiedossa, kun Half Loop otettiin käyttöön. 580 00:51:26,132 --> 00:51:27,075 Niin, sitäkin. 581 00:51:27,075 --> 00:51:30,156 Se on yksi niistä kysymyksistä, joihin haluaisin vastauksen, mutta minulla ei ole sitä. 582 00:51:30,156 --> 00:51:32,877 Ehkä he eivät vain tienneet siitä. 583 00:51:32,877 --> 00:51:37,289 Tweakin lisääminen avaimeen on helppo tehdä, jos ei tiedä että se on huono idea. 584 00:51:37,289 --> 00:51:40,450 Jos ei tiedä, että se ei ole hyvä ratkaisu. 585 00:51:40,450 --> 00:51:45,321 Se saattaa näyttää hyvältä idealta ensisilmäyksellä, mutta ei se ole. 586 00:51:46,662 --> 00:51:48,022 Täällä oli jatkokysymys. 587 00:51:48,022 --> 00:51:49,082 Kiitos. 588 00:51:49,103 --> 00:51:49,423 Eli... 589 00:51:50,819 --> 00:52:00,247 Vaikka sanoit ettet käsittelisi 48- ja 96-versioita, niin mikä olisi arviosi siitä, kuinka paljon työtä tarvitaan niiden murtamiseen? 590 00:52:00,247 --> 00:52:10,265 No, ensinnäkin, kuten sanoin, koska tweak XORataan avaimeen, se pätee myös Halfloop 48- ja 96-versioihin, mikä mahdollistaa geneerisen hyökkäyksen. 591 00:52:10,265 --> 00:52:13,016 Se tarkoittaa, että hyökkäys toimii myös niissä. 592 00:52:13,217 --> 00:52:20,943 Kryptografian näkökulmasta tämä tarkoittaa jo, että akateemisesti algoritmi katsotaan murretuksi. 593 00:52:20,987 --> 00:52:31,307 Mutta hyökkäys, jonka datakompleksisuus on 2^64, ei ole kovin käytännöllinen, koska niin paljon dataa ei koskaan tulla salaamaan Halfloopilla. 594 00:52:33,387 --> 00:52:41,507 Toisessa paperissamme käsittelemme näitä suurempia versioita ja joitain niin sanottuja "middle meet" -hyökkäyksiä. 595 00:52:42,047 --> 00:52:43,607 Mutta nekään eivät ole käytännöllisiä. 596 00:52:43,827 --> 00:52:47,699 Vaikea sanoa, kuinka paljon työtä tarvittaisiin. 597 00:52:47,855 --> 00:52:56,127 Mutta yleisesti sanoisin: älä luota niihin, vaikka niitä ei ole vielä murrettu yhtä pahasti kuin Halfloop24, mutta parempi olla käyttämättä. 598 00:52:57,160 --> 00:52:58,090 Kiitos. 599 00:52:58,192 --> 00:52:59,594 Seuraava kysymys verkosta. 600 00:52:59,594 --> 00:53:00,835 Signal Angelilta. 601 00:53:02,373 --> 00:53:03,283 Kiitos. 602 00:53:03,604 --> 00:53:20,413 Seuraava kysymys on: mitä tapahtuu, jos salaus tapahtuu ajassa 11.03.03.998 ja purkuajassa 11.03.04.001? 603 00:53:20,413 --> 00:53:23,047 Eli sekunnit ovat eri. 604 00:53:23,047 --> 00:53:28,141 Rehellisesti sanottuna, en tiedä, koska en tunne radioviestintää kovin hyvin. 605 00:53:28,141 --> 00:53:30,433 Mutta pahimmassa tapauksessa kokeillaan molemmat. 606 00:53:30,433 --> 00:53:31,243 Tarkoitan... 607 00:53:31,355 --> 00:53:36,215 Halfloopin purku on todella nopeaa, ja koska selväteksti on hyvin rakenteellista... 608 00:53:36,215 --> 00:53:50,515 Jos katsotaan tätä esimerkkiä, tunnisteet ovat täällä ja niiden täytyy täsmätä. Pahimmassa tapauksessa kokeillaan molempia sekuntiarvoja ja katsotaan tuleeko roskaa vai oikea arvo. 609 00:53:50,515 --> 00:53:58,515 Mutta kannattaa olla varovainen. Jos tekee sen vain kerran tai kahdesti, ei se haittaa. 610 00:53:58,515 --> 00:54:01,125 Mutta jos alat purkaa tuhansia viestejä eri tweak-arvoilla, se ei ole hyvä idea. 611 00:54:01,125 --> 00:54:07,719 Silloin hyökkääjäkin saa tietoa ilmaiseksi, mikä ei ole hyvä juttu. 612 00:54:07,719 --> 00:54:14,344 Hän saa ilmaiseksi jotain hyödyllistä. 613 00:54:15,044 --> 00:54:16,615 Kiitos. 614 00:54:16,615 --> 00:54:17,726 Täällä seuraava kysymys. 615 00:54:18,107 --> 00:54:22,629 Voiko tämän algoritmin korjata, vai pitäisikö vain käyttää AES:ää? 616 00:54:23,450 --> 00:54:27,403 Se riippuu siitä, miten "korjattava" määritellään. 617 00:54:27,403 --> 00:54:30,925 Yksi ratkaisu olisi lisätä huomattavasti enemmän kierroksia. 618 00:54:30,925 --> 00:54:41,800 Se kyllä estäisi tämän hyökkäyksen, mutta geneerinen ongelma on se, että tweak lisätään avaimeen. Se täytyisi korjata, ja siihen on olemassa ratkaisuja. 619 00:54:41,800 --> 00:54:53,759 Tweakable block cipherien kohdalla kirjallisuudessa tiedetään, miten tämä tulisi tehdä. Esimerkiksi three key -viitekehys voisi auttaa. 620 00:54:53,759 --> 00:54:59,757 Mutta onko sen korjaaminen vaivan arvoista? En tiedä. Yleisesti ottaen Halfloopin suunnittelu... 621 00:54:59,931 --> 00:55:02,631 AES:n S-boksin käyttö on hyvä juttu. 622 00:55:03,011 --> 00:55:07,811 Siirrot ovat vähän omituisia, ne voisi siirtää mix column -operaatioon. 623 00:55:07,811 --> 00:55:10,551 Mutta yleisesti komponentit ovat vahvoja. 624 00:55:10,551 --> 00:55:13,731 Eli meillä on vahva lineaarinen kerros ja vahva S-boksi. 625 00:55:13,851 --> 00:55:14,911 Mutta yksityiskohdilla on väliä. 626 00:55:14,911 --> 00:55:18,991 Jos todella haluat, sen voisi korjata. 627 00:55:18,991 --> 00:55:22,351 Mutta en usko, että siinä olisi hirveästi järkeä. 628 00:55:22,691 --> 00:55:23,171 Kiitos. 629 00:55:23,171 --> 00:55:26,411 Takarivissä on joku mikrofonilla. 630 00:55:26,885 --> 00:55:33,960 On olemassa hyökkäyksiä, jotka kohdistuvat lohkon kokoon eikä avaimen kokoon, kuten esimerkiksi Sweet32 triple DES:llä. 631 00:55:33,960 --> 00:55:36,432 Tässä algoritmissa on pieni lohkokoko. 632 00:55:36,432 --> 00:55:38,373 Luuletko, että se on haavoittuva tällaisille hyökkäyksille? 633 00:55:38,373 --> 00:55:39,544 Kyllä, juuri niin. 634 00:55:39,544 --> 00:55:44,107 Pienien lohkokokojen kanssa täytyy olla erittäin varovainen. 635 00:55:44,107 --> 00:55:52,893 Selvätekstissä ei ehkä ole tarpeeksi materiaalia, mutta täällä on tweak, eli... 636 00:55:52,893 --> 00:55:53,884 Siinä on kuitenkin jotain vaihtelua. 637 00:55:53,884 --> 00:55:55,435 Eli jos teet sen oikein... 638 00:55:55,481 --> 00:55:57,552 Saat vaihtelua, mutta silti täytyy olla tarkkana. 639 00:55:57,552 --> 00:56:13,136 Mainitsit aiemmin differentiaalikryptanalyysin ja tällöin tutkitaan miten erot leviävät, myös ei-deterministisissä tilanteissa. 640 00:56:13,136 --> 00:56:21,244 Yleensä ei voida sanoa kovin paljoa, mutta 24 bitin tapauksessa voidaan todennäköisesti laskea koko DDT-taulukko. 641 00:56:21,244 --> 00:56:31,753 Se on siis ero-jakaumataulukko, mikä on hieman kiusallista, koska yleensä symmetrisessä kryptossa sitä ei voida tehdä koko salaukselle. 642 00:56:31,753 --> 00:56:34,678 Mutta tässä se saattaa olla mahdollista. 643 00:56:34,678 --> 00:56:41,213 Jos siis todella haluat tarkastella turvallisuutta tai korjata salauksen, se ei ole mitätöntä. 644 00:56:41,213 --> 00:56:45,443 Tarvitaan kunnon analyysiä, jotta nähdään pysyykö se turvallisena vai ei. 645 00:56:46,024 --> 00:56:46,684 Kiitos. 646 00:56:52,001 --> 00:56:55,453 Tiedetäänkö mitään algoritmin suunnittelijoista? 647 00:56:55,453 --> 00:56:58,274 Voiko se olla NSA:n lahjoittama? 648 00:56:59,995 --> 00:57:05,557 Ja käsittääkseni, vaikka minulla ei ole lähteitä, tämä tuli enemmän... 649 00:57:05,557 --> 00:57:10,248 Korkeataajuusradioyhteisöltä tämä suunnittelu. 650 00:57:10,248 --> 00:57:11,058 Eli... 651 00:57:12,019 --> 00:57:13,359 Sanotaan näin... 652 00:57:13,419 --> 00:57:14,099 Tarkoitan... 653 00:57:14,099 --> 00:57:15,860 Se ei ollut edes vitsi. 654 00:57:15,860 --> 00:57:17,990 Tiedän, että lahjoituksia on tehty paljon... 655 00:57:17,990 --> 00:57:18,891 Kyllä, kyllä, tiedän. 656 00:57:18,891 --> 00:57:21,021 Mutta halusin sanoa, että... 657 00:57:21,021 --> 00:57:22,362 On olemassa Schneierin laki. 658 00:57:22,362 --> 00:57:25,302 Jokainen voi suunnitella salauksen, joka ei ole turvallinen. 659 00:57:25,663 --> 00:57:27,893 Ei turvallinen, mutta jonka suunnittelija itse luulee olevan. 660 00:57:28,411 --> 00:57:39,441 En siis syyttäisi suunnittelijoita, vaan niitä jotka standardisoivat tämän ilman kunnollista analyysiä. Heitä minä syyttäisin. 661 00:57:40,483 --> 00:57:42,635 Selvä. Takarivin mikrofoni taas. 662 00:57:42,635 --> 00:57:45,547 Hei, kiitos hyvästä esityksestä. 663 00:57:45,547 --> 00:57:49,651 Onko sinulla käsitystä miksi he yhä käyttävät ECB:tä eivätkä jotain muuta tilaa? 664 00:57:50,631 --> 00:57:51,973 Ehkä. 665 00:57:52,611 --> 00:57:53,975 Missä se nyt olikaan... 666 00:57:54,211 --> 00:57:58,694 ECB:n käyttö on itse asiassa ok, koska kyseessä on tweakable block cipher. 667 00:57:58,694 --> 00:58:02,316 Ja koska tweak muuttuu jokaisella... 668 00:58:02,716 --> 00:58:09,600 Koska tweak sisältää sanalaskurin ja aikaleiman, ECB:n käyttö on ihan hyväksyttävää. 669 00:58:09,600 --> 00:58:11,902 Se ei siis ole haavoittuvuus. 670 00:58:11,902 --> 00:58:14,563 Se tekee siitä jopa aika yksinkertaisen. 671 00:58:16,933 --> 00:58:18,853 Selvä, täällä eturivissä. 672 00:58:21,137 --> 00:58:27,039 Onko sinulla proof of concept tästä hyökkäyksestä, vai onko se juridisesti ongelmallista? 673 00:58:27,039 --> 00:58:28,659 Meillä on toteutus. 674 00:58:28,899 --> 00:58:33,120 Julkaisussa on linkki GitHubiin, ja siellä on toteutus. 675 00:58:33,120 --> 00:58:34,660 Me teimme sen. 676 00:58:34,741 --> 00:58:39,462 Emme tietenkään salakuunnelleet HF-radiota, vaan teimme tämän laboratoriossa. 677 00:58:39,462 --> 00:58:43,563 Generoimme selvätekstit itse ja sitten ajoimme hyökkäyksen. 678 00:58:43,563 --> 00:58:45,443 Hyökkäyksessä on käytännössä kaksi vaihetta. 679 00:58:45,443 --> 00:58:47,604 Ensimmäinen on oikeastaan juuri se, mitä näytin. 680 00:58:47,604 --> 00:58:49,284 Eli selvitetään... 681 00:58:49,324 --> 00:59:03,189 viimeisten kierrosten avainbitit ja tämä vei jotain kahden viikon verran CPU-klusterilla. Ei mikään uusi kone, mutta jos haluat ja sijoitat rahaa, saat tämän puristettua ehkä tuntiin. 682 00:59:03,189 --> 00:59:09,711 Kun sinulla on tämä osa, joudut brute forcaamaan loput avaimet ja se on hieman yksinkertaisempaa, koska kyse on vain suorasta brutepakko-hyökkäyksestä. 683 00:59:09,711 --> 00:59:14,736 Tämän voi ajaa GPU:lla ja se vie ehkä kahdeksan tuntia lisää ja sitten se on siinä. 684 00:59:17,164 --> 00:59:19,004 Selvä, tarkistetaan vielä. 685 00:59:19,004 --> 00:59:20,388 Ei enää kysymyksiä salissa. 686 00:59:20,388 --> 00:59:24,452 Joten suuret kiitokset loistavasta esityksestä Lukas Stennisille. 687 00:59:34,033 --> 00:59:39,473 ♪ (38C3 outromusiikki) ♪ 688 00:59:39,473 --> 00:59:44,000 Translated by Robert Ylitalo (KYBS2001 course assignment at JYU.FI)