Cara yang paling naïve dalam menyimpan password adalah dengan
menyimpannya secara plaintext di dalam basis data. Ini adalah cara yang buruk.
Sebab, apabila basis data berhasil dibobol oleh pihak ketiga, maka akan
diketahui pula informasi login milik seluruh pengguna.
Cara kedua adalah dengan enkripsi. Dengan menggunakan enkripsi,
password pengguna disimpan dalam karakter-karakter yang tidak beraturan. Namun,
masalah yang dimiliki oleh metode ini adalah pihak ketiga dapat mendapatkan
password dalam plaintext jika mengetahui kunci untuk mendekripsinya. Selain
itu, password yang sama akan memiliki string dengan hasil enkripsi yang sama.
Cara ketiga ialah menggunakan hashing. Algoritma hash yang biasa
digunakan adalah MD5, SHA-1, dan SHA-256. Mirip dengan cara kedua, string hasil
hash akan disimpan di dalam basis data. Hanya saja cara ini lebih aman, karena
hasil hash tidak reversibel. Kelemahan dari hash untuk menyimpan password
adalah, password yang sama akan memiliki hasil hash yang sama pula. Selain itu,
di internet juga sudah terdapat tabel yang berisi tentang password dan hasil
hashnya yang disebut dengan rainbow table. Sehingga, untuk membobol password
orang lain, kita hanya perlu mencocokkan hash yang disimpan di basis data
dengan yang ada di tabel tersebut dengan melakukan sedikit tambahan komputasi.
Cara keempat ialah menggunakan hash and salting. Salt adalah sebuah
string acak yang digunakan untuk memperkuat password. Hash and Salting yang
umum digunakan adalah dengan melakukan konkatenasi salt dengan password
kemudian mengubahnya dengan fungsi hash. Dengan demikian, password yang sama
dapat memiliki hasil hash function yang berbeda.
Dengan semakin berkembangnya kemampuan komputer, kita harus semakin
pintar dalam menyimpan password. Karena keamanan data-data pribadi pengguna
bergantung bagaimana cara kita menyimpan password. Sebab, kalau tidak, kejadian
yang sama dengan Adobe pada Oktober 2013 akan dapat terulang kembali di mana
data password pengguna bocor.
Sumber:
https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/
https://en.wikipedia.org/wiki/Rainbow_table
https://en.wikipedia.org/wiki/Rainbow_table