šŸ”’

Portal Akses Modul CBL 3A Ditutup

Mohon maaf, sesi pengerjaan Lembar Kerja Interaktif ChaCha20 saat ini sedang ditutup atau belum dibuka oleh Asisten Dosen.

Silakan kembali ke Command Center atau hubungi Tim Asdos Jaringan Komputer.

Departemen Teknik Elektro dan Komputer
LABORATORIUM JARINGAN KOMPUTER
CBL-3: ChaCha20 Stream Cipher (RFC 8439)

Lembar Kerja Interaktif Keamanan Informasi (STIK3051)
Designed by: yuliar@usk.ac.id & arya.putra@usk.ac.id
šŸ›”ļø Admin
Auto-Grader ChaCha20
šŸŽÆ Progress Pengerjaan
0 / 11 Selesai šŸ’¾ Tersimpan ā³ Tenggat: 29 Ags 2026, 23:59 WIB
Peta Alur ChaCha20
šŸ“ Identitas Kelompok
Makro ChaCha20 (Overview)
Plaintext (16 byte) Kunci (256-bit) Nonce (96-bit) + Counter Initial State Matrix 4Ɨ4 Ronde 1 (Column Round)Quarter Round Grup 0-3 Ronde 2 (Diagonal Round) Ronde 3–19 (Rekap Otomatis) Ronde 20 (Final) Add-Back Initial State Keystream (Serialisasi LE) XOR dengan Plaintext Ciphertext
Mikro ChaCha20 (Detail Quarter Round)
Input: a, b, c, d Langkah 1a+=b; d^=a; d<<<16 Langkah 2c+=d; b^=c; b<<<12 Langkah 3a+=b; d^=a; d<<<8 Langkah 4c+=d; b^=c; b<<<7 Output: a', b', c', d'
āœŽ

Identitas Kelompok

1

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.

Petunjuk: Masukkan Plaintext (16 karakter ASCII), Kunci (32 karakter ASCII), dan Nonce (24 digit hex). Algoritma ChaCha20 akan menggunakan nilai ini sebagai dasar komputasi. Kemudian isi kolom Hexadesimal dan Biner di bawah berdasarkan perhitungan manual Anda.
Input Nilai Awal
16/16 karakter ASCII (128-bit) āœ“
32/32 karakter ASCII (256-bit) āœ“
24/24 digit hexadesimal (96-bit) āœ“
šŸ•’ --/--/---- --:--:--
2

Penyusunan Initial State Matrix 4Ɨ4 (Row-Major, 16 Kata 32-bit)

šŸ”’
ChaCha20 menyusun 16 kata 32-bit (bukan byte seperti AES) ke dalam Matriks 4Ɨ4 secara row-major (baris demi baris) menurut RFC 8439:
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).
Counter = --------  |  Nonce (3 kata) = [ -------- -------- -------- ]
šŸ’” Konsep Little-Endian: Konversi 4 Byte Hex → 1 Word 32-bit (RFC 8439)

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).

Contoh Konversi 1 Kata (4 Byte → 1 Word 32-bit):
Urutan 4 Byte Asli: Byte 0 = 4B Byte 1 = 45 Byte 2 = 59 Byte 3 = 5F
āž” Nilai Word Little-Endian = [Byte 3][Byte 2][Byte 1][Byte 0] = 5F59454B
Initial State Matrix ChaCha20 (Hex 4Ɨ4, 16 Kata 32-bit)
3

Fungsi Quarter Round ChaCha20 — Grup Kata 0 (Langkah 1 & 2)

šŸ”’
Quarter Round (QR) adalah operasi dasar ChaCha20, bekerja pada 4 kata 32-bit (a, b, c, d) melalui 4 langkah ADD–XOR–ROTATE (ARX):
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.
Input Grup Kata 0: a = --------  | b = --------  | c = --------  | d = --------
šŸ” Hitung Bertahap (hasil dalam HEX, 8 digit):
a += b → | d ^= a (a baru) → | d <<< 16 →
Gunakan nilai d hasil rotasi dari Langkah 3A di atas.
c += d → | b ^= c (b baru) → | b <<< 12 →
4

Penyelesaian Quarter Round Grup Kata 0 (Langkah 3 & 4) & Penyusunan State

šŸ”’
Lanjutkan Quarter Round Grup Kata 0 dengan 2 langkah terakhir, lalu susun hasilnya (a, b, c, d) ke posisi asalnya di Initial State Matrix — yaitu Kolom 0 (State[0], State[4], State[8], State[12]).
Gunakan nilai a dari Langkah 3A (setelah +b) dan b dari Langkah 3B (setelah rotasi 12), serta d dari Langkah 3A (setelah rotasi 16).
a += b → | d ^= a (a baru) → | d <<< 8 →
c += d → | b ^= c (b baru) → | b <<< 7 →
⚔ Otomatisasi Sistem 12 sel (bergaris putus-putus) belum diproses pada ronde ini sehingga nilainya masih sama dengan Initial State (otomatis diisi sistem). 4 sel Kolom 0 (biru terang) terhubung otomatis dari hasil akhir Quarter Round Grup 0 Anda (Langkah 3A–4B).
State Setelah QR Grup 0 (Hex 4Ɨ4)
5

Ronde 1 (Column Round) – Quarter Round Grup Kata 1

šŸ”’
Terapkan Quarter Round (4 langkah ARX: ADD → XOR → ROTATE, dua kali) pada Grup Kata 1: (a,b,c,d) = (State[1], State[5], State[9], State[13]) — Kolom 1 dari Initial State.
State Setelah QR Grup 0 (Input Bagian Ini)
šŸ” Terapkan keempat langkah QR pada a=State[1], b=State[5], c=State[9], d=State[13], lalu masukkan hasil akhirnya:
a' = b' = c' = d' =
⚔ Otomatisasi Sistem 8 sel (bergaris putus-putus) belum diproses pada ronde ini (otomatis diisi sistem). 4 sel Kolom 1 (biru terang) terhubung otomatis dari hasil Langkah 5A Anda.
State Setelah QR Grup 0 & 1 (Hex 4Ɨ4)
6

Ronde 1 (Column Round) – Quarter Round Grup Kata 2

šŸ”’
Terapkan Quarter Round pada Grup Kata 2: (a,b,c,d) = (State[2], State[6], State[10], State[14]) — Kolom 2.
State Setelah QR Grup 0 & 1 (Input Bagian Ini)
a' = b' = c' = d' =
⚔ Otomatisasi Sistem 4 sel (bergaris putus-putus, Kolom 3) belum diproses (otomatis diisi sistem). 4 sel Kolom 2 (biru terang) terhubung otomatis dari hasil Langkah 6A Anda.
State Setelah QR Grup 0, 1 & 2 (Hex 4Ɨ4)
7

Ronde 1 (Column Round) – Quarter Round Grup Kata 3 (Melengkapi Ronde 1)

šŸ”’
Terapkan Quarter Round pada Grup Kata 3: (a,b,c,d) = (State[3], State[7], State[11], State[15]) — Kolom 3. Setelah bagian ini selesai, Ronde 1 (Column Round) ChaCha20 telah lengkap diterapkan ke seluruh 16 kata State.
State Setelah QR Grup 0, 1 & 2 (Input Bagian Ini)
a' = b' = c' = d' =
⚔ Otomatisasi Sistem 12 sel (Kolom 0, 1, 2) sudah dihitung pada bagian sebelumnya. 4 sel Kolom 3 (biru terang) terhubung otomatis dari hasil Langkah 7A Anda — melengkapi seluruh State Akhir Ronde 1.
State Akhir Ronde 1 / Column Round (Hex 4×4)
8

Ronde 2 (Diagonal Round) — Melengkapi Double-Round Pertama

šŸ”’
Ronde 2 adalah Diagonal Round: Quarter Round diterapkan pada 4 grup diagonal (bukan kolom):
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.
State Input (Hasil Ronde 1 / Column Round)
šŸ“ Contoh Perhitungan Diagonal 0 (State[0,5,10,15]) — Sebagai Panduan:
State Akhir Ronde 2 / Diagonal Round (Hex 4Ɨ4, Lengkap)
9

Rekapitulasi Otomatisasi Perhitungan Ronde 3 sampai 19

šŸ”’
Setelah Anda memahami mekanisme Quarter Round secara manual (Ronde 1 & 2), tabel berikut menampilkan rekapitulasi otomatisasi komputasi Tipe Ronde (Column/Diagonal Round), State Awal, dan State Akhir untuk Ronde 3 sampai Ronde 19 (17 ronde, tersisa dari total 20 ronde ChaCha20):
Ronde Tipe State Awal (Hex, 16 kata) State Akhir (Hex, 16 kata)
10

Ronde 20 (Ronde Final) & Serialisasi Keystream

šŸ”’
Ronde 20 adalah ronde individual terakhir dari 20 ronde ChaCha20 (Diagonal Round, karena 20 genap). Setelah itu, ada satu langkah khusus yang hanya dilakukan sekali (bukan per-ronde seperti AddRoundKey pada AES): menambahkan kembali (add-back) Initial State (Bagian 2) ke State hasil 20 ronde, lalu men-serialisasi hasilnya menjadi keystream.
State Input (Hasil Ronde 19, dari tabel Bagian 9)
Terapkan Quarter Round pada keempat grup diagonal (State[0,5,10,15], State[1,6,11,12], State[2,7,8,13], State[3,4,9,14]) terhadap State Input Ronde 19 di atas.
State Setelah Ronde 20 (Hex 4Ɨ4)
Tambahkan (mod 232, per kata) State Setelah Ronde 20 di atas dengan Initial State dari Bagian 2: State_Final[i] = State_Ronde20[i] + InitialState[i]  (mod 232). Langkah ini tidak pernah dilakukan di ronde manapun sebelumnya — hanya sekali, di akhir.
State Final Setelah Add-Back (Hex 4Ɨ4)
Karena Plaintext kelompok Anda hanya 16 byte, cukup serialisasikan 4 kata pertama (State Final[0..3]) ke bentuk byte little-endian (byte paling rendah lebih dulu) untuk mendapatkan 16 byte pertama Keystream.
16 Byte Pertama Keystream (Hex 4Ɨ4, per baris = 1 kata)
11

Ciphertext Akhir & Pengumpulan Laporan Resmi

šŸ”’
Ciphertext 128-bit diperoleh dengan operasi XOR (āŠ•) antara setiap byte Plaintext (16 byte) dengan 16 byte pertama Keystream (dari Bagian 10C):
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)

32 digit hexadesimal hasil penggabungan 16 byte XOR di atas.
šŸ“„ Plaintext
HEXADECIMAL
----
ASCII
----
šŸ”‘ Kunci (Key)
HEXADECIMAL
----
ASCII
----
šŸ”’ Ciphertext Akhir ChaCha20
HEXADECIMAL
----
ASCII
----

šŸ›”ļø Asisten Dosen Panel

Membuat PDF & Mengirim ke Server...