Pengantar

Kebocoran data yang melibatkan jutaan akun pengguna masih menjadi ancaman serius di era digital. Salah satu penyebab utamanya adalah penyimpanan password yang tidak aman, misalnya dalam bentuk teks biasa (plain text) atau menggunakan algoritma hash tanpa perlindungan tambahan. Ketika database berhasil diakses oleh penyerang, password yang disimpan dengan metode yang lemah dapat dengan mudah dipulihkan menggunakan teknik seperti dictionary attack, brute force, atau rainbow table.

Untuk mengurangi risiko tersebut, para praktisi keamanan siber menerapkan berbagai teknik perlindungan, di antaranya Salting dan Peppering. Keduanya sama-sama digunakan bersama proses hashing password, tetapi memiliki fungsi dan cara kerja yang berbeda. Dengan memahami konsep ini, pengembang dapat membangun sistem autentikasi yang lebih tangguh terhadap berbagai jenis serangan.


Apa Itu Salting dan Peppering?

Pengertian Salting

Salting adalah teknik menambahkan nilai acak (salt) ke password sebelum dilakukan proses hashing. Setiap pengguna memiliki nilai salt yang berbeda sehingga meskipun dua pengguna menggunakan password yang sama, hasil hash yang dihasilkan tetap berbeda.

Menurut OWASP Password Storage Cheat Sheet, penggunaan salt yang unik untuk setiap password merupakan praktik standar yang mampu melindungi sistem dari serangan seperti rainbow table dan mempersulit upaya cracking terhadap banyak password sekaligus (dikutip dari: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html).

Sebagai contoh:

Password: password123
Salt: X7kP9mA2

Data yang di-hash menjadi:

password123X7kP9mA2

Hasil hash tersebut akan berbeda jika nilai salt berubah, meskipun password yang digunakan tetap sama.

baca juga : DOM-Based XSS: Ancaman Cross-Site Scripting yang Bersembunyi di Sisi Browser


Pengertian Peppering

Berbeda dengan salt, Peppering adalah teknik menambahkan nilai rahasia (pepper) ke password sebelum atau sesudah proses hashing. Nilai pepper bersifat global dan digunakan untuk seluruh pengguna dalam suatu sistem.

Pepper tidak disimpan di dalam database bersama password, melainkan ditempatkan di lokasi yang lebih aman, seperti:

  • Environment Variable
  • Secret Management Service
  • Hardware Security Module (HSM)
  • Konfigurasi server yang terenkripsi

Dengan demikian, meskipun database berhasil dicuri, penyerang tetap membutuhkan nilai pepper untuk menghasilkan hash yang benar.


Mengapa Salting dan Peppering Sangat Penting?

Hash password saja tidak selalu cukup untuk melindungi data pengguna. Jika dua akun menggunakan password yang sama, hasil hash tanpa salt juga akan identik sehingga mempermudah penyerang mengenali pola.

Selain itu, berbagai database rainbow table telah dibuat untuk mencocokkan hash dari password yang umum digunakan. Dengan adanya salt, metode tersebut menjadi jauh kurang efektif karena setiap hash bersifat unik.

Peppering memberikan lapisan perlindungan tambahan. Bahkan jika penyerang memperoleh seluruh isi database, mereka masih harus mengetahui nilai pepper yang disimpan di luar database agar dapat memverifikasi hasil hash.


Perbedaan Salting dan Peppering

Walaupun sering digunakan secara bersamaan, Salting dan Peppering memiliki fungsi yang berbeda.

Salting Peppering
Nilainya unik untuk setiap pengguna Nilainya sama untuk seluruh sistem
Disimpan bersama hash password di database Disimpan di luar database
Melindungi dari rainbow table Melindungi jika database berhasil dicuri
Tidak bersifat rahasia Harus dirahasiakan

Kombinasi keduanya memberikan perlindungan yang lebih kuat dibandingkan hanya menggunakan salah satu teknik saja.


Bagaimana Cara Kerja Salting?

Misalkan terdapat dua pengguna dengan password yang sama.

Tanpa Salt

User A
Password123

↓

Hash:
ABC123XYZ
User B
Password123

↓

Hash:
ABC123XYZ

Hasil hash yang sama menunjukkan bahwa kedua pengguna menggunakan password identik.


Dengan Salt

User A

Password123
+
Salt = H8d21

↓

Hash:
KJH45MN9
User B

Password123
+
Salt = R7Lp81

↓

Hash:
QWE98RT5

Kini hasil hash menjadi berbeda meskipun password keduanya sama.

baca juga : Code Obfuscation: Teknik Menyamarkan Kode Program untuk Mencegah Reverse Engineering


Bagaimana Cara Kerja Peppering?

Sebagai contoh:

Password:
Password123

Pepper:
MySecretPepper!

↓

Password123MySecretPepper!

Kemudian data tersebut diproses menggunakan algoritma hashing seperti Argon2id atau bcrypt.

Karena pepper tidak tersedia di database, penyerang tidak dapat langsung menghasilkan hash yang sesuai meskipun berhasil memperoleh seluruh data pengguna.


Salting dan Peppering Bukan Pengganti Hashing

Perlu dipahami bahwa Salt maupun Pepper tidak menggantikan proses hashing.

Urutan yang benar adalah:

  1. Pengguna memasukkan password.
  2. Sistem menambahkan salt.
  3. Sistem menambahkan pepper (bergantung pada implementasi).
  4. Password diproses menggunakan algoritma hashing yang kuat.
  5. Hash disimpan di database.

Dengan pendekatan tersebut, password asli tidak pernah disimpan dalam bentuk yang dapat dibaca.


Algoritma Hash yang Direkomendasikan

Selain menggunakan salt dan pepper, pemilihan algoritma hashing juga sangat menentukan tingkat keamanan.

Beberapa algoritma yang direkomendasikan saat ini meliputi:

  • Argon2id
  • bcrypt
  • scrypt
  • PBKDF2

Berdasarkan panduan dari National Institute of Standards and Technology (NIST), penyimpanan password sebaiknya menggunakan fungsi password hashing yang memiliki faktor kerja (work factor) untuk meningkatkan ketahanan terhadap serangan brute force (dikutip dari: https://pages.nist.gov/800-63-4/sp800-63b.html).

Sebaliknya, algoritma seperti MD5 maupun SHA-1 sudah tidak direkomendasikan untuk penyimpanan password karena dapat diproses terlalu cepat oleh perangkat keras modern.


Kesalahan yang Masih Sering Dilakukan

Dalam praktiknya, masih banyak pengembang yang melakukan kesalahan seperti:

  • Menyimpan password dalam bentuk plain text.
  • Menggunakan MD5 atau SHA-1 untuk hashing password.
  • Menggunakan salt yang sama untuk seluruh pengguna.
  • Menyimpan pepper di database yang sama dengan password.
  • Tidak menggunakan algoritma hashing modern seperti Argon2id atau bcrypt.

Kesalahan-kesalahan tersebut dapat meningkatkan risiko keberhasilan serangan terhadap sistem autentikasi.


Best Practice Mengamankan Password

Beberapa praktik terbaik yang direkomendasikan adalah:

  • Gunakan algoritma hashing modern seperti Argon2id atau bcrypt.
  • Buat salt yang unik untuk setiap password.
  • Simpan pepper di luar database.
  • Terapkan work factor yang sesuai dengan kemampuan server.
  • Gunakan Secret Manager atau HSM untuk menyimpan pepper.
  • Lakukan pembaruan algoritma hashing jika standar keamanan berubah.

Dengan menerapkan langkah-langkah tersebut, sistem autentikasi akan lebih tahan terhadap berbagai teknik serangan modern.

baca juga : TCP Three-Way Handshake Deep Dive: Memahami Proses Koneksi TCP dari SYN hingga ACK


Kesimpulan

Salting dan Peppering merupakan dua teknik penting yang saling melengkapi dalam meningkatkan keamanan penyimpanan password. Salting memastikan setiap password menghasilkan hash yang unik sehingga efektif mencegah serangan rainbow table, sedangkan Peppering memberikan lapisan perlindungan tambahan dengan menyimpan nilai rahasia di luar database.

Namun, kedua teknik tersebut tidak akan memberikan perlindungan maksimal jika tidak dipadukan dengan algoritma hashing yang kuat seperti Argon2id atau bcrypt. Oleh karena itu, pengembang perlu menerapkan strategi keamanan berlapis yang mencakup hashing modern, salt unik untuk setiap pengguna, pepper yang tersimpan secara aman, serta pembaruan konfigurasi keamanan secara berkala agar sistem autentikasi tetap mampu menghadapi ancaman siber yang terus berkembang.