Pencirian Kata Sandi
Beberapa serangan keamanan dunia maya yang paling merusak muncul dari pelanggaran kata sandi, yang disimpan dengan buruk di dalam basis data sisi server.
Masalahnya bisa dimulai dengan pengguna, yang mungkin cenderung menyetel kata sandi dasar dan mudah diingat. Ini menimbulkan risiko karena mudah ditebak oleh penyerang jika mereka memiliki pemahaman kontekstual tentang individu tersebut, seperti nama hewan peliharaan atau kerabat.
Bahkan ketika kata sandi yang lebih rumit dipilih, perangkat lunak pemecah kata sandi dapat memicu serangan brute force, menghasilkan sejumlah besar kata sandi yang diuji coba hingga berhasil.
Vektor serangan lainnya adalah mendapatkan akses ke database yang menyimpan kredensial. Dalam skenario mimpi buruk CISO, jika penyerang mendapatkan akses ke database kata sandi teks biasa yang tidak terenkripsi, ribuan akun pengguna dapat segera disusupi. Sayangnya, hal ini terlalu sering terjadi - memengaruhi organisasi baik kecil maupun besar.
Jangan takut, prospek yang menegangkan ini dapat dibatasi oleh sesuatu yang disebut hashing kata sandi!
Mendefinisikan hashing
Hash kata sandi adalah teknik algoritme kriptografi yang mengambil teks biasa, menjalankan fungsi hash yang rumit, dan menghasilkan teks hash. Kunci dari proses ini adalah fungsinya, tetapi tidak semuanya sama-sama cocok untuk mencegah retak.
Semua fungsi harus memenuhi dua properti utama untuk memenuhi kriteria OWASP (Proyek Keamanan Aplikasi Web Sumber Terbuka):
Sulit untuk membuat masukan awal yang sesuai dengan keluaran tertentu yang diinginkan.
Untuk mengilustrasikan karakteristik ini, hash dari 'Password' yang dihasilkan melalui algoritma kriptografi populer sha256, adalah:
e7cf3ef4f17c3999a94f2c6f612e8a888e5b1026878e4e19398b23bd38ec221a
Dan hash dari 'kata sandi' adalah:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Seperti yang Anda lihat, dari hanya mengubah kapitalisasi satu huruf input, dihasilkan output yang sangat berbeda, sehingga berarti bahwa output tidak dapat dengan mudah ditentukan dari input.
Praktis untuk menghasilkan hash tetapi secara praktis tidak mungkin untuk menghasilkan kembali input jika hanya nilai hash yang diketahui.
Tidak seperti enkripsi, di mana kata sandi teks biasa diubah menjadi teks terenkripsi sebelum mendekripsi kembali ke teks biasa, hashing adalah cara satu fungsi. Karena hashing kata sandi bersifat deterministik, masukan yang sama selalu menghasilkan keluaran yang sama.
Kasus penggunaan ini adalah ketika pengguna membuat kata sandi, itu dapat di-hash kemudian hasilnya disimpan dalam database. Ketika pengguna mencoba kata sandinya lagi, itu di-hash lagi dan kemudian diverifikasi dengan hash di database. Jika penyerang mendapatkan akses ke database hash, sebagian besar tidak berguna karena kata sandi tidak dapat diubah kembali menjadi teks biasa.
Coba jalankan skrip Python ini untuk melihat versi sederhana dari konsep ini :
# this and other fun scripts can be found at: https://github.com/Jay-Gokani
# install sha256 library for hashing
from hashlib import sha256
# demo explanation
print ('Hello, this demo will ask for a plaintext password, hash it and will verify the hash for access requests')
# first hash stored as a variable
hash1 = (sha256(input('What phony password would you like to set? ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash1)
# password hash stored confirmation
print ('Your password hash has been successfully stored.')
# promt the user for password re-entry, hash and store as another variable
hash2 = (sha256(input('I will test your hash. Please type your password: ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash2)
# access approval or deny check
while True:
if hash1 == hash2:
print('Success - password hash matches.')
break
else:
print('The password hash does not match. Please run the programme again.')
break
Hash tentu saja bukan solusi lengkap untuk mencegah kata sandi yang disusupi. Misalnya, penyerang dapat membuat daftar kata sandi umum dan hash yang sesuai. Jika ada hash dalam database yang ada dalam daftar, penyerang akan mengetahui kata sandi plaintext. Tapi ini seharusnya tidak menjadi masalah jika kata sandi plaintext dibuat dengan kompleksitas yang cukup. Selain itu, aplikasi yang menyerap kata sandi teks biasa untuk menghasilkan hash dapat dicegat.
Pencirian kata sandi adalah langkah bagus ke arah yang benar! Kami harap Anda menikmati artikel ini :-)

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































