Lompat ke isi

MixColumns Rijndael

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Revisi sejak 23 Agustus 2026 13.30 oleh Maintenance script (bicara | kontrib) (Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 26843382; atribusi sumber disertakan.)
(beda) ← Revisi sebelumnya | Revisi terkini (beda) | Revisi selanjutnya → (beda)

Langkah dan langkah adalah sumber penghamburan utama dalam penyandian Rijndael. Tiap kolom dianggap sebagai suku banyak berderajat empat b(x)=b3x3+b2x2+b1x+b0 yang suku-sukunya berada dalam GF(28).

Tiap kolom dikali dengan suku banyak tetap a(x)=3x3+x2+x+2 modulus x4+1. Inversi suku banyaknya adalah a1(x)=11x3+13x2+9x+14.

MixColumns

Operasi ini terdiri dari perkalian modulus dua suku banyak berderajat empat yang koefisiennya ada dalam GF(28). Pembagi yang dipakai dalam operasi ini adalah x4+1.

Koefisien suku banyak pertama didefinisikan sebagai kolom status [b3b2b1b0] yang berisi empat bita. Tiap bita adalah koefisien dari suku banyak tersebut.

b(x)=b3x3+b2x2+b1x+b0

Suku banyak kedua adalah suku banyak tetap a(x)=3x3+x2+x+2. Koefisiennya juga ada dalam GF(28). Inversinya adalah a1(x)=11x3+13x2+9x+14.

Dalam halaman ini, kita definisikan beberapa notasi berikut:

berarti perkalian modulus x4+1.
berarti pertambahan dalam GF(28).
berarti perkalian dalam GF(28).

Pertambahan dalam GF(28) memiliki sifat berikut:

(a3x3+a2x2+a1x+a0)+(b3x3+b2x2+b1x+b0)=(a3b3)x3+(a2b2)x2+(a1b1)x+(a0b0)

Pembuktian bentuk matriks

Suku banyak a(x)=3x3+x2+x+2 akan dinyatakan sebagai a(x)=a3x3+a2x2+a1x+a0.

Perkalian suku banyak

a(x)b(x)=c(x)=(a3x3+a2x2+a1x+a0)(b3x3+b2x2+b1x+b0)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0

dengan

c0=a0b0c1=a1b0a0b1c2=a2b0a1b1a0b2c3=a3b0a2b1a1b2a0b3c4=a3b1a2b2a1b3c5=a3b2a2b3c6=a3b3

Reduksi modulus

Hasil c(x) adalah suku banyak berderajat tujuh sehingga harus direduksi menjadi kata empat bita. Hal itu dilakukan dengan melakukan perkalian dengan modulus x4+1.

Bila kita melakukan perkalian modulus suku banyak, kita bisa lihat bahwa

x6mod(x4+1)=x2=x2 dalam GF(28)x5mod(x4+1)=x=x dalam GF(28)x4mod(x4+1)=1=1 dalam GF(28)

Secara umum, kita bisa nyatakan bahwa ximod(x4+1)=ximod4.

Jadi,

a(x)b(x)=c(x)mod(x4+1)=(c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0)mod(x4+1)=c6x6mod4+c5x5mod4+c4x4mod4+c3x3mod4+c2x2mod4+c1x1mod4+c0x0mod4=c6x2+c5x+c4+c3x3+c2x2+c1x+c0=c3x3+(c2c6)x2+(c1c5)x+c0c4=d3x3+d2x2+d1x+d0

dengan

d0=c0c4d1=c1c5d2=c2c6d3=c3

Bentuk matriks

Koefisien d3, d2, d1, dan d0 dapat dinyatakan sebagai berikut:

d0=a0b0a3b1a2b2a1b3d1=a1b0a0b1a3b2a2b3d2=a2b0a1b1a0b2a3b3d3=a3b0a2b1a1b2a0b3

Ketika kita ganti koefisien a(x) dengan tetapan [3112] yang dipakai oleh penyandian ini, kita dapatkan hasil berikut:

d0=2b03b11b21b3d1=1b02b13b21b3d2=1b01b12b23b3d3=3b01b11b22b3

Hal ini menunjukkan bahwa operasi ini mirip dengan sandi Hill. Ia dapat digambarkan sebagai perkalian matriks berikut:

[d0d1d2d3]=[2311123111233112][b0b1b2b3]

InverseMixColumns

Operasi memiliki inversi berikut (bilangan dalam desimal).

[b0b1b2b3]=[1411139914111313914111113914][d0d1d2d3]

atau

b0=14d011d113d29d3b1=9d014d111d213d3b2=13d09d114d211d3b3=11d013d19d214d3

Contoh implementasi

Operasi ini dapat disederhanakan dalam implementasinya dengan mengganti perkalian dengan dua dengan geseran tunggal dan XOR bersyarat serta mengganti perkalian dengan tiga dengan perkalian dengan dua yang digabung dengan XOR. Berikut contoh implementasi dalam bahasa C.


Vektor uji untuk MixColumns

Daftar pustaka


Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 26843382 (2025-01-26T08:36:36Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.