I en diskussion på maillistan för NISTs AES-tävling dök det i helgen upp en länk till en söt implementation av AES skriven av Ilya O. Levin.
Ilyas implementation av AES är Byte-orienterad, vilket gör att den enkelt går att kompilera för 8-bits MCU:er. En annan udda sak med den här implementationen är att den inte innehåller en tabell för S-boxen. Istället räknar programmet ut korrekt substitutionsbyte under körning. Detta tar naturligvis tid, men eliminerar 256 Bytes. Tyvärr öppnar detta troligen även för sidoattacker.
Däremot innehåller koden funktioner för att expandera nyckeln, både för kryptering och dekryptering, och dessa räknas ut i förväg. För kryptering går det att räkna fram round-nyckeln inför respektive round, vilket skulle spara ett antal Bytes till. Och om man inte kör ECB-mod, utan en ström-mod ex CTR-mod behöver man inte ha stöd för dekryptering.
Jag har testat att kompilera koden och det går finfint i vanilj-GCC. Implementationen blir som jag förväntar mig – liten och ganska långsam. Men vill du få tag på en riktigt liten implementation av AES till ett inbyggt system, eller bara titta på hur krånglig AES blir om man försöker göra den så liten som möjligt, kan jag rekommendera att titta på den här implementationen.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
