Bantalan (kriptografi)

Dalam kriptografi, **bantalan** (disebut juga **isian** atau **ganjalan**) adalah penambahan data pada awal, tengah, atau akhir sebelum enkripsi. Dalam kriptografi klasik, bantalan ini bisa berupa kata-kata tak masuk akal untuk menyembunyikan kata-kata yang sering dipakai, misal *terima kasih*.

## Kriptografi klasik
Pesan-pesan resmi biasa diawali dan diakhiri oleh kata-kata yang umum: *yang terhormat*, *laporan pagi*, *salam*, *terima kasih*, dan lain-lain. Tujuan utama bantalan dalam penyandian klasik adalah untuk mencegah analis kriptografi untuk memakai kata-kata tersebut untuk mencari teks asal yang dapat membantu membongkar enkripsi. Ukuran bantalan yang acak juga mencegah penyerang untuk mengetahui panjang teks asal secara pasti.

Banyak penyandian klasik menyusun teks asal ke dalam pola tertentu (persegi, persegi panjang, dan lain-lain). Bila teks asal tidak cukup, biasanya diberi tambahan karakter tambahan ke polanya. Penambahan karakter tak masuk akal dapat menyulitkan analisis kriptografi.

## Kriptografi simetris
Dalam fungsi hash kriptografi dan penyandian blok, tiap pesan harus berukuran tertentu. Berikut contoh-contoh pembantalan.

### Pembantalan bit
Pembantalan bit dapat diterapkan untuk pesan dengan ukuran beragam. Satu bit set (1) ditambahkan ke pesan dan diikuti oleh bit reset (0) sampai memenuhi ukuran blok. Pembantalan ini menjadi langkah pertama dalam skema pembantalan dua langkah yang dipakai oleh beberapa fungsi hash seperti MD5 dan SHA (RFC 1321). Pembantalan ini didefinisikan oleh ISO/IEC 9797-1 sebagai Padding Method 2.

 ... | 1011 1001 1101 0100 0010 011**1 0000 0000** |

### Pembantalan bita
Pembantalan bita dapat diterapkan untuk pesan dengan ukuran dalam bita.

#### ANSI X9.23
Dalam ANSI X9.23, tiap blok diberi bantalan dengan bita acak (seringnya 00) dan bita terakhir diisi dengan ukuran bantalan. Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya empat bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD **00 00 00 04** |

#### ISO 10126
ISO 10126 (ditarik tahun 2007) mengatur bahwa bantalan harus ditaruh di akhir dan diisi oleh bilangan acak serta batasan bantalan harus dinyatakan oleh bita terakhir. Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya empat bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD **23 A6 81 04** |

#### PKCS#5 dan PKCS#7
PKCS#7 diatur dalam RFC 5652.

Nilai tiap bita yang ditambahkan adalah banyak bita yang ditambahkan. Bila butuh  bita, nilai tiap bitanya juga . Contohnya sebagai berikut.

 01
 02 02
 03 03 03
 04 04 04 04
 05 05 05 05 05
 dst.

Jenis pembantalan ini (dan juga dua sebelumnya) hanya berlaku jika dan hanya jika  kurang dari 256.

Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya empat bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD **04 04 04 04** |

Jika panjang data asal sudah kelipatan ukuran blok , satu blok tambahan diperlukan dengan nilai tiap bitanya . Hal ini dibutuhkan agar algoritme pendekripsi bisa yakin bahwa bita terakhir pada blok terakhir adalah ukuran bantalan.

Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya delapan bita (tambahan) karena ukuran pesan sama dengan kelipatan ukuran blok.

 ... | DD DD DD DD DD DD DD DD | **08 08 08 08 08 08 08 08** |

PKCS#5 identik dengan PKCS#7, kecuali hanya diterapkan untuk penyandian blok yang memakai ukuran blok 64 bit. Pada praktiknya, keduanya bisa dipakai.

##### ISO/IEC 7816-4

ISO/IEC 7816-4:2005 identik dengan skema pembantalan bit yang diterapkan pada teks asal berukuran  bita. Hal ini berarti bahwa pada praktiknya, nilai bita pertama adalah 80 (heksadesimal) dan (bila perlu) diikuti oleh 00. ISO/IEC 7816-4 sendiri adalah standar komunikasi untuk kartu pintar yang memiliki sistem berkas dan tidak mengandung spesifikasi kriptografi.

Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya empat bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD **80 00 00 00** |

Contoh selanjutnya bantalan satu bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD DD DD DD **80** |

#### Pembantalan nol
Seluruh bita bantalan bernilai nol. Pembantalan ini mungkin tidak bisa dikembalikan bila teks asal diakhiri oleh 00 sehingga tidak bisa dibedakan antara teks asal dan bantalan. Pada contoh berikut, ukuran bloknya delapan bita dan ukuran bantalannya empat bita.

 ... | DD DD DD DD DD DD DD DD | DD DD DD DD **00 00 00 00** |

## Referensi