AES nyckelschema

AES använder ett nyckelschema för att expandera en kort nyckel till ett antal separata runda nycklar. De tre AES-varianterna har olika antal omgångar. Varje variant kräver en separat 128-bitars rund nyckel för varje runda plus en till. Nyckelschemat producerar de nödvändiga runda nycklarna från den initiala nyckeln.

Runda konstanter

Värden på rc i i hexadecimal
i 1 2 3 4 5 6 7 8 9 10
rc i 01 02 04 08 10 20 40 80 IB 36

Den runda konstanten rcon i för omgång i av nyckelexpansionen är 32-bitarsordet:

där rc i är ett åttabitars värde definierat som:

där är den bitvisa XOR- operatorn och konstanter som 00 16 och 11B 16 ges i hexadecimal . Motsvarande:

där bitarna av rc i behandlas som koefficienterna för ett element i det finita fältet r representerar polynomet .

AES använder upp till rcon 10 för AES-128 (eftersom 11 runda nycklar behövs), upp till rcon 8 för AES-192 och upp till rcon 7 för AES-256.

Nyckelschemat

AES-nyckelschema för en 128-bitars nyckel.

Definiera:

  • N som längden på nyckeln i 32-bitars ord: 4 ord för AES-128, 6 ord för AES-192 och 8 ord för AES-256
  • K 0 , K1 nyckeln , ... KN - 1 som 32-bitars ord i den ursprungliga
  • R som antalet runda nycklar som behövs: 11 runda nycklar för AES-128, 13 nycklar för AES-192 och 15 nycklar för AES-256
  • W 0 , W 1 , ... W 4 R -1 som 32-bitarsorden i den utökade nyckeln

Definiera även RotWord som ett vänstercirkulärt skift på en byte :

och SubWord som en tillämpning av AES S-box på var och en av ordets fyra byte:

Sedan för :

Anteckningar

externa länkar