Baiklah.
Jadi sekarang kita telah melihat apa beberapa kerentanan mungkin untuk kata sandi hash saatnya
untuk naik level dan belajar tentang cara kita dapat mencegah jenis serangan kamus atau retak tabel hash.
Dan untuk melakukan itu kita harus belajar tentang pengasinan.
Sekarang apa sebenarnya pengasinan.
Kita sudah tahu hashing itu apa.
Saat kami mengambil kata sandi, kami menjalankannya melalui fungsi hash dan berakhir dengan hash yang kami simpan di
basis data kami.
Dan seperti yang kita lihat di pelajaran terakhir, kata sandi yang dihasilkan oleh manusia sangat tidak aman.
Mereka cenderung sangat pendek dan mereka cenderung menjadi kata-kata kamus yang sangat mudah dicari
dan membuat tabel hash untuk sekarang pengasinan membutuhkan hashing sedikit lebih jauh.
Selain kata sandi, kami juga menghasilkan serangkaian karakter acak dan karakter tersebut bersama dengan kata
sandi pengguna digabungkan dan kemudian dimasukkan melalui fungsi hash.
Jadi hash yang dihasilkan dibuat dari kata sandi dan juga garam unik acak.
Jadi itu berarti tidak peduli seberapa sederhana kata sandi pengguna menambahkan bahwa garam meningkatkan kompleksitasnya
meningkatkan jumlah karakter dan kami membuat basis data pengguna kami jauh lebih aman.
Jadi pertimbangkan masalah sebelumnya yang kita lihat dalam pelajaran terakhir yang kita bahas peretasan 1 banding 1.
Sekarang kita tahu bahwa tiga dari pengguna kami memiliki kata sandi yang sama dan kami mengetahuinya karena mereka semua
memiliki hash yang sama.
Sekarang di sisi lain jika kita telah menghasilkan serangkaian karakter acak yang merupakan garam dan menggabungkan kata sandi dengan garam
untuk menghasilkan hash maka mereka tidak akan memiliki hash yang sama dalam basis data pengguna
kita.
Jadi mari kita coba dan hasilkan hash Emily dari kata sandinya.
Jadi kita tahu bahwa kata sandinya unik dan kami menghasilkan garam acak.
Jadi mari kita lanjutkan dan masukkan kualitas kata sandinya dan kemudian kita tambahkan pada akhirnya garam acak
yang kita hasilkan dan kita berakhir dengan hash.
Namun hash ini tidak sama dengan hash Tony atau hash Angela karena garamnya berbeda setiap
kali.
Sekarang garam adalah sesuatu yang tidak harus diingat pengguna.
Dan sebaliknya itu disimpan dalam database bersama dengan hash.
Jadi itu berarti ketika pengguna mengetikkan kata sandi mereka ketika mereka mencoba masuk Anda menggabungkan kata sandi mereka
dengan garam dan jika Anda menghasilkan hash yang sama maka mereka harus memiliki kata sandi yang sama.
Ini agak pintar bukan.
Dan pada basis data kami tentu saja kami tidak akan menyimpan kata sandi mereka tetapi hanya garam dan hash.
Sekarang pertimbangkan statistik kami sebelumnya. Anda dapat menghasilkan sekitar 20 miliar kosong LIMA HASH per detik.
Jadi, bahkan jika kami menambahkan garam dan kami membuatnya lebih sulit untuk menghasilkan tabel hash dengan beberapa
penggunaan murah terbaru, Anda mungkin masih dapat menghasilkan tabel hash dengan semua kombinasi garam relatif cepat.
Jadi apa lagi yang bisa kita lakukan untuk meningkatkan keamanan.
Kita bisa menggunakan sesuatu selain dari lima kosong.
Kanan.
Algoritma hashing lain yang dihargai karena sangat lambat dan ini adalah di mana B crypt
masuk
Ini adalah salah satu algoritma hashing standar industri yang digunakan pengembang untuk menjaga keamanan kata sandi
penggunanya karena Anda dapat menghitung 20 miliar kosong LIMA HASHES per detik.
Bahkan penggunaan Jeep terbaru dan terhebat pada tahun 2019 masih dapat menghitung hanya sekitar 17.000 menjadi hash crypt per detik yang
membuatnya secara dramatis lebih sulit bagi seorang hacker untuk menghasilkan tabel hash yang telah dikompilasi sebelumnya dan menyerang
tabel hash daripada mengambil sesuatu seperti tiga detik jika itu adalah hash kosong lima jika hash
menggunakan B crypt.
Ini akan membawa Anda sekitar delapan bulan yang tidak terlalu layak untuk diretas.
Mereka mungkin akan pergi dan mencari perusahaan yang memiliki keamanan kurang diaktifkan dan untuk membuat kata sandi
kami lebih aman ketika kami menggunakan B crypt.
Ini memiliki konsep apa yang disebut Putaran garam berapa banyak putaran yang akan Anda berikan garam pada kata sandi Anda dan jelas
semakin banyak putaran yang Anda lakukan semakin membuat kata sandi Anda lebih asin dan semakin aman pula dari peretas.
Jadi apa sebenarnya garam itu?
Baiklah katakanlah kata sandi pengguna asli kami unik dan kami menghasilkan serangkaian karakter
acak sebagai garam.
Jadi sekarang kami memiliki kualitas dan set garam acak.
Kita melewatkannya melalui fungsi hash kita b crypt dan kita berakhir dengan hash.
Nah, itu satu putaran pengasinan.
Jika kita ingin memiliki dua putaran pengasinan, maka kita ambil hash yang dihasilkan di Babak 1
dan kita tambahkan garam yang sama dari sebelumnya dan sekarang kita jalankan melalui B crypt fungsi hash lagi
dan kita berakhir dengan hash yang berbeda dan berapa kali Anda melakukan ini adalah jumlah putaran garam.
Sekarang alasan mengapa ini jenius adalah karena ketika komputer semakin cepat ingat bahwa Hukum Moore mengatakan bahwa
setiap tahun jumlah transistor dalam chip komputer hampir dua kali lipat dan biaya komputer cepat itu menjadi
dua.
Jadi setiap tahun Anda mendapatkan lebih banyak daya komputasi dengan lebih sedikit uang.
Dan di sinilah putaran garam masuk ketika Anda hashing kata sandi Anda menggunakan B crypt.
Anda dapat mengatur jumlah putaran yang ingin Anda salin kata sandi Anda.
Jadi itu berarti mungkin tahun ini di 2019 Anda menyerang 10 putaran, tetapi mungkin tahun depan Anda dapat
meningkatkan jumlah itu menjadi 12 dan untuk setiap peningkatan jumlah itu.
Jumlah waktu yang dibutuhkan untuk meng-hash kata sandi Anda berlipat ganda.
Dan itu berarti Anda tidak perlu mengubah algoritma hashing atau memperbarui kode Anda selain hanya mengubah
satu nomor untuk mengikuti perkembangan zaman.
Jadi, hanya ulasan Anda yang kembali ke basis data pengguna yang akan menyimpan nama pengguna setiap
pengguna akan memiliki garam yang dihasilkan secara acak disimpan dan kemudian akan menyimpan hash mereka setelah sejumlah putaran pengasinan.
Dan ketika datang untuk memeriksa kata sandi mereka ketika mereka masuk akan mengambil kata sandi yang mereka masukkan.
Gabungkan dengan garam yang disimpan dalam database dan jalankan melalui jumlah putaran salting yang sama
sampai kita berakhir dengan hash terakhir dan kita membandingkan hash dengan yang disimpan dalam database
untuk melihat apakah mereka telah memasukkan yang benar kata sandi.
Jadi mari kita mulai.
Dalam kehidupan nyata dan terapkan skrip B dan putaran salting ke dalam otentikasi situs web kami.
Sekarang paket yang akan kita gunakan untuk hash kata sandi kita menggunakan skrip B juga disebut B crypt
dan Anda dapat menemukan dokumentasi untuk itu seperti biasa di NPM.
Sekarang skrip B agak aneh tentang kompatibilitas virgin dengan node.
Jadi, jika Anda ragu-ragu, pastikan untuk memeriksa versi simpul Anda terlebih dahulu dengan mengetik simpul dasbor versi atau
simpul dasbor V.
Dan Anda dapat melihat bahwa saat ini saya sedang menjalankan rilis stabil terbaru dari simpul yang sepuluh
poin lima belas poin nol pada titik saat ini dalam waktu.
Sekarang jika Anda ingin tahu untuk apa versi stabil saat ini ketika Anda melihat video ini.
Jadi ini akan diperbarui setiap minggu atau bulanan sehingga pada saat Anda menonton video ini jumlah ini mungkin
sudah lebih tinggi.
Jadi ketika Anda memeriksa versi simpul Anda bisa melihatnya tergantung pada versi simpul Anda.
Mereka juga memiliki versi b crypto yang kompatibel dengan versi node tersebut dan mereka sangat
spesifik untuk tidak mendukung versi node yang tidak stabil.
Jadi, apa pun yang merupakan angka ganjil B crypt tidak ingin didukung karena itu kurang stabil memiliki lebih banyak
peluang bug dan mereka selalu merekomendasikan Anda untuk menggunakan versi stabil terbaru.
Jadi jika Anda memiliki versi simpul yang lebih lama atau bahkan jika Anda memiliki dua versi catatan baru bagaimana Anda bisa kembali ke versi ini yang ada di sebelah
kiri di sini di no G. S. situs web.
Anda dapat menggunakan sesuatu yang disebut VM dan Anda dapat menginstal dan M dengan membuka repositori
GitHub-nya dan cukup menyalin baris kode ini dan menempelkannya ke terminal Anda.
Dan begitu Anda telah menginstalnya restart terminal Anda begitu tutup dan buka lagi dan Anda harus dapat
memeriksa versi Anda dengan menulis dan versi dasbor m dash dan jika Anda mendapatkan versi kembali maka itu
berarti sudah pasti diinstal dan Anda dapat menggunakannya untuk memperbarui atau menurunkan versi node Anda.
Jadi kita akan menargetkan sepuluh koma lima belas koma nol atau apa pun yang Anda lihat ketika Anda
mengenal Yesus dot org.
Versi dukungan jangka panjang dan kita akan menggunakan VM untuk menginstal node pada versi itu hanya dengan
menulis dan menginstal M.
Sepuluh koma lima belas koma nol dan tekan enter dan itu akan mengunduh dan menginstal versi stabil
terbaru node untuk Anda sekarang.
Setelah Anda mendapatkan versi stabil terbaru yang diunduh dan diinstal, Anda dapat melanjutkan dan mencari
versi B crypt yang kompatibel.
Jadi saat ini kita berada di Versi 10 dan b crypt harus tiga atau lebih.
Sekarang pada titik saat ini jika saya hanya mencoba dan melihat ke proyek rahasia saya dan menjalankan npm install B crypt maka Anda dapat
melihat saya mendapatkan beberapa peringatan dan saya menduga ini mungkin hanya akan terjadi selama beberapa
hari ini sementara B crypt tim berebut untuk mencoba dan memperbarui kode mereka.
Tetapi jika Anda mendapatkan sesuatu yang serupa seperti yang saya lakukan.
Bagaimana Anda menyelidiki untuk melihat bagaimana memperbaikinya atau apakah jika Anda bahkan perlu memperbaikinya dengan setiap paket NPM
selalu ada tautan ke repositori tempat kode di-host di github dan di GitHub Anda selalu dapat menjelajahi masalah
yang dialami orang-orang sementara mereka mencoba menggunakan repositori ini dan Anda dapat melihat bahwa baru-baru
ini tiga hari berlalu lima hari yang lalu.
Semua orang tampaknya memiliki masalah dengan menginstal B crypt dan jika Anda mengkliknya Anda akan melihat wacana
atau obrolan atau pesan antara pembuat B puisi dan orang-orang yang mengalami masalah dan Anda dapat melihat apakah Anda
mendapatkan masalah yang sama sekarang kita tidak memiliki masalah seburuk ini.
Sebagai orang ini karena mereka benar-benar mendapatkan kesalahan dan mereka tidak benar-benar
menginstalnya dan jika Anda membaca ini Anda dapat melihat apa solusinya yang orang merekomendasikan dan
pada titik di mana saya menjalankannya yang paling mudah caranya adalah dengan menginstal versi
B crypt 3 yang sedikit lebih tua. 0 titik poin sedangkan versi terbaru adalah tiga koma nol koma tiga.
Jadi untuk menginstal versi yang sedikit lebih tua menggunakan NPM Anda masih menulis NPM PMI untuk menginstal dan kemudian Anda menambahkan
nama paket dan kemudian Anda memiliki tanda dan setelah bagian luar muncul versi yang Anda
inginkan.
Jadi saya ingin tiga koma nol koma dua.
Jadi itu adalah versi yang NPM akan instal untuk saya dan Anda dapat melihat bahwa
ketika saya mengubah perintah instalasi saya, saya tidak lagi mendapatkan semua masalah ini dan paket saya berhasil diinstal.
Jadi Anda mungkin tidak mengalami sama sekali.
Anda mungkin tidak mendapatkan masalah sama sekali selain dari mungkin semua terlalu peringatan NPM
karena kami tidak memiliki deskripsi atau repositori untuk paket kami di sini.
Tetapi selain itu Anda mungkin sebenarnya tidak memiliki masalah.
Tetapi jika Anda mengalami masalah dengan skrip B atau paket lainnya di masa mendatang, Anda
akan tahu cara menyelidiki masalah tersebut dan melihat apakah ada beberapa solusi yang ditawarkan untuk masalah tersebut.
Baiklah, sekarang setelah B crypt berhasil diinstal di proyek kami, langkah selanjutnya adalah benar-benar
menggunakannya.
Jadi kita akan melanjutkan dan menukar MDG 5 dan sebagai gantinya kita akan menggunakan B crypt sehingga
B crypt sama dengan membutuhkan B crypt.
Kemudian kami menentukan jumlah putaran garam sehingga saat ini 10 harus lebih dari cukup.
Dan jika Anda ingat bahwa semakin banyak Anda menambah jumlahnya semakin sulit komputer Anda juga harus
bekerja untuk menghasilkan hash tersebut.
Dan jika Anda menggulir ke bawah itu benar-benar menunjukkan kepada Anda berapa lama untuk menghasilkan hash Anda atau berapa banyak hash
dibuat tergantung pada bagaimana Anda mengubah nomor ini.
Jadi Anda mengatakan bahwa putaran garam nomor 231.
Kemudian pada inti dua gigahertz dapat berharap untuk mengambil dua hari atau tiga hari untuk menghasilkan hash yang mana
mungkin terlihat seperti aplikasi Anda sedang crash tetapi sebenarnya hanya menjauh.
Jadi setidaknya untuk 2019 dan 2020 saya akan merekomendasikan menjaga putaran garam pada 10 dan benar-benar menggunakan
crypt.
Kita akan menggunakan fungsi hash dengan memasukkan kata sandi yang telah diketikkan pengguna saat mereka mendaftar dan
juga jumlah putaran pengasinan yang ingin kita lakukan dan b crypt akan secara otomatis menghasilkan garam acak dan
juga hash kata sandi kita dengan jumlah putaran garam yang kami rancang.
Jadi mari kita lanjutkan dan menerapkannya di dalam rute pos register kita.
Jadi di dalam adalah pos yang tepat untuk mendaftar.
Saya akan menempelkan dua baris kode yang telah saya salin dari dokumentasi dan di
dalam fungsi callback ini adalah ketika kita akan menghasilkan hash terakhir setelah 10 putaran salting dan juga
memasukkan kata sandi.
Sekarang kata sandi yang harus kita lewati di sini tentu saja kata sandi bertubuh permintaan yang
diketikkan pengguna ke bidang kata sandi ketika mereka mencoba mendaftar dan di dalam fungsi panggilan balik ini akan memiliki
akses ke hash ini yang dapat kita simpan ke dalam basis data kita .
Jadi saya akan memilih sisa kode ini dan cukup tempel di sini untuk menjalankan dan membuat pengguna kami
hanya setelah kami menghasilkan hash kami dan saya akan mengganti bidang kata sandi di sini untuk hash yang kami hasilkan dan
kemudian kita akan melakukan hal yang persis sama seperti sebelumnya.
Kami akan menyimpan pengguna baru kami bersama dengan email mereka dan kata sandi hash ke dalam basis data kami.
Jadi mari kita lanjutkan dan jalankan ini dan lihat apakah itu berhasil.
Jadi pastikan untuk menghapus semua menyebutkan lima kosong jika Anda akan menghapus paket itu dari proyek
Anda.
Anda dapat melihat di sini saya mendapatkan peringatan yang saya miliki di permintaan maaf saya di saluran dua belas. Saya punya log
konsol yang menggunakan lima paket kosong saya yang sekarang tentu saja dihapus.
Jadi mari kita lanjutkan dan memperbaikinya.
Jadi pada baris nomor 12 saya punya log konsol saya jadi saya hanya akan menghapus dua baris ini.
Jadi mari kita lanjutkan dan tekan save dan Node monitor dan restart dan Anda dapat melihat sekarang
server kami sudah mulai tanpa masalah.
Jadi, setiap kali Anda menghapus paket.
Berhati-hatilah agar Anda tidak menggunakannya di suatu tempat di dalam kode Anda.
Dan mari kita menuju ke tuan rumah lokal tiga ribu.
Mari mendaftarkan pengguna baru dan pengguna ini akan menjadi pengguna di hash dot com crypt besar dan saya benar-benar membuat email ini tetapi itu hanya berarti
bahwa ketika kita melihatnya di database kita akan lebih mudah
untuk melihat pengguna dengan hash apakah fungsi hash.
Jadi pengguna ini adalah pengguna yang buruk karena mereka akan menggunakan kata sandi yang sangat sederhana 1 2 3 4 5 6.
Dan kita akan mendaftar.
Jadi kami telah berhasil menemukan halaman rahasia yang berarti bahwa pengguna kami seharusnya berhasil disimpan
ke dalam basis data kami.
Jadi mari kita lanjutkan dan memeriksanya.
Anda dapat melihat bahwa pengguna terakhir kami yang kami daftarkan sekarang memiliki pengguna email
itu di cache rahasia dot com dan kata sandinya cukup panjang.
Dan ini adalah hash yang dihasilkan menggunakan skrip B serta 10 putaran pengasinan.
Jadi jika Anda memutuskan untuk mencoba dan mencari ini di Google atau di mana pun itu berada
atau semacam tabel pelangi tabel hash apa pun itu, Anda seharusnya tidak dapat membedakan kata sandi asli pengguna yang
merupakan kunci.
Sekarang bagaimana dengan ketika pengguna mencoba masuk.
Jadi dalam rute masuk kita alih-alih menggunakan kosong lima untuk mengulangi kata sandi yang telah mereka masukkan kita akan
menggunakan B crypt dan cara mereka memberitahu kita untuk memeriksa kata sandi kita adalah dengan menggunakan B
crypt dot bandingkan dan hasilkan hash menggunakan baris kode ini.
Jadi mari kita lanjutkan dan hapus lima bagian kosong ini karena kita tidak lagi menggunakannya dan
sebagai gantinya kita hanya menarik nama pengguna dan kata sandi yang diketikkan pengguna pada halaman
login dan kemudian kita akan melihat-lihat basis data pengguna kami dan menemukan satu tempat email mereka cocok dengan nama
pengguna yang saat ini sedang mencoba untuk masuk dan setelah kami menemukan orang itu maka kami harus
memeriksa untuk melihat apakah kata sandi yang disimpan sama dengan kata sandi yang saat ini dimasukkan pada halaman
login dan ini adalah bagian di mana kita akan mengganti dengan metode B crypt bandingkan yang baru saja
kita salin.
Jadi mari kita lanjutkan dan tempel ke sini dan kami sedang menjalankan metode perbandingan ini dan kami membandingkan kata sandi
teks biasa yang merupakan salah satu yang saat ini tidak digunakan oleh pengguna.
Jadi kami akan menggantinya dengan kata sandi terhadap hash yang kami simpan di basis data
kami yang disimpan di dalam bidang kata sandi pengguna yang ditemukan yang pada dasarnya di sini dan kemudian kami akan memeriksa
untuk melihat apakah hasilnya benar benar .
Sekarang pada titik ini beberapa dari Anda mungkin telah menyadari bahwa ada sedikit masalah di sini.
Kanan.
Karena dalam metode pembandingan crypt besar ini callback yang telah mereka tetapkan menggunakan kesalahan dan kenaikan.
Sekarang di mana lagi kita mendefinisikan rez di sini tentu saja.
Jadi dalam panggilan balik kami jika kami ingin melakukan resident render di dalam metode b crypt ini maka kami harus mengganti nama
ini menjadi sesuatu yang lain hanya agar kode kami tidak bingung mana yang sedang kami coba gunakan.
Jadi mari kita lanjutkan dan ganti nama ini menjadi hasil yang membuatnya berbeda dari ini
yang berarti bahwa di dalam sini kita dapat memeriksa untuk melihat apakah hasil perbandingan ini sama dengan true yang berarti bahwa kata sandi setelah
hashing dengan garam sama dengan hash yang disimpan di basis data kami.
Maka itu berarti bahwa pengguna mendapat kata sandi login yang benar dan kami harus membuka kembali halaman rahasia
kami.
Jadi mari kita lanjutkan dan simpan kode kita dan periksa apakah server kita masih berjalan tanpa kesalahan.
Dan mari kita kembali ke beranda kami dan mencoba untuk masuk ke pengguna itu.
Jadi kita punya pengguna B crypto hash dot com dan kata sandi mereka adalah 1 2 3 4 5 6 hit log
in dan kita dibawa ke halaman rahasia yang berarti bahwa perbandingan itu berhasil.
Jadi begitu.
Kami telah berhasil mengimplementasikan skrip B bersama penggaraman dan sepuluh putaran penggaraman pada saat itu untuk mengamankan basis data pengguna
kami secara besar-besaran dan membuatnya sangat tidak mungkin untuk meretas menggunakan sesuatu seperti tabel hash atau serangan kamus,
tetapi kami masih dapat naik level lebih tinggi dan kami Akan menemukan itu dalam pelajaran berikutnya.