Bahasa Indonesia

Alat pengembang · SHA kalkulator hash

Mengapa Anda Tidak Harus Menyimpan Kata Sandi sebagai Hash SHA-256 Biasa

· Mengapa itu penting

kata sandi keamanan kriptografi

Stopwatch yang menampilkan tebakan instan versus fungsi hash kata sandi yang menambahkan penundaan yang disengaja
Ilustrasi vektor ToolAcre asli

SHA-256 dirancang agar cepat, hal yang tidak Anda inginkan untuk kata sandi. Posting ini menjelaskan mengapa kecepatan menjadi masalah dan fungsi hashing kata sandi apa yang dilakukan secara berbeda.

SHA-256 bukan penyimpanan kata sandi; itu hashing cepat. SHA-256 biasa memberi penyerang kecepatan yang sama dalam menebak, sehingga tidak cocok meskipun merupakan algoritma kriptografi yang kuat.

Pengembang menerapkan sistem login dan menyimpan kata sandi sebagai hash SHA-256. Algoritmenya kuat secara kriptografis, dan aplikasinya tidak menerapkan garam apa pun, sehingga kodenya tetap sederhana. Saat pengguna masuk, aplikasi akan melakukan hash pada kiriman tersebut dan membandingkannya dengan nilai yang disimpan. Desain ini elegan dalam kesederhanaannya, dan sama sekali tidak cocok untuk penyimpanan kata sandi. Hal ini bukanlah permasalahan teoretis; ini adalah satu-satunya kesalahan serius yang paling umum dalam sistem otentikasi. Desainnya terlihat dapat dipertahankan sampai Anda mempertimbangkan apa yang dapat dilakukan penyerang dengan data yang dicuri.

Cacatnya bukan karena SHA-256 lemah. SHA-256 adalah algoritme kriptografi yang tangguh, dipercaya oleh komunitas keamanan dan digunakan di seluruh industri untuk pemeriksaan integritas dan pengalamatan konten. Kelemahannya adalah SHA-256 cepat, dan cepat justru kebalikan dari apa yang dibutuhkan kata sandi. Hash kata sandi bukan sembarang kriptografi primitif; ini adalah jenis alat khusus yang dirancang untuk masalah tertentu: pertahanan terhadap tebakan. Kecepatan adalah fitur dalam checksum; dalam kata sandi, ini adalah bencana.

Cepat adalah inti dari SHA-256 — pemeriksaan integritas memerlukan kecepatan, dan penyerang mendapatkan kecepatan yang sama untuk menebak

Ketika database hash kata sandi SHA-256 disusupi, penyerang tidak perlu membalikkan hash tersebut. Penyerang membuat kamus: kata sandi umum seperti "kata sandi", "123456", "halo", dan jutaan lainnya. Setiap kandidat di-hash dengan SHA-256—operasi komputasi yang sepele—dan diperiksa dengan database yang dicuri. Penyerang dapat menghitung nilai kandidat SHA-256 dengan primitif cepat yang sama yang digunakan oleh layanan login, lalu membandingkan setiap hasil secara offline tanpa batas kecepatan. Tingkat pastinya bergantung pada perangkat keras dan implementasi, jadi artikel ini sengaja tidak membuat klaim tebakan per detik atau waktu pelanggaran.

Kecepatan adalah keseluruhan masalahnya. SHA-256 dimaksudkan untuk menjadi cepat. Itulah maksud desainnya. Ini memungkinkan Anda memverifikasi checksum unduhan, menghitung alamat konten, dan membangun pohon Merkle tanpa menunggu. Dalam aplikasi tersebut, kecepatan adalah sebuah fitur. Untuk kata sandi, kecepatan adalah sebuah bencana. Ketika basis data kata sandi dicuri dan di-hash dengan SHA-256, penyerang memiliki kecepatan menebak yang sama seperti yang dilakukan server sah untuk verifikasi. Simetri itulah yang merusak keamanan kata sandi. Server dan penyerang yang sah sama-sama menerima manfaat dari ringkasan tujuan umum yang cepat; hanya penyerang yang dapat mengulanginya secara offline tanpa kontrol login aplikasi.

Kamus dan tabel pelangi — perhitungan awal terhadap hash tanpa garam, dan perubahan garam

Di sinilah kamus yang telah dihitung sebelumnya menjadi praktis. Seorang penyerang dapat menghabiskan waktu satu hari dan menghitung SHA-256 hash untuk ribuan kata sandi paling umum, untuk pola umum seperti Name1990, atau untuk seluruh kamus dalam berbagai bahasa. Tabel yang dihasilkan disebut tabel pelangi. Mencari hash SHA-256 yang dicuri terhadap tabel yang telah dihitung sebelumnya dapat dilakukan secara instan. Bahkan tanpa tabel yang telah dihitung sebelumnya, menghitung satu miliar tebakan adalah hal yang sepele dengan hashing yang dipercepat GPU. Biaya komputasi yang harus ditanggung penyerang sangat rendah sehingga kata sandi yang lemah pun akan hilang dalam hitungan menit.

Kalkulator hash ToolAcre SHA menunjukkan kecepatan ini secara langsung. Tempel teks pendek, klik tombol SHA-256, dan hasilnya instan. Hasil instan tersebut—properti yang Anda kagumi dalam kalkulator hash—adalah properti persis yang membuat SHA-256 tidak dapat dipertahankan untuk kata sandi. Seorang penyerang mendapat hasil instan yang sama untuk setiap tebakan. Untuk pemeriksaan checksum dan integritas, kecepatan itu sempurna. Untuk kata sandi, itu berakibat fatal bagi keamanan.

Fungsi hashing kata sandi apa yang ditambahkan — faktor kerja, kekerasan memori, dan garam per pengguna di bcrypt, scrypt, Argon2, dan PBKDF2

Salt adalah nilai acak yang ditambahkan ke kata sandi sebelum hashing, sehingga garam setiap pengguna berbeda. Meskipun dua pengguna memiliki kata sandi yang sama, mereka melakukan hash dengan nilai yang berbeda. Ini merusak tabel pelangi yang telah dihitung sebelumnya; penyerang harus menghitung tabel secara independen untuk setiap garam. Dengan garam per pengguna yang dihasilkan secara independen, satu tabel yang telah dihitung sebelumnya tidak lagi berlaku tanpa perubahan pada setiap akun. Namun, garam hanya mendorong penyerang untuk menghitung tabel selama serangan, bukan sebelumnya. Jika hashing masih cepat, penyerang cukup menghitung lebih banyak tabel secara paralel dan terus menebak setiap akun dengan primitif cepat. Garam memang diperlukan, namun tidak cukup. Ini mencegah penggunaan kembali kamus pada korban, namun tidak memperlambat operasi inti penyerang: menebak. Kecepatan hashing tetaplah kecepatan menebak.

Contoh praktis — seberapa cepat SHA-256 kata sandi umum dikenali versus hash kata sandi yang disetel, dijelaskan secara kualitatif

Fungsi hashing kata sandi menggunakan pendekatan yang berbeda. Bcrypt, scrypt, Argon2id dan PBKDF2 dibuat khusus untuk verifikasi kata sandi. Semuanya menyertakan faktor kerja: parameter yang membuat hashing sengaja dibuat mahal. Argon2 adalah yang paling modern; itu menyesuaikan CPU waktu dan konsumsi memori. Bcrypt menggunakan faktor biaya yang dapat disesuaikan yang menggandakan pekerjaan dengan setiap kenaikan. Semuanya dilengkapi dengan pembangkitan garam bawaan. Alat-alat ini dirancang dengan mempertimbangkan model penyerang. Faktor pekerjaan merupakan hal yang krusial.

Fungsi hashing kata sandi menjadikan biaya yang dikonfigurasi sebagai bagian dari setiap verifikasi. Seorang penyerang yang ingin menguji kandidat juga harus membayar biaya tersebut untuk setiap tebakan. Pengaturan waktu yang konkrit tidak dapat disalin dengan aman di antara penerapan, itulah sebabnya bagian parameter memerlukan tolok ukur pada kelas produksi perangkat keras yang sebenarnya. Asimetri itulah yang membuat hashing kata sandi berfungsi. Faktor kerja bergeser dari “keunggulan penyerang” menjadi “keunggulan pemain bertahan”.

Memigrasi tabel SHA-256 lama — membungkus hash yang ada dan mengulanginya pada login berikutnya

Perbandingan yang berhasil tetap bersifat kualitatif karena repositori ini tidak berisi tolok ukur untuk fungsi kata sandi atau penyerang tertentu. Kata sandi umum menghasilkan SHA-256 yang sama setiap saat, sehingga entri kamus yang ada dapat mengidentifikasinya dengan kesetaraan. Catatan kata sandi yang disetel mencakup parameter garam dan biayanya sendiri dan memerlukan pekerjaan yang dikonfigurasi untuk setiap kandidat.

Kontras tersebut menghasilkan kesalahan desain tanpa menjanjikan tebakan per detik. Perangkat keras, implementasi, dan parameter yang dipilih menentukan waktu. Kesimpulan yang dapat dipertahankan adalah invarian: intisari tujuan umum tidak memiliki faktor kerja atau biaya memori yang dapat disesuaikan, sementara fungsi hashing kata sandi dipilih secara khusus untuk membebankan biaya tersebut.

Hal yang tidak tercakup dalam hal ini — memilih parameter untuk hash kata sandi tertentu, yang bergantung pada perangkat keras dan model ancaman Anda

Pemilihan parameter sengaja dilakukan di luar kalkulator dan artikel ini. Pengaturan yang benar bergantung pada anggaran latensi server, memori yang tersedia, konkurensi, dan model ancaman saat ini, sehingga menyalin nilai tetap dari penerapan yang tidak terkait akan mengubah kontrol keamanan menjadi cerita rakyat. Tolok ukur fungsi kata sandi yang dipilih pada perangkat keras kelas produksi dan tinjau kembali seiring perubahan kapasitas.

ToolAcre tidak dapat melakukan latihan tersebut: panelnya menerima teks dan pengidentifikasi SHA, lalu mengembalikan intisari biasa. Ini tidak memperlihatkan bidang garam, pengaturan memori, kontrol iterasi atau format catatan kata sandi. Ketidakhadiran tersebut merupakan sinyal batas yang berguna, bukan fitur yang hilang untuk diatasi dengan berulang kali melakukan hashing kata sandi di kotak teks.

Kesimpulan: hasil instannya adalah peringatan — kalkulator hash ToolAcre SHA menunjukkan seberapa cepat SHA-256, itulah sebabnya ia tidak boleh menyimpan kata sandi pengguna Anda

Sistem lama yang telah menyimpan kata sandi sebagai SHA-256 biasa dapat dimigrasikan ke depan tanpa mengharuskan semua pengguna untuk segera menyetel ulang. Tekniknya adalah dengan "membungkus" hash lama: ambil nilai SHA-256 dan hash lagi dengan Argon2. Pada login pengguna berikutnya, sistem memeriksa apakah SHA-256 yang lama cocok; jika demikian, ia menghitung Argon2 atas hasil tersebut dan menyimpan versi yang dibungkus. Saat pengguna masuk lagi, sistem memverifikasi langsung terhadap Argon2. Migrasi terjadi secara transparan selama alur login normal.

Pendekatan terpadu ini memastikan bahwa kata sandi lama yang telah disusupi kini dilindungi oleh faktor kerja. Penyerang dengan database lama SHA-256 hash tidak dapat memecahkannya lagi; mereka harus menyerang versi yang dibungkus, yang mencakup biaya Argon2. Migrasi terjadi secara transparan kepada pengguna selama alur login normal mereka. Setiap login menciptakan peluang untuk memperkuat hash tanpa mengganggu pengalaman pengguna. Memilih faktor kerja yang tepat bergantung pada perangkat keras dan model ancaman Anda. Default Argon2 masuk akal: 19 iterasi, 512 MB memori dan 1 paralelisme untuk layanan web.