DES - Data Encryption Standard ve Feistel Ağı
DES, modern kriptografinin dönüm noktasıdır. 1970'lerde IBM tarafından "Lucifer" projesi adıyla geliştirilen ve 1977'de Amerikan Ulusal Standartlar Bürosu (NBS, günümüzdeki NIST) tarafından federal bir standart olarak kabul edilen simetrik (gizli) anahtarlı bir blok şifreleme algoritmasıdır.
Günümüzde 56 bitlik kısa anahtar boyutu nedeniyle kaba kuvvet (brute-force) saldırılarına karşı yetersiz kalıp yerini AES algoritmasına bırakmış olsa da, modern şifreleme mimarilerinin (Feistel Ağları, S-Box ve P-Box mantığı) temelini anlamak için DES'i öğrenmek bir kriptografi öğrencisi için zorunluluktur.
💻 Harflerden Bitlere Geçiş
Şu ana kadar gördüğümüz klasik şifrelemelerde (Sezar, Afin, Vigenère, Permütasyon) hep İngiliz alfabesi (
DES ile birlikte bu "insan odaklı" yapı tamamen terk edilir. Algoritma harflerin ne olduğunu bilmez; doğrudan bilgisayar işlemcisinin dilinde (0'lar ve 1'ler) çalışır. Açık metniniz (ister bir metin dosyası, ister bir fotoğraf, ister bir video olsun) önce makine diline çevrilir ve tamamen bit (binary) seviyesindeki işlemlerle (XOR, bit kaydırma, bit permütasyonları) şifrelenir.
🔑 Blok ve Anahtar Yapısı
DES algoritması veriyi bir bütün olarak değil, 64-bitlik bloklar halinde işler. Yani mesajınız ne kadar uzun olursa olsun, sistem bunu 64 bitlik parçalara böler ve her bir bloğu sırayla şifreler.
Algoritmanın kalbindeki anahtar yapısı ise kriptografi tarihindeki en ilginç tasarımlardan biridir:
- Girdi Anahtarı: DES algoritmasına dışarıdan verilen orijinal anahtar 64 bittir.
- Efektif (Gerçek) Anahtar Boyutu: Orijinal 64 bitlik anahtarın her 8. biti (8, 16, 24... 64) bir Eşlik Biti (Parity Bit) olarak hata kontrolü amacıyla kullanılır ve şifreleme işlemine dahil edilmez. Bu yüzden DES'in gerçek kriptografik gücü 56 bit ile sınırlıdır.
DES Anahtar Üretim Algoritması (Key Schedule)
DES algoritması, her biri 64 bitlik veri bloklarını şifrelemek için tam 16 döngü (round) kullanır. Şifrelemenin güvenli olabilmesi için bu 16 döngünün her birine, orijinal anahtardan türetilmiş farklı ve benzersiz 48 bitlik alt anahtarlar (
İşte 64 bitlik tek bir kök anahtardan, 16 farklı mermi (alt anahtar) üreten bu fabrikaya Key Schedule (Anahtar Zamanlaması) denir. İşlem 3 temel aşamada gerçekleşir:
Adım 1: PC-1 (Eşlik Bitlerini Çöpe Atma ve İkiye Bölme)
Sisteme giren orijinal kök anahtar (
| 57 | 49 | 41 | 33 | 25 | 17 | 9 |
| 1 | 58 | 50 | 42 | 34 | 26 | 18 |
| 10 | 2 | 59 | 51 | 43 | 35 | 27 |
| 19 | 11 | 3 | 60 | 52 | 44 | 36 |
| 63 | 55 | 47 | 39 | 31 | 23 | 15 |
| 7 | 62 | 54 | 46 | 38 | 30 | 22 |
| 14 | 6 | 61 | 53 | 45 | 37 | 29 |
| 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Anahtar dizisi PC-1 (Permuted Choice 1) matrisinden geçirilir. Bu matrisin içinde eşlik bitlerinin indeksleri bulunmaz; bu sayede 8 adet eşlik biti otomatik olarak çöpe atılır.
Tablonun Uygulanma Mantığı: Bu işlemi, önceki konularda işlediğimiz Ayrık Permütasyon Fonksiyonu (
Matematiksel olarak bu permütasyon işlemi şu şekilde ifade edilir:
Örneğin tablonun ilk elemanlarına göre:
Elde edilen bu 56 bit, matrisin üst yarısı (
Matematiksel olarak bu ayrışma şöyledir:
Sonra bu 56 bitlik yeni anahtar (
Adım 2: Dairesel Sola Kaydırma (Circular Left Shift)
Algoritma 16 döngü boyunca
🔍 Görsel Örnek (1-bit Kaydırma): 8-bitlik örnek bir
bloğumuz olsun: 1 bit sola kaydırıldığında, en soldaki kopar ve en sağa kuyruk olur: Yeni :
Kaydırma miktarı döngünün numarasına göre sabittir:
- 1., 2., 9. ve 16. Döngülerde: Sadece 1 bit dairesel kaydırılır.
- Diğer tüm döngülerde: 2 bit dairesel kaydırılır.
Örneğin 1. ve 2. döngüler için yeni yarılar şu şekilde oluşur:
Adım 3: PC-2 (Sıkıştırma Permütasyonu)
Döngüye ait kaydırılmış
Bu noktada PC-2 (Permuted Choice 2) tablosu devreye girer. Bu tablo tıpkı bir filtre gibi davranarak; 56 bitlik diziyi karıştırır ve içinden önceden belirlenmiş 8 biti atarak (sıkıştırarak) o döngünün asıl silahı olan 48 bitlik
PC-2 Matrisi (48-bit Seçim):
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
Matematiksel dönüşümün jilet gibi özeti:
Bu 3 adım, 16 döngünün tamamı için zincirleme olarak tekrarlanır ve şifreleme işleminde kullanılacak olan o meşhur 16 anahtar seti hazır hale getirilmiş olur.