Sitemap
Ensar Gök

Ensar Gök

Student @ Yıldız Technical University

DES

5 min readFeb 1, 2024

Data Encryption Standart — Amerika Birleşik Devletlerinin talebi üzerine IBM ve NSA (Ulusal Güvenlik Dairesi) tarafından 1974 yılında dijital verinin şifrelenmesi için oluşturulan symetric-key algoritmasıdır.

Bugünlerde verinin şifrelenmesi için kullanılan 56 bit’lik anahtarın çok kısa olması sebebiyle modern şifrelemede kullanılmasada Amerika’da uzun süre standart olmasıyla çok fazla kullanılmış ve üzerinde çok fazla çalışma yapılmıştır.

Algoritmanın Python ve C dillerinde implement edilmiş haline GitHub’ımdan ulaşabilirsiniz.

DES Artık Neden Kullanılmamaktadır?

Şifreleme için kullanılan anahtar 56 bit uzunluğundadır, bu 2⁵⁶ farklı ihtimal olduğu anlamına gelir, çünkü her bir için 1 veya 0 olmak üzere iki farklı ihtimal vardır. Modern bilgisayarlar bu kadar farklı ihtimali tek tek deneyerek şifreyi çözebilecek hızda ve güçte oldukları için DES algoritması bugün kullanılmamaktadır.

Ancak bu şifrelemeyi art arda 3 kez yapan 3DES algoritması yeterince güvenlidir ve kullanılabilir.

Terimler

Öncelikle algoritmada kullanılacak olan terimlerden bahmetmek isterim. Bu terimleri çokça kullanacağız.

Cipher: Verinin şifrelenmesi için kullanılacak olan anahtar. İki çeşit cipher vardır, stream cipher ve block cipher. Stream cipher devam eden veri için yeni bitler kullanır. Block cipher ise sabit bir uzunluğa sabittir, verinin şifrelenmesinde aynı bitler kullanılır.
Plaintext: Şifrelenecek olan veridir.
Symetric Key: Şifreleme ve Deşifreleme için aynı anahtarı kullanabildiğimiz simetrik anahtar.

Algoritma mantığı

DES Algoritması girdi olarak 64 bit yani 8 byte’lik veri (plaintext) alır ve 64 bitlik veri çıktı verir, bunu da 56 bitlik anahtar (block cipher) ile yapar.

Block Cipher Nasıl Oluşturulur?

Block Cipher oluşturulurken iki temel adım vardır. Bunlar Confusion ve Diffusion’dur. Bu iki adım ile input x’i şifreleyerek output y’yi elde ederiz.

(i) Confusion: Plaintext ve Ciphertext arasındaki ilişkiyi gizler. Bunu her input için başka bir input veren bir tablo ile yapar. Bu işlem sırasında bit uzunluğu değişmez.

(ii) Diffusion: Her bir plaintext bit’i ciphertext bit’leri arasına dağıtılır.

Get Ensar Gök’s stories in your inbox

Join Medium for free to get updates from this writer.

Bu temel şifreleme işlemlerin çok kez art arda yapılarak Product Cipher elde edilir.

Bu teknik kullanılırken bir bit’lik değişim sonuçta bir çok bitlik değişime sebep olabilir; bu, şifreleme açısından oldukça önemli bir özelliktir. Örnek olarak:

Feistel Network

Bugün kullanılan bir çok cipher Feistel cipher’leridir. Feistel Network, Aldığı X verisini Şifreleme adımından geçirip daha sonra çıkan sonuç Y’yi bir sonraki Şifreleme adımına giriş olarak veren, ve bunu 16 kere yapan algoritmadır.

Şifreleme Adımında Neler Oluyor?

(i) 64 bitlik input 32 bit sol (L) ve 32 bit sağ (R) olmak üzere ikiye ayrılır.
(ii) R parçası, k anahtarı ile bir F fonksiyonuna girer.
(iii) Fonksiyonun çıktısı, L parçası ile XOR’lanır, böylece şifrelenmiş olur ve Sağ tarafa konur. R parçası ise aynı kalarak Sol tarafa konur ve sonraki şifreleme adımının L’si olur.

XOR Nedir

XOR, iki bitlik girdisi ve bir bitlik çıktısı olan bir nevi mantıksal operatördür.

Bu fonksiyonun en önemli özelliği tersine de çalışmasıdır. Yani eğer herhangi bir inputu ve outputu biliyorsak, diğer inputu da hesaplayabiliyoruz. Bu özelliği daha sonra şifrelenmiş veriyi deşifre etmek için kullanacağız.

Başlangıç ve Bitiş Permütasyonlarında Neler Oluyor?

Başlangıç ve bitiş permütasyonlarında 64 bitin her biri rastgele belirlenmiş konumlarla yer değiştirmektedir, örnek olarak başlangıç permütasyonunda 1. bit, 40. bit olur; 58. bit ise 1. bit olur. Bitiş permütasyonunda ise bu aşamanın tam tersi gerçekleşir: Yani 40.bit, 1.bit olur; 1. bit, 58. bit olur.

Bu aşamanın daha fazla şifreleme sağladığını ve bu yüzden kullanıldığını düşünebilirsiniz, ancak bu permütasyonun herkesçe bilindiği ve tersine çevirildiği için her hangi ekstra şifreleme sağlamamaktadır. Bu permütasyon DES algoritmasının geliştirildiği zamanlarda çalışma ortamlarında pratiklik olması için kullanılmış, daha sonra standartın bir parçası olmuştur.

Kaynak: Wikipedia

F Fonksiyonu

DES Algoritmasının en önemli kısımlarından biri F fonksiyonudur. Asıl şifreleme bu kısımda gerçekleştiği kısımdır.

(i) 32 bitlik girdi önce Expansion işlemine girer 48 bit olarak çıkar. İşlemin temel görevi 32 bitlik veriyi 48 bite çıkarmaktır. Aynı zamanda verinin karmaşıklığını artırır.
(ii) Epansion işleminin sonucu olan 48 bit ile anahtar XOR işlemine girer.
(iii) XOR işleminden çıkan 48 bit her biri altı bit olacak şekilde 8 parçaya bölünür, parçalaraın her biri DES algoritmasının en önemli parçalarından biri olan Substitution işlemine girer.
(iv) Substitution işlemi, 6 bitlik girdi alıp 4 bitlik çıktır verir, 8 farklı S-box’tan alınan toplam 32 bit daha sonra Permutation işlemine girer.
(v) Permutation işleminde bitler karıştırılır ve F fonksiyonunun çıktısı olur

Press enter or click to view image in full size

Expansion: Girdisi olan 32 bitin 16'sını sadece bit bite, kalan 16'sını ise iki bite aktararak 48 bitlik çıktı veren ve verinin karışıklığını arttıran işlemdir.

Substitution: Her bir S-Box, girdisi olan 6 bitlik sayıya göre önceden belirlenmiş 4 bitlik değer çıktı verir. Ortadaki 4 bit sütunları, baştaki ve sonraki bit beraber satırları belirler. Örnek olarak 1. S-Box’un değer tablosu aşağıdaki gibidir. Tabloya göre S1(000101) = 7 olur, bunu sayının binary karşılığı ise 0111'dir.

Press enter or click to view image in full size
Kaynak: Wikipedia

DES algoritmasının en güçlü saldırırlara karşı sağlam kalmasının bir sebebi S-Box’lardır. S-Box’lar en güçlü saldırırlara karşı dayanıkldır ve DES algoritmasının kırılmasını engeller. Çünkü tablo bu saldırılar düşünülerek tasarlanmıştır.

Ayrıca S-Box’lar tasarım olarak bir bitlik değişim için en az iki bitlik değişim oluşturarak rastgeleliği arttırır. Bu değişim domino etkisi yaratarak sonucun rastgeleliği arttırır.

Permutation: Bu işlem daha önceki permütasyon işlemiyle aynı prensipte çalışır, input olarak aldığı 32 bit’i önceden belirlenmiş yerlere yerleştirir.

Kaynak: Wikipedia

Deşifreleme

Şifreleme yaparken F fonksiyonunun çıktısını L0 ile XOR yapmıştık. Bunun sonucunda ise R1’i elde etmiştik, ve L0’i daha sonra R1 yapmıştık. Yani L0 şifrelenmişti ve R0 şifrelenmemişti. Verinin aslına ulaşmak için L0'ı elde etmemiz gerekmektedir. Burada XOR fonksiyonunun tersinir olması özelliğini kullanacağız. Elimizde şifrelenmemiş R0 verisi, yani L1 verisi var, biz bu veriyi aynı anahtarımız ile F fonksiyonuna sokarsak aynı çıktıyı elde ederiz, bu çıktıyı ise R1 ile XOR fonksiyonuna sokarsak bize L0 verisini verir.

--

--

Ensar Gök
Ensar Gök

Written by Ensar Gök

Student @ Yıldız Technical University