0Pricing
Cryptology Academy · Pelajaran

Kesalahan Umum Kripto Python & Pola Aman

Hindari kunci yang ditulis langsung, mode ECB, perbandingan waktu tak konstan, dan lainnya.

Kesalahan Umum Kripto Python & Pola Aman adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

Kesalahan Kriptografi yang Paling Berbahaya

Kriptografi mudah digunakan secara keliru. Kesalahan umum Python meliputi kunci yang ditanamkan langsung, mode ECB, perbandingan yang tidak berlangsung dalam waktu konstan, keacakan yang lemah, penggunaan ulang kunci atau nonce, serta membuat kriptografi sendiri.

Kesalahan 1: Kunci yang Ditanamkan Langsung

Jangan pernah menyematkan kunci dalam kode sumber. Kunci tersebut akhirnya tersimpan dalam riwayat git, log, dan pesan kesalahan. Gunakan variabel lingkungan 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 startup

Kesalahan 2: Mode ECB

AES-ECB mengenkripsi setiap blok secara independen — blok plaintext yang identik menghasilkan blok ciphertext yang identik. Serangan "penguin ECB" mengungkap pola dalam gambar dan data terstruktur. Selalu gunakan GCM atau CBC dengan IV acak.

# 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 encryption

Kesalahan 3: Perbandingan MAC yang Tidak Berlangsung dalam Waktu Konstan

Menggunakan == untuk membandingkan MAC membocorkan informasi waktu. Selalu 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):
    pass

Kesalahan 4: Pembuatan Bilangan Acak yang Lemah

Jangan pernah menggunakan modul random untuk keperluan kriptografis — modul tersebut 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 wrapper

Kesalahan 5: Penggunaan Ulang IV atau Nonce

Menggunakan ulang IV dengan CBC atau nonce dengan GCM merusak keamanan. Buat IV atau nonce acak yang baru untuk setiap enkripsi dan simpan bersama ciphertext:

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)

Kesalahan 6: Menggunakan MD5 atau SHA-1 untuk Keamanan

MD5 dan SHA-1 telah rusak secara kriptografis dalam hal ketahanan terhadap kolisi. Jangan pernah menggunakannya untuk tanda tangan digital, sidik jari sertifikat, atau HMAC. Gunakan SHA-256 atau SHA-3-256.

Kesalahan 7: Membuat Kriptografi Sendiri

Menerapkan primitif kriptografis dari awal hampir selalu menimbulkan bug yang sulit dideteksi. Gunakan paket cryptography, PyNaCl, atau PyCA. Jangan pernah menerapkan AES, RSA, atau ECDSA sendiri.

Pola Aman: PyNaCl untuk Kriptografi Tingkat Tinggi

PyNaCl membungkus pustaka NaCl/libsodium — API yang memiliki opini desain tertentu dan sulit 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-Poly1305

Pola Aman: Pencirian Kata Sandi dengan Argon2

Gunakan argon2-cffi untuk pencirian kata sandi — jangan pernah menggunakan SHA-256 atau bcrypt secara langsung:

# 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")

Pengosongan Kunci

Setelah menggunakan kunci di memori, kosongkan isinya untuk mengurangi jendela waktu serangan pengambilan dump memori. GC Python membuat hal ini sulit — gunakan ctypes atau PyNaCl yang menanganinya secara otomatis.

Pemeriksaan Pengetahuan

Fungsi Python mana yang harus digunakan sebagai pengganti == saat membandingkan MAC kriptografis?

Ringkasan Pelajaran

Hindari kunci yang ditanamkan langsung, mode ECB, == untuk perbandingan MAC, modul random, dan penggunaan ulang nonce. Gunakan os.urandom/secrets untuk keacakan, AESGCM untuk enkripsi, serta hmac.compare_digest untuk verifikasi. PyNaCl dan argon2-cffi menyediakan API tingkat tinggi yang aman untuk kriptografi simetris dan kata sandi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kesalahan Umum Kripto Python & Pola Aman” gratis?

Ya — teks lengkap “Kesalahan Umum Kripto Python & Pola Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kesalahan Umum Kripto Python & Pola Aman”?

Hindari kunci yang ditulis langsung, mode ECB, perbandingan waktu tak konstan, dan lainnya. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Kesalahan Umum Kripto Python & Pola Aman” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ikhtisar Pustaka Kriptografi Python
  2. Enkripsi & Dekripsi AES-GCM dalam Python
  3. Pasangan Kunci RSA & ECDSA dalam Python
  4. Kesalahan Umum Kripto Python & Pola Aman
← Kembali ke Cryptology Academy