Cloud & IT Cert Prep · Pelajaran

Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2

Bandingkan algoritma pencincangan kata laluan berdasarkan ketahanannya terhadap serangan GPU dan ASIC, serta fahami cara faktor kerja dan kekerasan memori dilaraskan.

Pelajaran 3 daripada 413 langkah

Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2 ialah pelajaran Cloud & IT Cert Prep percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cloud & IT Cert Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Mengapa Pencincangan Kata Laluan Berbeza

Menyimpan kata laluan memerlukan kelas khas fungsi kriptografi yang dipanggil fungsi pencincangan kata laluan (PHF) atau fungsi penerbitan kunci (KDF). Cincangan kriptografi biasa seperti SHA-256 direka bentuk supaya pantas — GPU moden boleh mengira berbilion-bilion cincangan SHA-256 sesaat. Kepantasan ini amat berbahaya untuk penyimpanan kata laluan: penyerang yang mencuri pangkalan data cincangan boleh mencuba berbilion-bilion tekaan sesaat. KDF kata laluan sengaja dibuat perlahan, dan boleh dilaraskan supaya serangan cuba habis-habisan menjadi tidak praktikal dari segi pengiraan, sambil masih membenarkan log masuk yang sah dalam masa milisaat.

Salt: Menewaskan Jadual Pelangi

Sebelum KDF kata laluan khusus wujud, penyerang menggunakan jadual pelangi — pemetaan yang telah dikira terlebih dahulu daripada nilai cincangan kembali kepada kata laluan teks biasa. Salt ialah nilai rawak yang unik bagi setiap pengguna, yang ditambah pada bahagian awal atau akhir kata laluan sebelum pencincangan, supaya setiap cincangan menjadi unik walaupun kata laluannya sama. Salt disimpan bersama cincangan dalam pangkalan data — ia tidak rahsia, hanya perlu rawak. Salt yang betul mestilah: sekurang-kurangnya 16 bait, dijana oleh penjana nombor rawak yang selamat dari segi kriptografi, dan disimpan bagi setiap pengguna (tidak boleh digunakan semula merentas akaun).

PBKDF2: Piawaian Kata Laluan

PBKDF2 (Password-Based Key Derivation Function 2) ditakrifkan dalam RFC 8018 dan diluluskan oleh NIST. Ia berfungsi dengan menggunakan fungsi HMAC (biasanya HMAC-SHA-256) berulang kali pada kata laluan dan salt, untuk bilangan lelaran yang boleh dikonfigurasikan. Bilangan lelaran ialah faktor kerja — NIST mengesyorkan sekurang-kurangnya 600,000 lelaran PBKDF2-HMAC-SHA256 setakat tahun 2023. PBKDF2 digunakan secara meluas (Django, iOS Keychain, WPA2-PSK), tetapi mempunyai satu kelemahan: ia boleh dilaksanakan dengan cekap pada GPU, menjadikannya kurang tahan GPU berbanding alternatif lain.

# PBKDF2 example (Python pseudocode concept)
# import hashlib
# dk = hashlib.pbkdf2_hmac(
#   'sha256',         # hash algorithm
#   b'password',      # password bytes
#   b'random_salt',   # salt bytes
#   600000            # iterations
# )

bcrypt: Ketahanan terhadap Memori dan CPU

bcrypt direka oleh Niels Provos dan David Mazieres pada tahun 1999 dan masih digunakan secara meluas. Inovasi utamanya ialah faktor kos (parameter pusingan), yang setiap peningkatannya menggandakan masa pengiraan. Bcrypt menggunakan sifer Blowfish yang diubah suai dengan persediaan kunci Eksblowfish yang intensif dari segi CPU dan memori, menjadikannya jauh lebih sukar untuk dipercepatkan pada GPU berbanding PBKDF2. Bcrypt juga mengehadkan input kata laluan kepada 72 bait (kata laluan yang lebih panjang dipendekkan), maka sesetengah pelaksanaan perlu mencincang kata laluan yang panjang terlebih dahulu menggunakan SHA-256.

# bcrypt cost factor
# Cost 10 = ~100ms on modern hardware
# Cost 12 = ~400ms
# Cost 14 = ~1600ms
# Each +1 doubles the work
# Recommended: cost 12-14 for web apps
# Command: htpasswd -bnBC 12 username password

Argon2: Pilihan Moden Terbaik

Argon2 memenangi Pertandingan Pencincangan Kata Laluan pada tahun 2015 dan kini merupakan cadangan OWASP. Ia hadir dalam tiga variasi: Argon2d (lebih pantas, terdedah kepada saluran sisi, terbaik untuk mata wang kripto), Argon2i (masa malar, terbaik untuk pencincangan kata laluan), dan Argon2id (hibrid, disyorkan untuk kebanyakan kegunaan). Argon2id boleh dikonfigurasikan dalam tiga dimensi: kos masa (lelaran), kos memori (RAM yang diperlukan), dan pemprosesan selari (benang). Keperluan memori yang tinggi menjadikannya amat sukar untuk diparalelkan pada GPU dan langsung tidak praktikal pada ASIC.

# Argon2id recommended parameters (OWASP 2023)
# Memory: 64MB (65536 KiB)
# Iterations: 3
# Parallelism: 4 threads
# Output length: 32 bytes
# argon2 -id -t 3 -m 16 -p 4 -l 32

Ketahanan Memori: Mengapa Ia Menewaskan Serangan GPU

GPU mempunyai beribu-ribu teras tetapi memori yang terhad bagi setiap teras — GPU sangat baik dalam memproses pengiraan mudah yang boleh dijalankan secara selari dan menggunakan sedikit memori. Fungsi yang memerlukan banyak memori seperti Argon2 dan scrypt memerlukan jumlah RAM yang besar bagi setiap pengiraan cincangan. Jika penyerang mahu menjalankan 10,000 pengiraan Argon2id secara selari, dengan setiap satunya memerlukan 64MB memori, mereka memerlukan 640GB RAM GPU — jauh melebihi kapasiti yang tersedia pada mana-mana kelompok GPU. Sifat ini, yang dipanggil ketahanan memori, memaksa penyerang sama ada menggunakan pengiraan berjujukan yang perlahan atau melabur dalam kos perkakasan luar biasa yang menjadikan serangan tidak berbaloi dari segi ekonomi.

Pelarasan Faktor Kerja dalam Amalan

Faktor kerja yang sesuai bergantung pada perkakasan anda dan kependaman yang boleh diterima. Sasaran umum ialah 100-300ms pada perkakasan pengeluaran pelayan bagi setiap pengesahan. Apabila perkakasan bertambah baik, anda perlu meningkatkan faktor kerja — sebab itulah bcrypt dan Argon2 menyimpan parameter bersama cincangan, yang membolehkan naik taraf telus: pada log masuk seterusnya, sahkan kata laluan, kemudian cincang semula dengan parameter baharu yang lebih tinggi. OWASP mengekalkan parameter minimum semasa yang disyorkan untuk PBKDF2, bcrypt dan Argon2id, yang patut disemak setiap tahun.

scrypt: KDF Lain yang Memerlukan Banyak Memori

scrypt, yang direka oleh Colin Percival pada tahun 2009, ialah KDF pertama yang memerlukan banyak memori dan diterima pakai secara meluas, serta digunakan oleh Litecoin dan banyak pengurus kata laluan. scrypt diparameterkan oleh N (kos CPU/memori), r (saiz blok), dan p (faktor pemprosesan selari). Seperti Argon2, nilai N yang tinggi memerlukan jumlah RAM yang besar bagi setiap pengiraan. scrypt dianggap selamat, tetapi Argon2id secara umumnya lebih disukai untuk aplikasi baharu kerana ia memenangi PHC dan telah menerima lebih banyak analisis kriptografi. Kedua-duanya ialah pilihan yang boleh diterima.

Perkara yang TIDAK Patut Digunakan: MD5, SHA-1 dan SHA Tanpa Salt

Beberapa pendekatan pencincangan tidak boleh digunakan untuk kata laluan: MD5 (telah dipecahkan, berbilion-bilion cincangan sesaat pada perkakasan pengguna), SHA-1 (masalah yang sama), SHA-256 tanpa salt (pantas, jadual pelangi mudah digunakan), dan penyulitan mudah (boleh diterbalikkan; pencurian kunci bermaksud semua kata laluan terdedah). Kebocoran sejarah seperti LinkedIn (2012) menggunakan SHA-1 tanpa salt, lalu mendedahkan 117 juta kata laluan yang berjaya dipecahkan dalam masa beberapa hari. Adobe (2013) menyulitkan, bukannya mencincang, kata laluan — salah faham asas yang mendedahkan 153 juta akaun. Insiden ini termasuk dalam bidang pengetahuan peperiksaan Security+.

Penerbitan Kunci untuk Kunci Penyulitan

KDF juga digunakan untuk menerbitkan kunci penyulitan daripada kata laluan (berbeza daripada menyimpan cincangan kata laluan). Apabila pengguna menetapkan kata laluan induk untuk peti besi yang disulitkan, aplikasi menggunakan KDF untuk menerbitkan kunci penyulitan AES-256 sebenar daripada kata laluan tersebut. Inilah sebabnya pengurus kata laluan boleh menyahsulit peti besi anda secara setempat — pengurus tersebut menjalankan KDF pada kata laluan induk anda untuk membina semula kunci penyulitan, yang tidak pernah meninggalkan peranti anda. HKDF (HMAC-based Key Derivation Function) ialah piawaian untuk menerbitkan berbilang kunci daripada satu rahsia entropi tinggi, dan digunakan dalam TLS 1.3 untuk menerbitkan kunci jabat tangan serta kunci aplikasi.

Serangan Pengisian Kelayakan dan Perlindungan KDF

Serangan pengisian kelayakan mengulangi pasangan nama pengguna/kata laluan yang dicuri daripada satu kebocoran terhadap perkhidmatan lain. KDF yang kukuh mengurangkan tempoh yang tersedia untuk pemecahan luar talian selepas kebocoran — jika penyerang perlu mengambil masa 300ms bagi setiap tekaan dan bukannya beberapa mikrosaat, pemecahan kata laluan rawak 10 aksara menjadi tidak praktikal dari segi pengiraan. Walau bagaimanapun, KDF tidak melindungi daripada penggunaan semula kata laluan merentas laman — hal itu memerlukan pengguna menggunakan kata laluan yang unik. Gabungan kata laluan unik + penyimpanan Argon2id + MFA menjadikan serangan berasaskan kelayakan secara praktiknya tidak berkesan.

Semakan Pantas

Uji pemahaman anda tentang konsep CompTIA Security+ (SY0-701) daripada pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa: KDF kata laluan sengaja diperlahankan dengan faktor kerja yang boleh dilaraskan untuk menjadikan serangan kekerasan luar talian tidak praktikal dari segi pengiraan, fungsi yang sukar dari segi memori seperti Argon2id dan scrypt menewaskan pemprosesan selari GPU dengan memerlukan RAM yang besar bagi setiap pengiraan, dan MD5, SHA-1 serta cincangan tanpa garam sama sekali tidak memadai untuk penyimpanan kata laluan seperti yang dibuktikan oleh beberapa kebocoran berprofil tinggi. Seterusnya, kita akan meneroka kriptografi pascakuantum dan algoritma yang dipilih oleh NIST untuk menggantikan RSA dan ECC.

Percuma untuk bermula

Pelajari Cloud & IT Cert Prep dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
150
Pelajaran
600

Soalan Lazim

Adakah pelajaran “Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2” percuma?

Ya — teks penuh “Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cloud & IT Cert Prep, tingkat taraf kepada CoddyKit PRO. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2”?

Bandingkan algoritma pencincangan kata laluan berdasarkan ketahanannya terhadap serangan GPU dan ASIC, serta fahami cara faktor kerja dan kekerasan memori dilaraskan. Anda berlatih Cloud & IT Cert Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cloud & IT Cert Prep?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cloud & IT Cert Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Jabat Tangan TLS 1.3 dan Penyambungan Semula 0-RTT
  2. Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305
  3. Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2
  4. Kriptografi Pascakuantum: CRYSTALS-Kyber dan Dilithium
← Kembali ke Cloud & IT Cert Prep