Translated by Robert Ylitalo (KYBS2001 course assignment at JYU.FI) ♪ (38C3 intromusiikki) ♪ Seuraava puhujamme on Lukas Stennes. Hän on tohtoriopiskelija Ruhrin yliopistossa Bochumissa. Hänen tutkimuksensa keskittyy kryptonalyysiin. Hän oli myös osa tiimiä, joka paljasti haavoittuvuuden GPRS:ssä. Itse asiassa hän sai parhaan julkaisun palkinnon tästä tutkimuksesta, jonka hän esittelee nyt. Eli laatu on taattu. Lukas puhuu NATOn radioliikenteen salauksen murtamisesta ja esittelee hyökkäyksen Yhdysvaltain armeijan ja NATOn käyttämää korkean taajuuden radioviestinnän salausalgoritmia vastaan. Tervetuloa, antakaa suuret aplodit! NATO ja Yhdysvaltain armeija käyttävät turvatonta salausta nimeltä Half Loop 24. Tässä esityksessä kerron, miten sen voi murtaa. Aloitetaan kuitenkin aivan alusta. Selitetään ensin, mitä symmetrinen salaus oikeastaan on. Tarvitsemme siihen kaksi päähenkilöämme: Alicen ja Benjaminin. Huomasitte varmaan vitsin, yleensä kryptografiassa puhumme Bobista, ei Benjaminista. Mutta koska käytän norsuja selityksissä, nimesin hänet Benjaminiksi. Ja jos ihmettelet, miksi käytän norsuja, ne eivät ole tavallisia norsuja, vaan Casa-fantteja. Casa-fantit ovat CASA:n maskotteja. CASA tarkoittaa "Cyber Security in the Age of Large-Scale Adversaries". Se on Ruhrin yliopiston huippuyksikkö kyberturvallisuuden tutkimuksessa. Nyt Alice ja Benjamin haluavat kommunikoida turvattoman kanavan yli. Ongelmana on kolmas osapuoli, pahantahtoinen Charlie, joka salakuuntelee heidän viestintäänsä. Tietenkään Alice ja Benjamin eivät halua Charlien kuuntelevan heitä. Metaforana voidaan ajatella, että he tekevät näin: He laittavat viestin erittäin vahvaan laatikkoon. Laatikon täytyy olla niin vahva, ettei Charlie pysty avaamaan sitä. Sitten he laittavat laatikkoon lukon. Lukon täytyy olla niin vahva, ettei kukaan, ei edes Charlie voi murtaa sitä. Sen jälkeen he voivat lähettää laatikon toisilleen. Heillä molemmilla on avain, jolla laatikon voi avata ja sulkea. Näin he voivat viestiä keskenään ilman, että Charlie voi salakuunnella. Tätä samaa halutaan saavuttaa digitaalisessa maailmassa symmetrisellä salauksella. Symmetriseksi sitä kutsutaan siksi, että avain on molemmilla osapuolilla sama. Jos on symmetrinen salaus, on olemassa myös epäsymmetrinen salaus, jota kutsutaan myös julkisen avaimen salaukseksi. Symmetristä kutsutaan joskus salaisen avaimen salaukseksi. Epäsymmetrisellä salauksella luodaan avain molemmille puolille. Tämän jälkeen käytetään symmetristä salausta varsinaiseen viestien salaamiseen. Salausta käytetään nykyään lähes kaikkialla. Puhelimellasi, kun kirjoitat viestin esimerkiksi Signaliin, viestit salataan. Toinen hyvä esimerkki on HTTPS eli TLS. Kun avaat verkkosivun, selaimen osoitepalkissa näkyy lukon kuva, ja siitä näet lisätiedot. Siellä lukee esimerkiksi jotain tyyliin: TLS, AES ja muuta vastaavaa. Symmetrisessä salauksessa meitä kiinnostaa erityisesti AES, koska se on lohkosalaus, ja ei mikä tahansa lohkosalaus, vaan se lohkosalaus. AES tarkoittaa "Advanced Encryption Standard". Se on todennäköisesti maailman käytetyin salausalgoritmi. AES ottaa syötteenä 128-bittisen tekstin. Tätä syötettä kutsutaan selkotekstiksi, ja AES muuntaa sen salatekstiksi. Salateksti on myös 128-bittinen, ja muunnos perustuu salausavaimeen. 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. Eli ilman avainta Charlie ei voi purkaa viestiä. Se on jo itsessään erittäin hyödyllistä, mutta todellisessa maailmassa... haluamme salata enemmän kuin vain yhden lohkon. Siksi tarvitaan jotain, mitä kutsutaan toimintatavaksi (mode of operation), joka määrittelee, miten käsitellään useita lohkoja. Kuten sanoin, AES on kehittynyt salausstandardi. Se on standardi, jonka NIST määritteli 2000-luvun alussa. Kyseessä on siis Yhdysvaltain standardi, ja siitä lähtien sitä on käytetty laajasti. AES:n turvallisuustakuu on käytännössä se, ettei kukaan voi purkaa salausta ilman avainta. Mutta miksi näin on? Miksi olemme niin varmoja, ettei kukaan voi tehdä sitä? Koska kukaan ei ole vielä löytänyt toimivaa hyökkäystä. Ei ole olemassa matemaattista todistetta, joka osoittaisi AES:n turvallisuuden, mutta kaikille tunnetuille hyökkäyksille se on osoittautunut vastustuskykyiseksi. Siksi luotamme AES:iin, koska se on selvinnyt yli kahden vuosikymmenen ajan tutkimuksista. Valitettavasti meillä ei ole aikaa käydä tänään läpi kaikkia yksityiskohtia tästä huippukiinnostavasta algoritmista. Jos haluat tietää lisää, Christoph Parrin luento YouTubessa on ilmaiseksi katsottavissa kaikille. Christoph on professori Bochumissa, ja kyseessä on kryptografian johdantoluento, jonka kyberturvallisuuden opiskelijat käyvät siellä. Pieni sivuhuomautus. Christoph on nykyään Bochumin Max Planck -instituutin perustajajohtaja. Ja hän on todella hyvä. Tässä oli siis lyhyt johdanto symmetriseen salaukseen, mutta tuskin olette täällä vain sen vuoksi. Olette täällä kuulemassa sotilasradiosta, eikö? Niinpä. Aloitetaan siis sotilasradiosta. Aloitetaanpa näyttämällä teille tämä kuva. Ja nyt... Annan hetken aikaa miettiä, mikä on tämän kuvan ja tämän puheen eli sotilasradion välinen yhteys. Itse asiassa mitään todellista yhteyttä ei ole. Ainoa yhteys on minä itse, sillä otin tämän kuvan noin kaksi ja puoli vuotta sitten Ateenassa. Olin Ateenassa ensimmäisessä tieteellisessä konferenssissani. Kyseessä oli FSE, eli Fast Software Encryption -konferenssi, joka on merkittävin konferenssi symmetrisessä kryptografiassa. 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. Siellä konferenssissa osallistuin esitykseen, jonka nimi oli: "Cryptoanalysis of the SODA Cipher for HF Radio Automatic Link Establishment". Tämä esitys kiinnitti huomioni, ja haluan lyhyesti selittää otsikon merkityksen. Esityksen piti Marco Stanzari, joka myöhemmin työskenteli kanssamme Half Loop -salauksen murtamisessa. Otsikossa "cryptanalysis" tarkoittaa salauksen analysointia eli yritystä murtaa se tai arvioida sen turvallisuutta. SoDark on vain salauksen nimi, ja "cipher" tarkoittaa salausta. Haluan kuitenkin puhua hieman HF-radiosta ja automaattisesta linkinmuodostuksesta. Aloitetaan HF-radiosta. HF tarkoittaa high frequency eli korkeataajuus. Kyseessä on 3–30 MHz välinen taajuusalue, joka mahdollistaa ns. skywave-ilmiön. Skywave-ilmiössä radiosignaali heijastuu ylemmän ilmakehän hiukkasista takaisin maahan, jolloin se voi kulkea erittäin pitkiä matkoja. Signaali voi jatkaa heijastumista uudelleen ja uudelleen. Tämän vuoksi signaali voi kulkea todella pitkälle. Tämän ansiosta viestintä onnistuu suurien etäisyyksien yli ilman mitään infrastruktuuria. Et tarvitse satelliitteja, tukiasemia tai mitään muuta. Tarvitset vain radiolaitteet molemmissa päissä. Ketkä sitten ovat kiinnostuneita tällaisesta teknologiasta? Tietysti armeija. Myös diplomaatit ja kriisinhallintaviranomaiset. On selvää, että jos tapahtuu esimerkiksi maanjäristys, joka tuhoaa kaikki tukiasemat, tarvitaan viestintäjärjestelmä, joka ei vaadi infrastruktuuria. Se on tällaisessa tilanteessa erittäin hyödyllinen. HF-radion sisällä käytettiin SoDark-salausta, jota Marco analysoi. Half Loop tuli sen tilalle ja sitä käytettiin käsienpuristussanomien salaamiseen. Sen avulla pyrittiin varmistamaan viestinnän luottamuksellisuus ja aitous. Puhutaanpa automaattisesta linkinmuodostuksesta, sillä kuten ehkä arvaat, HF-radio ei ole niin yksinkertainen. Kyse ei ole vain siitä, että lähetät signaalin ja se toimii. Todellisuudessa se on monimutkaista, ja vielä 80-luvun puoliväliin saakka tarvittiin erittäin taitavia operaattoreita molemmissa päissä, jotta yhteys saatiin muodostettua. Tämän helpottamiseksi kehitettiin automaattinen linkinmuodostusprotokolla, lyhyesti ALE. Ja siinä Emme mene nyt yksityiskohtiin. Yksinkertaistamme paljon. Perusidea on, että alussa tapahtuu kolmivaiheinen kättely. Tämä on hyvin yleistä viestinnässä. Alice lähettää viestin, jossa hän sanoo "Hei, olen Alice" ja haluan puhua Bobille. Sitten Bob vastaa vastaavalla viestillä: "Olen Bob" ja haluan viestiä Alicen kanssa. Sitten Alice lähettää uudelleen viestin: "Olen Alice" ja haluan viestiä kanssasi, Bob. Tässä siis hyvin yksinkertaistettuna linkki muodostetaan ja viestintä alkaa. Se voi olla ääntä, keskustelua tai dataa. Esimerkiksi sähköposteja voidaan lähettää tämän kautta. Viestintä jatkuu, ja lopuksi lähetetään lopetusviesti. Alice sanoo: "Haluan lopettaa viestinnän nyt." Kuten huomaat, tässä näkyy lukon kuva. Tämä johtuu siitä, että nämä viestit kättely- ja lopetusviestit salataan joko SoDark:lla tai Half Loopilla. SoDark on Half Loopin edeltäjä. Sitä käytettiin todennäköisesti vuoteen 2017 saakka, mutta nykyään viestit salataan Half Loopilla. Miksi salaus tarvitaan tässä? Kun kättelyviestit salataan vahvasti... saadaan aikaan useita hyviä ominaisuuksia. Ensinnäkin viestien luottamuksellisuus, eli kukaan ilman avainta ei tiedä, ketkä viestivät. Kuten sanoin, viesti sisältää Alicen ja Bobin identiteetit. Ilman salausta kuka tahansa näkisi, että Alice ja Bob viestivät keskenään. Ja kyllä, tiedän että sanoin alussa että Bob on Benjamin, mutta ei se haittaa. Toinen hyöty on todennus. Jos Alice ja Bob käyttävät salaista avainta, vain he voivat purkaa viestin ja varmistaa, että se todella tuli toiselta osapuolelta. 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. Et voi vain kuunnella toisia ja muodostaa yhteyttä mihin tahansa, joten todennus tukee myös saatavuutta. Se auttaa varmistamaan viestinnän jatkuvuuden. 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 lähettää tarvittavat kolme viestiä ja linkki muodostuu. Sitten Benjamin ei enää voi muodostaa yhteyttä Aliceen. Tämäkin osoittaa, miksi salaus on tärkeää. Lopuksi tällä dialla haluan korostaa, että Half Loop, eli salaus jonka aiomme murtaa seuraavaksi, käytetään vain kättely- ja lopetusviesteissä. Kaikki mitä selitän koskee vain kättelyviestejä, ei varsinaista siirrettävää sisältöä kuten puhetta tai tiedostoja. Mennään siis seuraavaksi itse Half Loop 24 -algoritmin yksityiskohtiin, eli algoritmiin, jonka me murtoimme. Half Loop on itse asiassa... määritelty jossain sotilasstandardissa. Jos tunnet FIPS 197 -standardin, eli AES:n virallisen spesifikaation, tämä näyttää sinusta ehkä tutulta. Tässä on useita vaiheita. SubBytes, RotateRows, MixColumns ja AddRoundKey. Nuo vaiheet ovat hyvin samankaltaisia kuin AES:ssä, koska Half Loop muistuttaa paljon AES:ää. Ja jos mietit, onko tämä dokumentti salainen tai jotain sellaista, niin ei ole. Se on julkinen. Kuten mainitsin, olin Ateenassa, ja Marcos piti esityksen Half Loopin edeltäjästä. Esityksen lopussa hän mainitsi, että nyt käytetään tätä Half Loop -salausta. Kysyin, onko se julkinen? Hän sanoi kyllä. Sen voi vain etsiä Googlesta. Sieltä löytyy Yhdysvaltain puolustusministeriön sivu, josta PDF:n voi ladata. Täytyy vain selata alaspäin. Ehkä noin 300 sivua. Liitteessä G on Half Loopin spesifikaatio. Annan nyt lisää yksityiskohtia. Half Loopista on kolme versiota: 24, 48 ja 96. Tässä tarkastellaan versiota 24. Tämä numero tarkoittaa lohkon kokoa. Eli lohkon koko on 24 bittiä. 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. muut versiot jätetään tämän esityksen ulkopuolelle. Half Loop on niin sanottu "tweakable" lohkosalaus, ja tässä diassa kutsun sitä kirjaimella E, koska en halua kirjoittaa "Half Loop" joka paikkaan. Kuten mainitsin, se korvasi SoDark-salauksen. Sivuhuomautuksena: SoDark käytti vain 56-bittisiä avaimia, ja jos tiedät jotain kryptografiasta, 56 bittiä ei riitä. Sen pystyy helposti murtamaan brute forcella. Ensisilmäyksellä on hyvä, että vuodesta 2017 alkaen Half Loop on ollut virallisesti määritelty, ja siinä käytetään 128-bittistä avainta. Oikealla olevassa kuvassa näkyy 24-bittinen selkoteksti, 24-bittinen salattu teksti ja 128-bittinen avain. Mutta toisin kuin AES:ssä, tässä on lisäsyöte nimeltä T, joka on niin sanottu tweak. Tweak koostuu nykyisestä ajasta, sanalaskurista ja käytetystä radiotaajuudesta. Puhumme tästä lisää hetken kuluttua, mitä se tarkoittaa ja miksi se on hyödyllinen ominaisuus. Kuten sanoin, Half Loop on vahvasti inspiroitunut AES:stä. Aluksi se voi tuntua hyvältä asialta, mutta yksityiskohdilla on merkitystä. Miksi voidaan sanoa, että se on vahvasti inspiroitunut AES:stä? Koska se käyttää samoja komponentteja. 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. He käyttävät samaa S-Boxia, mikä on järkevää, koska AES:n S-Box on vahva. He käyttävät myös lähes samaa avainlaajennusta eli key schedulea. Jos et tiedä mitä key schedule tarkoittaa, ei hätää. Käymme sen läpi pian. AES:ssä tila on 16 tavua eli 128 bittiä, kirjoitettuna yleensä 4x4-matriisina. Half Loopissa se on kutistettu 3x1-matriisiksi. Jokainen matriisin kohta on 1 tavu eli elementti joukossa F2^8. AES:ssä käytetään 10 kierrosta, ja sama pätee täällä. Nyt meillä on tämä valmis. Haluan kertoa lisää tästä tweakista. Miksi tarvitsemme sen? Tai miksi haluamme tweakattavan lohkosalauksen? Katsotaanpa kuuluisaa ECB-Tux-esimerkkiä. Mitä tapahtuu, jos salaamme kuvan käyttäen ECB-tilaa eli electronic codebook -tilaa? Muistathan, että AES tai muut lohkosalaimet salaavat yhden lohkon kerrallaan. Mutta yleensä kuva... on useampaa lohkoa. Kuvitellaan esimerkin vuoksi, että yksi lohko vastaa yhtä pikseliä. Jos salaat jokaisen pikselin samalla avaimella ja ilman yhteyttä lohkojen välillä, eli electronic codebook -tilassa, niin silloin... Lyhyesti sanottuna, ECB:n kanssa salattu kuva näyttää tältä. Ja tietenkään tämä ei ole turvallista salausta, eikö? Turvallinen salaus tarkoittaa, että alkuperäisestä viestistä ei paljastu mitään tietoa. Mutta tässä on selvästi nähtävissä, että kyseessä on Tux-kuva. Yleensä käytetään jotain toimintatilaa, kuten GCM. Esimerkiksi HTTPS:ssä käytetään GCM:ää. 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. Jos käytät tweakattavaa lohkosalausta ECB-tilassa, saat... halutun lopputuloksen. Saat vain kohinaa, eikä mitään tietoa paljastu. Tweak on lisäsyöte, joka muuttuu vaikka selkoteksti ei muuttuisi. Jos meillä on valkoinen pikseli ja toinen samanlainen valkoinen pikseli, saadaan ilman tweakia sama salattu tulos. 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. Tällöin saadaan taas turvallinen ja hyödyllinen lopputulos. Ja tulos on taas turvallinen. Lisäksi kannattaa käyttää esimerkiksi laskuria, jotta kun salataan eri kuvia, samassa kohdassa olevat pikselit eivät tuota samaa salaustulosta. Mutta se on vain sivuhuomautus. Mennään nyt syvemmälle ja tarkastellaan teknisesti Half Loop 24:n kierrosfunktiota. Nämä ovat operaatioita, jotka toistetaan uudelleen ja uudelleen. Half Loopissa niitä suoritetaan 10 kertaa. Näiden jälkeen saadaan salattu tulos eli ciphertext. Vasemmalla puolella on syöte, eli joko selkoteksti tai nykyinen tila, jos ei olla ensimmäisellä kierroksella. Tämä on 24 bittiä, joka jaetaan kolmeen tavuun, eli 3 kertaa 8 bittiä. Ensimmäinen vaihe on kierrosavaimen lisäys. Kierrosavain johdetaan 128-bittisestä pääavaimesta, ja se yhdistetään tilaan XOR-operaatiolla, eli eksklusiivisella TAI-operaatiolla. Tämä tehdään jokaiselle bitille. Jos bitit ovat samat, tulos on nolla. Jos bitit ovat eri, tilabitti ja avainbitti, tulos on yksi. 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. Syöte on 8-bittinen, joten mahdollisia arvoja on 256. Taulukossa on jokaiselle syötteelle oma ulostuloarvo. Turvallisuuden kannalta taulukon sisältö on tärkeä, mutta meille se ei ole nyt oleellista. Seuraava vaihe on lineaarikerros, joka koostuu kahdesta osasta. Ensimmäinen on RotateRow, joka tekee bittien kierron jokaisessa tavussa. Sitten MixedColumn, joka voidaan kuvata matriisikertolaskuna binäärisellä 24x24-matriisilla. Koska toimimme biteillä, laskut ovat XOR-operaatioita. Toisin sanoen, kaikki lasketaan modulo 2, eli jokaisen bitin lopputulos on joko 0 tai 1. Lopputulos on taas 24 bittiä. 24-bittinen tulos. Tehdään lyhyt esimerkki. Syöte on 0x01, 0x02 ja 0x03 heksadesimaaleina. 0 tarkoittaa 8 nollabittiä, 1 on kolme nollabittiä ja yksi ykkönen lopussa. Meillä on myös kierrosavain, ja ensimmäinen vaihe on kierrosavaimen lisäys. Tässä on sen operaation tulos. Jos meillä on 0x7F ja 0x01, vähiten merkitsevä bitti käännetään, jolloin tulokseksi tulee 0x7E. Ja nyt Tässä diassa en tietenkään näytä kaikkia 256 S-boxin arvoa, mutta 0x7E löytyy, ja katsotaan mitä saadaan. Syöte on 0x7E, ja ulostulo on 0xF3. Aika yksinkertaista, vai mitä? Lineaarikerros voi olla hieman vaikeampi ymmärtää, mutta luota siihen, että matriisikertolaskun tuloksena saadaan tämä uusi tila. Kun tehdään välivaiheet, näet täällä rotaation ja sen jälkeen MixedColumn-vaiheen. MixedColumn on myös... operaatio AES:ssä. Tämän jälkeen saadaan tämä ulostulo. Kuten sanoin, Half Loopissa on 10 kierrosta. Eli tämä kierrosfunktio suoritetaan 10 kertaa. Ensimmäisessä kierroksessa lisätään kierrosavain 0, tehdään S-box, lineaarikerros ja siirrytään seuraavaan kierrokseen. Lisätään kierrosavain 1, tehdään S-box, lineaarikerros ja niin edelleen. Tämä toistetaan 10 kertaa, mutta viimeinen kierros on hieman erilainen, koska lineaarikerros ei enää tuo lisäturvaa, joten se voidaan jättää pois. Lisätään kuitenkin vielä yksi kierrosavain, muuten hyökkääjä voisi laskea takaisinpäin. Tarvitaan siis avaimen lisäys aivan lopussa. Siinä on koko Half Loop. Tässä on koko algoritmi. Syötetään selkoteksti vasemmalta, tehdään 10 kierrosta ja saadaan salattu teksti. Mutta yksi asia puuttuu, en ole vielä selittänyt, miten kierrosavaimet saadaan, eikö niin? Eli tietenkin... Meillä on pääavain, mutta miten kierrosavaimet saadaan? Tätä varten käytetään avainlaajennusta eli key schedulea. Avainlaajennus on lainattu AES:stä pienin poikkeuksin, oikeastaan kahdella poikkeuksella. Ensinnäkin kierrosavaimia tarvitaan vähemmän, joten määrä on pienempi. Toiseksi meillä on tweak, joka XORataan alussa. Avain jaetaan kahteen osaan. Ensimmäiset 64 bittiä ja loput 64 bittiä. Ensimmäiseen 64 bittiin lisätään tweak T. Tämä on siis käytetty taajuus, aikaleima ja sanalaskuri. Tämä XORataan avaimen ensimmäiseen osaan ja sitten suoritetaan AES-tyyppinen avainlaajennus. AES:n key schedule on melko yksinkertainen. Siinä käytetään XOR-operaatioita 32-bittisille sanoille, ja se on FISO-tyyppinen verkko. Käytetään funktiota G. Siitä ei tarvitse huolehtia, mutta siinä on lisää S-boxeja ja bittien uudelleenjärjestelyä. Miten kierrosavaimet sitten saadaan? Otetaan ensimmäiset 24 bittiä kierrosavaimeksi 0, seuraavat 24 bittiä kierrosavaimeksi 1 ja niin edelleen. Lopulta jää yksi tavu jäljelle. Sitten suoritetaan AES-avainlaajennus uudelleen. Saadaan uusi tila. Otetaan taas bitit käyttöön, jatketaan vain bittien käyttämistä. Ja sitten ollaankin jo melkein valmiita. Kierrosavain 10:stä on kasassa kaksi tavua. Tarvitaan vielä yksi tavu. Toistetaan funktio, mutta säilytetään vain ensimmäinen tavu ja hylätään loput. Nyt meillä on kaikki 264 bittiä, eli 24 bittiä kertaa 11 kierrosta. Nyt kun tiedämme, miten Half Loop toimii, katsotaan itse hyökkäystä. Tämä hyökkäys perustuu kahteen tutkimusjulkaisuun. 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. Mukana oli myös Patrick Derbez Ranskasta ja ohjaajani Gregor Leander Bochumista. Artikkelin lopputulos oli, että Half Loop 24 ei ole turvallinen. Meillä on toimiva hyökkäys, ja se on varsin vahva hyökkäys. Sanotaanko näin... Teoreettisesti katsoen, sanoimme että salaus voidaan murtaa, jos hyökkääjä voi salakuunnella 500 vuoden ajan. 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. Esitin tämän artikkelin viime vuonna Japanissa, FSE-konferenssissa, joka on Fast Software Encryption -konferenssi. Kollegani Sharam, joka on nyt takaisin Bochumissa mutta tuolloin oli Nijmegenissä Alankomaissa, tuli luoksemme ja sanoi, että hyökkäystä voitaisiin ehkä parantaa. Hyökkäystä voisi parantaa. Panostimme siihen lisää aikaa. Ja huomasimme, että sitä voi parantaa merkittävästi. Tietenkin koska olemme akateemisessa maailmassa, kirjoitimme uuden artikkelin. Esitin sen tänä vuonna FSE-konferenssissa Leuvenissa. Saimme myös parhaimman paperin palkinnon. Mikä oli tietysti meille todella hienoa. Ennen kuin menemme yksityiskohtiin, haluan korostaa että kryptografiset hyökkäykset voivat tuntua oudoilta, koska hyökkääjät ovat todella voimakkaita. Hyökkäyksissä hyökkääjällä, esimerkiksi Charliella, on usein oikeus pyytää Alicelta viestien salaamista, vaikka Alice säilyttää salaisen avaimen. Charlie voi siis pyytää Alicea salaamaan jonkin selkotekstin. Ja Alice tekee sen. Tämä on tietysti hieman outoa, koska oikeassa elämässä näin ei pitäisi tapahtua. Charlie ei voi vain mennä Alicen luo ja pyytää, että "salaisitko tämän puolestani". Mutta se menee vielä oudommaksi: Charlie voi myös pyytää purkamaan salauksen. Charlie voi sanoa "puratko tämän salatekstin C:n". Alice vastaa selkotekstillä P, eli antaa alkuperäisen viestin. Tätä jatketaan uudestaan ja uudestaan. Lopulta Charlie yrittää ehkä selvittää salaisen avaimen. Voisimme tehdä asiat vielä hullummiksi ja sanoa, että Charlie yrittää vain erottaa käyttikö Alice oikeaa salausta vai täysin satunnaista järjestelmää. Mutta oletetaan, että Charlie yrittää selvittää avaimen. Saatat miettiä, miksi hyökkääjät esitetään näin voimakkaina. Syynä on se, että jos salaus kestää näin voimakkaita hyökkääjiä, voimme luottaa siihen entistä enemmän. On monia esimerkkejä siitä, että tätä ei alun perin suunniteltu. 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. Jos järjestelmäsi on turvallinen tällaisia hyökkäyksiä vastaan, olet hyvällä tiellä. Ja nyt viimeinen puuttuva palanen on differentiaalikryptoanalyysi. Emme tietenkään mene tämän keskeisen menetelmän kaikkiin yksityiskohtiin. Se kehitettiin 1990-luvun alussa Bihamin ja Shamirin toimesta. Muuten, Shamir-nimi voi kuulostaa tutulta, hän on sama henkilö kuin Shamirin salausjakojärjestelmässä ja RSA:ssa. RSA:n S-kirjain tulee Shamirista. Shamir oli erittäin aktiivinen ja arvostettu kryptografi. He kehittivät differentiaalikryptoanalyysin. Idea siinä on... että ei katsota vain yhtä selkoteksti–salateksti-paria, vaan myös toista selkotekstiä. Tässä on selkoteksti P ja toinen selkoteksti, joka on P XOR delta, niillä on siis tietty ero. Eli kaksi selkotekstiä eroavat toisistaan tietyllä erotuksella delta. Tässä käytän pientä delta-merkkiä kuvaamaan tätä arvoa. Yleisesti käytämme isoa deltaa, kolmion muotoista merkkiä, osoittamaan että puhumme erotuksesta. Delta P tarkoittaa P:n ja P XOR deltan välistä erotusta. Koska kyseessä on XOR, P XOR P XOR delta antaa erotukseksi delta. Differentiaalikryptoanalyysin idea on syöttää tietty ero sisään ja toivoa, että ulostulosta voi päätellä jotakin. Merkintätavasta: emme näytä molempia salausajoja dioissa, vaan vain yhden ja sen erotuksen. Näytämme vain sen erotuksen, joka kiinnostaa meitä. Ja itse asiassa analyysiä ei tarvitse tehdä koko algoritmille, riittää, että se tehdään vain osalle algoritmista. Nyt meillä on kaikki mitä tarvitsemme ja voimme siirtyä itse hyökkäykseen. Mennään siis vielä teknisemmälle tasolle. Tämän kuvan olet jo nähnyt. Kyseessä on taas key scheluder. Half Loopissa meillä on syötteenä paitsi selkoteksti myös tweak. Oletetaan nyt, että hyökkääjä voi myös hallita tätä tweakia. Käytännössä näin ei tietenkään ole. Mutta oletetaan aluksi, että voimme hallita sitä täysin. Katsotaan myöhemmin, miten tämä voidaan toteuttaa käytännössä. Seuraavaksi asetamme eron tweak-arvoon. Tässä kolmas tavu on se, jossa ero delta on. Tweak on 64-bittinen ja kaikki muut tavut paitsi kolmas ovat nollia. Ero on siis vain kolmannessa tavussa. Salaamme siis kaksi selkotekstiä, ja tweakit ovat samanlaisia paitsi kolmannen tavun kohdalla. Nyt haluamme selvittää, mitä tapahtuu kierrosavaimille. Tämä on itse asiassa melko yksinkertaista. Jos ero on kolmannessa tavussa, myös ensimmäisen kierroksen avaimen kolmannessa tavussa on ero. Eli ensimmäinen kierrosavain on muuten sama, mutta kolmannessa tavussa on delta. Kaikki muut ensimmäisen kierroksen bitit pysyvät samoina, koska ero on vain kolmannessa tavussa. Seuraavaksi sovelletaan key scheluderin kierrosfunktiota. Koska käytössä on XOR, ero jatkaa etenemistään. Meillä on delta tässä, ja sitten delta myös tässä. Eli ei eroa muissa kierrosavaimissa, mutta kierrosavain 6:n ensimmäisessä tavussa ero ilmenee taas. Eli jos salaamme P ja P-prime, joissa on eri tweakit, niin kierrosavaimen 6 ensimmäinen tavu eroaa näiden salausten välillä. Ero etenee edelleen, joten myös kierrosavaimissa 7, 8 ja 9 on yhden tavun ero. Ja jos ihmettelet, Tämä data ei vaikuta muihin kohtiin, joten ne pysyvät samoina. Nyt tarkastellaan Half Loopin koko rakennetta uudelleen. Punaisella näkyvät ne kierrosavaimet, jotka eroavat näiden kahden salausajon välillä. Voit jopa merkitä tarkat tavujen paikat. Ero ilmestyy tänne, tänne, tänne, tänne ja tänne. Hyökkäyksen tärkein vaihe on käyttää sellaista selkotekstiparia, jonka erotus vastaa tätä rakennetta. Eli käytämme selkotekstejä, joiden kaksi ensimmäistä tavua ovat samat ja kolmas tavu eroaa delta-arvolla. Delta voi olla mikä tahansa yhden tavun arvo, kunhan se ei ole nolla. Kaikki paitsi nolla kelpaavat. Erotukset kumoavat toisensa ja saamme tilan erotukseksi ison deltan nolla. Tämä tarkoittaa, että ensimmäisen kierrosavaimen jälkeen salauksissa tila on sama, vaikka tweakit ja selkotekstit olivat eri. Eli ensimmäisen kierrosavainvaiheen jälkeen tila on identtinen. Jos syöte S-boxiin on sama, myös S-boxin ulostulo on sama. Jos lineaarikerroksen syöte on sama, sen ulostulo on myös sama. Jos syöte avaimenlisäykseen on sama ja kierrosavain on sama, myös tulos on sama. Tämä toistuu kierrokseen 6 asti. Vasta silloin ero alkaa näkyä. Ensimmäiset kuusi kierrosta voidaan käytännössä ohittaa ilmaiseksi. Eli Half Loop 24 -algoritmissa, jossa on 10 kierrosta, voimme differentiaalihyökkäyksessä ohittaa 6 kierrosta. Se ei tietenkään ole hyvä asia. Meidän tarvitsee hyökätä vain jäljelle jääviä neljää kierrosta vastaan. Kun tarkastelemme näitä neljää viimeistä kierrosta, tiedämme että näillä kahdella selkotekstillä ja eri tweak-arvoilla on erityinen yhteys. Tässä kohdassa tiloissa ei ole vielä eroja. Tilojen välillä ei ole eroja, joten ero on nolla. Seuraavaksi ero tuodaan mukaan kierrosavainten avulla. Täällä aivan lopussa ilmestyy viimeinen ero. Ja oikealla puolella on lopullinen salattu teksti. Koska voimme vaihtaa lineaarikerroksen ja kierrosavaimen lisäyksen paikkaa, voimme ajatella, että sovelletaan ensin lineaarikerroksen käänteisfunktiota kierrosavaimeen ja sitten lisätään se. Tällöin ero esiintyy tässä kohdassa. Ja nyt voimme laskea. Kuinka monta bittitietoa avaimesta tarvitaan, jotta voimme laskea salauksen takaisin ja saada selville tämän erotuksen? Tarvitsemme selvästi kierrosavaimet 10, 9 ja 8. Mutta kierrosavaimeen 7 tarvitaan vain ensimmäinen tavu, kun sovelletaan lineaarikerroksen käänteisfunktiota. Tällä tavoin saamme tietoomme tämän erotuksen. Kuinka monta bittiä tämä sitten on? Kolme tavua täältä, kolme täältä, kolme täältä ja yksi täältä. Yhteensä siis 10 tavua eli 80 bittiä. 80 bittiä on paljon, jos haluaa tehdä brute force -hyökkäyksen, mutta vähemmän kuin 128 bittiä. Joten tämä hyökkäys murtaa Half Loopin, ainakin teoreettisesti. Hyökkäys toimii niin, että arvataan kaikki nämä 80 bittiä. Symmetrisessä kryptografiassa arvaaminen tarkoittaa, että käydään kaikki mahdollisuudet läpi silmukassa. Sitten lasketaan salaus takaisinpäin ja tarkistetaan, onko ero nolla. Jos ero on nolla, avain on mahdollinen ehdokas, jota pitää tutkia lisää. Jos ei ole, se hylätään. Tällöin tiedämme, ettei kyseinen 80 bittiä ole oikea avain. Sitten toistetaan prosessi. Useilla selkoteksti–salateksti-pareilla lopulta löydämme oikean 80-bittisen avainyhdistelmän. Eli hyökkäys toimii 2^80 laskennalla ja kuudella kyselyllä. Kyselyt tarkoittavat viestejä, jotka Charlie lähettää Alicelle, selkoteksti ja salattu teksti. Tämä on itse asiassa optimaalista. Yksityiskohtiin menemättä on helppo osoittaa, että edes brute force -hyökkäys ei onnistu viidellä kyselyllä, koska vaihtoehtoja jää liikaa. Tarvitaan siis vähintään kuusi kyselyä. Mutta 2^80 on edelleen paljon. Se vastaa suurin piirtein Bitcoin-verkon päivittäistä laskentatehoa. Emme voi tehdä tätä yliopiston tietokoneella, mutta hyökkäystä voidaan parantaa. Voidaan tehdä esilaskenta ja kokeilla vain kierrosavaimia 10 ja 9. Tehdään etukäteen hakutaulukko, sitten haetaan sieltä ja tarkistetaan, toimiiko avain vai ei. Tätä voi vielä parantaa, jos sallitaan kaksi lisäkyselyä, silloin tarvitsee vain 2^48 laskentaa. 2^48 on helposti suoritettavissa. Me toteutimme hyökkäykset. Selittämäni hyökkäykset ovat juuri nämä kaksi. Tarvitset salauskyselyjä. Eli voit pyytää Alicea salaamaan viestejä. Mutta sinun ei tarvitse pyytää purkamaan mitään. Jos saisit pyytää myös purkua, hyökkäyksestä tulisi paljon tehokkaampi. Aikavaativuus tarkoittaa sitä, kuinka monta salausta tai purkua joudut itse suorittamaan. 2^10 on vain 1024. Se on hyvin kevyt hyökkäys, mutta vaatii myös enemmän kyselyjä ja purkukyselyjä. Se ei ole kovin realistinen hyökkäystilanne. 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. Tämän voi oikeasti muuttaa käytännön hyökkäykseksi. Tässä asetelmassa ei ole enää kyse teoriasta vaan ALE-protokollasta, eli automaattisesta linkinmuodostuksesta. Tarvitaan jälleen 2^48, eli juuri tämä hyökkäys. Lisäksi kahdeksan teoreettista kyselyä. Jos vain voimme pyytää Alicea salaamaan viestejä meille, se vastaa kahden tunnin salakuuntelua Alicen ja Benjaminin välillä. Seuraavaksi selitän, miten tämä toimii. Mutta huomautetaan, että näiden kahden tunnin aikana pitää tietää myös selkotekstit. Eli ei riitä, että sieppaat radioliikenteen, sinun täytyy salakuunnella tarkasti tiettyä asemaa. Sinun täytyy tietää, mikä on viestinnän selkoteksti. Tarkastellaan nyt hyökkäystä käytännössä. Ensin täytyy ymmärtää, että ALE:ssa kommunikoimassa ei ole vain kaksi osapuolta vaan koko verkko. Kaikki verkon jäsenet jakavat saman symmetrisen avaimen. Eli joukko käyttäjiä ja heillä on kaikilla sama avain. Tavallisesti osapuolet ovat Alice ja Benjamin tai Bob. Mutta tässä tapauksessa käytetään kutsutunnuksia, niin sanottuja call sign -koodeja. Esimerkiksi Alice voi olla AAA. Eli käytössä on kutsutunnukset. Niitä voi verrata vaikka lyhyisiin puhelinnumeroihin. Ne koostuvat kolmesta kirjaimesta, esimerkiksi AAA. Zoomataan nyt kolmivaiheisen kättelyn ensimmäiseen viestiin, jonka Alice lähettää Benjaminille. Meillä on Alice ja Benjamin, mutta nyt Alice on AAA ja Benjamin AQ. Ensimmäinen viesti, jonka AAA lähettää AQ:lle ilmoittaa, että viesti on osoitettu AQ:lle. Se toistetaan ja lopussa sanotaan, että tämä on A. Kutsutunnukset ovat siis kolmikirjaimisia. 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. Muistat ehkä, että tweak T on 64-bittinen ja siihen koodataan aika, sanalaskuri ja käytetty taajuus. Oletetaan, että käytetty taajuus pysyy samana ja aika on ajanhetki. Sanalaskuri kasvaa jokaiselle sanalle. Ensimmäisessä sanassa laskuri on 1. Toisessa 24-bittisessä sanassa laskuri on 2 ja luonnollisesti binaarimuodossa. Kolmannessa sanassa laskuri on 3 eli binäärinä 11. Oletetaan, että aikaa kuluu ja myöhemmin AAQ eli Benjamin lähettää saman viestin, koska hän haluaa muodostaa linkin AAA:n kanssa. Tällöin viestit peilautuvat, 2AA, 2AA ja lähettäjänä AAQ. Nyt kiinnostavaa on, mitä dataa on ennen tätä kohtaa. Näemme, että selkoteksti on täysin sama. Paitsi viimeinen tavu eroaa. Ja tweakissä ero ilmenee kolmannessa tavussa. Siinä on neljä bittiä minuuteista ja neljä bittiä sekunneista. Jos ero kutsutunnuksissa vastaa ajan eroa, saadaan sopiva pari, jossa on ero selkotekstissä ja tweakissa. Silloin voimme suorittaa hyökkäyksemme. Kerrataan, mitä viestityyppejä hyökkäys edellyttää. Taajuuksien pitää olla samat, oletetaan ALE-verkon taajuuden pysyvän vakiona. Sanalaskurien pitää olla samat, mutta tämä on helppoa koska molemmat aloittavat sanasta 1. Kun vertaat kahta sanaa, laskuri on aina sama. Lisäksi tarvitsemme sen, että viestit lähetetään saman 60 minuutin aikaikkunan sisällä. 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ä. Oletetaan, että nämä arvot jakautuvat satunnaisesti, jolloin tämä osuu kohdalleen sattumalta. Lisäksi tarvitsemme, että ero ajan jäljellä olevissa 8 bitissä vastaa kutsutunnuksen erotusta. Tämäkin tapahtuu lopulta sattumalta, jos verkko on riittävän suuri. Näiden ehtojen ja lisäoletusten, kuten viestien määrän ALE-verkossa, perusteella voidaan laskea, että tarvitaan noin kaksi tuntia tiedonkeruuta. Ja siinä se oikeastaan on. Mutta ennen kuin mennään... vastaan ensin muutamaan ilmeiseen kysymykseen. Ilmoitimmeko tästä Natolle? Kyllä ilmoitimme, mutta emme koskaan saaneet vastausta. Lähetimme heille paperin ennen julkaisua. He eivät kuitenkaan koskaan palanneet asiaan, mikä tarkoittaa, että moni ilmeinen kysymys jäi vaille vastausta. Emme siis tiedä kaikkea. Esimerkiksi emme tiedä, aikooko NATO korvata Half Loopin jollain toisella algoritmilla. Haluaisin tietää. Valitettavasti emme tiedä. Toinen ilmeinen kysymys on: miksi ei vain käytetä AES:ää? AES on hyvin tutkittu salausalgoritmi. Miksi ei siis AES? Miksi kehitettiin uusi Half Loop -salaus, joka muistuttaa lähinnä AES:n supistettua versiota? Taas kerran, hyvä kysymys. En tiedä selkeää vastausta. Sanotaan, että AES-lohkot ovat liian suuria. Korkeataajuisessa radiossa kaistanleveys on rajallinen 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. 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. jos katsot tätä tallenteena myöhemmin, voit myös ottaa yhteyttä. Jos katselet tallennetta tai jotain muuta, ole rohkeasti yhteydessä. Keskustelen mielelläni. Kiitos, se oli siinä. Kiitos. Kiitos, Lukas. Jos haluat esittää kysymyksen ja olet paikan päällä, mene mikrofonin luo. Jos olet verkossa, laita kysymys IRC:n tallennekanavaan. Ensimmäinen kysymys tulee netistä, Signal Angelin kautta. Hei ja kiitos todella mielenkiintoisesta esityksestä. Meillä on kysymys internetin kautta. Näytätte onnistuneen käyttämään tunnettuja menetelmiä nykyistä sotilassalausta vastaan. Tiedättekö, käyttääkö armeija vertaisarviointia vahvistaakseen algoritmejaan? Huomasin myös, että yksi kirjoittajista vaikutti olevan sotilasyliopistosta. Voisitteko sanoa, että siviili- ja sotilastutkijat tekevät nyt enemmän yhteistyötä kuin 20 vuotta sitten? Tämä oli varmaan useampi kysymys. Ensimmäinen taisi olla, onko vertaisarviointia käytössä. No, riippuu miten vertaisarviointi määritellään, mutta akateemisessa maailmassa se on itsestään selvää. Juuri näin toimitaan. Jos haluat suunnitella uuden salauksen, lähetät sen konferenssiin tai lehteen ja saat palautetta muilta tutkijoilta. Mutta tässä tapauksessa en usko, että mitään vertaisarviointia on ollut. Tämä standardi vain on olemassa. En tiedä, onko sisäistä arviointia tehty. Toivon, että olisi, mutta jos olisi, toivon että he olisivat huomanneet heikkouden. Toivottavasti. Mutta toisaalta, olisi myös toivonut, että he olisivat löytäneet haavoittuvuuden itse. Selvä. Sitten unohdinkin jo seuraavan kysymyksen. Olisiko ollut kyse yhteistyöstä sotilas- ja siviilisektorin välillä? Kyllä, kysymys oli, onko yhteistyö sotilaan ja siviilin välillä lisääntynyt? No siis... En oikeastaan osaa sanoa. Kuten sanoin, me ilmoitimme heille, mutta emme saaneet vastausta. Ehkä se tarkoittaa enemmän ei kuin kyllä, mutta en voi sanoa mitä muualla tapahtuu. Kuten aiemmin sanoin, viimeinen kysymys olikin miksei käytetä suoraan AES:ää. 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ä. Sen pitäisi olla niin turvallinen, että myös sotilaskäyttö onnistuu huoletta. Kiitos. Mikrofoni täällä edessä. Hei, kiitos esityksestä. Halusin kysyä, onko todellisessa hyökkäyksessä tweak tiedossa vai ei? Kyllä, ehkä voin palata tähän kalvoon. Tässä näkyy tweak, kyllä? T on tweak, ja se koostuu pääasiassa aikaleimasta. Ja totta kai aika on tiedossa. Voit katsoa kellosta. Tiedät kellonajan. Sanalaskuri alkaa ykkösestä ja kasvaa siitä ylöspäin. Käytetty taajuuskin on tiedossa, koska sitä kuunnellaan radiosignaalina. Kiitos. Täällä seuraava. Ensinnäkin, kiitos erittäin kiinnostavasta esityksestä. Mainitsit, että tarvitaan noin 120 minuuttia dataa. Ymmärtääkseni Half Loopia käytetään vain kädenpuristuksen salaamiseen. Kuinka todennäköistä on, että oikeasti saadaan kasaan kaksi tuntia kädenpuristuksia? Niin, kaksi tuntia on oletus. Oletetaan, että viesti lähetetään aina unohdin tarkalleen, ehkä kymmenen sekunnin välein. Sitten voidaan keskustella, kuinka monta viestiä oikeasti lähetetään. Mutta tuo kymmenen sekuntia per viesti on yksi arvio. Riippuu toki siitä, kuinka paljon liikennettä on. Mutta nuo kaksi tuntia eivät tarkoita kahden tunnin viestimäärää. Se tarkoittaa vain sitä, että joudut odottamaan kaksi tuntia, jotta tarvittavat viestit sattuvat kohdalleen. Eli... Sanot siis, että nämä viestit löytyvät kahden tunnin kuluessa? Kahdessa tunnissa, kyllä. Selvä, kiitos. Kiitos. Meillä on vielä yksi kysymys tuolla. Tiedän, että AES:ää vastaan on hyökkäyksiä, jos sinulla on käytössä siihen liittyviä avaimia. Joten kysyisin ensin, liittyykö tämä hyökkäys sellaiseen tapaukseen? Tämä on itse asiassa hyvin samankaltainen. Kun hyökkääjällä on käytössään liittyviä tweakeja, se vastaa liittyviä avaimia. Ja nyt, mitä tapahtuu... vaihdetaanpa kalvo nopeasti... Tässä kalvossa, tai hetkinen, väärä kalvo. Tässä siis lisätään tweak osaksi avainta. Ja tämä on itse asiassa todella huono idea. Ensimmäisessä tweakable block cipher -julkaisussa sanotaan selvästi: älä tee näin. Jos teet näin, saat turvallisuutta vain suunnilleen puolet bittimäärästä. Tämä johtaa geneeriseen hyökkäykseen, joka toimii, koska tweak on lisätty avaimen osaksi. 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ä. Näitä on dokumentoitu. Luultavasti vain suuremmissa AES-versioissa, mutta kyllä, liittyvät tweakit ovat mahdollisia ja hyökkäykset muistuttavat niitä. Jos saan, vielä yksi pieni lisäkysymys. Kyllä. Miksi he suunnittelivat salauksen tällä tavalla? Ymmärtääkseni tämä oli jo tiedossa, kun Half Loop otettiin käyttöön. Niin, sitäkin. Se on yksi niistä kysymyksistä, joihin haluaisin vastauksen, mutta minulla ei ole sitä. Ehkä he eivät vain tienneet siitä. Tweakin lisääminen avaimeen on helppo tehdä, jos ei tiedä että se on huono idea. Jos ei tiedä, että se ei ole hyvä ratkaisu. Se saattaa näyttää hyvältä idealta ensisilmäyksellä, mutta ei se ole. Täällä oli jatkokysymys. Kiitos. Eli... Vaikka sanoit ettet käsittelisi 48- ja 96-versioita, niin mikä olisi arviosi siitä, kuinka paljon työtä tarvitaan niiden murtamiseen? 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. Se tarkoittaa, että hyökkäys toimii myös niissä. Kryptografian näkökulmasta tämä tarkoittaa jo, että akateemisesti algoritmi katsotaan murretuksi. 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. Toisessa paperissamme käsittelemme näitä suurempia versioita ja joitain niin sanottuja "middle meet" -hyökkäyksiä. Mutta nekään eivät ole käytännöllisiä. Vaikea sanoa, kuinka paljon työtä tarvittaisiin. Mutta yleisesti sanoisin: älä luota niihin, vaikka niitä ei ole vielä murrettu yhtä pahasti kuin Halfloop24, mutta parempi olla käyttämättä. Kiitos. Seuraava kysymys verkosta. Signal Angelilta. Kiitos. Seuraava kysymys on: mitä tapahtuu, jos salaus tapahtuu ajassa 11.03.03.998 ja purkuajassa 11.03.04.001? Eli sekunnit ovat eri. Rehellisesti sanottuna, en tiedä, koska en tunne radioviestintää kovin hyvin. Mutta pahimmassa tapauksessa kokeillaan molemmat. Tarkoitan... Halfloopin purku on todella nopeaa, ja koska selväteksti on hyvin rakenteellista... 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. Mutta kannattaa olla varovainen. Jos tekee sen vain kerran tai kahdesti, ei se haittaa. Mutta jos alat purkaa tuhansia viestejä eri tweak-arvoilla, se ei ole hyvä idea. Silloin hyökkääjäkin saa tietoa ilmaiseksi, mikä ei ole hyvä juttu. Hän saa ilmaiseksi jotain hyödyllistä. Kiitos. Täällä seuraava kysymys. Voiko tämän algoritmin korjata, vai pitäisikö vain käyttää AES:ää? Se riippuu siitä, miten "korjattava" määritellään. Yksi ratkaisu olisi lisätä huomattavasti enemmän kierroksia. 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. Tweakable block cipherien kohdalla kirjallisuudessa tiedetään, miten tämä tulisi tehdä. Esimerkiksi three key -viitekehys voisi auttaa. Mutta onko sen korjaaminen vaivan arvoista? En tiedä. Yleisesti ottaen Halfloopin suunnittelu... AES:n S-boksin käyttö on hyvä juttu. Siirrot ovat vähän omituisia, ne voisi siirtää mix column -operaatioon. Mutta yleisesti komponentit ovat vahvoja. Eli meillä on vahva lineaarinen kerros ja vahva S-boksi. Mutta yksityiskohdilla on väliä. Jos todella haluat, sen voisi korjata. Mutta en usko, että siinä olisi hirveästi järkeä. Kiitos. Takarivissä on joku mikrofonilla. On olemassa hyökkäyksiä, jotka kohdistuvat lohkon kokoon eikä avaimen kokoon, kuten esimerkiksi Sweet32 triple DES:llä. Tässä algoritmissa on pieni lohkokoko. Luuletko, että se on haavoittuva tällaisille hyökkäyksille? Kyllä, juuri niin. Pienien lohkokokojen kanssa täytyy olla erittäin varovainen. Selvätekstissä ei ehkä ole tarpeeksi materiaalia, mutta täällä on tweak, eli... Siinä on kuitenkin jotain vaihtelua. Eli jos teet sen oikein... Saat vaihtelua, mutta silti täytyy olla tarkkana. Mainitsit aiemmin differentiaalikryptanalyysin ja tällöin tutkitaan miten erot leviävät, myös ei-deterministisissä tilanteissa. Yleensä ei voida sanoa kovin paljoa, mutta 24 bitin tapauksessa voidaan todennäköisesti laskea koko DDT-taulukko. Se on siis ero-jakaumataulukko, mikä on hieman kiusallista, koska yleensä symmetrisessä kryptossa sitä ei voida tehdä koko salaukselle. Mutta tässä se saattaa olla mahdollista. Jos siis todella haluat tarkastella turvallisuutta tai korjata salauksen, se ei ole mitätöntä. Tarvitaan kunnon analyysiä, jotta nähdään pysyykö se turvallisena vai ei. Kiitos. Tiedetäänkö mitään algoritmin suunnittelijoista? Voiko se olla NSA:n lahjoittama? Ja käsittääkseni, vaikka minulla ei ole lähteitä, tämä tuli enemmän... Korkeataajuusradioyhteisöltä tämä suunnittelu. Eli... Sanotaan näin... Tarkoitan... Se ei ollut edes vitsi. Tiedän, että lahjoituksia on tehty paljon... Kyllä, kyllä, tiedän. Mutta halusin sanoa, että... On olemassa Schneierin laki. Jokainen voi suunnitella salauksen, joka ei ole turvallinen. Ei turvallinen, mutta jonka suunnittelija itse luulee olevan. En siis syyttäisi suunnittelijoita, vaan niitä jotka standardisoivat tämän ilman kunnollista analyysiä. Heitä minä syyttäisin. Selvä. Takarivin mikrofoni taas. Hei, kiitos hyvästä esityksestä. Onko sinulla käsitystä miksi he yhä käyttävät ECB:tä eivätkä jotain muuta tilaa? Ehkä. Missä se nyt olikaan... ECB:n käyttö on itse asiassa ok, koska kyseessä on tweakable block cipher. Ja koska tweak muuttuu jokaisella... Koska tweak sisältää sanalaskurin ja aikaleiman, ECB:n käyttö on ihan hyväksyttävää. Se ei siis ole haavoittuvuus. Se tekee siitä jopa aika yksinkertaisen. Selvä, täällä eturivissä. Onko sinulla proof of concept tästä hyökkäyksestä, vai onko se juridisesti ongelmallista? Meillä on toteutus. Julkaisussa on linkki GitHubiin, ja siellä on toteutus. Me teimme sen. Emme tietenkään salakuunnelleet HF-radiota, vaan teimme tämän laboratoriossa. Generoimme selvätekstit itse ja sitten ajoimme hyökkäyksen. Hyökkäyksessä on käytännössä kaksi vaihetta. Ensimmäinen on oikeastaan juuri se, mitä näytin. Eli selvitetään... 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. 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ä. Tämän voi ajaa GPU:lla ja se vie ehkä kahdeksan tuntia lisää ja sitten se on siinä. Selvä, tarkistetaan vielä. Ei enää kysymyksiä salissa. Joten suuret kiitokset loistavasta esityksestä Lukas Stennisille. ♪ (38C3 outromusiikki) ♪ Translated by Robert Ylitalo (KYBS2001 course assignment at JYU.FI)