- Source: Penyandian blok
Penyandian blok adalah penyandian kunci simetris yang bekerja pada sekelompok bit berukuran tetap yang disebut blok. Mereka tergolong komponen dasar dan dipakai dalam banyak protokol kriptografi dan enkripsi data berukuran besar.
Meski penyandian blok hanya cocok untuk mengenkripsi satu blok data dalam satu waktu dan satu kunci, beberapa mode operasi penyandian blok telah didesain untuk membolehkan penyandian blok dipakai berulang secara aman untuk mencapai keamanan konfidensial dan autentik. Namun, penyandian blok juga bisa jadi komponen pembangun dalam berbagai protokol kriptografi, seperti fungsi hash universal dan pembangkit bilangan acak semu.
Definisi
Suatu penyandian blok terdiri dari sepasang algoritme: enkripsi E dan dekripsi D. Kedua algoritme menerima dua masukan: blok data berukuran n bit dan kunci berukuran k bit. Algoritme dekripsi adalah inversi fungsi enkripsi, yaitu . Secara matematis, suatu penyandian blok didefinisikan oleh sebuah fungsi enkripsi
E
K
(
P
)
=
E
(
K
,
P
)
:
{
0
,
1
}
k
×
{
0
,
1
}
n
→
{
0
,
1
}
n
{\displaystyle E_{K}(P)=E(K,P):\{0,1\}^{k}\times \{0,1\}^{n}\rightarrow \{0,1\}^{n}}
yang menerima kunci K berukuran k bit (disebut ukuran kunci) dan teks asal P berukuran n (disebut ukuran blok) serta mengeluarkan teks tersandi C berukuran n bit. Untuk tiap K, fungsi EK(P) wajib memiliki pemetaan yang dapat dibalik dalam {0, 1}n. Inversi fungsi E didefinisikan sebagai fungsi
E
K
−
1
(
C
)
=
D
K
(
C
)
=
D
(
K
,
C
)
:
{
0
,
1
}
k
×
{
0
,
1
}
n
→
{
0
,
1
}
n
{\displaystyle E_{K}^{-1}(C)=D_{K}(C)=D(K,C):\{0,1\}^{k}\times \{0,1\}^{n}\rightarrow \{0,1\}^{n}}
yang menerima kunci K dan teks tersandi C serta mengeluarkan teks asal P dengan syarat
∀
K
:
D
K
(
E
K
(
P
)
)
=
P
.
{\displaystyle \forall K:D_{K}(E_{K}(P))=P.}
Misalnya, sebuah penyandian blok menerima blok teks asal 128 bit sebagai masukan dan mengeluarkan blok teks tersandi 128 bit. Transformasi yang dilakukan bergantung pada kunci yang diberikan. Dekripsi juga mirip, yaitu menerima blok teks tersandi 128 bit sebagai masukan dan mengeluarkan blok teks asal 128 bit dengan kunci yang diberikan.
Untuk tiap kunci K, EK adalah permutasi (pemetaan bijektif) dari blok masukan. Tiap kunci memilih satu permutasi dari (2n)! kemungkinan.
Sejarah
Desain
= Penyandian blok iteratif
=Penyandian blok iteratif mengubah teks asal ke teks tersandi dengan ukuran yang sama melalui transformasi-transformasi berbalik yang diterapkan berulang-ulang dan dikenal sebagai fungsi ronde.
Fungsi ronde R menerima kunci ronde Ki yang diturunkan dari kunci utama serta dapat didefinisikan sebagai berikut:
M
i
=
R
K
i
(
M
i
−
1
)
{\displaystyle M_{i}=R_{K_{i}}(M_{i-1})}
dengan M0 adalah teks asli dan Mr adalah teks tersandi dengan r adalah jumlah ronde.
Pemutihan kunci dapat ditambahkan. Pada awal atau akhir, data diubah dengan kunci melalui operasi tertentu seperti XOR, penjumlahan, dan pengurangan.
M
0
=
M
⊕
K
0
M
i
=
R
K
i
(
M
i
−
1
)
;
i
=
1
…
r
C
=
M
r
⊕
K
r
+
1
{\displaystyle {\begin{aligned}M_{0}&=M\oplus K_{0}\\M_{i}&=R_{K_{i}}(M_{i-1});\;i=1\dots r\\C&=M_{r}\oplus K_{r+1}\end{aligned}}}
Dari satu skema penyandian blok iteratif standar, penyandian blok yang aman secara kriptografi bisa dibuat dengan jumlah ronde yang besar. Namun, hal itu akan membuat penyandian menjadi tidak efisien.
= Jaringan substitusi–permutasi
=Jaringan substitusi–permutasi (jaringan SP) menerima blok teks asal dan kunci sebagai masukan, kemudian melakukan beberapa ronde yang terdiri dari substitusi dan permutasi (secara bergiliran) sehingga dihasilkan blok tersandi. Bagian substitusi mencampurkan kunci dengan teks asal sehingga menciptakan pengacakan Shannon; bagian permutasi menghamburkan kemubaziran sehingga menciptakan penghamburan Shannon.
Kotak substitusi (kotak-S) menukar nilai dalam blok ke nilai lain. Penukarannya harus korespondensi satu-satu untuk memastikan bahwa hasilnya bisa diinversi atau dideskripsi. Kotak-S yang baik akan memiliki sifat bahwa mengganti satu bit pada masukan akan mengubah paling tidak setengah bit pada keluaran (efek salju longsor). Kotak ini juga memiliki sifat bahwa tiap bit keluaran bergantung pada tiap bit masukan.
Kotak permutasi (kotak-P) adalah permutasi semua bit: ia mengambil keluaran dari kotak-S sebelumnya, mengubah susunan bitnya, dan disebar secara acak merata ke kotak-S selanjutnya. Kotak-P yang baik memiliki sifat bahwa bit hasil kotak-S disebar merata ke sebanyak mungkin kotak-S lain.
Pada tiap ronde, kunci ronde dibuat dengan operasi tertentu, seperti XOR.
Dekripsi dilakukan dengan membalik prosesnya, termasuk menggunakan inversi kotak-S dan inversi kotak-P serta menggunakan kunci ronde dalam urutan terbalik.
= Sandi Feistel
=Dalam sandi Feistel, blok teks asal yang akan dienkripsi dibagi dua bagian. Fungsi ronde diterapkan pada salah satu bagian dengan kunci ronde, lalu keluarannya di-XOR dengan bagian yang lain. Kedua bagian lalu ditukar.
Misalkan F sebagai fungsi ronde dan
K
0
,
K
1
,
…
,
K
n
{\displaystyle K_{0},K_{1},\dots ,K_{n}}
sebagai subkunci untuk ronde ke-
0
,
1
,
…
,
n
.
{\displaystyle 0,1,\dots ,n.}
Proses enkripsi dasar adalah sebagai berikut:
Bagi blok teks asal menjadi dua bagian sama besar, yaitu L0 dan R0.
Untuk tiap ronde ke-
i
=
0
,
1
,
…
,
n
{\displaystyle i=0,1,\dots ,n}
, hitung
L
i
+
1
=
R
i
{\displaystyle L_{i+1}=R_{i}}
R
i
+
1
=
L
i
⊕
F
(
R
i
,
K
i
)
{\displaystyle R_{i+1}=L_{i}\oplus \operatorname {F} (R_{i},K_{i})}
dengan
⊕
{\displaystyle \oplus }
adalah operasi XOR.
Hasilnya adalah teks tersandi (Rn + 1, Ln + 1).
Proses dekripsi dasar adalah sebagai berikut:
Bagi blok teks tersandi menjadi dua bagian sama besar, yaitu Rn + 1 dan Ln + 1.
Untuk tiap ronde ke-
i
=
n
,
n
−
1
,
…
,
0
{\displaystyle i=n,n-1,\dots ,0}
, hitung
R
i
=
L
i
+
1
{\displaystyle R_{i}=L_{i+1}\,}
L
i
=
R
i
+
1
⊕
F
(
L
i
+
1
,
K
i
)
.
{\displaystyle L_{i}=R_{i+1}\oplus \operatorname {F} (L_{i+1},K_{i}).}
Hasilnya adalah teks asli (L0, R0).
Keuntungan jaringan Feistel dibandingkan desain penyandian lain, misal jaringan substitusi–permutasi, adalah bahwa seluruh operasi dijamin dapat dibalik, yaitu hasil enkripsi dapat didekripsi, meski fungsi ronde tidak memiliki inversi.
= Skema Lai–Massey
=Skema Lai–Massey menawarkan sifat yang mirip dengan struktur Feistel. Skema ini juga memiliki keuntungan bahwa fungsi ronde tidak harus memiliki inversi. Ia juga membagi masukan menjadi dua bagian. Namun, fungsi ronde menerima selisih dua bagian dan hasilnya ditambahkan ke kedua bagian.
Misalkan F sebagai fungsi ronde, H sebagai fungsi setengah ronde, dan
K
0
,
K
1
,
…
,
K
n
{\displaystyle K_{0},K_{1},\dots ,K_{n}}
sebagai subkunci untuk ronde ke-
0
,
1
,
…
,
n
.
{\displaystyle 0,1,\dots ,n.}
Proses enkripsi dasar adalah sebagai berikut:
Bagi blok teks asal menjadi dua bagian sama besar, yaitu L0 dan R0.
Untuk tiap ronde ke-
i
=
0
,
1
,
…
,
n
{\displaystyle i=0,1,\dots ,n}
, hitung
(
L
i
+
1
′
,
R
i
+
1
′
)
=
H
(
L
i
′
+
T
i
,
R
i
′
+
T
i
)
{\displaystyle (L_{i+1}',R_{i+1}')=\operatorname {H} (L_{i}'+T_{i},R_{i}'+T_{i})}
dengan
T
i
=
F
(
L
i
′
−
R
i
′
,
K
i
)
{\displaystyle T_{i}=\operatorname {F} (L_{i}'-R_{i}',K_{i})}
and
(
L
0
′
,
R
0
′
)
=
H
(
L
0
,
R
0
)
.
{\displaystyle (L_{0}',R_{0}')=\operatorname {H} (L_{0},R_{0}).}
Hasilnya adalah teks tersandi (Ln + 1, Rn + 1) = (L'n + 1, R'n + 1).
Proses dekripsi dasar adalah sebagai berikut:
Bagi blok teks tersandi menjadi dua bagian sama besar, yaitu Ln + 1 dan Rn + 1.
Untuk tiap ronde ke-
i
=
n
,
n
−
1
,
…
,
0
{\displaystyle i=n,n-1,\dots ,0}
, hitung
(
L
i
′
,
R
i
′
)
=
H
−
1
(
L
i
+
1
′
−
T
i
,
R
i
+
1
′
−
T
i
)
{\displaystyle (L_{i}',R_{i}')=\operatorname {H} ^{-1}(L_{i+1}'-T_{i},R_{i+1}'-T_{i})}
dengan
T
i
=
F
(
L
i
+
1
′
−
R
i
+
1
′
,
K
i
)
{\displaystyle T_{i}=\operatorname {F} (L_{i+1}'-R_{i+1}',K_{i})}
and
(
L
i
+
1
′
,
R
i
+
1
′
)
=
H
−
1
(
L
i
+
1
,
R
i
+
1
)
.
{\displaystyle (L_{i+1}',R_{i+1}')=\operatorname {H} ^{-1}(L_{i+1},R_{i+1}).}
Hasilnya adalah teks asli (L0, R0) = (L'0, R'0).
= Operasi tertentu
=ARX (tambah-putar-XOR)
Banyak penyandian blok modern dan hash yang termasuk algoritme ARX (add-rotate-XOR). Fungsi rondenya hanya terdiri dari tiga operasi: penambahan dengan modulus, rotasi dengan jumlah tetap, dan operasi XOR. Contohnya ada ChaCha20, Speck, XXTEA, dan BLAKE (fungsi hash). Fungsi ronde jaringan ARX biasa digambarkan dengan diagram alir data.
Operasi ARX ini terkenal karena cepat dan murah bagi perangkat lunak dan keras. Implementasinya dapat dibuat sangat sederhana. Karena berjalan dalam waktu tetap (konstan), operasi ini juga kebal terhadap serangan pewaktuan. Teknik analisis kriptografi rotasi berusaha untuk menyerang fungsi rondenya.
Operasi lainnya
Operasi lain yang biasa dipakai dalam penyandian blok antara lain rotasi menurut data seperti RC5 dan RC6, kotak substitusi yang diimplementasikan dalam tabel pencarian seperti Standar Enkripsi Data (DES) dan Standar Enkripsi Laanjutan (AES), kotak permutasi, dan perkalian seperti IDEA.
Mode operasi
Penyandian blok sendiri hanya bisa mengenkripsi satu blok data dengan ukuran yang sama dengan ukuran blok penyandiannya. Untuk pesan berukuran beragam, data tersebut harus dibagi-bagi menjadi berukuran yang sama dengan ukuran blok. Contoh sederhananya adalah buku kode elektronik (ECB), yaitu pesan dibagi dan diberi isian bila kurang (biasanya pada akhir), lalu dienkripsi dan didekripsi secara mandiri. Namun, cara ini kurang aman karena teks asal yang sama akan menghasilkan teks tersandi yang sama sehingga dapat dikenali polanya.
Untuk mengatasinya, beberapa mode operasi penyandian blok telah didesain dan ditulis dalam rekomendasi nasional, seperti NIST 800-38A dan BSI TR-02102, serta standar internasional, seperti ISO/IEC 10116. Konsepnya secara umum adalah menggunakan nilai acak ke teks asal dari masukan tambahan, biasa disebut vektor inisialisasi, untuk membuat enkripsi probabilistik.
Dalam mode perantaian penyandian blok (CBC), agar enkripsi aman, vektor inisialisasi harus acak atau acak semu yang kemudian dilakukan XOR dengan blok teks asal sebelum dienkripsi. Hasil enkripsi menjadi vektor inisialisasi enkripsi blok selanjutnya. Dalam mode umpan balik penyandian (CFB), vektor inisialisasi dienkripsi terlebih dahulu, lalu ditambahkan ke blok teks asal. Keluaran mode umpan balik keluaran (OFB) secara berulang mengenkripsi variabel inisialisasi untuk membuat aliran kunci yang menggambarkan penyandian aliran sinkron. Mode pencacah yang lebih baru juga membuat aliran kunci, tetapi hanya membutuhkan nilai unik dan tidak acak (semu) sebagai vektor inisialisasi. Nilai acaknya didapatkan secara internal dengan menggunakan vektor inisialisasi sebagai pencacah blok dan mengenkripsi nilai pencacah tersebut untuk tiap blok.
Dari sudut pandang keamanan teoretis, mode operasi harus memberikan keamanan yang dikenal sebagai keamanan semantik. Secara nonformal, itu berarti bahwa, bila diketahui teks tersandi, tiada informasi yang bisa didapatkan, kecuali ukuran teks asal, selain yang bisa didapatkan tanpa mengetahui teks tersandi itu. Telah terbukti bahwa semua mode operasi yang dijelaskan di atas, kecuali mode ECB, memiliki sifat ini yang dikenal sebagai serangan teks asal terpilih.
Bantalan
Beberapa mode operasi seperti mode CBC hanya beroperasi pada blok teks asal lengkap. Penambahan bit nol pada akhir blok tidak cukup karena tidak membedakan data berakhiran nol dengan bantalan. Terlebih lagi, cara tersebut menjadikan penyandian rentan terhadap serangan ramalan bantalan. Skema bantalan yang baik dibutuhkan untuk menambah teks asal agar sama dengan kelipatan ukuran blok. Walau banyak skema terkenal yang dijelaskan dalam standar dan literatur telah terbukti rentang terhadap serangan ramalan bantalan, sebuah cara yang menambahkan sebuah bit satu (1) lalu mengisi sisanya dengan bit nol (0) distandarkan sebagai padding method 2 dalam ISO/IEC 9797-1 dan telah dibuktikan aman terhadap serangan-serangan tersebut.
Analisis kriptografi
Penilaian praktis
Contoh algoritme
Referensi
Bacaan lebih lanjut
Knudsen, Lars R.; Robshaw, Matthew (2011). The Block Cipher Companion. Springer. ISBN 978-3-6421-7341-7.
Pranala luar
(Inggris) Daftar algoritme simetris, kebanyakan termasuk penyandian blok
(Inggris) Penyandian blok
(Inggris) "What is a block cipher?" oleh RSA
(Inggris) Block Cipher based on Gold Sequences and Chaotic Logistic Tent System
Kata Kunci Pencarian:
- Penyandian blok
- Mode operasi penyandian blok
- Sandi Feistel
- Enkripsi
- Ukuran blok (kriptografi)
- Blowfish (penyandian)
- Efek salju longsor
- Standar Enkripsi Lanjutan
- Twofish
- Vektor inisialisasi