Pendahuluan

Keamanan password merupakan hal yang sangat penting dalam sebuah sistem, terutama pada aplikasi web. Banyak kasus kebocoran data terjadi karena password disimpan dalam bentuk asli (plaintext). Jika database bocor, maka semua akun pengguna akan langsung terancam.

Untuk mengatasi hal ini, digunakan teknik hashing, yaitu mengubah password menjadi bentuk lain yang tidak bisa dikembalikan ke bentuk semula. Namun, hashing saja belum cukup. Dibutuhkan teknik tambahan yaitu salt untuk meningkatkan keamanan.

Artikel ini akan membahas bagaimana hashing dengan salt bekerja dan bagaimana cara mengimplementasikannya.

Konsep Dasar Hashing

Hashing adalah proses mengubah data (misalnya password) menjadi string acak dengan panjang tertentu.

Beberapa karakteristik hashing:

  • Tidak bisa dikembalikan ke bentuk semula (one-way)
  • Input yang sama menghasilkan output yang sama
  • Panjang output selalu tetap

Contoh algoritma hashing:

  • MD5 → sudah tidak aman
  • SHA-1 → mulai ditinggalkan
  • SHA-256 → lebih aman dan masih digunakan

Kelemahan Hashing Tanpa Salt

Jika hanya menggunakan hashing biasa, masih ada beberapa celah keamanan, seperti:

  • Brute force attack → mencoba semua kemungkinan password
  • Dictionary attack → menggunakan daftar password umum
  • Rainbow table attack → menggunakan tabel hash yang sudah dibuat sebelumnya

Masalah utamanya adalah:

Jika dua user menggunakan password yang sama, maka hash yang dihasilkan juga akan sama.

Hal ini memudahkan attacker untuk mengenali password yang sama di database.

Konsep Salt dalam Hashing

Salt adalah nilai tambahan (biasanya berupa string acak) yang digabungkan dengan password sebelum proses hashing.

Contoh:

  • Password: admin123
  • Salt: XYZ
  • Hasil: hash(admin123XYZ)

Keuntungan menggunakan salt:

  • Password yang sama akan menghasilkan hash yang berbeda
  • Lebih sulit diserang menggunakan rainbow table

Implementasi Hashing dengan Salt

Metode Manual (Konsep Dasar)

Cara paling sederhana adalah menggabungkan password dan salt:

hash = SHA256(salt + password)

Implementasi di Linux

Menggunakan sha256sum:

echo -n “SALT123password” | sha256sum

Menggunakan openssl:

openssl passwd -6 -salt SALT123 password

Implementasi dengan Python

Contoh sederhana menggunakan Python:

import hashlib

password = “admin123”
salt = “SALT123”

hashed = hashlib.sha256((salt + password).encode()).hexdigest()

print(“Hash:”, hashed)

Penjelasan:

  • salt + password → digabung terlebih dahulu
  • sha256() → proses hashing
  • hexdigest() → hasil dalam bentuk string

Best Practice dalam Penggunaan Salt

Agar lebih aman, penggunaan salt harus mengikuti beberapa aturan:

  • Gunakan salt yang unik untuk setiap user
  • Gunakan salt yang random
  • Jangan hardcode salt di kode program
  • Simpan salt bersama hash di database

Selain itu, gunakan algoritma modern seperti:

  • bcrypt
  • argon2

Analisis Keamanan

Penggunaan salt memberikan beberapa keuntungan:

Mencegah rainbow table attack
Membuat hash lebih unik
Meningkatkan keamanan database

Namun, salt juga memiliki keterbatasan:

  • Tidak sepenuhnya mencegah brute force
  • Masih bisa diserang jika password lemah

Studi Kasus Sederhana

Misalnya ada dua user:

User Password
A admin123
B admin123

Tanpa salt:

  • Hash A = Hash B (sama)

Dengan salt:

  • Hash A ≠ Hash B (berbeda)

Ini membuat attacker lebih sulit menganalisis data.

Kesimpulan

Hashing adalah langkah penting dalam mengamankan password, tetapi tidak cukup jika digunakan sendiri. Dengan menambahkan salt, keamanan sistem dapat meningkat secara signifikan.

Penggunaan salt membuat hash menjadi unik dan lebih sulit untuk diserang. Oleh karena itu, setiap sistem modern sebaiknya menerapkan hashing + salt untuk melindungi data pengguna.

Penutup

Dalam dunia cybersecurity, teknik sederhana seperti hashing + salt bisa menjadi perbedaan antara sistem yang aman dan yang mudah diretas.

Kalau kamu ingin meningkatkan keamanan lebih lanjut, gunakan kombinasi:

  • Hashing + salt + algoritma modern (bcrypt / argon2)