Posts Tagged ‘ZUC’

Lite mer om strömkryptot ZUC

September 6th, 2010

Igår bloggade jag om det nya strömkryptot ZUC avsett för LTE och LTE Advanced. Jag har plockat ut referenskoden för ZUC som finns i specifikationen och testat att köra strömkryptot.

Referenskoden är inte kanonsnygg och rätt dåligt dokumenterad. Bland annat stämmer inte namn med specifikationen, man gör egen definition av typer där man rimligen borde använd stdint.h och det finns inget körbart exempel. (I ärlighetens namn är det dock inte den sämsta referenskoden jag sett för ett krypto – kryptologer verkar i gemen vara rätt dåligt insatta i hur man skriver kod.)

Det var dock inga större problem att få snurr på ZUC och generera lite nyckelströmmar. På min laptop och med referenskoden får jag ca 250 Mbit/s när jag genererar block om 100 miljoner ord. Inte kanonhög prestanda, faktiskt något förvånande om man jämför med Snow.

Vad gäller algoritmen i sig och de naiva analyser jag kan göra ser jag egentligen inga nya saker. Jag hittar ingen bias mot några värden i Sboxarna, utan dom är rektangelfördelade. Initiering och klockning av interntillståndet ser väldigt mycket ut som i Snow. Däremot är det fortfarande oklart varför man valt de magiska konstanter och just de Sboxar man gjort. Vidare är det frågan hur mycket det påverkar att bara ha två Sboxar istället för fyra som i Snow.

En hårdvaruimplementation av ZUC ser ut att vara ungefär lika svår att göra som en implementation av Snow, dvs inte alls speciellt svårt och ge en kompakt implementation. Och då uppdatering av LFSR-kedjan samt uppslagning av Sboxar går att parallellisera borde det gå att få en rejäl prestandaökning jämfört med en SW-implementation.

Slutsatsen jag kan dra är att specifikationen verkar stämma med referenskoden och att det går att generera nyckelströmmar som stämmer med testvektorerna. Kan man lita på säkerheten hos ZUC ser det ut att vara ett helt ok strömkrypto. Det finns inga stora märkligheter men heller inget speciellt attraktivt och speciellt. Det är därför knappast av tekniska skäl som ETSI/SAGE, 3GPP och GSMA standardiserar ZUC. Speciellt då man precis standardiserat Snow 3G ger ZUC knappast någon algoritmisk diversitet, då borde man istället valt Trivium, Grain eller Rabbit, alla tre strömkrypton från eSTREAM-sviten med stora skillnader i struktur och uppbyggnad i jämförelse med ZUC och Snow..

Nej valet av ZUC handlar nog enbart om att möta kraven för access till en marknad och möjligheten att tjäna stora pengar. Förhoppningsvis blir vi som konsumenter inte lidande.

En titt på nya LTE-kryptot ZUC

September 5th, 2010

GSM World (GSMA) har publicerat ett ukast till specifikation av nya konfidentialitets- och integritetsalgoritmer för 4G-mobiltelefinistandardena LTE och LTE Advanced kallade 128-EEA3 och 128-EIA3.

Kärnan i dessa algoritmer är ett nytt symmetriskt strömkrypto kallat ZUC. GSMA har även publicerat ett utkast till specifikation för ZUC samt en design- och utvärderingsrapport av ZUC, 128-EEA3 och 128-EIA3 skriven av ETSIs säkerhetsorganisation SAGE.

För att ZUC, 128-EEA3 och 128-EIA3 skall bli officiella standarder behöver 3GPP godkänna dom och GSMA vill därför få in kommentarer och undersökningsresultat på algoritmerna. (Nej, jag blir inte heller klok på relationen mellan GSMA, ETSI, SAGE och 3GPP.)

ZUC är ett krypto som har en 128-bitars nyckel och 128-bitars initieringsvektor (IV). Tittar man på strukturen hos ZUC rent översiktligt ser man relativt stora likheter med Svenska strömkryptot Snow 2.0 (i fortsättningen bara kallad Snow. Notera att det även finns en version av Snow utvecklad av ETSI/SAGE för 3G och LTE kallad Snow3G):

Strukturen hos ZUC.
Strukturen hos ZUC.

Strukturen hos Snow 2.0.
Strukturen hos Snow 2.0.

Båda kryptona har en linjär del i form av ett skiftregister (LFSR eller LFSR-kedja). Samt en olinjär del (markerad med F i ZUC-figuren) implementerad i form av en tillståndsmaskin med en utbytestabell (Sbox). Båda krypton arbetar på ord om 32-bitar och det totala interntillståndet för ZUC är 560 bitar.

Ett par saker som skiljer ZUC från Snow är att där Snow har plockar ut ett par ord från LFSR-kedjan för att mata tillståndsmaskinen med har ZUC en filterfunktion som plockar bitar från fler ord i kejdan och kombinerar dessa till de ord som matar tillståndsmaskinen. Även återmatningen i LFSR-kedjan samt hur initieringen går till skiljer. En annan sak som skiljer är att de Sboxar som används i ZUC består av två tabeller om 256 element, medan Snow har fyra tabeller om 256 element.

Så långt gått och väl. Tittar man på konstruktionen och exempelvis ser på vilka operatorer som används och antalet register som behövs för att lagra interntillståndet ser ZUC ut att kunna vara ett kompakt krypto (både implementerat i SW såväl som i HW) med bra prestanda.

Problemet med ZUC är istället politiskt.

ZUC är nämligen specificerat av Data Assurance and Communication Security Research Center (DACAS), en del av Kinesiska vetenskapsakademin. Kina kräver nämligen att få specificera vilket krypto som skall användas i LTE, och LTE-Advanced-system som får säljas i Kina.

den sida med forum som satts upp för ZUC pågår en ganska het debatt och även på olika krypto- och säkerhetsrelaterade maillistor pågår diskussion där många är väldigt tveksamma. Många ifrågasätter varför Kina får möjlighet att specificera ett krypto när inga andra länder gör det. Vidare ifrågasätts utvärderingen som utförts, inte minst för att ZUC inte utvecklats på ett öppet sätt så som det idag annars sker med internationellt accepterade algoritmer. Många påminner även om hur Kina försökte få in en egen säkerhetsstandard för trådlösa nät kallad WAPI (med det symmetriska blockkryptot SMS4).

En sak att lägga märke till är att ZUC, 128-EEA3 och 128-EIA3 inte är tänkt att enbart användas i Kina, utan är avsedda för internationell marknad, däremot är det de algoritmer så måste användas i Kina. Blir dessa algoritmer godkända kommer de att finnas med i kommande LTE-mobiler och basstationer.

Det jag inte gillar när jag läser specifikationen är att det inte finns någon förklaring till hur de magiska konstanter (D i specifikationen) har valts ut. För Sboxarna finns det i utvärderingsrapporten en kortare förklaring, men inte exakt varför man valde de värden man gjort.

Vidare är det frågan om man verkligen vågar lita på SAGE. De praktiskt genomförbara attacker som Adi Shamir m.fl utvecklat mot 3G-kryptot KASUMI har visat att de förändringar SAGE gjorde av kryptot MISTY1 för att utveckla KASUMU, förändringar avsedda att förstärka kryptot, är de som gjort kryptot så svagt. Dessutom är det tveksamt hur fristående SAGE är från de företag som avser att sälja LTE-utrustning till Kina. Att ETSI/SAGE accepterar en algoritm så är så snarlik Snow och Snow 3G när den senare nyligen godkänts visar att det inte handlar om säkerhetsmässiga skäl för de nya algoritmerna.

Jag är rätt övertygad om att ZUC, 128-EEA3 och 128-EIA3 kommer att bli 3GPP-godkända standarder. Det jag skulle vilja se innan dess är dock en större öppenhet vad gäller designval och en ordentlig omgång av öppna undersökningar, inte bara det SAGE och några inbjudna forskare genomfört på uppdrag av SAGE/ETSI, GSMA och Kina. Jag blir under alla förhållanden inte överraskad när SAGE konstaterar att:

Overall, taking into account all the feedback from the two paid evaluation teams, the SAGE task force concluded that the new algorithms are fit for purpose. The security margin appears to be high, and the design rationale clear. The SAGE task force has no objection to 128-EEA3 and 128-EIA3 being included in the standards.

En sista liten detalj. Undrar hur Inspektionen för Strategiska Produkter reagerar när man skall exportera ett kinesiskt krypto till Kina…