Jag har börjat gå igenom bidragen till ECRYPT:s eSTREAM för att försöka skatta och jämföra de olika bidragens hårdvaruresurser.
Det finns (minst) två bidrag med Svenskt deltagande.
Polar Bear är ett bidrag av Johan Håastad på NADA/KTH och Mats Näslund på Ericsson Research Communications Security Lab. Deras bidrag är avsett för både profil ett och profil två, dvs både för implementation på dator och i inbyggda system eller i hårdvara. Polar Bear kan enklast beskrivas som en variant av RC4, men där initieringen av tillståndstabellen utförs med hjälp av ett Rijendael/AES-baserat blockkrypto. Det finns även två stycken LFSR-kedjor i nästa tillstånds-delen av kryptot. Några saker jag noterar när jag läser Polar Bear-artikeln:
- För att begränsa tiden för initiering körs Rijndael-kryptot fem varv (rounds).
- Utdata från kryptot är fyra Bytes, dvs troligen ett 32-bit ord. Ändå säger författarna att kryptot är långsammare än RC4 på större datapaket. Deras implementation på en 1400 MHz Pentium (måste vara fel, 1400 MHz är troligen en Pentium III eller en Pentium IV). ger ca 190 MByte/s ut.
- Nyckellängden är 128 bitar, but shorter key lengths are accepted.
Om jag fattat Polar Bear rätt så sitter det väsentligen en komplett AES-variant som en del av kryptot. Eftersom den bara körs framåt, dvs krypterar behöver nyckeln inte expanderas för att få vettig prestanda, det sparar minne. Men, med S-boxar, LFSR-kedjor på 112 och 144 bitar samt ett permutationsminne på vad jag uppfattar vara 256 Bytes stort (dvs som i RC4) går det åt mer än 512 Bytes bara för tabeller. Sedan tillkommer AES-blocket som i Polar Bear är på 256 bitar.
För mig låter detta som mycker minne för exempelvis en PIC eller en AVR. Visserligen kan man lägga in S-boxen tillsammans med programkoden, men det är ändå rätt mycket arbetsminne som krävs för att hålla tillståndet i Polar Bear.
Att kryptot skulle gå långsammare än RC4 låter märkligt, speciellt efter att initieringskostnaden har amorterats av, dvs på längre datapaket. Än mer märkligt är enligt men mening att man tar fram ett nytt strömkrypto som inte är väsentligt snabbare än RC4. Jag förväntar mig att ett nytt strömkrypto är ordentligt mycket snabbare, alternativt kräver mindre resurser än RC4, men med bättre säkerhet.
Säkerhetsmässigt vågar jag inte ha för mycket åsikter. Att initieringsfasen använder en variant av AES, vilket innebär S-boxar gissar jag att Daniel J Bernstein kan ha en och annan åsikt om.
Det finns ett annat Svenskt bidrag, men det tar vi i morgon.