Perangkap Kripto Python Biasa & Corak Selamat
Elakkan kunci berkod keras, mod ECB, perbandingan yang masanya tidak tetap dan banyak lagi.
Perangkap Kripto Python Biasa & Corak Selamat ialah pelajaran Cryptology Academy percuma di CoddyKit. Ini ialah pelajaran 4 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 Cryptology Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.
Kesilapan Kriptografi Paling Berbahaya
Kriptografi mudah digunakan dengan cara yang salah. Perangkap Python yang paling biasa termasuk kunci yang ditetapkan dalam kod, mod ECB, perbandingan yang tidak mengambil masa tetap, kerawakan yang lemah, penggunaan semula kunci atau nonce dan mencipta kriptografi sendiri.
Perangkap 1: Kunci yang Ditetapkan dalam Kod
Jangan sekali-kali menyematkan kunci dalam kod sumber. Kunci akhirnya muncul dalam sejarah git, log dan mesej ralat. Gunakan pemboleh ubah persekitaran atau KMS:
# WRONG
SECRET_KEY = b"my_secret_key_12" # visible in git!
# RIGHT
import os
SECRET_KEY = os.environb.get(b"SECRET_KEY") or os.urandom(32)
# Or load from KMS at startupPerangkap 2: Mod ECB
AES-ECB menyulitkan setiap blok secara berasingan — blok teks biasa yang sama menghasilkan blok teks sifer yang sama. Serangan "penguin ECB" mendedahkan corak dalam imej dan data berstruktur. Sentiasa gunakan GCM atau CBC dengan IV rawak.
# WRONG — never use ECB
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
cipher = Cipher(algorithms.AES(key), modes.ECB()) # insecure!
# RIGHT
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
aesgcm = AESGCM(key) # authenticated encryptionPerangkap 3: Perbandingan MAC yang Tidak Mengambil Masa Tetap
Menggunakan == untuk membandingkan MAC membocorkan maklumat masa. Sentiasa gunakan hmac.compare_digest:
import hmac
# WRONG — leaks timing
if received_mac == expected_mac:
pass
# RIGHT — constant-time
if hmac.compare_digest(received_mac, expected_mac):
passPerangkap 4: Penjanaan Nombor Rawak yang Lemah
Jangan sekali-kali gunakan modul random untuk tujuan kriptografi — modul itu bukan CSPRNG. Gunakan secrets atau os.urandom:
import random, secrets, os
# WRONG
key = bytes([random.randint(0, 255) for _ in range(32)]) # predictable!
# RIGHT
key = os.urandom(32) # OS CSPRNG
token = secrets.token_bytes(32) # secrets module wrapperPerangkap 5: Penggunaan Semula IV/Nonce
Menggunakan semula IV dengan CBC atau nonce dengan GCM memecahkan keselamatan. Jana IV/nonce rawak yang baharu untuk setiap penyulitan dan simpan bersamanya teks sifer:
import os
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
# WRONG — fixed nonce
nonce = b"\x00" * 12 # reuse breaks GCM!
# RIGHT — fresh nonce every time
nonce = os.urandom(12)
ciphertext = aesgcm.encrypt(nonce, b"data", None)Perangkap 6: Menggunakan MD5 atau SHA-1 untuk Keselamatan
MD5 dan SHA-1 telah rosak dari segi kriptografi untuk ketahanan perlanggaran. Jangan sekali-kali gunakannya untuk tandatangan digital, cap jari sijil atau HMAC. Gunakan SHA-256 atau SHA-3-256.
Perangkap 7: Mencipta Kriptografi Sendiri
Melaksanakan primitif kriptografi dari awal hampir selalu memperkenalkan pepijat yang sukar dikesan. Gunakan pakej cryptography, PyNaCl atau PyCA. Jangan sekali-kali melaksanakan AES, RSA atau ECDSA sendiri.
Corak Selamat: PyNaCl untuk Kriptografi Peringkat Tinggi
PyNaCl membungkus pustaka NaCl/libsodium — API yang berpendirian jelas dan sukar disalahgunakan:
# pip install PyNaCl
import nacl.secret
import nacl.utils
key = nacl.utils.random(nacl.secret.SecretBox.KEY_SIZE)
box = nacl.secret.SecretBox(key)
encrypted = box.encrypt(b"my secret message")
decrypted = box.decrypt(encrypted)
print("Decrypted:", decrypted) # Uses XSalsa20-Poly1305Corak Selamat: Pencincangan Kata Laluan dengan Argon2
Gunakan argon2-cffi untuk pencincangan kata laluan — jangan sekali-kali menggunakan SHA-256 atau bcrypt secara terus:
# pip install argon2-cffi
from argon2 import PasswordHasher
ph = PasswordHasher(time_cost=3, memory_cost=65536, parallelism=4)
hash_val = ph.hash("user_password")
print("Hash:", hash_val[:40], "...")
# Verify
try:
ph.verify(hash_val, "user_password")
print("Password correct")
except Exception:
print("Wrong password")Penyahkosongan Kunci
Selepas menggunakan kunci dalam ingatan, kosongkan kandungannya untuk mengurangkan tempoh terdedah kepada serangan pembuangan memori. Pengutip sampah Python menyukarkan perkara ini — gunakan ctypes atau PyNaCl yang menguruskannya secara automatik.
Semakan Pengetahuan
Fungsi Python manakah yang mesti digunakan dan bukannya == apabila membandingkan MAC kriptografi?
Rekap Pelajaran
Elakkan kunci yang ditetapkan dalam kod, mod ECB, == untuk perbandingan MAC, modul random dan penggunaan semula nonce. Gunakan os.urandom/secrets untuk kerawakan, AESGCM untuk penyulitan dan hmac.compare_digest untuk pengesahan. PyNaCl dan argon2-cffi menyediakan API peringkat tinggi yang selamat untuk kriptografi simetri dan kata laluan.
Pelajari Cryptology Academy 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
- 67
- Pelajaran
- 261
Soalan Lazim
Adakah pelajaran “Perangkap Kripto Python Biasa & Corak Selamat” percuma?
Ya — teks penuh “Perangkap Kripto Python Biasa & Corak Selamat” 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 Cryptology Academy, tingkat taraf kepada CoddyKit PRO. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Perangkap Kripto Python Biasa & Corak Selamat”?
Elakkan kunci berkod keras, mod ECB, perbandingan yang masanya tidak tetap dan banyak lagi. Anda berlatih Cryptology Academy 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 Cryptology Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Cryptology Academy 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 4 daripada 4.
Berapa lamakah pelajaran “Perangkap Kripto Python Biasa & Corak Selamat” 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 Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy 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
- Gambaran Keseluruhan Pustaka Kriptografi Python
- Sulitkan & Nyahsulit AES-GCM dalam Python
- Pasangan Kunci RSA & ECDSA dalam Python
- Perangkap Kripto Python Biasa & Corak Selamat