Etikettarkiv: AES

Krypto och säkerhet i en övervakad värld

Uppdaterad 2013-09-13 om CryptoAPI.

Efter nattens nya avslöjanden om NSAs avlyssning har det kommit mycket frågor om vad som stämmer, vad som kan vara knäckt, vad man kan lita på och hur man kan skydda sig.

Eftersom det trots alla avslöjanden saknas mycket konkret information om vilka algoritmer, protokoll, produkter och tjänster som på olika sätt är svagare än förväntat är det fortfarande klart förvirrande. Men jag tycker att den analys och de rekommendationer som Bruce Schneier publicerat är bra.

En av de stora frågorna är huruvida SSL/TLS faktiskt är säkert. Forskaren Matthew Green har publicerat en bra analys väl värd att läsa. Han och Bruce är relativt samstämmiga i att algoritmerna, inte minst AES är bra. Även om NSA har kryptologer som hittar sätt att reducera styrkan hos AES med ett antal bitar är det inte det som är det konkreta problemet (det är faktiskt det dom förväntas arbeta med).

Nej problemet är att man nu säger att man på olika sätt attackerar implementationerna av ex SSL/TLS. Antingen hittar svagheter som sedan utnyttjas eller mer tveksamt tvingar leverantörerna att införa svagheter. Det vill säga man avsiktligt gör oss alla mer sårbara än nödvändigt, för dessa sårbarheter kan hittas och utnyttjas inte bara av NSA och deras kompisar.

De vanligaste implementationerna av SSL är troligen Microsofts CryptoAPI samt OpenSSL. Den första är stängd för granskning kräver avtal för att få rätt att granska koden och kan därför inte ges samma tilltro som en öppen och fri lösning där alla när som helst kan granska, modifiera, bygga och sedan kommunicera sina observationer och erfarenheter.

OpenSSL är öppen kod, men har en historik med mycket svagheter (som dock högst troligt inte är avsiktliga) vilket visar att säkerheten och tilliten inte med nödvändighet är fantastiskt bara för att koden är öppen. Men just nu är OpenSSL, GnuTLS, Nettle, Sodium och liknande öppna bibliotek antagligen det bästa vi kan använda.

Vad gäller hårdvara är det svårare. Vi kan nog utgå ifrån att en normal processor generellt utför sina beräkningar på ett korrekt och förväntat sätt. Även instruktioner för kryptoacceleration som Intels AES-NI ger verifierbart korrekt kryptering och dekryptering. Däremot vet man inte vad som faktiskt sker med nyckeln som används förutom det förväntade beteendet.

Än mer problematiskt blir det med inbyggda slumptalsgeneratorer som Intels nya RdRand (Bull Mountain). Den går knappast i dagsläget att lita på och använda direkt för nyckelgenerering. Att använda RdRand som en av flera entropikällor som sedan matar en PRNG man litar på bör fortsatt kunna fungera.

En intressant sak som kom fram i natt var att misstankarna om bakdörren i NISTs slumptalsgenerator Dual_EC_DBRG antagligen bekräftades. Detta visar vikten av att standarder utvecklas i en öppen process och att alla detaljer in en specifikation går att härleda. Det är bland annat därför det Kinesiska strömkryptot för mobilsystem ZUC är svårt att lita på eftersom det innehåller konstanter och detaljer som inte går att härleda.

Det enkla vi kan göra är att använda öppna implementationer av algoritmer som tagits fram i en öppen process. Och kan vi välja en längre nyckel så gör det. Det kostar väldigt lite för dig som användare men gör det mycket svårare för motståndaren oavsett vem det är. Och tänk igenom på vilka verktyg du använder för att generera och lagra nycklar. Att använda 1024 bitars RSA-nycklar för egen kommunikation eller i certifikat känns i dag som fel.

Avslutar med ännu en länk. Denna gången till en chatt med säkerhetsexperten Jakob Schlyter på Kirei som tänker bra och klokt.

Fysiker som bygger säkerhet kontra Intels Bull mountain

För några veckor sedan presenterade några fysiker en ny slumptalsgenerator baserad på kvantfenomen. Resultaten har fått viss uppmärksamhet.

Insamlingsutrustningen som används för att fånga kvantfenomenen.
Insamlingsutrustningen som används för att fånga kvantfenomenen.

Det är alltid spännande med nya forskningsresultat som ger oss insikt i hur vår verklighet fungerar. Jag gillar också att man försöker omvandla sina forskningsresultat till något som går att använda. Tyvärr kan jag utifrån ett säkerhetsperspektiv inte bli speciellt intresserad och imponerad. Skälet till detta är att jag återigen upplever att fysikerna tyvärr är blinda för det område de försöker applicera sina resultat. Det är inte första gången fysiker presenterar nya rön som man ser kan användas för krypto, säker kommunikation, eller som slumptalsgeneratorer. Det är i och för sig intressant och bra. Men problemet är att man ofta tror sig löst ett problem som inte längre är ett problem.

När det kommer till krypton och slumptalsgeneratorer har vi i dag lösningar som ger bra mycket skydd och hög prestanda/kapacitet till realistiska kostnader för väsentligen alla problem och användningsfall. Problemen är istället oftast att få till praktiskt fungerande implementationer, få till säker användning, hantera alla buggar, sidoattacker (inklusive social ingejörskonst) och rena misstag. Och för dessa enkla men viktiga problem är sällan rätt svar kvantfenomen som kräver masrar kylda med flytande väte för att fungera.

Tyvärr har fysikerna bakom den nya slumptalsgeneratorn dessutom fel i sak, vilket visar att dom inte kan applikationsomrepdet. Dom säger:

To date, most random number generators are based on computer algorithms. Although computer generated random numbers can be useful, knowing the input conditions to the algorithm will lead to predictable and reproducible output, thus making the numbers not truly random. To overcome this issue, random number generators relying on inherently random physical processes, such as radioactive decay and chaotic behaviour in circuits, have been developed.”

Detta är inte korrekt. Moderna slumptalsgeneratorer i operativsystem bygger inte på algoritmer som är deterministiska. Mer exakt – dom bygger inte bara på deterministiska algoritmer. Algoritm och fysiska slumpmässiga källor är inte ömsesidigt uteslutande. En modern slumptalsgenerator, som finns i alla operativsystem består grovt sett av två delar.

Den första delen är en eller flera entropikällor. Från entropikällorna samlas värden från slumpmässiga, fysiska händelser in. Exempel på entropikällor som används är tid mellan tangentbordstryckningar, skillnad i läshastighet från en hårddisk, digitala ringoscillatorer i chip eller termiskt brus i radiomottagare. Bra entropikällor ger många händelser/tidsenhet och är dessutom svåra eller helst omöjliga att manipulera. Kombinationen hög prestanda och tålig mot påverkan är svår att få till. Därför används ofta mer än en entropikälla och källorna övervakas för att detektera fel.

Den andra delen består ofta av en deterministisk algoritm – en psedudoslumpgenerator (PRNG). Oftast skapas PRNG:n genom att använda kryptografiska hashfunktioner som SHA-256, strömkrypton som RC4 eller Snow, eller blockkrypton som AES i en strömkryptomod som CTR. Den insamlade entropin anvönds för att initiera PRNGn. Efter att PRNG:n genererat ett visst antal värden startas PRNG:n om med nya värden från entropikällan. Ibland sker även en viss filtrering (whitening) mellan entropikällan och PRNG:n, detta för att ta bort värdemässiga vridningar (bias) så att de möjliga initieringsvärdena (ofta kallade frön) är så likafördelade som möjligt.

Kombinationen av flera entropikällor från vilka värden samlas in, och en bra, säker PRNG ger slumptalsgeneratorer som är tåliga mot störningar och med kapacitet att generera stora mängder slumptal med bra kvalitet. Ett bra exempel på detta är Intels nya slumptalsgenerator Bull Mountain som finns i Ivy Bridge-processorerna som släpptes igår 2012-04-23.

Bull Mountain har en entropikälla kapabel att generera flera Gbit/s i rådata. Rådatat filtreras med AES i CBC-mod. Värdena ut från filtreringen används sedan för att initiera en PRNG byggd med AES-CTR. Bull Mountain ger bättre prestanda än fysikernas generator, är kostnadseffektiv (i jämförelse med fysikernas lösning), drar lite ström, finns direkt tillgänglig för applikationer genom RdRand-instruktionen och kommer att finnas i miljontals med datorer, laptops och prylar inom ett par år.

Ivy Bridge-core
Intels Ivy Bridge-processor. De fyra processorkärnorna delar på en Bull Mountain-generator.

Ett annat bra exempel är slumptalsgeneratorn i Yubicos YubiHSM som har två olika entropikällor vilka matar en PRNG byggd med AES. Allt förpackat i en billig och enkel USB-sticka, vilket gör den lätt att integrera.

YubiHSM intui en server.
YubiHSM monterad i en server.

Intels Bull Mountain/RdRand och YubiHSM tycker jag är mycket, mycket mer spännande och viktigare ur ett användbart säkerhetsperspektiv än fysikernas labbutrustning.


Entropikällan i den nya generatorn.

(Fysikerna säger att den nya källan inte går att manipulera. Men jag fungerar på hur svårt det är att störa källan, ex med en annan laser. Även om kvantfenomenet i sig inte går att manipulera är sensorn ofta det som attackeras.)

Och till sist kan jag inte låta bli att sucka lite över hur fysikerna försöker få ut sin nya fina slumptalsgenerartor. Ja, det är jättefint att det finns ett JSON API (Github-projekt som pratar med generartorn), eller att jag kan gå och få några byte data genererat på webbsidan (som är seg). Men det finns ingen som helst säkerhet kopplad till API:t eller webbsidan.

Själva poängen med en bra slumptalsgenerator är ju att du ska kunna lita på den. Om generatorn sitter inuti min processor är det lättare att lita på den än om den befinner sig i Australien och att datat skickas utan något som helst skydd mot manipulation, äkthetskontroll eller avlyssning.

Knäckta satellitkrypton och hemliga algoritmer

Ars Technica skriver om hur forskare i Tyskland lyckats knäcka krypton som används vid satellitkommunikation.

Satellitkommunikation

Eftersom signalen från en satellit täcker så stora ytor är det enkelt att fånga in signalen. För att skydda samtal från avlyssning krävs därför ett bra konfidentialitetsskydd – ett bra krypto.

Det är den internationella standardriseringsorganisationen ETSI som specificerat både kryptona GMR-1 och GMR-2 kryptona samt hur dom ska användas. Hur dom ska användas är öppen information, men själva kryptona är hemliga. ETSI skriver i sin specifikation (pdf):

The internal specification of algorithm A5-GMR-1 is managed under the responsibility of the GSC; it will be made available in response to an appropriate request

Att algoritmerna är hemliga hindrade dock inte forskarna. Genom hacka sönder uppdateringsfiler av programvaran till telefoner samt genom att analysera trafiken vid användande av satellittelefoner från Thuraya och Inmarsat kunde forskarna räkna ut hur algoritmerna fungerar.

Forskarnas analys visar att det skydd kryptona ger är så svagt att det finns en klar risk att satellitbaserad trafik inklusive samtal går att avlyssna. I artikeln Don’t Trust Satellite Phones: A Security Analysis of Two Satphone Standards skriver forskarna:

In this paper, we analyze the encryption systems used in the two existing (and competing) satphone standards, GMR-1 and GMR-2.

We were able to adopt known A5/2 ciphertext-only attacks to the GMR-1 algorithm with an average case complexity of 2**32 steps. With respect to the GMR-2 cipher, we developed a new attack which is powerful in a known-plaintext setting. In this situation, the encryption key for one session, i.e., one phone call, can be ecovered with approximately 50–65 bytes of key stream and a moderate computational complexity.

A major finding of our work is that the stream ciphers of the two existing satellite phone systems are considerably weaker than what is state-of-the-art in symmetric cryptography.

(På forskarnas egna webbplats finns mycket mer information.)

Forskarnas bedömning är att eftersom det skulle kosta så mycket att byta algoritmer kommer dessa inte att ändras. Istället rekommendrar dom att betrakta kommunikationen som öppen och sedan komplettera med ytterligare lager av skydd. Tyvärr kostar dessa extraskydd kapacitet i en förbindelse som redan har ganska begränsad kapacitet. Dessutom kan dessa skydd införa ökad fördröjning och andra trafikala problem. Inmarsat, som även är operatör av satellitkommuninkation har över än så länge inte kommenterat eller gett några officiella råd till sina kunder.

Tyvärr är detta inte första gången ett hemligt krypto visat sig vara svagt och långt ifrån vad man kan förvänta sig av ett krypto som används i befintliga system. I smarta kort av MiFare Classic-typ, som bland annat används för betalning i publika transportsystem i Göteborg och Stockholm, finns ett hemligt krypto kallat Crypto-1. Trots att kryptot var hemligt lyckades forskare klura ut både hur kryptot fungerar, och att dess säkerhet var i stort noll.

Keeloq är ett krypto som används i elektroniska bilnycklar av i stort sett samtliga stora biltillverkare. Även detta krypto var hemligt och även här lyckades forskare räkna ut hur det fungerar samt visa på kryptots monumentala brister.

För ETSI är forskarnas nya resultat ännu ett misslyckande. Deras kryptostandarder för DECT, GSM, 3G och satellitkommunikation har alla visat sig ha stora brister. När det kommer till kryptoalgoritmer är det frågan om ETSI lever upp till sin devis World Class Standards.

Att hålla informationen om vilka kryptografiska algoritmer du använder hemliga är inte ett problem. Du kan helt enkelt strunta att berätta det. Problemet är om säkerheten hos ditt system beror av att denna information är hemlig.

Information som om den kommer ut kan skada din verksamhet ställer krav på skydd som kostar pengar. Du behöver införa mekanismer och metoder för att begränsa tillgången. Skyddet behöver dessutom övervakas så att du vet att det faktiskt fungerar.

Dessutom bör du ta fram en plan för hur du ska agera om informationen trots allt kommer ut. När hemligheten kommit ut måste den troligen bytas ut, alternativt att du måste kasta in handduken och införa andra skyddsåtgärder så som forskarna nu föreslår att användare av satellitkommunikation bör göra. Att byta algoritm kan bli väldigt kostsamt. Är det en algoritm som används i inbyggda system som tillverkas i stora volymer, används i fält och har lång livslängd är innebär bytet eventuellt att du måste byta ut hela systemet.

Hade din hemlighet istället bara varit en kryptonyckel hade bytet troligen handlat om att byta ut en sträng på 16, 32, 64 tecken eller liknande. Säkerheten sitter i nyckeln. Den är allt du egentligen ska behöva skydda.

Bra kryptoalgoritmer försvagas inte av att informationen om hur dom fungerar är känd. Tvärt om beror vår tillit på algoritmerna just av öppenheten. Algoritmen som utgör blockkryptot AES undersöktes ett stort antal gånger på olika sätt innan den accepterades som standard. Och AES fortstt under kontinuerlig undersökning. Det finns generationer av forskare som fixat sin hatt eller årets publiceringar genom att försöka hitta på nya sätt att vara elak mot AES.

Ju fler undersökningar som en algoritm står emot desto större tillit vågar vi sätta till den. Och det är öppenheten, tillgängligheten som gör dessa undersökningar möjliga.

I jämförelse med en öppen algoritm undersöks en hemlig algoritm mer sällan. Dessutom sker undersökningen oftast under en begränsad tid. När en hemlig algoritm bedömts som säker tas den i bruk och sedan sker sällan omvärdering av algoritmens säkerhet.

Det finns användare av hemliga algoritmer som vet vad dom gör, som har den spetskompetens som krävs att göra en bra bedömning. Men när erkända kryptoforskare som medlemmarna i ETSIs säkerhetsgrupp SAGE gör fel och försvagar snarare än förstärker en algoritm (som är fallet med KASUMI, byggt på MISTY-1) är det inte självklart att även en enskild grupp med aldrig så skarpa experter gör en bra bedömning. Den mekanism som har störst chans att ge bra algoritmer är öppna processer med många, oberoende tester över lång tid. Att skynda långsamt och kontinuerligt ompröva resultat.

AES togs fram genom en sådan process, strömkryptona i eSTREAM togs fram genom en sådan process och kommande hashfunktionen SHA-3 tas fram på detta sätt. Det finns inga garantier att detta ger säkra algoritmer, det visar bland annat eSTREAM där några krypton i dag är knäckta. Men detta är den bästa metod vi har i dag och det är en process som förbättras för varje iteration.

Även ETSI verkar till slut ha lärt sig av alla sina misstag och i arbetet med den senaste standarden ZUC har det faktiskt organiserats seminarier, workshops, diskussionsforum på nätet och varit en mycket mer öppen process (även om det finns mindre öppna designval även i ZUC).

Om du oroar dig för att någon ska veta hur ditt system fungerar så strunta att berätta vilket krypto du använder. Men hitta inte på egna algoritmer, utan använd öppna, etablerade standarder som stått emot granskning under lång tid. Gör du det är nyckeln till kostnadseffektiv,fungerande säkerhet din kryptonyckel.

Artikel om hur kryptering fungerar

IDGs webbplats finns nu den artikel om hur kryptering fungerar jag skrivit, en artikel IDG publicerade i tidningen Techworld för ett tag sedan.

Artikeln försöker förklara hur några vanliga krypton fungerar. Eftersom man i en artikel för publicering har hårda gränser på antalet tecken får man alltid göra begränsningar och tyvärr ofta skära bort saker känns viktiga – detta för at få med viktigare saker. Artikeln fokuserar därför på symmetriska krypton, exempelvis AES.

Min utgångspunkt vid urvalet av algoritmer var typiska krypton vid säker kommunikation på Internet (ex med hjälp av OpenSSL). Sedan borde man naturligtvis skriva om asymmetriska krypton, hashfunktioner, protokoll, kryptomoder och alla andra komponenter som tillsammans bygger upp funktionaliteten för säker kommunikation. Förhoppningsvis finns det utrymme för uppföljningsartiklar om detta.

IDG har även lagt upp en annan artikel jag skrivit – en artikel där jag tittar närmare på några olika USB-minnen som på olika sätt försöker erbjuda säkerhet.