ECRYPT firar att AES fyller 10 år

Det är 10 år sedan det symmetriska blockkryptot AES blev en godkänd standard. Den Europeiska organisationen ECRYPT firade händelsen med att anordna en speciell AES-dag. Jag var inte där, men på webbplatsen finns flera stycken mycket intressanta presentationer och jag vill uppmärksamma tre av dessa.

Joan Daemen, som tillsammans med Vincent Rijmen skapade algoritmen Rijndael som NIST valde att bli AES presenterade bakgrunden till Rijndael. I sin presentation The making of beskriver Joan hur arbetet med flera olika algoritmer (SHARK, Square, BKSQ) och utveckling inom kryptanalys ledde från Feistel-baserade krypton som DES till Rijendaels wide-trail strategi (pdf) med många, enkla S-boxar samt rekursiv nyckelexpansion. Vill man förstå varför AES ser ut som den gör ger Joans presentation en intressant bakgrund.

Joan Daemen

Joan Daemen

Den andra presentationen jag vill uppmärksamma är Tim Güneysus Implementing AES on a Bunch of Processors. Presentationen börjar med en bra beskrivning av de olika delarna i en iteration av AES. Vika operationer som krävs, vilka datatyper som används och hur data förflyttas. Utifrån denna bas visar Tim upp exmpel på mappning av AES på ett antal olika typer av arkitekturer. Allt i från en gammal 8-bitars CISC-processor com MOS 6502 i c64, till Cellprocessorn i PS3, DSPer, moderna grafikrocessorer (GPU) och GreenArrays asynkrona stackprocessorer.

AES i assembler för 6502
AES i assembler för 6520-processorn.

Den kanske mest matnyttiga presentationen är Ryad Benadjils Use of AES Instruction Set Ryads presentation ger en ordentlig genomgång av hur speciella instruktioner i processorer för att snabbt exekvera AES utvecklats och hur dom fungerar. Presentationen fokuserar på Intels AES-NI-instruktioner, men tar även upp hur AES effektiv kan mappas mot vektorinstruktioner som SSE och AVX

Att AES-NI verkligen ger en snygg, rak kod som även motverkar sidoattacker visar inte minst den här kodrutan:


AES-128 med AES-NI.

En av de mer intressanta delarna av presentationen är hur AES-NI implementationsmässigt utvecklats och förbättrats samt varför detta sker. Gillar man krypto och processorarkitektur är detta en fröjd. Och om du håller på och kodar effektiva implementationer för olika processorer finns det mycket matnyttigt i Ryads presenation. Och Ryad visar att AES-NI verkligen ger substantiell prestandaökning:


Prestanda för AES med AES-NI implementerad i Intels Ivy Bridge-arkitektur.

Värdena kan jämföras med Käsper och Shwabes rekordresultat från 2009 som nådde drygt 7 cykler/byte med hjälp av SSE3-instruktioner. Med AES-NI nås ungefär 10 gånger bättre prestanda. Ryads presentation avslutas med hur AES-NI kan användas för att accelerera AES i GCM-mod samt accelerera hashfunktioner som några av kandidaterna för SHA-3. Tyvärr är inte Keccak med, algoritmen som vann SHA-3-tävlingen.

Jag lärde mig massor från dessa presentationer. Bra helgläsning!

4 reaktioner på ”ECRYPT firar att AES fyller 10 år

    1. Visst hette processorn i c64 MOS 6510. Iofs en direkt superset av MOS 6502. Borde jag naturligtvis fångat med ryggraden. Tack!

  1. 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.

  2. Mitt förtroende för SAGE är inte stort. Precis som du säger har dom gjort flera tabbar. Och jag håller med om att det nog handlar mycket om att sälja utrustning, inte ge ett bra skydd.

Kommentera

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

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>