Kotak-S Rijndael

Kotak-S Rijndael adalah kotak substitusi (tabel pencarian) yang dipakai dalam penyandian Rijndael. Standar Enkripsi Lanjutan (AES) berdasar pada penyandian Rijndael sehingga juga memakai kotak substitusi ini.

Kotak-S 

Kotak-S memetakan nilai 8 bit, , ke keluaran 8 bit, .

Inversi kotak-S 

Inversi kotak-S sejatinya adalah kotak-S yang dibalik pemetaannya. Misal, b816 dikembalikan ke 9a16.

Kriteria desain 
Kotak-S Rijndael didesain khusus untuk tahan terhadap serangan analisis kriptografi linear dan diferensial. Caranya adalah dengan meminimalkan kolerasi transformasi linear antara masukan dan keluaran sekaligus meminimalkan peluang rambantan selisih.

Kotak-S Rijndael dapat ditukar dalam penyandian Rijndael. Hal tersebut melemahkan tuduhan bahwa suatu pintu belakang dibuat dengan menggunakan kotak-S statis. Para pembuat mengeklaim bahwa struktur penyandian Rijndael seharusnya sudah cukup tahan terhadap analisis kriptografi linear dan diferensial jika kotak-S yang memiliki sifat korelasi/rambatan selisih "rata-rata" dipakai.

Contoh implementasi dalam bahasa C 
Kode C berikut menghitung nilai kotak-S.
#include <stdint.h>

#define ROTL8(x,shift) ((uint8_t) ((x) << (shift)) | ((x) >> (8 - (shift))))

void initialize_aes_sbox(uint8_t sbox[256]) {
	uint8_t p = 1, q = 1;

	/* perulangan: p * q == 1 dalam medan Galois */
	do {
		/* kalikan p dengan 3 */
		p = p ^ (p << 1) ^ (p & 0x80 ? 0x1B : 0);

		/* bagi q dengan 3 (sama dengan perkalian dengan 0xf6) */
		q ^= q << 1;
		q ^= q << 2;
		q ^= q << 4;
		q ^= q & 0x80 ? 0x09 : 0;

		/* hitung transformasi afinnya */
		uint8_t xformed = q ^ ROTL8(q, 1) ^ ROTL8(q, 2) ^ ROTL8(q, 3) ^ ROTL8(q, 4);

		sbox[p] = xformed ^ 0x63;
	} while (p != 1);

	/* 0 adalah kasus khusus karena ia tidak memiliki inversi */
	sbox[0] = 0x63;
}

Referensi 

Standar Enkripsi Lanjutan
Medan berhingga
Kotak-S