Identitas Kelompok
Konversi Plaintext, Kunci & Nonce ā Hexadesimal & Biner
1. Kelompok Anda memiliki informasi (plaintext) yang terdiri dari 16 karakter ASCII (128-bit).
2. Plaintext kelompok Anda akan dienkripsi menggunakan algoritma ChaCha20 (RFC 8439). Sesuai
spesifikasi resminya, ChaCha20 memerlukan kunci rahasia (key) sepanjang 32 karakter ASCII (256-bit)
dan nonce (angka sekali pakai) sepanjang 96-bit (24 digit hex, 12 byte).
3. Berbeda dari kunci, nonce tidak berasal dari karakter ASCII yang mudah dibaca ā nonce dimasukkan
langsung dalam bentuk hexadesimal.
Penyusunan Initial State Matrix 4Ć4 (Row-Major, 16 Kata 32-bit)
Baris 0: Konstanta ("expand 32-byte k") | Baris 1ā2: Kata Kunci (8 kata, 256-bit) | Baris 3:
Counter (1 kata, tetap = 00000001) + Nonce (3 kata).
Perhatikan: Plaintext tidak ikut disusun ke dalam state ā ChaCha20 adalah stream cipher, plaintext baru digunakan di Bagian 11 (XOR dengan keystream).
Sesuai spesifikasi RFC 8439, algoritma ChaCha20 menyusun data dari byte ke kata 32-bit menggunakan format Little-Endian (byte terawal/terkiri menjadi byte dengan bobot paling rendah / Least Significant Byte).
Fungsi Quarter Round ChaCha20 ā Grup Kata 0 (Langkah 1 & 2)
1) a += b; d ^= a; d <<<= 16 2) c += d; b ^= c; b <<<= 12
3) a += b; d ^= a; d <<<= 8 4) c += d; b ^= c; b <<<= 7
(+ = penjumlahan modulo 232, ā = XOR bitwise, <<< = rotasi bit ke kiri).
QR pertama diterapkan pada Grup Kata 0: (a,b,c,d) = (State[0], State[4], State[8], State[12]) ā yaitu Konstanta0, Kata Kunci0, Kata Kunci4, dan Counter.
Penyelesaian Quarter Round Grup Kata 0 (Langkah 3 & 4) & Penyusunan State
Ronde 1 (Column Round) ā Quarter Round Grup Kata 1
Ronde 1 (Column Round) ā Quarter Round Grup Kata 2
Ronde 1 (Column Round) – Quarter Round Grup Kata 3 (Melengkapi Ronde 1)
Ronde 2 (Diagonal Round) ā Melengkapi Double-Round Pertama
Diagonal 0: State[0,5,10,15] | Diagonal 1: State[1,6,11,12] | Diagonal 2:
State[2,7,8,13] | Diagonal 3: State[3,4,9,14]
Setelah ronde ini, Anda telah menyelesaikan satu Double-Round penuh (Ronde 1 + Ronde 2) dari 20 ronde ChaCha20.
Rekapitulasi Otomatisasi Perhitungan Ronde 3 sampai 19
| Ronde | Tipe | State Awal (Hex, 16 kata) | State Akhir (Hex, 16 kata) |
|---|
Ronde 20 (Ronde Final) & Serialisasi Keystream
State_Final[i] = State_Ronde20[i] + InitialState[i] (mod 232).
Langkah ini tidak pernah dilakukan di ronde manapun sebelumnya ā hanya sekali, di akhir.
Ciphertext Akhir & Pengumpulan Laporan Resmi
Ciphertext[i] = Plaintext[i] ā Keystream[i] (untuk i = 0 s.d. 15).
Hitung hasil XOR per byte pada tabel interaktif di bawah ini:
| Byte Index | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Plaintext (PT) | ||||||||||||||||
| ā (Operasi XOR Bitwise) | ||||||||||||||||
| Keystream (KS) | ||||||||||||||||
| = (Hasil Enkripsi) | ||||||||||||||||
| Hasil XOR (Hex) | ||||||||||||||||