Baiklah.
Jadi sekarang saatnya untuk naik ke tingkat keamanan berikutnya.
Dan dalam pelajaran ini kita akan membahas sesuatu yang disebut hashing.
Sekarang sebelumnya kita telah melihat enkripsi sehingga mengambil kata sandi pengguna dan mengamankannya menggunakan kunci enkripsi dan kemudian
menggunakan metode sandi tertentu baik itu sandi Caesar atau sandi enigma atau metode sandi modern seperti ya yang merupakan
apa yang kami aktifkan. pada basis data kami tidak peduli ke arah mana kami memilih.
Kami selalu memiliki kata sandi kunci dan kami berakhir dengan beberapa ciphertext yang akan menyulitkan orang
untuk dapat langsung menebak apa kata sandi pengguna kami.
Jadi misalnya jika kami mengambil kata sandi seperti kualitas dan kami menggunakan metode Caesar Cipher
dan kami memutuskan untuk mengubahnya dengan satu maka kunci enkripsi kami adalah nomor satu dan yang menciptakan ciphertext
di mana setiap huruf digeser oleh satu.
Sekarang untuk mendekripsi semua yang harus Anda lakukan selama Anda tahu apa kuncinya maka
Anda dapat dengan mudah menggeser semua teks sandi menjadi satu dan Anda berakhir dengan kata sandi asli.
Sekarang cipher musim adalah metode enkripsi yang sangat sangat lemah.
Sangat mudah untuk mengetahui apa teks aslinya bahkan jika Anda tidak memiliki kunci dan hanya untuk menggambarkan hal-hal
buruk apa yang bisa terjadi ketika Anda memiliki sistem enkripsi yang lemah.
Saya akan menceritakan kepada Anda sebuah kisah dari sejarah yang memberi tahu kami mengapa kami tidak boleh menggunakan sistem
enkripsi yang lemah.
Jadi kembali ke 15 ratusan di pulau ini yang sekarang kita sebut Inggris dulu ada dua
wilayah besar.
Salah satunya adalah Skotlandia.
Dan yang lainnya adalah Inggris dan mereka diperintah oleh dua ratu.
Skotlandia diperintah oleh Mary Queen of Scots yang adalah seorang Katolik.
Dan Inggris diperintah oleh Ratu Elizabeth yang pertama.
Sekarang dua wanita ini di antara mereka mengendalikan tanah yang sekarang kita sebut U. K. tetapi mereka masing-masing ingin memiliki
lebih banyak kekuatan dan lebih banyak tanah.
Jadi apa yang mereka lakukan.
Nah Mary Queen of Scots yang memerintah Skotlandia memutuskan untuk merencanakan dengan temannya Lord Babington untuk mencoba
dan membunuh Ratu Elizabeth.
Dengan begitu dia akan menjadi pewaris sah takhta Inggris dan Skotlandia.
Dan itu semacam permainan takhta yang terjadi di masa itu.
Tetapi untuk memobilisasi pasukan mereka atau mencoba membuat semacam rencana rahasia, mereka memutuskan
untuk saling mengirim surat menggunakan ciphertext.
Jadi mereka datang dengan sistem untuk mengenkripsi surat mereka satu sama lain sehingga jika jatuh ke tangan
yang salah subjek surat itu tidak akan terungkap dan mereka tidak akan diadili karena pengkhianatan.
Tetapi masalahnya adalah bahwa metode enkripsi yang mereka gunakan yang merupakan metode substitusi
huruf mirip dengan cipher Caesar adalah bentuk enkripsi yang sangat lemah.
Dan Ratu Elizabeth memiliki kepala decoder yang akhirnya menguraikan surat-surat mereka dan mencari tahu apa
kunci enkripsi mereka.
Jadi dia memutuskan untuk mengambil kunci enkripsi ini dan menulis surat kembali kepada Lord Babington untuk
mencoba dan membuatnya mengungkapkan semua co-conspirators
Dan apa hasil akhirnya dari sistem enkripsi mereka yang lemah.
Nah Ratu Elizabeth memutuskan untuk menuduh Mary Queen dari Skotlandia pengkhianatan dan karenanya dia akhirnya
kepalanya dipotong.
Jadi ini bukan yang Anda inginkan terjadi pada Anda atau situs web Anda.
Jadi sistem enkripsi yang lemah pada akhirnya dapat menempatkan kata sandi pengguna dalam risiko dan perusahaan Anda mungkin berakhir
secara metaforis seperti dalam kasus perusahaan seperti TalkTalk atau Equifax di mana mereka akhirnya diretas dan
kehilangan banyak kepercayaan dari pengguna mereka.
Sekarang jika Anda tertarik pada lebih banyak cerita seperti ini dan untuk mempelajari lebih lanjut tentang kriptografi dan enkripsi ada rekomendasi
buku yang sangat bagus yang akan saya buat disebut buku kode oleh Simon Singh. Ini berisi kisah-kisah
seperti yang baru saja saya katakan dan banyak lagi.
Jadi jika Anda tertarik dengan ini, silakan baca lebih lanjut.
Sekarang bagaimana kita dapat membuat kata sandi kita lebih aman sekarang saat ini.
Kelemahan terbesar dalam metode otentikasi kami adalah kenyataan bahwa kami membutuhkan kunci enkripsi untuk mengenkripsi kata sandi kami
dan mendekripsi kata sandi kami dan kemungkinannya adalah jika seseorang cukup termotivasi untuk menghabiskan waktu dan meretas
ke dalam basis data Anda, mungkin itu tidak sulit bagi mereka untuk melakukannya. Anda juga bisa
mendapatkan kunci enkripsi bahkan jika Anda menyimpannya dalam variabel lingkungan atau tempat yang aman di server Anda.
Jadi bagaimana kita mengatasi Tautan Terlemah ini.
Kebutuhan akan kunci enkripsi itu.
Nah di sinilah hashing berperan.
Padahal sebelumnya dengan enkripsi, kami membutuhkan hashing kunci enkripsi untuk menghilangkannya dan
tidak lagi membutuhkan kunci enkripsi.
Kalau begitu Anda mungkin bertanya dengan baik jika kami tidak memiliki kunci enkripsi bagaimana kami dapat mendekripsi kata sandi kami
kembali ke teks biasa.
Yah rahasianya adalah Anda jangan katakan pengguna mendaftar di situs web kami dan mereka memasukkan kata sandi
untuk mendaftar.
Kami menggunakan sesuatu yang disebut fungsi hash untuk mengubah kata sandi itu menjadi hash dan kami menyimpan hash itu di
basis data kami.
Sekarang masalahnya adalah bahwa fungsi hash adalah persamaan matematika yang dirancang untuk membuatnya hampir
tidak mungkin untuk mundur.
Hampir tidak mungkin untuk mengubah hash kembali menjadi kata sandi.
Bagaimana ini mungkin Anda mungkin bertanya bagaimana mungkin Anda dapat mengubah kata sandi menjadi hash dengan sangat
cepat dan mudah tetapi membuatnya hampir mustahil untuk mengubah hash itu kembali menjadi kata sandi.
Nah, ini sebuah pertanyaan.
Izinkan saya bertanya kepada Anda apa saja faktor 377 selain 377.
Jadi pada dasarnya saya katakan 377 bukan bilangan prima.
Anda tidak hanya dapat membagi tiga ratus tujuh puluh tujuh dengan 1 dan 3 7 7 tetapi ada juga dua angka lain yang
dapat Anda bagi dengan.
Sekarang tugas Anda untuk mencari tahu apa angka-angka itu.
Jadi, apa yang mungkin Anda lakukan.
Mungkin Anda membaginya dengan dua.
BAIK.
Jadi itu menjadi seratus delapan puluh delapan koma lima.
Itu bukan bilangan bulat.
Jadi dua bukanlah faktor.
Bagaimana jika Anda dibagi tiga.
Nah itu menjadi seratus tiga belas koma tiga yang berulang yang juga bukan bilangan bulat.
Jadi tiga juga bukan faktor.
Dan Anda mungkin melalui proses ini untuk waktu yang lama melalui angka demi angka.
Kalau begitu Anda mungkin sampai pada titik di mana Anda membagi tiga tujuh tujuh dengan 13 dan Anda berakhir dengan dua puluh
sembilan.
Jadi tigabelas dan dua puluh sembilan adalah jawaban untuk pertanyaan ini.
Mereka adalah satu-satunya faktor 377 selain 1 dan 3 7 7.
Dan seperti yang Anda lihat proses mencapai titik menemukan kedua faktor itu butuh waktu.
Kanan.
Itu tidak mudah.
Tetapi pertimbangkan jika saya mengajukan pertanyaan yang berbeda jika saya mengatakan kepada Anda dapatkah Anda mengalikan tiga belas dengan dua puluh
sembilan.
Anda harus melakukannya dengan sangat cepat dan mudah.
Hampir tidak ada waktu sama sekali bagi Anda untuk mengetahui bahwa jawabannya adalah 3 7 7.
Jadi di sini adalah versi fungsi hash yang sangat sederhana.
Jadi maju mengalikan 13 dengan 29 benar-benar cepat dan mudah tetapi mundur mencoba untuk mendapatkan kembali
angka-angka 13 dan 29 mulai dari 3 7 7 sangat memakan waktu.
Jadi ini pada dasarnya bagaimana fungsi hash bekerja hanya menambah sedikit lebih banyak kompleksitas dan Anda berakhir
dengan fungsi hash nyata.
Jadi mereka dirancang untuk dihitung dengan sangat cepat ke depan tetapi hampir tidak mungkin untuk mundur.
Dan hampir tidak mungkin yang saya maksudkan adalah bahwa dengan menggunakan tingkat daya komputasi saat ini, akan memakan waktu terlalu
lama untuk membuatnya berharga bagi peretas.
Jadi katakanlah untuk menghitung hash ke depan dibutuhkan milidetik tetapi untuk mundur dibutuhkan dua tahun maka
hacker mungkin memiliki hal-hal yang lebih baik untuk dilakukan dengan waktunya.
Jadi ketika pengguna mencoba mendaftar di situs Web kami, maka kami meminta mereka untuk kata sandi pendaftaran yang kami
ubah menjadi hash menggunakan fungsi hash kami dan kemudian kami menyimpan hash itu di basis data kami.
Sekarang pada titik kemudian ketika pengguna mencoba untuk masuk dan mereka mengetikkan kata sandi mereka kemudian kita lagi
hash kata sandi yang mereka ketik untuk menghasilkan hash dan kemudian kita membandingkannya dengan hash yang telah kita
simpan di database kami.
Dan jika kedua hash cocok maka itu harus berarti bahwa kata sandi login juga sama dengan kata
sandi pendaftaran.
Dan tidak ada titik dalam proses ini kita harus menyimpan kata sandi mereka dalam plaintext atau kita dapat
membalikkan proses untuk mengetahui kata sandi asli mereka.
Satu-satunya orang yang mengetahui kata sandi mereka adalah pengguna itu sendiri.
Sekarang sebelumnya kita melihat bahwa dengan menggunakan mesin Enigma selama kita tahu apa pengaturannya untuk mesin Enigma
yang pada dasarnya adalah kunci enkripsi.
Kanan.
Selama kita tahu apa itu.
Lalu saya bisa mendekode dengan menyetelnya ke kunci enkripsi yang sama.
Dan kami akhirnya dapat mengambil teks aslinya sekarang.
Namun jika saya harus pergi dan mengubahnya ke fungsi hash sebagai gantinya maka Anda dapat melihat bahwa ketika kami mencoba
untuk memecahkan kode ini menggunakan fungsi hash yang sama kosong lima kita mendapatkan kesalahan bahwa langkah decoding tidak ditentukan untuk fungsi
hash karena Anda tidak bisa benar-benar kembali.
Itulah inti dari fungsi hash.
Dan inilah yang akan membuat otentikasi kami lebih aman.
Jadi mari kita lanjutkan dan terapkan ini dalam kode kita.
Jadi hal pertama yang pertama, mari kita lanjutkan dan menginstal M. D. lima paket dan kemudian semua
yang perlu kita lakukan adalah hanya Anda memerlukannya dan kemudian menggunakannya untuk hash pesan tertentu atau dalam kasus kami kata sandi.
Jadi mari kita pergi ke sini dan mari kita menghapus enkripsi Mongoose dan menghapus plugin ini dari skema pengguna kami dan
sebagai gantinya kita akan membutuhkan MDG 5 dan
ketika pengguna mendaftar bukannya menyimpan kata sandi mereka yang merupakan apa yang kita dapatkan
dari badan peminta kami akan menggunakan fungsi hash kami MDG 5 untuk mengubahnya menjadi hash yang tidak dapat diubah.
Jadi mari kita mulai.
Jadi pertama-tama kita akan menjalankan penculikan kami Jess dan kami akan membuka situs web kami dan
mendaftarkan pengguna baru yang akan memanggil pengguna di hash dot com dan kami akan memberi mereka kata sandi 1 2 3 4 5 6.
Silakan tekan register.
BAIK.
Keberhasilan.
Jadi itu artinya pengguna telah berhasil disimpan ke dalam basis data kami dan kami dapat melihat bahwa email
tersebut masih dibiarkan apa adanya sehingga kami dapat mencari melaluinya tetapi kata sandi sekarang adalah hash yang telah dibuat dengan mengirimkan
kata sandi.
Satu dua tiga empat lima enam melalui fungsi hash itu.
Kosong lima
Dan ini tidak mungkin dibalik.
Kami tidak dapat mendekripsi dan kami tidak memiliki kunci enkripsi apa pun yang membuatnya rentan.
Jadi sekarang kita perlu mencari tahu apa yang harus dilakukan dengan langkah login.
Sekarang hal penting yang perlu Anda ingat dengan hashing adalah ketika Anda
menjalankan fungsi hash pada string yang sama hash yang dibuat selalu akan sama.
Jadi misalnya jika saya memutuskan sebagai konsol log MDG 5 dan saya melewati string satu dua tiga empat
lima enam.
Lalu ketika saya menekan save a node one jalankan kembali aplikasi ini dot J. S. Anda dapat melihat ini adalah
hash yang dibuat dan ini cocok persis dengan hash yang dihasilkan di sini sebelumnya
ketika saya mencoba mendaftarkan pengguna dan hash kata sandi yang mereka ketikkan sehingga ini adalah bagaimana kami dapat kemudian membandingkan kemudian.
Jadi, ketika pengguna mencoba masuk, kami akan hash kata sandi yang mereka coba ketik menggunakan
fungsi hash yang sama kosong lima dan kemudian akan membandingkan hasilnya dengan hash yang disimpan dalam database
kami.
Dan jika mereka cocok maka itu berarti bahwa kata sandi awal yang mereka ketikkan
harus sama dengan kata sandi awal yang mereka daftarkan karena setelah hashing mereka sama persis.
Jadi sekarang kita akan membandingkan hash yang ada di dalam basis data kita dengan versi hash dari kata sandi mereka dan melihat
apakah itu cocok untuk dapat login.
Jadi biarkan itu menyimpan dan mari kita pergi dan kembali ke halaman rumah kami.
Coba dan login pengguna pengguna kami hash dot com kami dan kata sandinya 1 2 3 4 5 6.
Mari kita lanjutkan dan masuk sehingga kami berhasil masuk karena hash cocok.
Dan ini sangat sederhana bagaimana hashing bekerja.
Jadi sekarang ketika pengguna memutuskan untuk meretas ke dalam basis data kami semua mereka memiliki semua
hash ini sebagai ganti kata sandi kami dan karena cara algoritma hashing bekerja, Anda tidak dapat membalikkan ini kembali
menjadi teks biasa dari kata sandi asli.
Jadi itu semua sangat baik dan bagus.
Dan secara teoritis kata sandi kami jauh lebih aman daripada ketika kami hanya mengenkripsi karena
kami memiliki kerentanan kunci enkripsi itu.
Begitu seseorang menemukan kunci maka semua enkripsi kami sia-sia.
Sekarang hashing juga datang dengan masalah sendiri karena karena begitu Anda menemukan masalah maka
beberapa peretas termotivasi akan datang dengan solusi.
Dan dalam pelajaran selanjutnya saya akan menunjukkan kepada Anda bagaimana kami dapat meretas kata sandi pengguna kami.
Jadi untuk semua itu dan kita akan lihat.