WEBVTT 00:00:17.218 --> 00:00:21.502 Seuraava puhujamme on Lukas Stennis. 00:00:21.502 --> 00:00:26.566 Hän on tohtoriopiskelija Ruhrin yliopistossa Bochumissa. 00:00:26.566 --> 00:00:29.849 Hänen tutkimuksensa keskittyy kryptonalyysiin. 00:00:30.290 --> 00:00:36.815 Hän oli myös osa tiimiä, joka paljasti haavoittuvuuden GPRS:ssä. 00:00:37.456 --> 00:00:42.461 Itse asiassa hän sai parhaan julkaisun palkinnon tästä tutkimuksesta, jonka hän esittelee nyt. 00:00:42.461 --> 00:00:44.532 Eli laatu on taattu. 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. 00:01:02.712 --> 00:01:04.993 Tervetuloa, antakaa suuret aplodit! 00:01:14.198 --> 00:01:19.283 NATO ja Yhdysvaltain armeija käyttävät turvatonta salausta nimeltä Half Loop 24. 00:01:19.283 --> 00:01:21.534 Tässä esityksessä kerron, miten sen voi murtaa. 00:01:21.534 --> 00:01:25.328 Aloitetaan kuitenkin aivan alusta. 00:01:25.328 --> 00:01:28.651 Selitetään ensin, mitä symmetrinen salaus oikeastaan on. 00:01:28.651 --> 00:01:32.844 Tarvitsemme siihen kaksi päähenkilöämme: Alicen ja Benjaminin. 00:01:35.182 --> 00:01:40.365 Huomasitte varmaan vitsin — yleensä kryptografiassa puhumme Bobista, ei Benjaminista. 00:01:40.645 --> 00:01:50.150 Mutta koska käytän norsuja selityksissä, nimesin hänet Benjaminiksi. 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. 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". 00:02:04.960 --> 00:02:10.252 Se on Ruhrin yliopiston huippuyksikkö kyberturvallisuuden tutkimuksessa. 00:02:10.553 --> 00:02:15.595 Nyt Alice ja Benjamin haluavat kommunikoida turvattoman kanavan yli. 00:02:15.956 --> 00:02:24.940 Ongelmana on kolmas osapuoli, pahantahtoinen Charlie, joka salakuuntelee heidän viestintäänsä. 00:02:25.361 --> 00:02:31.564 Tietenkään Alice ja Benjamin eivät halua Charlien kuuntelevan heitä. 00:02:31.564 --> 00:02:34.465 Metaforana voidaan ajatella, että he tekevät näin: 00:02:34.465 --> 00:02:37.348 He laittavat viestin erittäin vahvaan laatikkoon. 00:02:37.348 --> 00:02:40.390 Laatikon täytyy olla niin vahva, ettei Charlie pysty avaamaan sitä. 00:02:40.390 --> 00:02:42.272 Sitten he laittavat laatikkoon lukon. 00:02:42.272 --> 00:02:46.656 Lukon täytyy olla niin vahva, ettei kukaan, ei edes Charlie voi murtaa sitä. 00:02:46.656 --> 00:02:48.958 Sen jälkeen he voivat lähettää laatikon toisilleen. 00:02:48.958 --> 00:02:52.321 Heillä molemmilla on avain, jolla laatikon voi avata ja sulkea. 00:02:52.321 --> 00:02:56.424 Näin he voivat viestiä keskenään ilman, että Charlie voi salakuunnella. 00:02:56.424 --> 00:03:02.409 Tätä samaa halutaan saavuttaa digitaalisessa maailmassa symmetrisellä salauksella. 00:03:02.741 --> 00:03:07.422 Symmetriseksi sitä kutsutaan siksi, että avain on molemmilla osapuolilla sama. 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. 00:03:15.955 --> 00:03:18.605 Epäsymmetrisellä salauksella luodaan avain molemmille puolille. 00:03:19.166 --> 00:03:29.288 Tämän jälkeen käytetään symmetristä salausta varsinaiseen viestien salaamiseen. 00:03:30.901 --> 00:03:35.022 Salausta käytetään nykyään lähes kaikkialla. 00:03:35.562 --> 00:03:39.683 Puhelimellasi, kun kirjoitat viestin esimerkiksi Signaliin — viestit salataan. 00:03:39.683 --> 00:03:43.815 Toinen hyvä esimerkki on HTTPS eli TLS. 00:03:43.815 --> 00:03:51.487 Kun avaat verkkosivun, selaimen osoitepalkissa näkyy lukon kuva, ja siitä näet lisätiedot. 00:03:51.707 --> 00:03:59.903 Siellä lukee esimerkiksi jotain tyyliin: TLS, AES ja muuta vastaavaa. 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. 00:04:09.960 --> 00:04:12.632 AES tarkoittaa "Advanced Encryption Standard". 00:04:12.632 --> 00:04:18.386 Se on todennäköisesti maailman käytetyin salausalgoritmi. 00:04:18.386 --> 00:04:23.410 AES ottaa syötteenä 128-bittisen tekstin. 00:04:23.410 --> 00:04:28.673 Tätä syötettä kutsutaan selkotekstiksi, ja AES muuntaa sen salatekstiksi. 00:04:28.971 --> 00:04:35.023 Salateksti on myös 128-bittinen, ja muunnos perustuu salausavaimeen. 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. 00:04:47.796 --> 00:04:51.727 Eli ilman avainta Charlie ei voi purkaa viestiä. 00:04:52.608 --> 00:04:58.049 Se on jo itsessään erittäin hyödyllistä, mutta todellisessa maailmassa... 00:04:58.325 --> 00:05:01.046 haluamme salata enemmän kuin vain yhden lohkon. 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. 00:05:11.630 --> 00:05:14.762 Kuten sanoin, AES on kehittynyt salausstandardi. 00:05:14.762 --> 00:05:19.674 Se on standardi, jonka NIST määritteli 2000-luvun alussa. 00:05:19.674 --> 00:05:26.256 Kyseessä on siis Yhdysvaltain standardi, ja siitä lähtien sitä on käytetty laajasti. 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? 00:05:36.801 --> 00:05:39.182 Miksi olemme niin varmoja, ettei kukaan voi tehdä sitä? 00:05:39.182 --> 00:05:41.653 Koska kukaan ei ole vielä löytänyt toimivaa hyökkäystä. 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. 00:05:50.296 --> 00:05:56.669 Siksi luotamme AES:iin, koska se on selvinnyt yli kahden vuosikymmenen ajan tutkimuksista. 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. 00:06:05.267 --> 00:06:13.792 Jos haluat tietää lisää, Christoph Parrin luento YouTubessa on ilmaiseksi katsottavissa kaikille. 00:06:13.913 --> 00:06:23.940 Christoph on professori Bochumissa, ja kyseessä on kryptografian johdantoluento, jonka kyberturvallisuuden opiskelijat käyvät siellä. 00:06:23.940 --> 00:06:26.281 Pieni sivuhuomautus. 00:06:26.337 --> 00:06:31.279 Christoph on nykyään Bochumin Max Planck -instituutin perustajajohtaja. 00:06:31.279 --> 00:06:34.180 Ja hän on todella hyvä. 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ö? 00:06:45.265 --> 00:06:45.465 Niinpä. 00:06:45.465 --> 00:06:49.177 Aloitetaan siis sotilasradiosta. 00:06:49.177 --> 00:06:53.049 Aloitetaanpa näyttämällä teille tämä kuva. 00:06:53.049 --> 00:06:54.069 Ja nyt... 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. 00:07:03.610 --> 00:07:06.472 Itse asiassa mitään todellista yhteyttä ei ole. 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. 00:07:14.876 --> 00:07:17.938 Olin Ateenassa ensimmäisessä tieteellisessä konferenssissani. 00:07:17.938 --> 00:07:23.681 Kyseessä oli FSE, eli Fast Software Encryption -konferenssi, joka on 00:07:24.118 --> 00:07:27.309 merkittävin konferenssi symmetrisessä kryptografiassa. 00:07:27.569 --> 00:07:37.793 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. 00:07:37.793 --> 00:07:42.355 Siellä konferenssissa osallistuin esitykseen, jonka nimi oli: "Cryptoanalysis of the SODA Cipher for HF Radio Automatic Link Establishment". 00:07:42.815 --> 00:07:52.349 Tämä esitys kiinnitti huomioni, ja haluan lyhyesti selittää otsikon merkityksen. 00:07:52.349 --> 00:07:53.333 Se esitys 00:07:53.333 --> 00:07:56.564 herätti kiinnostukseni, ja selitän lyhyesti sen otsikon. 00:07:56.564 --> 00:08:04.128 Esityksen piti Marco Stanzari, joka myöhemmin työskenteli kanssamme Half Loop -salauksen murtamisessa. 00:08:04.368 --> 00:08:14.312 Otsikossa "cryptanalysis" tarkoittaa salauksen analysointia eli yritystä murtaa se tai arvioida sen turvallisuutta. 00:08:14.393 --> 00:08:19.645 SODA on vain salauksen nimi, ja "cipher" tarkoittaa salausta. 00:08:19.871 --> 00:08:25.554 Haluan kuitenkin puhua hieman HF-radiosta ja automaattisesta linkinmuodostuksesta. 00:08:27.115 --> 00:08:28.815 Aloitetaan HF-radiosta. 00:08:28.815 --> 00:08:42.069 HF tarkoittaa high frequency eli korkeataajuus. Kyseessä on 3–30 MHz välinen taajuusalue, joka mahdollistaa ns. skywave-ilmiön. 00:08:42.069 --> 00:08:53.492 Skywave-ilmiössä radiosignaali heijastuu ylemmän ilmakehän hiukkasista takaisin maahan, jolloin se voi kulkea erittäin pitkiä matkoja. 00:08:53.492 --> 00:08:56.923 Signaali voi jatkaa heijastumista uudelleen ja uudelleen. 00:08:56.979 --> 00:09:01.102 Tämän vuoksi signaali voi kulkea todella pitkälle. 00:09:01.583 --> 00:09:10.230 Tämän ansiosta viestintä onnistuu suurien etäisyyksien yli ilman mitään infrastruktuuria. 00:09:10.230 --> 00:09:14.233 Et tarvitse satelliitteja, tukiasemia tai mitään muuta. 00:09:14.233 --> 00:09:17.015 Tarvitset vain radiolaitteet molemmissa päissä. 00:09:17.295 --> 00:09:20.098 Ketkä sitten ovat kiinnostuneita tällaisesta teknologiasta? 00:09:20.098 --> 00:09:21.419 Tietysti armeija. 00:09:21.419 --> 00:09:24.721 Myös diplomaatit ja kriisinhallintaviranomaiset. 00:09:24.721 --> 00:09:27.003 On selvää, että jos 00:09:27.115 --> 00:09:35.055 tapahtuu esimerkiksi maanjäristys, joka tuhoaa kaikki tukiasemat, tarvitaan viestintäjärjestelmä, joka ei vaadi infrastruktuuria. 00:09:35.055 --> 00:09:37.675 Se on tällaisessa tilanteessa erittäin hyödyllinen. 00:09:38.295 --> 00:09:48.935 HF-radion sisällä käytettiin SODA-salausta, jota Marco analysoi. Half Loop tuli sen tilalle ja sitä käytettiin käsienpuristussanomien salaamiseen. 00:09:48.935 --> 00:09:57.055 Sen avulla pyrittiin varmistamaan viestinnän luottamuksellisuus ja aitous. 00:09:57.705 --> 00:10:04.737 Puhutaanpa automaattisesta linkinmuodostuksesta, sillä kuten ehkä arvaat, HF-radio ei ole niin yksinkertainen. 00:10:04.737 --> 00:10:07.340 Kyse ei ole vain siitä, että lähetät signaalin ja se toimii. 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. 00:10:20.467 --> 00:10:25.889 Tämän helpottamiseksi kehitettiin automaattinen linkinmuodostusprotokolla, lyhyesti ALE. 00:10:26.370 --> 00:10:27.390 Ja siinä 00:10:27.422 --> 00:10:30.063 Emme mene nyt yksityiskohtiin. 00:10:30.063 --> 00:10:31.323 Yksinkertaistamme paljon. 00:10:31.323 --> 00:10:35.764 Perusidea on, että alussa tapahtuu kolmivaiheinen kättely. 00:10:35.764 --> 00:10:39.755 Tämä on hyvin yleistä viestinnässä. 00:10:39.755 --> 00:10:44.167 Alice lähettää viestin, jossa hän sanoo "Hei, olen Alice" 00:10:44.167 --> 00:10:45.667 ja haluan puhua Bobille. 00:10:45.667 --> 00:10:49.258 Sitten Bob vastaa vastaavalla viestillä: "Olen Bob" 00:10:49.258 --> 00:10:51.369 ja haluan viestiä Alicen kanssa. 00:10:51.369 --> 00:10:54.590 Sitten Alice lähettää uudelleen viestin: "Olen Alice" 00:10:54.590 --> 00:10:56.540 ja haluan viestiä kanssasi, Bob. 00:10:56.605 --> 00:11:04.161 Tässä siis hyvin yksinkertaistettuna linkki muodostetaan ja viestintä alkaa. 00:11:04.161 --> 00:11:07.664 Se voi olla ääntä, keskustelua tai dataa. 00:11:07.664 --> 00:11:11.727 Esimerkiksi sähköposteja voidaan lähettää tämän kautta. 00:11:11.807 --> 00:11:15.110 Viestintä jatkuu, ja lopuksi lähetetään lopetusviesti. 00:11:15.110 --> 00:11:19.373 Alice sanoo: "Haluan lopettaa viestinnän nyt." 00:11:19.553 --> 00:11:22.936 Kuten huomaat, tässä näkyy lukon kuva. 00:11:22.936 --> 00:11:25.457 Tämä johtuu siitä, että nämä viestit 00:11:25.876 --> 00:11:33.522 kättely- ja lopetusviestit salataan joko SODAK:lla tai Half Loopilla. 00:11:33.522 --> 00:11:37.034 SODAK on Half Loopin edeltäjä. 00:11:37.375 --> 00:11:45.241 Sitä käytettiin todennäköisesti vuoteen 2017 saakka, mutta nykyään viestit salataan Half Loopilla. 00:11:45.241 --> 00:11:47.543 Miksi salaus tarvitaan tässä? 00:11:48.003 --> 00:11:51.626 Kun kättelyviestit salataan vahvasti... 00:11:51.644 --> 00:11:56.258 saadaan aikaan useita hyviä ominaisuuksia. 00:11:56.258 --> 00:12:05.585 Ensinnäkin viestien luottamuksellisuus, eli kukaan ilman avainta ei tiedä, ketkä viestivät. 00:12:05.585 --> 00:12:09.248 Kuten sanoin, viesti sisältää Alicen ja Bobin identiteetit. 00:12:09.248 --> 00:12:13.532 Ilman salausta kuka tahansa näkisi, että Alice ja Bob viestivät keskenään. 00:12:13.532 --> 00:12:18.415 Ja kyllä, tiedän että sanoin alussa että Bob on Benjamin, mutta ei se haittaa. 00:12:19.417 --> 00:12:21.278 Toinen hyöty on 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. 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. 00:12:42.357 --> 00:12:51.302 Et voi vain kuunnella toisia ja muodostaa yhteyttä mihin tahansa, joten todennus tukee myös saatavuutta. 00:12:51.954 --> 00:12:54.175 Se auttaa varmistamaan viestinnän jatkuvuuden. 00:12:54.175 --> 00:13:06.840 Teoriassa kuka tahansa, jolla on voimakas lähetin, voi häiritä taajuutta ja estää Alicea ja Benjaminia viestimästä. Mutta jos sinulla on avain, voit silti muodostaa linkin. 00:13:06.920 --> 00:13:14.884 Voit lähettää tarvittavat kolme viestiä ja linkki muodostuu. Sitten Benjamin ei enää voi muodostaa yhteyttä Aliceen. 00:13:14.884 --> 00:13:17.595 Tämäkin osoittaa, miksi salaus on tärkeää. 00:13:17.595 --> 00:13:21.486 Se on yksi lisäsyy salauksen tarpeelle. 00:13:21.642 --> 00:13:30.482 Lopuksi tällä dialla haluan korostaa, että Half Loop, eli salaus jonka aiomme murtaa seuraavaksi, käytetään vain kättely- ja lopetusviesteissä. 00:13:30.482 --> 00:13:31.502 Ei siis varsinaisessa ääni- tai dataliikenteessä. 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. 00:13:41.062 --> 00:13:47.722 Mennään siis seuraavaksi itse Half Loop 24 -algoritmin yksityiskohtiin, eli algoritmiin, jonka me murtoimme. 00:13:48.222 --> 00:13:49.531 Half Loop on itse asiassa... 00:13:49.531 --> 00:13:53.322 määritelty jossain sotilasstandardissa. 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. 00:14:03.597 --> 00:14:04.968 Tässä on useita vaiheita. 00:14:04.968 --> 00:14:09.350 SubBytes, RotateRows, MixColumns ja AddRoundKey. 00:14:09.350 --> 00:14:15.002 Nuo vaiheet ovat hyvin samankaltaisia kuin AES:ssä, koska Half Loop muistuttaa paljon AES:ää. 00:14:15.002 --> 00:14:17.293 Ja jos mietit, onko tämä 00:14:17.545 --> 00:14:19.285 dokumentti salainen tai jotain sellaista, 00:14:19.285 --> 00:14:20.045 niin ei ole. 00:14:20.045 --> 00:14:20.725 Se on julkinen. 00:14:20.725 --> 00:14:29.045 Kuten mainitsin, olin Ateenassa, ja Marcos piti esityksen Half Loopin edeltäjästä. 00:14:29.425 --> 00:14:33.725 Esityksen lopussa hän mainitsi, että nyt käytetään tätä Half Loop -salausta. 00:14:33.725 --> 00:14:35.705 Kysyin, onko se julkinen? 00:14:35.705 --> 00:14:36.425 Hän sanoi kyllä. 00:14:36.425 --> 00:14:37.885 Sen voi vain etsiä Googlesta. 00:14:37.885 --> 00:14:42.385 Sieltä löytyy Yhdysvaltain puolustusministeriön sivu, josta PDF:n voi ladata. 00:14:42.385 --> 00:14:43.725 Täytyy vain selata alaspäin. 00:14:43.725 --> 00:14:45.673 Ehkä noin 300 sivua. 00:14:45.673 --> 00:14:49.833 Liitteessä G on Half Loopin spesifikaatio. 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. 00:15:03.373 --> 00:15:04.373 Eli lohkon koko on 24 bittiä. 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. 00:15:14.393 --> 00:15:14.985 Ja 00:15:14.985 --> 00:15:17.626 muut versiot jätetään tämän esityksen ulkopuolelle. 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. 00:15:27.170 --> 00:15:38.645 Kuten mainitsin, se korvasi Sodak-salauksen. Sivuhuomautuksena: Sodak käytti vain 56-bittisiä avaimia, ja jos tiedät jotain kryptografiasta, 56 bittiä ei riitä. 00:15:38.645 --> 00:15:41.416 Sen pystyy helposti murtamaan brutaalilla voimalla. 00:15:41.416 --> 00:15:44.997 Jos todella haluat, voit murtaa sen helposti. 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. 00:15:56.706 --> 00:16:06.691 Oikealla olevassa kuvassa näkyy 24-bittinen selkoteksti, 24-bittinen salattu teksti ja 128-bittinen avain. 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. 00:16:12.997 --> 00:16:19.841 Tweak koostuu nykyisestä ajasta, sanalaskurista ja käytetystä radiotaajuudesta. 00:16:20.222 --> 00:16:29.969 Puhumme tästä lisää hetken kuluttua, mitä se tarkoittaa ja miksi se on hyödyllinen ominaisuus. 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ä. 00:16:42.501 --> 00:16:48.486 Miksi voidaan sanoa, että se on vahvasti inspiroitunut AES:stä? 00:16:48.486 --> 00:16:50.408 Koska se käyttää samoja komponentteja. 00:16:50.408 --> 00:17:02.307 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. 00:17:02.307 --> 00:17:02.607 Yleensä. 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. 00:17:09.443 --> 00:17:12.169 He käyttävät myös lähes samaa avainlaajennusta eli key schedulea. 00:17:12.169 --> 00:17:17.889 Jos et tiedä mitä key schedule tarkoittaa, ei hätää. Käymme sen läpi pian. 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. 00:17:31.149 --> 00:17:35.429 Jokainen matriisin kohta on 1 tavu eli elementti joukossa F2^8. 00:17:36.109 --> 00:17:40.709 AES:ssä käytetään 10 kierrosta, ja sama pätee täällä. 00:17:42.376 --> 00:17:43.597 Nyt meillä on tämä valmis. 00:17:43.597 --> 00:17:46.089 Haluan kertoa lisää tästä tweakista. 00:17:46.089 --> 00:17:47.340 Miksi tarvitsemme sen? 00:17:47.340 --> 00:17:48.141 Miksi tarvitsemme sen? 00:17:48.141 --> 00:17:50.103 Tai miksi haluamme tweakattavan lohkosalauksen? 00:17:50.103 --> 00:17:53.596 Katsotaanpa kuuluisaa ECB-Tux-esimerkkiä. 00:17:53.596 --> 00:17:59.351 Mitä tapahtuu, jos salaamme kuvan käyttäen ECB-tilaa eli electronic codebook -tilaa? 00:17:59.852 --> 00:18:07.228 Muistathan, että AES tai muut lohkosalaimet salaavat yhden lohkon kerrallaan. 00:18:07.228 --> 00:18:08.709 Mutta yleensä kuva... 00:18:09.145 --> 00:18:16.461 on useampaa lohkoa. Kuvitellaan esimerkin vuoksi, että yksi lohko vastaa yhtä pikseliä. 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... 00:18:26.699 --> 00:18:30.512 Lyhyesti sanottuna, ECB:n kanssa salattu kuva näyttää tältä. 00:18:31.073 --> 00:18:33.585 Ja tietenkään tämä ei ole turvallista salausta, eikö? 00:18:33.585 --> 00:18:38.789 Turvallinen salaus tarkoittaa, että alkuperäisestä viestistä ei paljastu mitään tietoa. 00:18:38.993 --> 00:18:45.448 Mutta tässä on selvästi nähtävissä, että kyseessä on Tux-kuva. 00:18:45.989 --> 00:18:55.755 Yleensä käytetään jotain toimintatilaa, kuten GCM. Esimerkiksi HTTPS:ssä käytetään GCM:ää. 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. 00:19:03.353 --> 00:19:07.995 Jos käytät tweakattavaa lohkosalausta ECB-tilassa, saat... 00:19:07.995 --> 00:19:08.995 halutun lopputuloksen. 00:19:08.995 --> 00:19:12.577 Saat vain kohinaa, eikä mitään tietoa paljastu. 00:19:12.798 --> 00:19:19.161 Tweak on lisäsyöte, joka muuttuu vaikka selkoteksti ei muuttuisi. 00:19:19.161 --> 00:19:27.026 Jos meillä on valkoinen pikseli ja toinen samanlainen valkoinen pikseli, saadaan ilman tweakia sama salattu tulos. 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. 00:19:37.137 --> 00:19:40.228 Tällöin saadaan taas turvallinen ja hyödyllinen lopputulos. 00:19:40.228 --> 00:19:44.009 Ja tulos on taas turvallinen. 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. 00:19:55.122 --> 00:19:58.527 Mutta se on vain sivuhuomautus. 00:19:58.573 --> 00:20:06.015 Mennään nyt syvemmälle ja tarkastellaan teknisesti Half Loop 24:n kierrosfunktiota. 00:20:06.279 --> 00:20:14.099 Nämä ovat operaatioita, jotka toistetaan uudelleen ja uudelleen. Half Loopissa niitä suoritetaan 10 kertaa. 00:20:14.519 --> 00:20:17.799 Näiden jälkeen saadaan salattu tulos eli ciphertext. 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. 00:20:23.939 --> 00:20:29.859 Tämä on 24 bittiä, joka jaetaan kolmeen tavuun, eli 3 kertaa 8 bittiä. 00:20:30.319 --> 00:20:33.259 Ensimmäinen vaihe on kierrosavaimen lisäys. 00:20:33.259 --> 00:20:35.718 Kierrosavain johdetaan 00:20:35.718 --> 00:20:42.943 128-bittisestä pääavaimesta, ja se yhdistetään tilaan XOR-operaatiolla, eli eksklusiivisella TAI-operaatiolla. 00:20:42.943 --> 00:20:44.505 Tämä tehdään jokaiselle bitille. 00:20:44.505 --> 00:20:47.207 Jos bitit ovat samat, tulos on nolla. 00:20:47.207 --> 00:20:52.710 Jos bitit ovat eri, tilabitti ja avainbitti, tulos on yksi. 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. 00:21:03.290 --> 00:21:08.251 Syöte on 8-bittinen, joten mahdollisia arvoja on 256. 00:21:08.371 --> 00:21:11.822 Taulukossa on jokaiselle syötteelle oma ulostuloarvo. 00:21:11.822 --> 00:21:20.735 Turvallisuuden kannalta taulukon sisältö on tärkeä, mutta meille se ei ole nyt oleellista. 00:21:21.315 --> 00:21:27.017 Seuraava vaihe on lineaarikerros, joka koostuu kahdesta osasta. 00:21:27.017 --> 00:21:30.698 Ensimmäinen on RotateRow, joka tekee 00:21:31.718 --> 00:21:42.278 bittien kierron jokaisessa tavussa. Sitten MixedColumn, joka voidaan kuvata matriisikertolaskuna binäärisellä 24x24-matriisilla. 00:21:42.278 --> 00:21:45.378 Koska toimimme biteillä, laskut ovat XOR-operaatioita. 00:21:45.378 --> 00:21:56.258 Toisin sanoen, kaikki lasketaan modulo 2, eli jokaisen bitin lopputulos on joko 0 tai 1. 00:21:56.258 --> 00:22:00.178 Lopputulos on taas 24 bittiä. 00:22:00.178 --> 00:22:01.592 24-bittinen tulos. 00:22:01.592 --> 00:22:02.943 Uusi tila saadaan tästä. 00:22:03.183 --> 00:22:05.245 Tehdään lyhyt esimerkki. 00:22:05.245 --> 00:22:09.799 Syöte on 0x01, 0x02 ja 0x03 heksadesimaaleina. 00:22:09.799 --> 00:22:14.953 0 tarkoittaa 8 nollabittiä, 1 on kolme nollabittiä ja yksi ykkönen lopussa. 00:22:14.953 --> 00:22:19.596 Meillä on myös kierrosavain, ja ensimmäinen vaihe on kierrosavaimen lisäys. 00:22:19.877 --> 00:22:22.619 Tässä on sen operaation tulos. 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. 00:22:30.346 --> 00:22:31.046 Ja nyt 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. 00:22:38.686 --> 00:22:41.626 Syöte on 0x7E, ja ulostulo on 0xF3. 00:22:41.666 --> 00:22:43.806 Aika yksinkertaista, vai mitä? 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. 00:22:54.086 --> 00:22:54.186 Niin? 00:22:54.186 --> 00:22:59.286 Kun tehdään välivaiheet, näet täällä rotaation ja sen jälkeen MixedColumn-vaiheen. 00:22:59.286 --> 00:23:00.282 MixedColumn on myös... 00:23:00.282 --> 00:23:01.923 operaatio AES:ssä. 00:23:03.684 --> 00:23:06.606 Tämän jälkeen saadaan tämä ulostulo. 00:23:06.847 --> 00:23:09.228 Kuten sanoin, Half Loopissa on 10 kierrosta. 00:23:09.228 --> 00:23:13.231 Eli tämä kierrosfunktio suoritetaan 10 kertaa. 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. 00:23:20.016 --> 00:23:27.361 Lisätään kierrosavain 1, tehdään S-box, lineaarikerros ja niin edelleen. 00:23:27.361 --> 00:23:29.648 Tämä toistetaan 10 kertaa, mutta 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. 00:23:35.280 --> 00:23:40.793 Lisätään kuitenkin vielä yksi kierrosavain, muuten hyökkääjä voisi laskea takaisinpäin. 00:23:40.793 --> 00:23:43.644 Tarvitaan siis avaimen lisäys aivan lopussa. 00:23:43.844 --> 00:23:44.924 Siinä on koko Half Loop. 00:23:44.924 --> 00:23:46.285 Tässä on koko algoritmi. 00:23:46.285 --> 00:23:51.747 Syötetään selkoteksti vasemmalta, tehdään 10 kierrosta ja saadaan salattu teksti. 00:23:52.187 --> 00:23:57.540 Mutta yksi asia puuttuu — en ole vielä selittänyt, miten kierrosavaimet saadaan, eikö niin? 00:23:57.540 --> 00:23:58.470 Eli tietenkin... 00:23:58.470 --> 00:24:00.930 Meillä on pääavain, mutta miten kierrosavaimet saadaan? 00:24:00.930 --> 00:24:03.029 Tätä varten käytetään avainlaajennusta eli key schedulea. 00:24:03.690 --> 00:24:10.150 Avainlaajennus on lainattu AES:stä pienin poikkeuksin — oikeastaan kahdella poikkeuksella. 00:24:10.150 --> 00:24:13.950 Ensinnäkin kierrosavaimia tarvitaan vähemmän, joten määrä on pienempi. 00:24:13.990 --> 00:24:19.830 Toiseksi meillä on tweak, joka XORataan alussa. Avain jaetaan kahteen osaan. 00:24:19.830 --> 00:24:24.390 Ensimmäiset 64 bittiä ja loput 64 bittiä. 00:24:24.390 --> 00:24:27.430 Ensimmäiseen 64 bittiin lisätään tweak T. 00:24:27.430 --> 00:24:28.582 Tämä on siis 00:24:28.582 --> 00:24:33.422 käytetty taajuus, aikaleima ja sanalaskuri. 00:24:33.662 --> 00:24:38.442 Tämä XORataan avaimen ensimmäiseen osaan ja sitten suoritetaan AES-tyyppinen avainlaajennus. 00:24:38.442 --> 00:24:41.002 AES:n key schedule on melko yksinkertainen. 00:24:41.002 --> 00:24:47.782 Siinä käytetään XOR-operaatioita 32-bittisille sanoille, ja se on FISO-tyyppinen verkko. 00:24:48.142 --> 00:24:49.542 Käytetään funktiota G. 00:24:49.542 --> 00:24:57.022 Siitä ei tarvitse huolehtia, mutta siinä on lisää S-boxeja ja bittien uudelleenjärjestelyä. 00:24:57.166 --> 00:24:58.797 Miten kierrosavaimet sitten saadaan? 00:24:58.797 --> 00:25:05.992 Otetaan ensimmäiset 24 bittiä kierrosavaimeksi 0, seuraavat 24 bittiä kierrosavaimeksi 1 ja niin edelleen. 00:25:06.293 --> 00:25:08.594 Lopulta jää yksi tavu jäljelle. 00:25:08.594 --> 00:25:12.717 Sitten suoritetaan AES-avainlaajennus uudelleen. 00:25:12.717 --> 00:25:13.878 Saadaan uusi tila. 00:25:13.878 --> 00:25:19.061 Otetaan taas bitit käyttöön — jatketaan vain bittien käyttämistä. 00:25:19.442 --> 00:25:21.453 Ja sitten ollaankin jo melkein valmiita. 00:25:21.453 --> 00:25:23.865 Kierrosavain 10:stä on kasassa kaksi tavua. 00:25:23.865 --> 00:25:25.733 Tarvitaan vielä yksi tavu. 00:25:25.733 --> 00:25:33.818 Toistetaan funktio, mutta säilytetään vain ensimmäinen tavu ja hylätään loput. 00:25:34.239 --> 00:25:41.223 Nyt meillä on kaikki 264 bittiä, eli 24 bittiä kertaa 11 kierrosta. 00:25:42.324 --> 00:25:43.264 Selvä. 00:25:43.525 --> 00:25:48.688 Nyt kun tiedämme, miten Half Loop toimii, katsotaan itse hyökkäystä. 00:25:49.209 --> 00:25:54.446 Tämä hyökkäys perustuu kahteen tutkimusjulkaisuun. 00:25:54.446 --> 00:26:06.719 Ensimmäinen artikkeli on "Breaking Half Loop 24", yhteistyössä Markus Dansarin kanssa, joka esitteli Sodakin — Half Loopin edeltäjän — joka alun perin kiinnitti huomiomme. 00:26:06.719 --> 00:26:11.220 Mukana oli myös Patrick Derbez Ranskasta ja ohjaajani Gregor Leander Bochumista. 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. 00:26:21.534 --> 00:26:23.244 Sanotaanko näin... 00:26:24.088 --> 00:26:32.113 Teoreettisesti katsoen, sanoimme että salaus voidaan murtaa, jos hyökkääjä voi salakuunnella 500 vuoden ajan. 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. 00:26:43.021 --> 00:26:52.652 Esitin tämän artikkelin viime vuonna Japanissa, FSE-konferenssissa, joka on Fast Software Encryption -konferenssi. 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. 00:27:02.719 --> 00:27:03.440 Hyökkäystä voisi parantaa. 00:27:03.440 --> 00:27:05.601 Panostimme siihen lisää aikaa. 00:27:05.601 --> 00:27:09.804 Ja huomasimme, että sitä voi parantaa merkittävästi. 00:27:09.944 --> 00:27:14.167 Tietenkin koska olemme akateemisessa maailmassa, kirjoitimme uuden artikkelin. 00:27:14.167 --> 00:27:19.671 Esitin sen tänä vuonna FSE-konferenssissa Leuvenissa. 00:27:19.671 --> 00:27:21.852 Saimme myös parhaimman paperin palkinnon. 00:27:21.976 --> 00:27:24.997 Mikä oli tietysti meille todella hienoa. 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. 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. 00:27:45.295 --> 00:27:49.767 Charlie voi siis pyytää Alicea salaamaan jonkin selkotekstin. 00:27:49.987 --> 00:27:51.714 Ja Alice tekee sen. 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. 00:27:55.266 --> 00:27:59.849 Charlie ei voi vain mennä Alicen luo ja pyytää, että "salaisitko tämän puolestani". 00:27:59.989 --> 00:28:03.632 Mutta se menee vielä oudommaksi: Charlie voi myös pyytää purkamaan salauksen. 00:28:03.632 --> 00:28:07.454 Charlie voi sanoa "puratko tämän salatekstin C:n". 00:28:07.454 --> 00:28:13.238 Alice vastaa selkotekstillä P, eli antaa alkuperäisen viestin. 00:28:13.458 --> 00:28:15.319 Tätä jatketaan uudestaan ja uudestaan. 00:28:15.319 --> 00:28:19.942 Lopulta Charlie yrittää ehkä selvittää salaisen avaimen. 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ää. 00:28:31.078 --> 00:28:32.018 Täysin satunnaista järjestelmää. 00:28:32.298 --> 00:28:35.539 Mutta oletetaan, että Charlie yrittää selvittää avaimen. 00:28:35.539 --> 00:28:39.600 Saatat miettiä, miksi hyökkääjät esitetään näin voimakkaina. 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. 00:28:46.182 --> 00:28:50.187 On monia esimerkkejä siitä, että tätä ei alun perin suunniteltu. 00:28:50.187 --> 00:29:02.355 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. 00:29:02.355 --> 00:29:12.922 Jos järjestelmäsi on turvallinen tällaisia hyökkäyksiä vastaan, olet hyvällä tiellä. Ja nyt viimeinen puuttuva palanen on differentiaalikryptoanalyysi. 00:29:12.922 --> 00:29:20.159 Emme tietenkään mene tämän keskeisen menetelmän kaikkiin yksityiskohtiin. Se kehitettiin 1990-luvun alussa Bihamin ja Shamirin toimesta. 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. 00:29:38.119 --> 00:29:40.100 RSA:n S-kirjain tulee Shamirista. 00:29:40.100 --> 00:29:43.552 Shamir oli erittäin aktiivinen ja arvostettu kryptografi. 00:29:43.553 --> 00:29:46.714 He kehittivät differentiaalikryptoanalyysin. 00:29:46.934 --> 00:29:48.301 Idea siinä on... 00:29:48.301 --> 00:29:53.153 että ei katsota vain yhtä selkoteksti–salateksti-paria, vaan myös toista selkotekstiä. 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. 00:29:59.616 --> 00:30:03.718 Eli kaksi selkotekstiä eroavat toisistaan tietyllä erotuksella delta. 00:30:03.718 --> 00:30:10.101 Tässä käytän pientä delta-merkkiä kuvaamaan tätä arvoa. 00:30:10.101 --> 00:30:15.713 Yleisesti käytämme isoa deltaa, kolmion muotoista merkkiä, osoittamaan että puhumme erotuksesta. 00:30:15.715 --> 00:30:18.976 Delta P tarkoittaa P:n ja P XOR deltan välistä erotusta. 00:30:18.976 --> 00:30:22.677 Koska kyseessä on XOR, P XOR P XOR delta antaa erotukseksi delta. 00:30:22.677 --> 00:30:31.979 Koska P XOR P on nolla, jäljelle jää delta. Differentiaalikryptoanalyysin idea on syöttää tietty ero sisään ja toivoa, että ulostulosta voi päätellä jotakin. 00:30:32.179 --> 00:30:42.921 Eli käytetään tarkasti määriteltyä erotusta syötteenä ja katsotaan, paljastuuko jotain salatusta tekstistä tai sen erotuksesta. 00:30:42.921 --> 00:30:45.442 Ja saadaanko siitä hyödyllistä tietoa. 00:30:45.570 --> 00:30:51.590 Merkintätavasta: emme näytä molempia salausajoja dioissa, vaan vain yhden ja sen erotuksen. 00:30:51.590 --> 00:30:55.290 Näytämme vain sen erotuksen, joka kiinnostaa meitä. 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. 00:31:04.970 --> 00:31:05.790 Selvä. 00:31:05.910 --> 00:31:09.130 Nyt meillä on kaikki mitä tarvitsemme ja voimme siirtyä itse hyökkäykseen. 00:31:09.130 --> 00:31:11.790 Mennään siis vielä teknisemmälle tasolle. 00:31:11.870 --> 00:31:13.410 Tämän kuvan olet jo nähnyt. 00:31:13.410 --> 00:31:15.170 Kyseessä on taas avainlaajennus. 00:31:15.170 --> 00:31:21.262 Half Loopissa meillä on syötteenä paitsi selkoteksti myös tweak. 00:31:21.262 --> 00:31:24.953 Oletetaan nyt, että hyökkääjä voi myös hallita tätä tweakia. 00:31:24.953 --> 00:31:26.533 Käytännössä näin ei tietenkään ole. 00:31:26.533 --> 00:31:29.934 Mutta oletetaan aluksi, että voimme hallita sitä täysin. 00:31:29.934 --> 00:31:36.936 Katsotaan myöhemmin, miten tämä voidaan toteuttaa käytännössä. 00:31:37.056 --> 00:31:40.507 Seuraavaksi asetamme eron tweak-arvoon. 00:31:40.507 --> 00:31:44.078 Tässä kolmas tavu on se, jossa ero delta on. 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. 00:31:53.765 --> 00:32:00.449 Salaamme siis kaksi selkotekstiä, ja tweakit ovat samanlaisia paitsi kolmannen tavun kohdalla. 00:32:00.710 --> 00:32:04.672 Nyt haluamme selvittää, mitä tapahtuu kierrosavaimille. 00:32:05.093 --> 00:32:07.445 Tämä on itse asiassa melko yksinkertaista. 00:32:07.445 --> 00:32:11.850 Jos ero on kolmannessa tavussa, myös ensimmäisen kierroksen avaimen kolmannessa tavussa on ero. 00:32:11.850 --> 00:32:12.790 Eli ensimmäinen kierrosavain 00:32:12.790 --> 00:32:17.474 on muuten sama, mutta kolmannessa tavussa on delta. 00:32:17.474 --> 00:32:23.818 Kaikki muut ensimmäisen kierroksen bitit pysyvät samoina, koska ero on vain kolmannessa tavussa. 00:32:24.099 --> 00:32:29.563 Seuraavaksi sovelletaan avainlaajennuksen kierrosfunktiota. 00:32:29.763 --> 00:32:33.196 Koska käytössä on XOR, ero jatkaa etenemistään. 00:32:33.196 --> 00:32:36.318 Meillä on delta tässä, ja sitten delta myös tässä. 00:32:36.318 --> 00:32:39.170 Eli ei eroa muissa kierrosavaimissa, 00:32:39.170 --> 00:32:43.290 mutta kierrosavain 6:n ensimmäisessä tavussa ero ilmenee taas. 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ä. 00:32:55.530 --> 00:32:57.310 Ja sitten, oho, anteeksi. 00:32:57.650 --> 00:33:06.170 Ero etenee edelleen, joten myös kierrosavaimissa 7, 8 ja 9 on yhden tavun ero. 00:33:06.170 --> 00:33:09.150 Ja jos ihmettelet, 00:33:09.686 --> 00:33:14.787 Tämä data ei vaikuta muihin kohtiin, joten ne pysyvät samoina. 00:33:14.987 --> 00:33:19.749 Nyt tarkastellaan Half Loopin koko rakennetta uudelleen. 00:33:19.749 --> 00:33:25.090 Punaisella näkyvät ne kierrosavaimet, jotka eroavat näiden kahden salausajon välillä. 00:33:25.090 --> 00:33:27.311 Voit jopa merkitä tarkat tavujen paikat. 00:33:27.311 --> 00:33:31.672 Ero ilmestyy tänne, tänne, tänne, tänne ja tänne. 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. 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. 00:33:42.949 --> 00:33:51.021 Delta voi olla mikä tahansa yhden tavun arvo, kunhan se ei ole nolla. 00:33:51.021 --> 00:33:54.022 Kaikki paitsi nolla kelpaavat. 00:33:54.562 --> 00:34:00.224 Erotukset kumoavat toisensa ja saamme tilan erotukseksi ison deltan nolla. 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. 00:34:07.522 --> 00:34:10.162 Eli ensimmäisen kierrosavainvaiheen jälkeen tila on identtinen. 00:34:10.382 --> 00:34:16.362 Jos syöte S-boxiin on sama, myös S-boxin ulostulo on sama. 00:34:16.382 --> 00:34:20.722 Jos lineaarikerroksen syöte on sama, sen ulostulo on myös sama. 00:34:20.722 --> 00:34:26.422 Jos syöte avaimenlisäykseen on sama ja kierrosavain on sama, myös tulos on sama. 00:34:26.422 --> 00:34:31.622 Tämä toistuu kierrokseen 6 asti. Vasta silloin ero alkaa näkyä. 00:34:31.622 --> 00:34:37.666 Ensimmäiset kuusi kierrosta voidaan käytännössä ohittaa ilmaiseksi. 00:34:37.666 --> 00:34:45.866 Eli Half Loop 24 -algoritmissa, jossa on 10 kierrosta, voimme differentiaalihyökkäyksessä ohittaa 6 kierrosta. 00:34:45.866 --> 00:34:47.946 Se ei tietenkään ole hyvä asia. 00:34:48.046 --> 00:34:52.506 Meidän tarvitsee hyökätä vain jäljelle jääviä neljää kierrosta vastaan. 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. 00:35:03.666 --> 00:35:05.836 Tässä kohdassa tiloissa ei ole vielä eroja. 00:35:05.836 --> 00:35:09.207 Tilojen välillä ei ole eroja, joten ero on nolla. 00:35:09.508 --> 00:35:15.410 Seuraavaksi ero tuodaan mukaan kierrosavainten avulla. 00:35:15.410 --> 00:35:18.001 Täällä aivan lopussa ilmestyy viimeinen ero. 00:35:18.001 --> 00:35:21.272 Ja oikealla puolella on lopullinen salattu teksti. 00:35:21.272 --> 00:35:27.275 Koska voimme vaihtaa lineaarikerroksen ja kierrosavaimen lisäyksen paikkaa, 00:35:27.275 --> 00:35:35.328 voimme ajatella, että sovelletaan ensin lineaarikerroksen käänteisfunktiota kierrosavaimeen ja sitten lisätään se. 00:35:35.850 --> 00:35:37.911 Tällöin ero esiintyy tässä kohdassa. 00:35:38.132 --> 00:35:40.113 Ja nyt voimme laskea. 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? 00:35:48.898 --> 00:35:53.981 Tarvitsemme selvästi kierrosavaimet 10, 9 ja 8. 00:35:53.981 --> 00:36:01.558 Mutta kierrosavaimeen 7 tarvitaan vain ensimmäinen tavu, kun sovelletaan lineaarikerroksen käänteisfunktiota. 00:36:01.558 --> 00:36:06.620 Tällä tavoin saamme tietoomme tämän erotuksen. 00:36:07.681 --> 00:36:09.561 Kuinka monta bittiä tämä sitten on? 00:36:09.561 --> 00:36:15.264 Kolme tavua täältä, kolme täältä, kolme täältä ja yksi täältä. Yhteensä siis 10 tavua eli 80 bittiä. 00:36:15.264 --> 00:36:19.245 80 bittiä on paljon, jos haluaa tehdä brute force -hyökkäyksen, mutta vähemmän kuin 128 bittiä. 00:36:19.465 --> 00:36:27.359 Joten tämä hyökkäys murtaa Half Loopin — ainakin teoreettisesti. 00:36:27.359 --> 00:36:30.830 Tämä tarkoittaa, että hyökkäyksellä voidaan murtaa salaus. 00:36:30.956 --> 00:36:33.597 Ainakin teoriassa. 00:36:33.597 --> 00:36:38.488 Hyökkäys toimii niin, että arvataan kaikki nämä 80 bittiä. 00:36:38.488 --> 00:36:44.550 Symmetrisessä kryptografiassa arvaaminen tarkoittaa, että käydään kaikki mahdollisuudet läpi silmukassa. 00:36:44.550 --> 00:36:48.931 Sitten lasketaan salaus takaisinpäin ja tarkistetaan, onko ero nolla. 00:36:48.931 --> 00:36:53.652 Jos ero on nolla, avain on mahdollinen ehdokas, jota pitää tutkia lisää. 00:36:53.652 --> 00:36:55.343 Jos ei ole, se hylätään. 00:36:55.343 --> 00:36:59.374 Tällöin tiedämme, ettei kyseinen 80 bittiä ole oikea avain. 00:36:59.454 --> 00:37:00.833 Sitten toistetaan prosessi. 00:37:00.833 --> 00:37:06.593 Useilla selkoteksti–salateksti-pareilla lopulta löydämme oikean 80-bittisen avainyhdistelmän. 00:37:06.593 --> 00:37:10.813 Eli hyökkäys toimii 2^80 laskennalla ja kuudella kyselyllä. 00:37:10.953 --> 00:37:17.773 Kyselyt tarkoittavat viestejä, jotka Charlie lähettää Alicelle — selkoteksti ja salattu teksti. 00:37:17.773 --> 00:37:19.193 Tämä on itse asiassa optimaalista. 00:37:19.193 --> 00:37:29.909 Yksityiskohtiin menemättä on helppo osoittaa, että edes brute force -hyökkäys ei onnistu viidellä kyselyllä, koska vaihtoehtoja jää liikaa. 00:37:29.909 --> 00:37:34.571 Tarvitaan siis vähintään kuusi kyselyä. 00:37:34.571 --> 00:37:36.491 Mutta 2^80 on edelleen paljon. 00:37:36.812 --> 00:37:41.373 Se vastaa suurin piirtein Bitcoin-verkon päivittäistä laskentatehoa. 00:37:41.613 --> 00:37:45.135 Emme voi tehdä tätä yliopiston tietokoneella, mutta hyökkäystä voidaan parantaa. 00:37:45.135 --> 00:37:50.807 Voidaan tehdä esilaskenta ja kokeilla vain kierrosavaimia 10 ja 9. 00:37:50.807 --> 00:37:59.040 Tehdään etukäteen hakutaulukko, sitten haetaan sieltä ja tarkistetaan, toimiiko avain vai ei. 00:37:59.040 --> 00:38:04.960 Tätä voi vielä parantaa, jos sallitaan kaksi lisäkyselyä — silloin tarvitsee vain 2^48 laskentaa. 00:38:04.960 --> 00:38:07.280 2^48 on helposti suoritettavissa. 00:38:07.280 --> 00:38:10.800 Me toteutimme hyökkäykset. 00:38:10.800 --> 00:38:13.760 Selittämäni hyökkäykset ovat juuri nämä kaksi. 00:38:14.180 --> 00:38:16.640 Tarvitset salauskyselyjä. 00:38:16.640 --> 00:38:20.140 Eli voit pyytää Alicea salaamaan viestejä. 00:38:20.140 --> 00:38:22.460 Mutta sinun ei tarvitse pyytää purkamaan mitään. 00:38:23.220 --> 00:38:27.040 Jos saisit pyytää myös purkua, hyökkäyksestä tulisi paljon tehokkaampi. 00:38:27.040 --> 00:38:30.300 Silloin hyökkäyksen aikavaativuus eli vaadittavien operaatioiden määrä olisi vain 2^10 eli 1024. 00:38:30.300 --> 00:38:33.900 Se olisi hyvin yksinkertainen, mutta vaatisi enemmän kyselyjä, myös purkukyselyjä. 00:38:34.020 --> 00:38:44.140 Aikavaativuus tarkoittaa sitä, kuinka monta salausta tai purkua joudut itse suorittamaan. 2^10 on vain 1024. 00:38:44.140 --> 00:38:50.300 Se on hyvin kevyt hyökkäys, mutta vaatii myös enemmän kyselyjä ja purkukyselyjä. 00:38:50.300 --> 00:38:53.800 Se ei ole kovin realistinen hyökkäystilanne. 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. 00:39:03.792 --> 00:39:06.932 Tämän voi oikeasti muuttaa käytännön hyökkäykseksi. 00:39:06.932 --> 00:39:13.372 Tässä asetelmassa ei ole enää kyse teoriasta vaan ALE-protokollasta, eli automaattisesta linkinmuodostuksesta. 00:39:13.652 --> 00:39:16.752 Tarvitaan jälleen 2^48, eli juuri tämä hyökkäys. 00:39:17.252 --> 00:39:24.064 Lisäksi kahdeksan teoreettista kyselyä. Jos vain voimme pyytää Alicea salaamaan viestejä meille, se vastaa 00:39:24.064 --> 00:39:27.345 kahden tunnin salakuuntelua Alicen ja Benjaminin välillä. 00:39:27.345 --> 00:39:30.426 Seuraavaksi selitän, miten tämä toimii. 00:39:30.426 --> 00:39:34.647 Mutta huomautetaan, että näiden kahden tunnin aikana pitää tietää myös selkotekstit. 00:39:34.647 --> 00:39:41.439 Eli ei riitä, että sieppaat radioliikenteen — sinun täytyy salakuunnella tarkasti tiettyä asemaa. 00:39:41.439 --> 00:39:46.210 Sinun täytyy tietää, mikä on viestinnän selkoteksti. 00:39:47.550 --> 00:39:49.951 Tarkastellaan nyt hyökkäystä käytännössä. 00:39:49.971 --> 00:39:53.692 Ensin täytyy ymmärtää, että ALE:ssa 00:39:53.692 --> 00:39:57.424 kommunikoimassa ei ole vain kaksi osapuolta vaan koko verkko. 00:39:57.424 --> 00:40:00.296 Kaikki verkon jäsenet jakavat saman symmetrisen avaimen. 00:40:00.296 --> 00:40:03.998 Eli joukko käyttäjiä ja heillä on kaikilla sama avain. 00:40:04.338 --> 00:40:10.982 Tavallisesti osapuolet ovat Alice ja Benjamin tai Bob. 00:40:11.062 --> 00:40:17.506 Mutta tässä tapauksessa käytetään kutsutunnuksia, niin sanottuja call sign -koodeja. 00:40:17.506 --> 00:40:19.487 Esimerkiksi Alice voi olla AAA. 00:40:19.487 --> 00:40:20.427 Eli käytössä on kutsutunnukset. 00:40:20.427 --> 00:40:22.168 Niitä voi verrata vaikka 00:40:22.370 --> 00:40:29.103 lyhyisiin puhelinnumeroihin. Ne koostuvat kolmesta kirjaimesta, esimerkiksi AAA. 00:40:29.363 --> 00:40:39.227 Zoomataan nyt kolmisuuntaisen kädenpuristuksen ensimmäiseen viestiin, jonka Alice lähettää Benjaminille. 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 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. 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. 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. 00:41:31.321 --> 00:41:39.147 Oletetaan, että käytetty taajuus pysyy samana ja aika on ajanhetki. Sanalaskuri kasvaa jokaiselle sanalle. 00:41:39.147 --> 00:41:41.909 Ensimmäisessä sanassa laskuri on 1. 00:41:41.909 --> 00:41:46.253 Toisessa 24-bittisessä sanassa laskuri on 2 ja luonnollisesti binaarimuodossa. 00:41:46.253 --> 00:41:50.456 Kolmannessa sanassa laskuri on 3 eli binäärinä 11. 00:41:51.710 --> 00:42:03.376 Oletetaan, että aikaa kuluu ja myöhemmin AAQ eli Benjamin lähettää saman viestin, koska hän haluaa muodostaa linkin AAA:n kanssa. 00:42:03.376 --> 00:42:08.409 Tällöin viestit peilautuvat — 2AA, 2AA ja lähettäjänä AAQ. 00:42:08.409 --> 00:42:11.831 Nyt kiinnostavaa on, mitä dataa on ennen tätä kohtaa. 00:42:12.271 --> 00:42:17.204 Näemme, että selkoteksti on täysin sama. 00:42:17.204 --> 00:42:21.084 Paitsi viimeinen tavu eroaa. 00:42:21.084 --> 00:42:32.050 Ja tweakissä ero ilmenee kolmannessa tavussa. Siinä on neljä bittiä minuuteista ja neljä bittiä sekunneista. 00:42:32.050 --> 00:42:42.796 Jos ero kutsutunnuksissa vastaa ajan eroa, saadaan sopiva pari, jossa on ero selkotekstissä ja tweakissa. 00:42:42.796 --> 00:42:50.270 Silloin voimme suorittaa hyökkäyksemme. 00:42:50.824 --> 00:42:56.366 Kerrataan, mitä viestityyppejä hyökkäys edellyttää. 00:42:56.366 --> 00:43:04.028 Taajuuksien pitää olla samat — oletetaan ALE-verkon taajuuden pysyvän vakiona. 00:43:04.308 --> 00:43:11.330 Sanalaskurien pitää olla samat, mutta tämä on helppoa koska molemmat aloittavat sanasta 1. 00:43:11.330 --> 00:43:16.471 Kun vertaat kahta sanaa, laskuri on aina sama. 00:43:16.732 --> 00:43:17.992 Lisäksi tarvitsemme sen, että 00:43:17.992 --> 00:43:20.103 viestit lähetetään saman 60 minuutin aikaikkunan sisällä. 00:43:20.103 --> 00:43:32.030 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ä. 00:43:32.030 --> 00:43:42.405 Oletetaan, että nämä arvot jakautuvat satunnaisesti, jolloin tämä osuu kohdalleen sattumalta. 00:43:42.405 --> 00:43:47.060 Lisäksi tarvitsemme, että ero 00:43:47.060 --> 00:43:53.383 ajan jäljellä olevissa 8 bitissä vastaa kutsutunnuksen erotusta. 00:43:54.143 --> 00:43:59.725 Tämäkin tapahtuu lopulta sattumalta, jos verkko on riittävän suuri. 00:43:59.726 --> 00:44:09.390 Näiden ehtojen ja lisäoletusten, kuten viestien määrän ALE-verkossa, perusteella voidaan laskea, että tarvitaan noin kaksi tuntia tiedonkeruuta. 00:44:09.390 --> 00:44:10.470 tiedot. 00:44:10.871 --> 00:44:12.251 Ja siinä se oikeastaan on. 00:44:12.251 --> 00:44:14.272 Mutta ennen kuin mennään... 00:44:14.272 --> 00:44:15.123 öö... 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. 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. 00:44:38.012 --> 00:44:43.658 Esimerkiksi emme tiedä, aikooko NATO korvata Half Loopin jollain toisella algoritmilla. Haluaisin tietää. 00:44:43.658 --> 00:44:45.208 Valitettavasti emme tiedä. 00:44:46.009 --> 00:44:50.020 Toinen ilmeinen kysymys on: miksi ei vain käytetä AES:ää? 00:44:50.020 --> 00:44:53.221 AES on hyvin tutkittu salausalgoritmi. 00:44:53.221 --> 00:44:54.381 Miksi ei siis AES? 00:44:54.381 --> 00:45:00.022 Miksi kehitettiin uusi Half Loop -salaus, joka muistuttaa lähinnä AES:n supistettua versiota? 00:45:00.022 --> 00:45:02.188 Taas kerran, hyvä kysymys. 00:45:02.188 --> 00:45:05.534 En tiedä selkeää vastausta. 00:45:05.574 --> 00:45:08.565 Sanotaan, että AES-lohkot ovat liian suuria. 00:45:08.565 --> 00:45:11.412 Korkeataajuisessa radiossa kaistanleveys on rajallinen 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. 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. 00:45:35.503 --> 00:45:38.442 jos katsot tätä tallenteena myöhemmin, voit myös ottaa yhteyttä. 00:45:38.442 --> 00:45:43.157 Jos katselet tallennetta tai jotain muuta, ole rohkeasti yhteydessä. 00:45:43.157 --> 00:45:45.609 Keskustelen mielelläni. Kiitos, se oli siinä. 00:45:45.609 --> 00:45:46.470 Kiitos. 00:45:57.258 --> 00:45:58.509 Kiitos, Lukas. 00:45:59.050 --> 00:46:03.373 Jos haluat esittää kysymyksen ja olet paikan päällä, mene mikrofonin luo. 00:46:03.373 --> 00:46:07.297 Jos olet verkossa, laita kysymys IRC:n tallennekanavaan. 00:46:07.297 --> 00:46:11.880 Ensimmäinen kysymys tulee netistä, Signal Angelin kautta. 00:46:14.922 --> 00:46:18.475 Hei ja kiitos todella mielenkiintoisesta esityksestä. 00:46:18.495 --> 00:46:20.917 Meillä on kysymys internetin kautta. 00:46:21.257 --> 00:46:28.143 Näytätte onnistuneen käyttämään tunnettuja menetelmiä nykyistä sotilassalausta vastaan. 00:46:28.143 --> 00:46:33.207 Tiedättekö, käyttääkö armeija vertaisarviointia vahvistaakseen algoritmejaan? 00:46:33.208 --> 00:46:38.962 Huomasin myös, että yksi kirjoittajista vaikutti olevan sotilasyliopistosta. 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? 00:46:48.552 --> 00:46:50.883 Tämä oli varmaan useampi kysymys. 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ää. 00:47:03.446 --> 00:47:04.517 Juuri näin toimitaan. 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. 00:47:11.639 --> 00:47:14.799 Mutta tässä tapauksessa en usko, että mitään vertaisarviointia on ollut. 00:47:14.799 --> 00:47:17.000 Tämä standardi vain on olemassa. 00:47:17.135 --> 00:47:18.545 En tiedä, onko sisäistä arviointia tehty. 00:47:18.845 --> 00:47:21.806 Toivon, että olisi, mutta jos olisi, toivon että he olisivat huomanneet heikkouden. 00:47:21.806 --> 00:47:23.126 Toivottavasti. 00:47:23.126 --> 00:47:27.328 Mutta toisaalta, olisi myös toivonut, että he olisivat löytäneet haavoittuvuuden itse. 00:47:27.328 --> 00:47:28.248 Selvä. 00:47:28.508 --> 00:47:31.789 Sitten unohdinkin jo seuraavan kysymyksen. 00:47:31.789 --> 00:47:37.070 Olisiko ollut kyse yhteistyöstä sotilas- ja siviilisektorin välillä? 00:47:38.190 --> 00:47:44.051 Kyllä, kysymys oli, onko yhteistyö sotilaan ja siviilin välillä lisääntynyt? 00:47:45.532 --> 00:47:46.392 No siis... 00:47:47.184 --> 00:47:52.976 En oikeastaan osaa sanoa. Kuten sanoin, me ilmoitimme heille, mutta emme saaneet vastausta. 00:47:52.976 --> 00:47:59.467 Ehkä se tarkoittaa enemmän ei kuin kyllä, mutta en voi sanoa mitä muualla tapahtuu. 00:48:00.488 --> 00:48:07.610 Kuten aiemmin sanoin, viimeinen kysymys olikin miksei käytetä suoraan AES:ää. 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ä. 00:48:16.060 --> 00:48:20.076 Sen pitäisi olla niin turvallinen, että myös sotilaskäyttö onnistuu huoletta. 00:48:21.596 --> 00:48:21.976 Kiitos. 00:48:21.976 --> 00:48:24.798 Mikrofoni täällä edessä. 00:48:24.798 --> 00:48:28.400 Hei, kiitos esityksestä. 00:48:28.560 --> 00:48:34.063 Halusin kysyä, onko todellisessa hyökkäyksessä tweak tiedossa vai ei? 00:48:34.063 --> 00:48:38.646 Kyllä, ehkä voin palata tähän kalvoon. 00:48:38.646 --> 00:48:39.957 Tässä näkyy tweak, kyllä? 00:48:39.957 --> 00:48:44.489 T on tweak, ja se koostuu pääasiassa aikaleimasta. 00:48:44.489 --> 00:48:46.050 Ja totta kai aika on tiedossa. 00:48:46.050 --> 00:48:48.154 Voit katsoa kellosta. 00:48:48.154 --> 00:48:49.104 Tiedät kellonajan. 00:48:49.104 --> 00:48:53.114 Sanalaskuri alkaa ykkösestä ja kasvaa siitä ylöspäin. 00:48:53.114 --> 00:48:57.784 Käytetty taajuuskin on tiedossa, koska sitä kuunnellaan radiosignaalina. 00:48:59.868 --> 00:49:00.198 Kiitos. 00:49:00.198 --> 00:49:02.389 Täällä seuraava. 00:49:03.129 --> 00:49:06.210 Ensinnäkin, kiitos erittäin kiinnostavasta esityksestä. 00:49:06.311 --> 00:49:12.293 Mainitsit, että tarvitaan noin 120 minuuttia dataa. 00:49:12.873 --> 00:49:17.245 Ymmärtääkseni Half Loopia käytetään vain kädenpuristuksen salaamiseen. 00:49:17.245 --> 00:49:22.377 Kuinka todennäköistä on, että oikeasti saadaan kasaan kaksi tuntia kädenpuristuksia? 00:49:22.377 --> 00:49:29.260 Niin, kaksi tuntia on oletus. Oletetaan, että viesti lähetetään aina 00:49:29.276 --> 00:49:30.706 unohdin tarkalleen, ehkä kymmenen sekunnin välein. 00:49:30.706 --> 00:49:33.257 Sitten voidaan keskustella, kuinka monta viestiä oikeasti lähetetään. 00:49:33.257 --> 00:49:37.198 Mutta tuo kymmenen sekuntia per viesti on yksi arvio. 00:49:38.999 --> 00:49:41.069 Riippuu toki siitä, kuinka paljon liikennettä on. 00:49:41.069 --> 00:49:44.260 Mutta nuo kaksi tuntia eivät tarkoita kahden tunnin viestimäärää. 00:49:44.260 --> 00:49:51.242 Se tarkoittaa vain sitä, että joudut odottamaan kaksi tuntia, jotta tarvittavat viestit sattuvat kohdalleen. 00:49:51.242 --> 00:49:52.333 Eli... 00:49:52.333 --> 00:49:55.830 Sanot siis, että nämä viestit löytyvät kahden tunnin kuluessa? 00:49:55.830 --> 00:49:56.584 Kahdessa tunnissa, kyllä. 00:49:56.584 --> 00:49:57.844 Selvä, kiitos. 00:50:00.153 --> 00:50:00.603 Kiitos. 00:50:00.603 --> 00:50:02.653 Meillä on vielä yksi kysymys tuolla. 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. 00:50:11.617 --> 00:50:16.409 Joten kysyisin ensin, liittyykö tämä hyökkäys sellaiseen tapaukseen? 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. 00:50:24.362 --> 00:50:28.883 Ja nyt, mitä tapahtuu... vaihdetaanpa kalvo nopeasti... 00:50:29.317 --> 00:50:35.211 Tässä kalvossa, tai hetkinen, väärä kalvo. 00:50:35.452 --> 00:50:38.855 Tässä siis lisätään tweak osaksi avainta. 00:50:38.855 --> 00:50:41.717 Ja tämä on itse asiassa todella huono idea. 00:50:42.017 --> 00:50:47.352 Ensimmäisessä tweakable block cipher -julkaisussa sanotaan selvästi: älä tee näin. 00:50:47.352 --> 00:50:53.296 Jos teet näin, saat turvallisuutta vain suunnilleen puolet bittimäärästä. 00:50:53.296 --> 00:50:59.051 Tämä johtaa geneeriseen hyökkäykseen, joka toimii, koska tweak on lisätty avaimen osaksi. 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ä. 00:51:09.150 --> 00:51:09.680 Näitä on dokumentoitu. 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ä. 00:51:15.995 --> 00:51:18.257 Jos saan, vielä yksi pieni lisäkysymys. 00:51:18.257 --> 00:51:18.447 Kyllä. 00:51:18.447 --> 00:51:21.379 Miksi he suunnittelivat salauksen tällä tavalla? 00:51:21.379 --> 00:51:26.132 Ymmärtääkseni tämä oli jo tiedossa, kun Half Loop otettiin käyttöön. 00:51:26.132 --> 00:51:27.075 Niin, sitäkin. 00:51:27.075 --> 00:51:30.156 Se on yksi niistä kysymyksistä, joihin haluaisin vastauksen, mutta minulla ei ole sitä. 00:51:30.156 --> 00:51:32.877 Ehkä he eivät vain tienneet siitä. 00:51:32.877 --> 00:51:37.289 Tweakin lisääminen avaimeen on helppo tehdä, jos ei tiedä että se on huono idea. 00:51:37.289 --> 00:51:40.450 Jos ei tiedä, että se ei ole hyvä ratkaisu. 00:51:40.450 --> 00:51:45.321 Se saattaa näyttää hyvältä idealta ensisilmäyksellä, mutta ei se ole. 00:51:46.662 --> 00:51:48.022 Täällä oli jatkokysymys. 00:51:48.022 --> 00:51:49.082 Kiitos. 00:51:49.103 --> 00:51:49.423 Eli... 00:51:49.423 --> 00:51:50.483 öö... 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? 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. 00:52:10.265 --> 00:52:13.016 Se tarkoittaa, että hyökkäys toimii myös niissä. 00:52:13.217 --> 00:52:20.943 Kryptografian näkökulmasta tämä tarkoittaa jo, että akateemisesti algoritmi katsotaan murretuksi. 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. 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ä. 00:52:42.047 --> 00:52:43.607 Mutta nekään eivät ole käytännöllisiä. 00:52:43.827 --> 00:52:47.699 Vaikea sanoa, kuinka paljon työtä tarvittaisiin. 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ä. 00:52:56.689 --> 00:52:57.160 Kiitos. 00:52:57.160 --> 00:52:58.090 Kiitos. 00:52:58.192 --> 00:52:59.594 Seuraava kysymys verkosta. 00:52:59.594 --> 00:53:00.835 Signal Angelilta. 00:53:02.373 --> 00:53:03.283 Kiitos. 00:53:03.604 --> 00:53:17.213 Seuraava kysymys on: mitä tapahtuu, jos salaus tapahtuu ajassa 11.03.03.998 ja purkuajassa 11.03.04.001? 00:53:17.213 --> 00:53:21.977 Eli sekunnit ovat eri. 00:53:21.977 --> 00:53:28.141 Rehellisesti sanottuna, en tiedä, koska en tunne radioviestintää kovin hyvin. 00:53:28.141 --> 00:53:30.433 Mutta pahimmassa tapauksessa kokeillaan molemmat. 00:53:30.433 --> 00:53:31.243 Tarkoitan... 00:53:31.355 --> 00:53:36.215 Halfloopin purku on todella nopeaa, ja koska selväteksti on hyvin rakenteellista... 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. 00:53:50.515 --> 00:53:58.515 Mutta kannattaa olla varovainen. Jos tekee sen vain kerran tai kahdesti, ei se haittaa. 00:53:58.515 --> 00:54:01.125 Mutta jos alat purkaa tuhansia viestejä eri tweak-arvoilla, se ei ole hyvä idea. 00:54:01.125 --> 00:54:07.719 Silloin hyökkääjäkin saa tietoa ilmaiseksi, mikä ei ole hyvä juttu. 00:54:07.719 --> 00:54:14.344 Hän saa ilmaiseksi jotain hyödyllistä. 00:54:15.044 --> 00:54:16.615 Kiitos. 00:54:16.615 --> 00:54:17.726 Täällä seuraava kysymys. 00:54:18.107 --> 00:54:22.629 Voiko tämän algoritmin korjata, vai pitäisikö vain käyttää AES:ää? 00:54:23.450 --> 00:54:27.403 Se riippuu siitä, miten "korjattava" määritellään. 00:54:27.403 --> 00:54:30.925 Yksi ratkaisu olisi lisätä huomattavasti enemmän kierroksia. 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. 00:54:41.800 --> 00:54:50.213 Tweakable block cipherien kohdalla kirjallisuudessa tiedetään, miten tämä tulisi tehdä. Esimerkiksi TRC-ky -viitekehys voisi auttaa. 00:54:50.213 --> 00:54:59.757 Mutta onko sen korjaaminen vaivan arvoista? En tiedä. Yleisesti ottaen Halfloopin suunnittelu... 00:54:59.931 --> 00:55:02.631 AES:n S-boksin käyttö on hyvä juttu. 00:55:03.011 --> 00:55:07.811 Siirrot ovat vähän omituisia, ne voisi siirtää mix column -operaatioon. 00:55:07.811 --> 00:55:10.551 Mutta yleisesti komponentit ovat vahvoja. 00:55:10.551 --> 00:55:13.731 Eli meillä on vahva lineaarinen kerros ja vahva S-boksi. 00:55:13.851 --> 00:55:14.911 Mutta yksityiskohdilla on väliä. 00:55:14.911 --> 00:55:18.991 Jos todella haluat, sen voisi korjata. 00:55:18.991 --> 00:55:22.351 Mutta en usko, että siinä olisi hirveästi järkeä. 00:55:22.691 --> 00:55:23.171 Kiitos. 00:55:23.171 --> 00:55:26.411 Takarivissä on joku mikrofonilla. 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ä. 00:55:33.960 --> 00:55:36.432 Tässä algoritmissa on pieni lohkokoko. 00:55:36.432 --> 00:55:38.373 Luuletko, että se on haavoittuva tällaisille hyökkäyksille? 00:55:38.373 --> 00:55:39.544 Kyllä, juuri niin. 00:55:39.544 --> 00:55:44.107 Pienien lohkokokojen kanssa täytyy olla erittäin varovainen. 00:55:44.107 --> 00:55:52.893 Selvätekstissä ei ehkä ole tarpeeksi materiaalia, mutta täällä on tweak, eli... 00:55:52.893 --> 00:55:53.884 Siinä on kuitenkin jotain vaihtelua. 00:55:53.884 --> 00:55:55.435 Eli jos teet sen oikein... 00:55:55.481 --> 00:55:57.552 Saat vaihtelua, mutta silti täytyy olla tarkkana. 00:55:57.552 --> 00:56:04.236 Mainitsit aiemmin differentiaalikryptanalyysin ja tällöin tutkitaan miten erot leviävät, myös ei-deterministisissä tilanteissa. 00:56:04.296 --> 00:56:12.901 Yleensä ei voida sanoa kovin paljoa, mutta 24 bitin tapauksessa voidaan todennäköisesti laskea koko DDT-taulukko. 00:56:12.901 --> 00:56:20.585 Se on siis ero-jakaumataulukko, mikä on hieman kiusallista, koska yleensä symmetrisessä kryptossa sitä ei voida tehdä koko salaukselle. 00:56:20.585 --> 00:56:23.546 Mutta tässä se saattaa olla mahdollista. 00:56:25.293 --> 00:56:33.507 Jos siis todella haluat tarkastella turvallisuutta tai korjata salauksen, se ei ole mitätöntä. 00:56:33.507 --> 00:56:40.911 Tarvitaan kunnon analyysiä, jotta nähdään pysyykö se turvallisena vai ei. 00:56:40.911 --> 00:56:45.693 Kiitos. 00:56:46.194 --> 00:56:46.684 Oikean puolen mikrofoni. 00:56:46.684 --> 00:56:48.695 Kyllä, mene vaan. 00:56:50.373 --> 00:56:52.045 Tiedetäänkö mitään algoritmin suunnittelijoista? 00:56:52.123 --> 00:56:55.294 Voiko se olla NSA:n lahjoittama? 00:56:55.294 --> 00:56:57.057 Öö... 00:56:59.995 --> 00:57:05.557 Ja käsittääkseni, vaikka minulla ei ole lähteitä, tämä tuli enemmän... 00:57:05.557 --> 00:57:10.248 Korkeataajuusradioyhteisöltä tämä suunnittelu. 00:57:10.248 --> 00:57:11.058 Eli... 00:57:12.019 --> 00:57:13.359 Sanotaan näin... 00:57:13.419 --> 00:57:14.099 Tarkoitan... 00:57:14.099 --> 00:57:15.860 Se ei ollut edes vitsi. 00:57:15.860 --> 00:57:17.990 Tiedän, että lahjoituksia on tehty paljon... 00:57:17.990 --> 00:57:18.891 Kyllä, kyllä, tiedän. 00:57:18.891 --> 00:57:21.021 Mutta halusin sanoa, että... 00:57:21.021 --> 00:57:22.362 On olemassa Schneierin laki. 00:57:22.362 --> 00:57:25.302 Jokainen voi suunnitella salauksen, joka ei ole turvallinen. 00:57:25.663 --> 00:57:27.893 Ei turvallinen, mutta jonka suunnittelija itse luulee olevan. 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. 00:57:40.483 --> 00:57:42.635 Selvä. Takarivin mikrofoni taas. 00:57:42.635 --> 00:57:45.547 Hei, kiitos hyvästä esityksestä. 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? 00:57:50.631 --> 00:57:51.973 Ehkä. 00:57:52.611 --> 00:57:53.975 Missä se nyt olikaan... 00:57:54.211 --> 00:57:58.694 ECB:n käyttö on itse asiassa ok, koska kyseessä on tweakable block cipher. 00:57:58.694 --> 00:58:02.316 Ja koska tweak muuttuu jokaisella... 00:58:02.716 --> 00:58:09.600 Koska tweak sisältää sanalaskurin ja aikaleiman, ECB:n käyttö on ihan hyväksyttävää. 00:58:09.600 --> 00:58:11.902 Se ei siis ole haavoittuvuus. 00:58:11.902 --> 00:58:14.563 Se tekee siitä jopa aika yksinkertaisen. 00:58:16.933 --> 00:58:18.853 Selvä, täällä eturivissä. 00:58:21.137 --> 00:58:27.039 Onko sinulla proof of concept tästä hyökkäyksestä, vai onko se juridisesti ongelmallista? 00:58:27.039 --> 00:58:28.659 Meillä on toteutus. 00:58:28.899 --> 00:58:33.120 Julkaisussa on linkki GitHubiin, ja siellä on toteutus. 00:58:33.120 --> 00:58:34.660 Me teimme sen. 00:58:34.741 --> 00:58:39.462 Emme tietenkään salakuunnelleet HF-radiota, vaan teimme tämän laboratoriossa. 00:58:39.462 --> 00:58:43.563 Generoimme selvätekstit itse ja sitten ajoimme hyökkäyksen. 00:58:43.563 --> 00:58:45.443 Hyökkäyksessä on käytännössä kaksi vaihetta. 00:58:45.443 --> 00:58:47.604 Ensimmäinen on oikeastaan juuri se, mitä näytin. 00:58:47.604 --> 00:58:49.284 Eli selvitetään... 00:58:49.324 --> 00:59:00.569 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. 00:59:00.569 --> 00:59:08.923 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ä. 00:59:08.923 --> 00:59:14.736 Tämän voi ajaa GPU:lla ja se vie ehkä kahdeksan tuntia lisää ja sitten se on siinä. 00:59:17.164 --> 00:59:19.004 Selvä, tarkistetaan vielä. 00:59:19.004 --> 00:59:20.388 Ei enää kysymyksiä salissa. 00:59:20.388 --> 00:59:24.452 Joten suuret kiitokset loistavasta esityksestä Lukas Stennisille.