Kembali
---
title: "Memecahkan AES ECB → Blok demi Blok"
date: "2026"
category: "Kriptografi & Keamanan"
author: "Aditya Rahman"
tags: [AES-128, ECB, Python, Cryptography]
readTime: "4 min read"
---

# Memecahkan AES ECB → Blok demi Blok

Kriptografi & Keamanan·Penulis: Aditya Rahman·4 min read

AES (Advanced Encryption Standard) adalah algoritma enkripsi simetris yang digunakan secara luas dan dapat beroperasi dalam berbagai mode. ECB (Electronic Codebook) adalah salah satu mode operasi paling sederhana untuk AES.

Dalam mode ECB, setiap blok plaintext (teks asli) dienkripsi secara terpisah dengan kunci yang sama, dan tidak ada mekanisme umpan balik (feedback mechanism) antar blok.

## Alur Kerja Enkripsi AES ECB

1. Pembangkitan Kunci (Key Generation):

Memilih kunci enkripsi rahasia dengan panjang tetap (128, 192, atau 256 bit sesuai varian AES yang dipakai).

2. Padding (Pengisian Byte):

Jika panjang plaintext bukan kelipatan ukuran blok AES (16 byte), dilakukan pengisian padding (standar PKCS#7) agar pas tepat kelipatan 16 byte.

3. Enkripsi Blok:

Plaintext dibagi menjadi blok-blok tetap berukuran 16 byte. Setiap blok dienkripsi secara independen menggunakan algoritma AES dengan kunci yang sama, menghasilkan blok ciphertext.

4. Penggabungan (Concatenation):

Seluruh blok ciphertext yang dihasilkan digabungkan berurutan untuk membentuk ciphertext akhir utuh.

## Implementasi Python (`pycryptodome`)

aes_ecb_demo.py
Python 3 · pycryptodome
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad

# Kunci rahasia (16, 24, atau 32 byte untuk AES-128, AES-192, atau AES-256)
key = get_random_bytes(16)

# Buat objek cipher AES ECB
cipher = AES.new(key, AES.MODE_ECB)

# Plaintext Anda (harus kelipatan 16 byte dalam mode ECB)
plaintext = b'aditya rahman'

# padding ke kelipatan 16 byte
padded_plaintext = pad(plaintext, AES.block_size)

# Enkripsi plaintext
ciphertext = cipher.encrypt(padded_plaintext)

# Cetak ciphertext
print("Ciphertext:", ciphertext)

## Logika Enkripsi & Analogi Nyata

1. Symmetric Key (Satu Kunci untuk Semua)

Konsep: Kunci untuk mengunci (enkripsi) dan membuka kembali (dekripsi) adalah kunci yang sama persis.

Analogi: Seperti kunci pintu rumah. Kunci fisik yang dipakai untuk mengunci pintu dari luar dipakai juga untuk membukanya kembali dari dalam. Kunci ini mutlak harus dijaga agar tidak dicuri atau bocor ke pihak lain.
2. Block Cipher (Potong-Potong Data)

Konsep: Data yang panjang tidak diproses sekaligus dalam satu tarikan nafas, melainkan dipotong-potong menjadi kotak-kotak kecil berukuran tetap (blok).

Aturan Emas AES: Ukuran potongan (blok) selalu 16 byte (tetap, tidak bisa ditawar).

Angka 128, 192, atau 256 adalah ukuran kunci (kompleksitas keamanan kunci), bukan ukuran potongan datanya.

3. Mode Operasi: ECB (Si Polos) vs CBC (Si Rantai)

Mode operasi ibarat cara kita menyusun dan mengacak potongan-potongan tadi:

ECB (Electronic Codebook) - Si Polos

Setiap potongan diacak sendiri-sendiri tanpa peduli temannya.

Kelemahan Fatal: Kalau ada dua potongan isinya sama (misal: "AAAA"), hasil acakannya juga pasti identik. Pola data masih terbaca jelas (seperti fenomena ECB Penguin). Tidak aman untuk data terstruktur.

CBC (Cipher Block Chaining) - Si Rantai

Saling menyambung. Hasil acakan potongan pertama dipakai untuk mengacak potongan kedua, dan seterusnya.

Kelebihan: Walaupun ada potongan yang isinya sama ("AAAA"), hasil akhirnya akan beda total karena efek berantai ini. Jauh lebih aman.

4. IV (Initialization Vector) - Bumbu Awal

Konsep: Karena CBC bekerja secara berantai, potongan pertama butuh "lawan main" untuk memulai rantai (karena belum ada potongan sebelumnya).

Fungsi: Angka acak (random) yang ditambahkan di awal supaya hasil enkripsi selalu unik, meskipun pesan yang dienkripsi dan kuncinya sama persis.

5. Logika Enkripsi (Bukan Matematika Biasa)

Konsep: Enkripsi modern bukan sekadar operasi aritmatika linier seperti 1 + 1 = 2.

Analogi Blender: Bayangkan sebuah blender. Plaintext (buah) dimasukkan, ditambah Key (pisau blender), lalu diputar berkali-kali (ronde substitusi & permutasi) sampai hancur lebur menjadi Jus (Ciphertext). Mustahil membalikkan jus kembali menjadi buah utuh tanpa kunci dan algoritma pembalik yang tepat.