Cryptech – En öppen plattform för säkerhetsmoduler

Grunden av mycket av säkerheten på Internet i dag hänger på tillgången till bra slumptal som används tillsammans med ett några olika kryptografiska algoritmer för att skydda exempelvis skydda DNS-systemet, routing samt säker inloggning på webbplatser och datorer. På grund av förra årets många avlöjnanden om massavlyssning och försök till manipulation av de säkerhetsmekanismer vi tror oss kunna lita på sker i dag en stor omvärdering av vad som går att lita på. Funktioner med dålig transparens och med liten möjlighet att verifiera och funktionaliteten har i dag svårt att få tillit.

För algoritmer som AES, SHA-256 och RSA pågår diskussioner om vad som går att lita på, men då algoritmerna är öppet definierade och en given implementation oftast går att verifiera är dom fortfarande betrodda. Men när det kommer till nyckeln i säkerheten – slumptalen är det sämre ställt. Oftast genereras dessa slumptal och nycklar med en så kallad HSM – en High Security Module (eller Hardware Security Module). Detta är bokstavligt talat svarta lådor med aktiva skalskydd som hindrar någon att öppna dom.

Exempel på en HSM.
Ett exempel på en HSM – ett PCIe-kort från SafeNet med en svart låda där säkerhetsfunktionerna bor.

Leverantörerna av dessa maskiner lovar att dom fungerar som dom ska och maskinerna oftast validerade enligt säkerhetsstandarder som NIST FIPS 140-2 (ofta nivå fyra) och Common Criteria. Men kan man lita på att det innebär att maskinerna gör vad som utlovas (och bara det)?

Vi vet i dag att det skapas och genereras nycklar som är mycket sämre än vad man kan förvänta sig. Förra året publicerades en undersökning av certifikat med RSA-nycklar som används i ID-kort i Taiwan. Korten har blivit certifierade av NIST i USA, CSE i Kandada sam en godkänd CC-evaluering i BSI i Tyskland. Trots detta kunde ett forskarteam med bland annat Tanja Lange, Nadia Heninger och Daniel J Bernstein visa att nycklarna på korten är dåligt skapade, att det finns gemensamma primtal i flera av certifikaten och att det går att forcera säkerheten. Inte alls bra.

I ett försök att förbättra säkerheten runt nyckelgenerering och inte minst möjligheten att skapa tillit till HSM:er har det startats ett internationellt projekt för att ta fram en öppen HSM-plattform. Projektet heter Cryptech och Secworks är stolta över att vara med i projektet och arbetar aktivt för att utveckla plattformen.

Syftet med projektet är att få fram de komponenter, verktyg och dokumentation som gör det möjligt för att vem som helst själv ska kunna (eller be någon annan dom litar på) att plocka ihop en HSM dom kan verifiera fungerar som förväntat och därmed kunna lita på. Målet är alltså inte en färdig applikation eller en hårdvaruburk. Däremot kommer vi att ta fram referensimplementationer som mer eller mindre direkt går att använda. Och eftersom alla kod och designunderlag är öppna kan vem som helst som vill faktiskt bygga och sälja färdiga HSM:er baserat på Cryptech. (Koden som utvecklas för Cryptech kommer att vara BSD-licensierad och all dokumentation kommer att vara Creative Commons-licensierad.)

Det finns många fundamentala utmaningar att brottas med i projektet – inte minst hur man skapar öppen hårdvara implementerad i FPGA- eller ASIC-teknik där det finns spårbarhet och kontroll genom verktygsflödet. Att få kontroll på sidokanaler i olika former kräver både kompetens och tekniska resurser som projektet inte har i dag. Men det hindrar oss inte ifrån att försöka.

Just nu pågår mycket arbete med att etablera de första hårdvaruplattformarna för att kunna göra verifiering på verklig hårdvara. I dag används utvecklingskort från TerasIC med Alteras Cyclone IV- och Cyclone V-familjer. Just i dag sker exempelvis verifiering subsystemet för hashfunktioner (med SHA-1 och SHA-256) på ett TerasIC C5G-kort:

TerasIC C5G
TerasICs C5G-kort som via USB pratar med ett värdsystem för att testa hashimplementationer.

Samtidigt pågår både ett underökande arbete, diskussioner och början till definition av pudelns kärna – slumptalsgeneratorn. Vilken eller vilka entropikällor ska vi stödja, hur ska insamling av entropi ske, vilken CSPRNG ska vi använda, hur skapar man transparens i en slumptalsgenerator etc? Många frågor med många möjliga svar och följdfrågor blir det.

Under 2014 ska en första prototyp till HSM tas fram. Och för att driva utvecklingen har en liten uppsättning av användningsfall definierats. Bland annat ska man kunna använda Cryptech i RPKI och DNSSEC. Men detta är inte de enda användningsfall som Cryptech ska kunna stödja. Och vi är mycket intresserade av att höra vilka andra behov som finns. Inte minst är detta viktigt för att definiera bra gränssnitt mot lägre lagers säkerhetsfunktioner. Vilka anrop och datastrukturer krävs för att effektivt kunna använda Cryptech är mycket viktigt att få koll på.

Funktionalitet som kommer att finnas i slutet av 2014 är bla RSA (nyckelgenerering, kryptering/dektyptering, signering/verifiering) med minst 4096 bitars nyckel, en fullt fungerande TRNG, en säker nyckellagring samt symmetrisk med minst AES samt några olika moder. Cryptech är dock inte i första hand en kryptoaccelerator som ger hög prestanda, utan det är säkerhet, kontroll och tillit som är det viktiga. För att kunna prata med applikationer kommer det bland annat att finnas PKCS#11-interface. Det är ambitiöst, men genomförbart tror vi.

Har du frågor och tankar om Cryptech så posta dom gärna här eller på twitter. Men ännu bättre är att posta dom till Cryotechs tech-lista. Listan är öppen för alla. Projektet är öppet och transparent. Alla commits som sker in i projektets repo är exempelvis signerade så att det går att spåra vem som gjort en föränding.

Så, detta blev en ganska lång text. Det finns massor mer att skriva men vi kommer att löpande skriva mer om Cryptech och Secworks arbete i projektet så det är inte slut med det här. Men att det är ett otroligt roligt och spännande projekt kan vi iaf avslöja.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *