Laman ini diterjemah secara automatik ke pelbagai bahasa menggunakan perisian yang dibangunkan oleh Kohei Koyanagi. Untuk ketepatan, rujuk versi asal dalam Bahasa Inggeris .

Bagaimana Kami Melindungi Kata Laluan Anda

Splync Tidak Pernah Menyimpan Kata Laluan Anda dalam Teks Biasa

Dalam artikel sebelum ini, kami telah membincangkan bagaimana HTTPS melindungi laluan antara aplikasi anda dan pelayan kami, dan bagaimana SSH melindungi pelayan itu sendiri. Kini tiba masanya untuk melihat di dalam pelayan — bagaimana Splync memastikan kata laluan anda selamat setelah ia sampai di sana. Jika seseorang berjaya mendapatkan kata laluan anda, individu tersebut boleh log masuk ke akaun anda dan mengakses maklumat sensitif, termasuk rekod perbelanjaan anda. Sebab itulah Splync tidak pernah menyimpan kata laluan dalam teks biasa. Sebaliknya, setiap kata laluan ditukar menjadi versi hash sebelum disimpan dalam pangkalan data. Apa maksudnya sebenarnya? Hashing ialah pertukaran sehala — setelah ditukar, ia tidak dapat diubah kembali menjadi kata laluan asal. Kaedah ini adalah standard di seluruh internet, daripada bank kepada perkhidmatan awan utama, namun ramai orang tidak tahu bagaimana ia sebenarnya berfungsi. Mari kita jelajahi melalui analogi harian yang mudah.

Asas Hashing: Pengisar yang Sentiasa Mengadun dengan Cara Sama

Untuk memahami bagaimana perlindungan kata laluan berfungsi, mari kita mulakan dengan kaedah hashing mudah yang dipanggil SHA-256. Anggaplah ia seperti pengisar yang sentiasa mengadun bahan dengan cara yang sama. Jika anda masukkan kata laluan yang sama ke dalam pengisar dan tekan butang, anda akan sentiasa mendapat smoothies unik yang sama — campuran huruf dan nombor yang kacau-bilau. Idea utama ialah proses ini tidak boleh diundur. Sama seperti anda tidak boleh mengambil smoothie dan memisahkannya kembali kepada pisang dan susu asal, anda tidak boleh mengambil hash yang kacau-bilau dan mendapatkan kembali kata laluan asal.

Contoh SHA-256: Bagaimana Mengesahkan Kata Laluan Tanpa Mengetahuinya

SHA-256 adalah salah satu algoritma hashing yang paling biasa digunakan. Sebagai contoh, ia akan mengubah kata laluan "splync1234" menjadi “9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41”. Dalam beberapa milisaat, setiap kali pengguna memasukkan kata laluan log masuk, SHA-256 sentiasa menghasilkan kata laluan hash yang sama. Aplikasi hanya akan hash semula kata laluan yang dimasukkan dan memeriksa sama ada ia sepadan dengan hash yang disimpan. Pada bila-bila masa sistem tidak pernah mengetahui kata laluan asal pengguna. Tetapi bagaimana jika penyerang telah pra-mengira senarai kata laluan biasa dan hash mereka (dikenali sebagai serangan jadual pelangi) untuk meneka kata laluan pengguna dengan cepat? Kebimbangan ini sangat nyata. Inilah sebabnya sistem moden, termasuk Splync, tidak bergantung pada SHA-256 biasa.

Splync Hash Kata Laluan dengan bcrypt—Lebih Kuat Daripada SHA-256

Bcrypt menggunakan garam rawak per pengguna dan mengkodkan garam tersebut (dan faktor kos) secara langsung dalam string hash yang disimpan. Anggaplah bcrypt seperti pengisar dengan rempah rahsia (garam) dan motor perlahan (faktor kerja) — ia menjadikan setiap campuran unik dan sukar ditiru. Oleh kerana garam adalah 128 bit (≈3×10³⁸ kemungkinan), kata laluan yang sama boleh memetakan kepada bilangan hash yang disimpan yang sangat besar. Ini menjadikan jadual pelangi yang telah dikira lebih awal tidak berguna pada skala. Semasa log masuk, Splync membaca garam dan kos dari string bcrypt yang disimpan, menjalankan semula bcrypt pada kata laluan yang dimasukkan dengan parameter tersebut, dan membandingkan hasilnya dengan hash yang disimpan. Jika ia sepadan, kata laluan adalah betul — tetapi kerana bcrypt secara sengaja perlahan dan garam adalah unik, serangan brute-force menjadi lebih mahal bagi penyerang.

Contoh Mudah dengan bcrypt

Mari kita lihat bagaimana ini berfungsi dalam praktik. Jika anda hash kata laluan "splync1234" dengan bcrypt (menggunakan kos 12), anda mungkin mendapat string seperti ini: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. Dalam string bcrypt ini, `$2b` menandakan versi algoritma, `$12` menunjukkan faktor kos (berapa kali kata laluan diproses), `gBeouKYdue9uvvuV0HtGgeV` adalah garam rawak yang unik, dan `PymnrojMqP/wcRw28HFlGEGIQbyw7O` adalah kata laluan hash akhir. Oleh kerana hash itu sendiri mengandungi garam dan kos, Splync boleh mengulangi proses hashing yang sama untuk pengesahan dengan mengekstrak nilai tersebut dari string yang disimpan dan membandingkan hasilnya. Sebaliknya, jika penyerang tidak mengetahui garam dan kos, mereka tidak dapat membina jadual pelangi tunggal yang berfungsi untuk setiap pengguna.

Kata Laluan Hash Menawarkan Perlindungan Berganda

Pendekatan ini mempunyai kelebihan penting. Oleh kerana Splync tidak pernah menyimpan kata laluan biasa, walaupun pangkalan data bocor atau dicuri, pengguna tidak segera berisiko. Penyerang tidak dapat log masuk terus dengan data yang dicuri, kerana apa yang mereka ada hanyalah string yang kacau-bilau. Reka bentuk ini memberi pengguna lapisan perlindungan tambahan, di atas perlindungan yang sudah ada di sekitar pelayan itu sendiri. Hashing kata laluan bukanlah unik kepada Splync; ia adalah standard dalam industri teknologi, digunakan oleh gergasi seperti Google, Apple, dan Amazon. Splync dibina dengan sangat selamat, dan ia hanya akan menjadi lebih selamat apabila kami terus meningkatkan keselamatan dengan ciri seperti pengesahan e-mel, perlindungan brute-force, dan pemantauan berterusan.