← Back to list

DES Şifreleme Tekniği

DES (Data Encryption Standard) Nedir?

SpaceCat · 2025-03-03 13:13 · 0 claps · 4.7 min read
#de #3des
Open on Medium ↗
Wiki topics: 🔒 · Cybersecurity

DES Şifreleme Tekniği

DES (Data Encryption Standard) Nedir?

DES (Data Encryption Standard), 1970’lerde IBM tarafından geliştirilmiş ve ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) (o dönemki adıyla NBS) tarafından standart hâline getirilmiş simetrik bir blok şifreleme algoritmasıdır. Bu algoritmanın amacı, veriyi belirli bir anahtarı (key) kullanarak şifrelemek ve yine aynı anahtar yardımıyla çözülebilir (deşifre edilebilir) hâle getirmektir.

DES’in Temel Özellikleri

1.Simetrik Şifreleme DES bir simetrik şifreleme algoritmasıdır. Yani hem şifreleme hem de şifre çözme (decryption) işlemi aynı anahtarla yapılır. Bu, iletilen verinin hem gönderen hem de alıcı tarafında ortak bir sır (anahtar) paylaşılmasını gerektirir.

2.Blok Şifreleme DES, 64 bitlik veri blokları üzerinde işlem yapar. Yani veriyi 64 bitlik parçalara böler ve her parçaya aynı işlemleri uygular.

3.56 Bitlik Etkili Anahtar Aslında DES’teki anahtar nominal olarak 64 bit olsa da bu 64 bitin 8 biti hata kontrolü (parite) için ayrılmıştır. Geriye kalan 56 bit ile güvenlik sağlanır. Günümüz standartlarında bu, kriptoanalitik saldırılara karşı fazla düşük kabul edilmektedir.

4.Feistel Ağı Yapısı DES, Feistel şifreleme mimarisi üzerine inşa edilmiştir. Veri “sol” (L) ve “sağ” (R) olmak üzere ikiye ayrılır. Her “tur”da (round):

  • Sağ bölüm, belirli fonksiyonlarla dönüştürülüp soldaki bölümle XOR’lanır.
  • Tur tamamlandığında sağ bölüm solun yerini, sol bölüm de sağın yerini alır.
  • Böylece birkaç tur sonunda (DES için toplam 16 tur) veri yeterince “karıştırılmış” olur.

5.S-Box’lar ve P-Box’lar

  • S-Box (Substitution Box): Bit dizilerini farklı bit dizilerine dönüştüren tablolar. Algoritmaya ikame özelliği katarak veriyi karıştırır.
  • P-Box (Permutation Box): Bitlerin konumlarını değiştiren tablolar. Algoritmaya difüzyon kazandırır ve veri içerisindeki ilişkileri mümkün olduğunca dağıtır.

DES Nasıl Çalışır?

  1. Başlangıç Permütasyonu (Initial Permutation, IP) Şifreleme işleminde veri, ilk olarak belirli bir tabloyla bitlerin yeri değiştirilerek yeniden düzenlenir.

2.Feistel Turları Veri 64 bitlik bloklar hâlinde işlenir ve her blok 32’şer bitlik iki parçaya ayrılır: Left (L) ve Right (R). Ardından:

  1. R parçası, bir genişletme fonksiyonuyla (E-Box) 48 bite çıkarılır.
  2. 48 bitlik alt-anahtar (subkey) ile XOR’lanır.
  3. Elde edilen sonuç, S-Box’lar ile tekrar 32 bite düşürülür.
  4. Bu 32 bit, P-Box üzerinden geçirilerek karıştırılır.
  5. Elde edilen 32 bit, sol parça (L) ile XOR’lanır ve bu işlem sonunda yeni R oluşur.
  6. Eski R, yeni L haline gelir. Bu işlem 16 tur boyunca tekrarlanır.

3.Son Permütasyon (Final Permutation, FP) 16 turun sonunda oluşan 64 bitlik yeni veri, son bir permütasyon işleminden geçirilerek şifreli blok elde edilir.

Python ile DES Uygulaması

from Crypto.Cipher import DES
import binascii

def pad(text):
    """DES blok uzunluğu 8 byte olduğu için, eksik byte'ları tamamlıyoruz."""
    while len(text) % 8 != 0:
        text += ' '
    return text

def des_encrypt(key, plaintext):
    """DES şifreleme fonksiyonu"""
    cipher = DES.new(key, DES.MODE_ECB)  # Elektronik Kod Kitabı Modu (ECB)
    padded_text = pad(plaintext)  # Metni 8 byte'a tamamla
    encrypted_text = cipher.encrypt(padded_text.encode())  # Şifreleme
    return binascii.hexlify(encrypted_text).decode()  # Hex formatına çevir

def des_decrypt(key, ciphertext):
    """DES şifre çözme fonksiyonu"""
    cipher = DES.new(key, DES.MODE_ECB)  # Şifreleyici nesneyi oluştur
    decrypted_text = cipher.decrypt(binascii.unhexlify(ciphertext))  # Hex veriyi çöz
    return decrypted_text.decode().strip()  # Boşlukları temizle

# 8 byte (64 bit) uzunluğunda bir anahtar tanımla
key = b'8bytekey'  # DES için anahtar 8 byte olmalıdır

# Şifrelenecek metin
plaintext = "Merhaba!"

# Şifreleme işlemi
encrypted_text = des_encrypt(key, plaintext)
print(f"Şifrelenmiş Metin: {encrypted_text}")

# Şifre çözme işlemi
decrypted_text = des_decrypt(key, encrypted_text)
print(f"Çözülen Metin: {decrypted_text}")

pad()Fonksiyonu:

  • DES algoritması, 8 baytlık bloklar halinde çalışır.
  • Eğer giriş metni 8 baytın katı değilse, eksik kalan karakterleri boşluk ekleyerek tamamlamamız gerekir.

Çalışma Mantığı:

  • while len(text) % 8 != 0: satırı, metin uzunluğu 8’in katına ulaşana kadar sonuna boşluk ekler.

des_decrypt()Fonksiyonu:

  • DES ile şifrelenmiş hex formatındaki veriyi çözerek orijinal metne çevirir.
  1. binascii.unhexlify(ciphertext): Şifreli metni binary formata geri çevirir.
  2. cipher.decrypt(...): DES nesnesi kullanılarak şifre çözülür.
  3. strip(): Eklenen boşluk karakterleri temizlenerek orijinal metin elde edilir.

Des ile Triple Des Farkı

1.Anahtar Uzunluğu

  • DES: 56 bitlik bir anahtar kullanır.
  • Triple DES (3DES): 112 bit veya 168 bitlik anahtar kullanır. (Genellikle 168 bit, ama etkili güvenlik seviyesi 112 bittir.)

2.Şifreleme Süreci

  • DES: Veriyi 64 bitlik bloklar halinde işler ve her blok için 16 tur (round) şifreleme yapar.
  • Triple DES: Aynı DES algoritmasını üç kez arka arkaya çalıştırır:
  • Encrypt-Decrypt-Encrypt (EDE) modu: İlk turda DES ile şifreler, ikinci turda DES ile şifreyi çözer, üçüncü turda tekrar DES ile şifreler.
  • Encrypt-Encrypt-Encrypt (EEE) modu: Üç kez DES ile şifreleme yapar.

3.Güvenlik

  • DES: 56 bitlik anahtarı nedeniyle günümüz hesaplama gücüyle kolayca kırılabilir.
  • Triple DES: Daha güvenlidir çünkü üç kat şifreleme yapar. Ancak, yine de modern saldırılara karşı tam koruma sağlamaz.

4.Performans

  • DES: Daha hızlıdır, çünkü tek bir DES işlemi yapar.
  • Triple DES: Daha yavaştır, çünkü üç kez DES işlemi uygular.

5.Kullanım Durumu

  • DES: Günümüzde neredeyse hiç kullanılmaz, çünkü kırılması kolaydır.
  • Triple DES: Daha güvenli olmasına rağmen, AES (Advanced Encryption Standard) ile değiştirilmiştir.

6.AES Karşısındaki Durumu

  • DES: Kullanımdan kalkmıştır.
  • 3DES: Bankacılık sistemlerinde bir dönem kullanılmıştır, ancak 2023 itibarıyla NIST tarafından önerilmeyen bir algoritma olarak kabul edilmiştir. AES, günümüzde daha güvenli ve hızlı bir alternatiftir.

Sonuc

DES, 1970'lerde IBM tarafından geliştirilen ve simetrik şifreleme kullanan bir blok şifreleme algoritmasıdır. 64 bitlik bloklar halinde çalışır ve 56 bitlik bir anahtar kullanır. Feistel ağı yapısı sayesinde veriyi 16 tur boyunca şifreleyerek güvenlik sağlar. Ancak, 56 bitlik anahtar uzunluğu günümüz hesaplama gücüyle kolayca kırılabildiği için artık güvenli değildir. Triple DES (3DES), DES’in güvenlik açığını kapatmak için geliştirilmiş ve DES algoritmasını üç kez çalıştırarak daha güvenli hale getirilmiştir. 112 veya 168 bitlik anahtar kullanmasına rağmen, günümüz için yeterince güvenli sayılmaz ve yavaş bir algoritmadır. 3DES bir dönem bankacılık gibi alanlarda kullanılmış olsa da, 2023 itibarıyla NIST tarafından önerilmeyen algoritmalar arasına alınmıştır. Günümüzde DES ve 3DES’in yerini AES (Advanced Encryption Standard) almıştır. AES, daha güçlü, daha hızlı ve modern saldırılara karşı daha dayanıklı olduğu için günümüzde en çok tercih edilen şifreleme yöntemidir.

Kaynakça

  1. Difference between Encryption and Decryption — GeeksforGeeks

  2. National Institute of Standards and Technology (NIST). (2023). Recommendation for the Transitioning of Cryptographic Algorithms and Key Lengths. Retrieved from https://www.nist.gov

3.NIST. (2001). FIPS PUB 197: Advanced Encryption Standard (AES). Retrieved from https://csrc.nist.gov/publications


메타데이터
post_id
77cd99d82b51
slug
des-şifreleme-tekniği-77cd99d82b51
url
https://medium.com/@catspacewith/des-%C5%9Fifreleme-tekni%C4%9Fi-77cd99d82b51
canonical_url
https://medium.com/@catspacewith/des-%C5%9Fifreleme-tekni%C4%9Fi-77cd99d82b51
author_url
https://medium.com/@catspacewith
status
ok
fetched_at
2026-07-20 19:26:55