0Pricing
Cryptology Academy · Ders

Yaygın Python Kripto Hataları ve Güvenli Kalıplar

Sabit kodlanmış anahtarlardan, ECB kipinden, sabit zamanlı olmayan karşılaştırmalardan ve diğer hatalardan kaçının.

Yaygın Python Kripto Hataları ve Güvenli Kalıplar, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.

En Tehlikeli Kriptografi Hataları

Kriptografiyi yanlış kullanmak kolaydır. Python'daki en yaygın tuzaklar şunlardır: kaynak koduna sabitlenmiş anahtarlar, ECB kipi, sabit zamanda yapılmayan karşılaştırmalar, zayıf rastgelelik, anahtarın veya tek kullanımlık değerin yeniden kullanılması ve kendi kriptografinizi yazmak.

Tuzak 1: Sabitlenmiş Anahtarlar

Anahtarları kaynak koduna asla gömmeyin. Anahtarlar git geçmişinde, günlüklerde ve hata iletilerinde yer alabilir. Ortam değişkenlerini veya bir KMS kullanın:

# 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

Tuzak 2: ECB Kipi

AES-ECB her bloğu bağımsız olarak şifreler; aynı açık metin blokları aynı şifreli metin bloklarını üretir. "ECB pengueni" saldırısı, görüntülerdeki ve yapılandırılmış verilerdeki örüntüleri ortaya çıkarır. Her zaman GCM veya rastgele IV içeren CBC kullanın.

# 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

Tuzak 3: Sabit Zamanda Yapılmayan MAC Karşılaştırması

MAC'leri karşılaştırmak için == kullanmak zamanlama bilgilerini sızdırır. Her zaman hmac.compare_digest kullanın:

import hmac

# WRONG — leaks timing
if received_mac == expected_mac:
    pass

# RIGHT — constant-time
if hmac.compare_digest(received_mac, expected_mac):
    pass

Tuzak 4: Zayıf Rastgele Sayı Oluşturma

Kriptografik amaçlar için random modülünü asla kullanmayın — bu bir CSPRNG değildir. secrets veya os.urandom kullanın:

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

Tuzak 5: IV'nin veya Tek Kullanımlık Değerin Yeniden Kullanılması

CBC ile bir IV'yi veya GCM ile bir tek kullanımlık değeri yeniden kullanmak güvenliği bozar. Her şifreleme işlemi için yeni bir rastgele IV veya tek kullanımlık değer oluşturun ve bunu şifreli metnin yanında saklayın:

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)

Tuzak 6: Güvenlik İçin MD5 veya SHA-1 Kullanmak

MD5 ve SHA-1, çakışma direnci bakımından kriptografik olarak kırılmıştır. Bunları sayısal imzalar, sertifika parmak izleri veya HMAC için asla kullanmayın. SHA-256 veya SHA-3-256 kullanın.

Tuzak 7: Kendi Kriptografinizi Yazmak

Kriptografik temel yapıtaşlarını sıfırdan uygulamak neredeyse her zaman fark edilmesi zor hatalara yol açar. cryptography, PyNaCl veya PyCA paketlerini kullanın. AES, RSA veya ECDSA'yı kendiniz asla uygulamayın.

Güvenli Örüntü: Yüksek Düzeyli Kriptografi İçin PyNaCl

PyNaCl, NaCl/libsodium kitaplığını sarmalar ve yanlış kullanılmasını zorlaştıran, belirli tercihlere sahip bir API sunar:

# 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

Güvenli Örüntü: Argon2 ile Parola Özetleme

Parola özetleme için argon2-cffi kullanın — doğrudan SHA-256 veya bcrypt kullanmayın:

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

Anahtarları Sıfırlama

Bellekte bir anahtarı kullandıktan sonra bellek dökümü saldırılarına açık süreyi azaltmak için anahtarı sıfırlayın. Python'un çöp toplayıcısı bunu zorlaştırır — ctypes veya bu işlemi otomatik olarak yöneten PyNaCl'ı kullanın.

Bilgi Kontrolü

Kriptografik MAC'leri karşılaştırırken == yerine hangi Python işlevi kullanılmalıdır?

Ders Özeti

Sabitlenmiş anahtarlardan, ECB kipinden, MAC karşılaştırmasında == kullanımından, random modülünden ve tek kullanımlık değerin yeniden kullanılmasından kaçının. Rastgelelik için os.urandom/secrets, şifreleme için AESGCM, doğrulama için hmac.compare_digest kullanın. PyNaCl ve argon2-cffi, simetrik kriptografi ve parolalar için güvenli yüksek düzeyli API'ler sağlar.

Sıkça Sorulan Sorular

“Yaygın Python Kripto Hataları ve Güvenli Kalıplar” dersi ücretsiz mi?

Evet — “Yaygın Python Kripto Hataları ve Güvenli Kalıplar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.

“Yaygın Python Kripto Hataları ve Güvenli Kalıplar” dersinde ne öğreneceğim?

Sabit kodlanmış anahtarlardan, ECB kipinden, sabit zamanlı olmayan karşılaştırmalardan ve diğer hatalardan kaçının. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Yaygın Python Kripto Hataları ve Güvenli Kalıplar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Python kriptografi Kütüphanesine Genel Bakış
  2. Python'da AES-GCM ile Şifreleme ve Şifre Çözme
  3. Python'da RSA ve ECDSA Anahtar Çiftleri
  4. Yaygın Python Kripto Hataları ve Güvenli Kalıplar
← Cryptology Academy Sayfasına Dön