Menyamarkan password dengan teknik hashing
Artikel kali ini akan membahas teknik untuk menyamarkan password. Password perlu disamarkan untuk melindungi pengguna sistem. Jika password disimpan dalam bentuk plain text (apa adanya) alias tanpa penyamaran sama sekali, maka mereka yang memiliki akses terhadap data pengguna (misal admin database), akan dapat mengetahui password setiap pengguna pada sistem.
Apa itu hashing?
Untuk menyamarkan password, teknik yang digunakan adalah teknik hashing. Hashing sebenarnya adalah fungsi yang melakukan kalkulasi berdasarkan algoritma matematis tertentu untuk mendapatkan nilai hash dari input teks tertentu. Nilai hash inilah yang kemudian dapat disimpan untuk menggantikan password.
Contoh, teks ‘python’ bila dihash dengan beberapa algoritma hashing akan menghasilkan nilai hash sebagai berikut:
- Dengan MD5, menghasilkan 23EEEB4347BDD26BFC6B7EE9A3B755DD
- Dengan SHA1, menghasilkan 4235227B51436AD86D07C7CF5D69BDA2644984DE
- Dengan SHA256, menghasilkan 11A4A60B518BF24989D481468076E5D5982884626AED9FAEB35B8576FCD223E1
Anda dapat mencoba melihat hasil hashing dengan berbagai metode secara online di beberapa situs yang menyediakan layanan ini, misalnya: http://www.sha1-online.com/, http://onlinemd5.com/, dan https://www.tools4noobs.com/online_tools/hash/
Beda hashing dengan enkripsi
Istilah hashing sering dipertukarkan dengan enkripsi, padahal perbedaan keduanya cukup fundamental. Hashing hanya dapat dilakukan satu arah. Artinya hasil berupa nilai hash tidak dapat dikembalikan ke bentuk semula. Sebaliknya, algoritma enkripsi dirancang berlaku dua arah. Jika hashing cocok untuk menyamarkan password, maka kegunaan enkripsi adalah untuk menyamarkan pesan. Hasil hash dari sebuah password tidak perlu dikembalikan ke bentuk awal untuk dapat diverifikasi, sedangkan sebuah pesan, perlu dapat dikembalikan ke bentuk semula agar dapat dibaca oleh pihak yang menjadi tujuan pesan.
Contoh kode
Berikut adalah contoh cara melakukan hashing password dengan menggunakan dua library. Pertama menggunakan hashlib (standard library), kedua menggunakan passlib. Pada kedua contoh, tersedia dua fungsi yakni fungsi untuk menghasilkan hash, dan fungsi untuk verifikasi password.
Menyamarkan password menggunakan hashlib
Hashlib (link) tersedia pada python standard library, oleh karena itu kita dapat langsung mengimport modul ini tanpa perlu lagi mendownload dari internet. Algoritma untuk menghasilkan hash yang tersedia pada hashlib dapat dicek pada atribut algorithm_available.
Berikut adalah contoh kode untuk menyamarkan password dengan hashlib, menggunakan hash yang dihasilkan oleh algoritma sha256.
Catatan: teknik di atas memperlihatkan teknik hashing tanpa melibatkan salt, dan karenanya menjadi tidak cukup aman. Metode ini tidak direkomendasikan dan diperlihatkan hanya sebagai contoh saja.
Menyamarkan password menggunakan passlib
Cara berikutnya adalah menggunakan passlib. Karena passlib tidak tersedia pada standard library maka library ini harus terlebih dahulu diinstall. Anda dapat menggunakan perintah pip install passlib jika menggunakan pip. Contoh kode di bawah ini memperlihatkan bagaimana cara melakukan hashing menggunakan library passlib. Bedanya dengan teknik sebelumnya, cara ini sudah dilengkapi dengan salt, dan dilengkapi dengan pilihan jumlah iterasi untuk membuat password lebih sulit untuk dijebol menggunakan brute force (teknik menjebol password/passphrase dengan mencoba sebanyak mungkin kombinasi).
Semoga bermanfaat,
Salam