AES anahtar programı - AES key schedule

AES kullanır anahtar program kısa bir anahtarı birkaç ayrı yuvarlak tuşa genişletmek için. Üç AES varyantının farklı sayıda turu vardır. Her varyant, her tur için ayrı bir 128 bitlik yuvarlak anahtar ve bir tane daha gerektirir.[not 1] Anahtar program, ilk anahtardan gerekli yuvarlak anahtarları üretir.

Yuvarlak sabitler

Değerleri rcben onaltılık olarak
ben12345678910
rcben01020408102040801B36

Yuvarlak sabiti rconben yuvarlak için ben en önemli genişletme 32 bitlik kelimedir:[not 2]

nerede rcben şu şekilde tanımlanan sekiz bitlik bir değerdir:

nerede ... bit tabanlı ÖZELVEYA operatör ve sabitler gibi 0016 ve 11B16 verilir onaltılık. Eşdeğer olarak:

bitleri nerede rcben bir öğesinin katsayıları olarak kabul edilir sonlu alan , böylece ör. polinomu temsil eder .

AES en fazla rcon10 AES-128 için (11 yuvarlak tuş gerektiğinden), en fazla rcon8 AES-192 için ve rcon7 AES-256 için.[not 3]

Anahtar program

128 bit anahtar için AES anahtar programı.

Tanımlamak:

  • N 32 bit kelimelerdeki anahtarın uzunluğu olarak: AES-128 için 4 kelime, AES-192 için 6 kelime ve AES-256 için 8 kelime
  • K0, K1, ... KN-1 orijinal anahtarın 32 bitlik kelimeleri olarak
  • R gerekli yuvarlak tuş sayısı olarak: AES-128 için 11 yuvarlak tuş, AES-192 için 13 tuş ve AES-256 için 15 tuş[not 4]
  • W0, W1, ... W4R-1 genişletilmiş anahtarın 32 bitlik kelimeleri olarak[not 5]

Ayrıca tanımla RotWord bir bayt olarak sola dairesel kaydırma:[not 6]

ve Alt Sözcük bir uygulama olarak AES S-kutusu kelimenin dört baytının her birine:

Bundan dolayı :

Notlar

  1. ^ AES olmayan Rijndael varyantları, tur başına 256 bit'e kadar genişletilmiş anahtar gerektirir
  2. ^ FIPS-197'de değer, 0 dizinindeki en önemsiz bayttır
  3. ^ Daha büyük blok boyutlarına sahip Rijndael varyantları, bu sabitlerden daha fazlasını kullanır. rcon29 128-bit anahtarlara ve 256 bit bloklara sahip Rijndael için (her 256 bit için 15 yuvarlak tuşa ihtiyaç duyar, bu da 30 tam anahtar genişletme turu anlamına gelir, bu da anahtar program çekirdeği yuvarlak sabitleri kullanarak). Kalan sabitler ben ≥ 11 şunlardır: 6C, D8, AB, 4D, 9A, 2F, 5E, BC, 63, C6, 97, 35, 6A, D4, B3, 7D, FA, EF ve C5
  4. ^ Diğer Rijndael varyantları şunları gerektirir: max (N, B) + 7 yuvarlak tuşlar, nerede B kelimelerdeki blok boyutu
  5. ^ Diğer Rijndael varyantları şunları gerektirir: BR genişletilmiş anahtar kelimeleri, nerede B kelimelerdeki blok boyutu
  6. ^ Döndürme, bayt sırası yönünün tersidir. Dizilerdeki FIPS-197 bayt adresleri soldan sağa doğru artıyor[ref 1] küçük endian'da ancak dönüş sağdan sola doğrudur. AES-NI'da[ref 2] ve Linux çekirdeği lib / crypto / aes.c içinde[ref 3], bayt sıralaması little endian'da sağdan sola artıyor ancak dönüş soldan sağa doğru.

Referanslar

  1. ^ "Federal Bilgi İşleme Standartları Yayını 197 26 Kasım 2001 GELİŞMİŞ ŞİFRELEME STANDARDINI (AES) Duyuruyor" (PDF). s. 8. Alındı 2020-06-16.
  2. ^ "Intel® Gelişmiş Şifreleme Standardı (AES) Yeni Yönergeler Seti" (PDF). s. 13.
  3. ^ "aes.c". Alındı 2020-06-15.

Dış bağlantılar