Dagens folkbildningsuppdrag: Förklara hur FRA kan hitta viss intressant information trots att (i stort sett) allt intressant data lär vara krypterat.
Det finns ingen rimlig anledning att tro att FRA skulle kunna “knäcka”, i bemärkelsen att avkryptera utan nyckel, vanligt förekommande starka krypteringsalgoritmer som t.ex. Rijndael (AES), Serpent eller Twofish. Dessa, med rätt nyckel- och blocklängd, är enligt allt vi vet i praktiken oknäckbara via bruteforce i en överskådlig framtid (dvs flera generationer), och har inga kända kryptografiska svagheter i sin konstruktion som skulle kunna underlätta arbetet. Att kunna ta sig genom dessa skulle kräva att FRA inte bara har tillgång till världsledande beräkningskraft (vilket de har; även om deras huvudsakliga beräkningsmaskin nyligen nedgraderats och inte längre är den femte kraftfullaste i världen, så har de yrkat på kraftigt ökade budgetanslag och jag misstänker att ett tiotal tolkar inte står för hela den månghundramiljonskostnaden varje år), inte bara att de har många världens bästa kryptoanalytiker (mjae… några stycken kanske… sverige är knappast världsledande på den fronten… men NSA har ett gäng i alla fall), utan även att de upptäckt matematiska framsteg som inte kan kallas något annat än fullkomligt revolutionerande och världsomtumlande (dvs den typ av upptäckter som sker någon gång per många hundra år); och detta verkar inte troligt att de skulle kunna hålla hemligt speciellt länge.
Men betyder det att uppdraget är helt meningslöst, att man är nödd och tvungen att kasta in handduken? Nej, så enkelt är det inte, och lösningen stavas trafikanalys.
I sin enklaste form handlar det om att ta reda på vem som kommunicerar med vem, med tämligen självklar nytta. Även att mäta frekvensen och volymen av kommunikation kan ge information, även om man inte vet vad som sägs. När exempel på vad FRA givit oss begärs, tas det ofta upp att man lyckats förutspå nazi-tysklands anfall på Sovjetunionen i förväg, genom att korrekt tolka en ökning och typförändring av den interna radiokommunikationen, utan att för den skull kunna avkryptera kommunikationen i sig.
Vidare kan alltid feldesignade system läcka data, även om de använder stark kryptering som ett delmoment, om inte alla andra delmoment är likaledes starka. För att ta ett exempel så kan man enligt ett par relativt nyligt publicerade forskningsartiklar analysera krypterat VOIP-data (alltså “internettelefoni”, IP-telefoni) och komma långt i att avgöra innehållet, utan att knäcka krypteringen. Joachim Strömbergson skriver mycket pedagogiskt om detta på sin Kryptoblog (ett absolut måste i feedreadern för alla som är intresserade av krypton), men jag ska försöka ta ner det ytterligare ett steg eller två mot lekmannanivå.
Grundprincipen bygger på att alla vanligt förekommande codec för att hantera taldata komprimerar inkommande information (alltså ljudet från en mikrofon) på ett variabelt vis, dvs minskar datamängden på ett sätt som överensstämmer med pskykoskustiska algoritmer så att det matchar människans subjektiva uppfattning av ljud. Vissa delar av en talad sekvens kan man förstå även om den är starkt förvrängd (= starkt komprimerat), men andra delar behöver hög klarhet (= låg komprimering) för att vara förståeligt. Man kan på så vis kraftigt begränsa den faktiska datamängden som behöver sändas, utan att det märkbart minskar tydligheten i det som mottas. Jämför med vanlig enkel MP3-kodning av musik, där man man minska datamängden till ungefär 10% av orginalet utan att man märker en tydlig skillnad. I vissa ljudfrekvenser är örat mindre receptiv, i andra mer. Vid snabba övergångar mellan olika frekvenser behövs mer data, när ljudet är enformigt behövs mindre. Genom att minska datamängden som sänds när det mänskliga örat ändå inte märker så stor skillnad, men hålla datamängden hög när det spelar roll, uppnår man ett av huvudkraven på IP-telefoni, att sända så tydligt tal som möjligt med så låg bandbredd som möjligt.
Detta komprimeringssteg gör man innan man påför någon form av kryptering (av den enkla anledningen att krypterat data är oskiljbart från slumpmässigt data, och därmed okomprimerbart eftersom det inte finns några mönster). Ett resultat därav är att det komprimerade datat (med ett vanligt strömkrypto) är lika “stort” som orginaldatat. Och häri ligger dataläckaget.
Om man känner till mängden data som sänds (genom att man avlyssnat dataströmmen), och den algoritm som ursprungligen komprimerat datat (ofta inte en svår gissning, det finns inte så många alternativ), kan man i viss mån gå baklänges för att hitta de förändringar i ljudformer som skulle kunna orsaka komprimerat data med samma storlek. Genom att mäta skillanden mellan högkomprimerat och lågkomprimerat data kan man hitta mönster i talet, i vissa fall mellan olika stavelser, i vissa fall mellan individuella tydliga ljudbilder. För att citera Strömbergson (som i sin tur citerar artikelförfattarna):
Eftersom CELP-kodare arbetar på korta fonem och frikativ blir mer komplicerade ord lättare att detektera. Ord som artificial och intelligence visade sig vara lätta att detektera. (Gissningsvis skulle Laplacetransformerade differentialekvationer sticka ut ordentligt..).
Resultatet är riktigt imponerande/skrämmande/överraskande:
Our results show that an eavesdropper who has access to neither recordings of the speaker’s voice nor even a single utterance of the target phrase, can identify instances of the phrase with average accuracy of 50%.
In some cases, accuracy can exceed 90%. Clearly, any system that is susceptible to such
attacks provides only a false sense of security to its users.
Frasen Young children should avoid exposure to contagious diseases predikterades perfekt i de tester som utförts. Forskarna fick dock en del falska träffar (false positives), men ju längre den sökta frasen var desto mindre falska fel erhölls.
Vidare, och kanske lika viktigt ur ett underrättelsetjänstperspektiv, så är det (relativt) trivialt att avgöra språket en krypterad text är skriven på:
Författarna använder här variansen i samtalet i kombination med information om fördelning av ord, och speciellt bigram och trigram av ord för olika språk. Dessa fördelningar används för att skapa mönster eller prediktorer. Och det fungerar mycket bra. Forskarna skriver:
For instance, our 21-way classifier achieves 66% accuracy, almost a 14-fold improvement over random guessing. For 14 of the 21 languages, the accuracy is greater than 90%. We achieve an overall binary classification (e.g., “Is this a Spanish or English conversation?”) rate of 86.6%.
Återigen, allt detta sker utan att på något vis försöka avkryptera datat, det handlar bara om användning av sidoinformation. Just detta fall är enkel att undvika när man känner till det; det gäller “bara” att släppa lite på kravet om bästa möjliga ljudkvalitet till minsta möjliga bandbredd. Istället för att använda ett krypto som ger krypterat data som är exakt lika stort som det inkommande okrypterade datat, så kan man använda s.k. blockkrypton som arbetar på data i block av en bestämd längd (t.ex. 512 byte, 256 byte, 128 byte). Om datat som ska krypteras som inte är jämt delbart på blocklängden, adderas slumpmässig information på slutet (lite förenklat). På så vis blir överensstämmelsen mellan den ursprungliga datamängden och den krypterade datamängden mindre, men i gengäld “slösas” bandbredd på slumpmässig information som inte förbättrar ljudkvalitén, utan bara slängs efter avkryptering. Ju större block, desto mindre korrellation mellan krypterat och okrypterat data, men även desto större bandbreddskrav. Siffror jag sett tyder på att en blocklängd på 512 byte renderar angreppsformen fullkomligt overksam, med en ca. 30% ökning av bandbredden, och en padding till 128 byte gör den nästan overksam med en ca 16% ökning av bandbredden.
Ett annat sätt att undvika problemet, är att helt enkelt använda en enklare komprimeringsalgoritm till att börja med, dvs en som inte komprimerar datat olika mycket beroende på hur det låter. För att återigen ta MP3-exemplet, alla som kämpat sig genom inställningarna med olika VBR (variable bit rate) respektive CBR (constant bit rate) vet vad det innebär för datamängden och ljudkvaliten att alltid komprimera lika mycket, oavsett vilket indata man har att jobba med.
Poängen är att visa på ett exempel bland många på hur man indirekt kan utläsa innebörden av en konversation, utan att egentligen direkt se vad som skrivs/sägs. För att ta ett annat exempel som påminner om detta från ett rent beräkningsperspektiv, så kan jag påminna om den forskningsrapport som slog ner som en bomb (OK, som en liten granat i alla fall) några år sedan när några forskare på Berkeley visade att man med skrämmande hög säkerhet kan tolka vad som skrivs enbart utifrån ljudupptagningar ifrån tangentborden det skrivs på; man skriver inte alla bokstavskombinationer lika snabbt, och man slår inte lika hårt på alla tangenter. Statistisk analys av förhållandet mellan knapptryckningarna och deras inbördes kraft räcker för att tolka informationen. Ett exempel på effektiviteten:
Acoustical spying
Here is an example of text recovered by UC Berkeley researchers using audio recordings of keystrokes.Original Text (Notice that the text contains two typos, underlined):
the big money fight has drawn the support of dozens of companies in the entertainment industry as well as attorneys gnnerals in states, who fear the file sharing software will encourage illegal activity, stem the growth of small artists and lead to lost jobs and dimished sales tax revenue.
Recovered Text Before Spell Check (underlined words are wrong):
the big money fight has drawn the shoporo od dosens of companies in the entertainment industry as well as attorneys gnnerals on states, who fear the fild shading softwate will encourage illegal acyivitt, srem the grosth of small arrists and lead to lost cobs and dimished sales tas revenue.
Recovered Text After Spell Check and Decoding (underlined words are wrong):
the big money fight has drawn the support of dozens of companies in the entertainment industry as well as attorneys generals in states, who fear the film sharing software will encourage illegal activity, stem the growth of small artists and lead to lost jobs and finished sales tax revenue.
Det är den här typen av analys jag (utan något konkret bevis, bara baserat på min egen kunskap om vad jag själv skulle göra i deras ställe) misstänker att FRA gör av krypterat data. Det är den här typen av beräkningar jag misstänker att deras mäktiga beräkningskluster nyttjas till (förutom de mer triviala ärendena att bygga sociogram över vilka som kommunicerar med varandra).
Betyder detta att jag har svängt och anser att FRA-lagen är en bra idé? Nej, jag står kvar där jag alltid stått. Militär signalspaning är något vi kan, bör och skall ägna oss åt (om än kanske inte inom den befintliga organisationen som finns idag), inom rimliga ramar och på rimlig tid och plats. Jag tror även att det är bra att tydligt och klart lagstifta om inom vilka gränser en sådan spaning får bedrivas inom i fredstid. Men det betyder inte att man bör, eller får, utöka informationsunderlaget på det vis som föreslagits (och faktiskt beslutats). Att ge FRA tillgång till i stort sett hela den civila befolkningens samlade kommunikation, är inte ett medel som gagnas av ändamålet. För det första tror jag att uppgiften i sig blir lidande, den blotta mängden information som presenteras lär göra att intressant information drunknar i bruset, som jag skrivit om tidigare. Vill man inte läsa min långa text kan jag citera från Wikipedia, där det skrivits mer konkret om den s.k. False positive paradox:
The false positive paradox is a situation where the incidence of a condition is lower than the false positive rate of a test and therefore when the test shows that a condition exists, it is probable that the result is a false positive.
If there is a medical test that is accurate 99% of the time about a disease that occurs in 1 out of 10,000 people, then testing one million people would approximately the following results:
Healthy and test indicates no disease (true negative)
1,000,000 * (9999 / 10,000) * .99 = 989901
Healthy and test indicates disease (false positive)
1,000,000 * (9999 / 10,000) * .01 = 9999
Unhealthy and test indicates disease (true positive)
1,000,000 * (1 / 10,000) * .99 = 99
Unhealthy and test indicates no disease (false negative)
1,000,000 * (1 / 10,000) * .01 = 1If a patient received a positive response from the test the odds are ~99.02% (9999/10098) that they are healthy and the test is incorrect even though the test is 99% accurate.
Men även om man accepterar att den typen av avlyssning verkligen skulle vara verksam, så anser jag ändå att den är fel på flera grundläggande plan. Att få fram information av militärt värde får aldrig bli det övergripande målet som överskuggar allt annat i ett demokratiskt samhälle. Den information man skulle kunna få är helt enkelt inte värt de inskränkningar som det för med sig; en total kontroll av allt vi skriver och säger och tänker. Blotta vetskapen att allt vi gör, allt vi säger, allt vi läser är övervakat, är något som begränsar våra liv långt mer än acceptabelt. När man även väger in det nästan garanterade missbruket av den informationen som kommer (speciellt i de senaste lagskrivningarna, som endast leder till att fler människor ser informationen!), så är reaktionen på lagen ofrånkomlig i min mening. Den är inte acceptabel, och kommer aldrig bli acceptabel oavsett vilka kontrollinstanser som tillsätts; det är ett grundfel som måste rivas upp vid roten.
Jag skriver dock detta inlägg för att jag tror att det gagnar diskussionen att förstå vad som möjligtvis kan förväntas komma ut av spaningen/avlyssningen. Man bör aldrig vara oförberedd på motargument.
EDIT: Rättade några stavfel, framförallt Strömbergsons namn (pinsamt av mig…) och förtydligade stycket om blockkrypton.
Aloha!
Bra och imponerande långt inlägg. Jag gillade liknelsen med mp3 för att förklara VBR-kodning.
En liten petmosterdetalj: Jag heter Strömbergson, inte Strömberg. Japp, faktiskt. 😉
Beklagar, jag måste ha varit trött när jag skrev. Rättat nu, äras den som äras bör 😉