Veri Şifreleme (Data Encryption)

Siber güvenlikte şifreleme, verilerin okunabilir bir biçimden şifreli bir biçime dönüştürülmesidir. Şifrelenmiş veriler yalnızca şifresi çözüldükten sonra okunabilir.

Şifreleme, veri güvenliğinin en önemli noktasıdır. Bir bilgisayar sisteminin verilerinin çalınmamasını ve kötü amaçlar için kullanılmamasını temel tekniğidir.

Veri şifrelemesi, bireysel kullanıcılar ve büyük şirketler tarafından, bir tarayıcı ve sunucu arasındaki veri iletimini, kullanıcı bilgilerini gizlemek amacıyla sıkça kullanılır. Bu bilgiler ödeme bilgilerinden kullanıcı bilgilerine birçok çeşit bilgi içerebilir. Veri şifreleme algoritmaları yoğun matematik ve bilgi işlem gücü ile tasarlanır.

  • Şifreleme : Bir verinin gizleme biçimi.

  • Şifre : Bir veriyi gizlerken kullanılan anahtar.


Şifreleme nasıl çalışır ?

Veriler internet üzerinden paylaşıldığında genel interneti oluşturan bir çok ağ cihazı üzerinden geçer. Bu dolaşım da korsanlar tarafından ele geçirilebilir. Bunu önlemek amacıyla kullanıcılar donanımsal ve yazılımsal teknolojiler kullanabilir. Ağ güvenliğinde bu yapılan işlem Şifreleme olarak bilinir.

Şifreleme arka planda bir çok algoritma kullanır. Düz okunabilir metinler, şifreleme algoritmaları sayesinde okunamaz. Çözülmesi son teknoloji donanımlarda bile uzun bir süreç gerektiren metinler haline getirir. Bu sayede şifrelerimiz ağ üzerinde güvenli bir şekilde dolaşır ve ele geçirilse bile anlamsız metinler olarak gözükür.

Şifreleme algoritmaları düz bir metni karmaşık hale getirirken bir anahtar (key) ile şifreler. Bu anahtar ne kadar karmaşık ve uzun olursa o kadar çözülmesi zor bir şifre elde ederiz. Bir çok algoritmaya, karıştırmaya ve yer değiştirmeye tabi tutulur.


Şifreleme Teknikleri

En yaygın iki şifreleme yöntemleri simetrik ve asimetrik şifrelemedir. Bu teknik adlar şifreleme algoritmalarında aynı anahtar kullanılıp kullanılmadığını ifade etmek için konulmuştur.

  • Simetrik Şifreleme : Simetrik şifreleme, özel anahtar şifrelemesi olarak bilinir. Şifreleme yaparken ve şifreyi çözerken aynı anahtar kullanılır.

  • Asimetrik Şifreleme : Asimetrik şifreleme, özel ve genel anahtar (public, private) olmak üzere 2 anahtar kullanılır. Anahtarlar birbirleriyle eşleştirilmiş ama birbirine aynı olmayan anahtarlardır. Bu yüzden asimetrik olarak adlandırılır. Özel anahtar sahibi tarafından gizli tutulur. Genel anahtar ise yetkili alıcılara veya isteğe bağlı olarak herkese açık sunulur. Genel anahtar şifreleme ve doğrulama için kullanılırken özel anahtar, şifre çözme ve imzalama için kullanılır. Genel anahtar ile şifrelenen veri yalnızca özel anahtar ile çözülebilir. Yani öyle bir mekanizma ki genel anahtar ile şifrelenen veri genel anahtar ile çözülemiyor.


Simetrik Şifreleme Algoritmaları

DES (Data Encryption Standart)

İlk şifreleme algoritmasıdır. IBM tarafından 1970'de çıkarılmıştır. Son 30 yıldır kullanılan en popüler şifrelemedir. Fakat günümüzde 56 bitlik anahtar uzunluğu nedeniyle güvensiz kabul ediliyor.

  • DES işlemleri, bitler (0 ve 1) üzerinden yapılıyor. Bu yüzden bir bitin değişmesi bile verinin yarısının değişmesine sebep olur.

  • Blok şifreleme algoritmasıdır.

  • 64 bitlik anahtar kullanılır. Fakat 8 biti parity bitidir. Şifrelerin güvenilirliği için kullanılır. Yani aslında 56 bit anahtar kullanılır.

  • Aynı anahtar ile hem şifreleme hem de şifre çözme işlemi yapar. Bu nedenle bir Simetrik şifreleme algoritmasıdır.

Veriyi 64'er bit bloklara ayırır ve bu şekilde şifreler. Her blok 56 bitlik ana anahtardan her 16 tur için 16 farklı 48 bitlik anahtar oluşur ve her tur veri, bazı karıştırma işlemlerinden geçerek 48 bitlik tur anahtarı ile şifrelenir.

Yukarıdaki görsel her blokun iç yapısını gösteriyor. 64 bit şifrelenecek metin DES'e giriyor. Initial permutation (Başlangıç karıştırması) ile bitler yer değiştirir. 16 farklı raund'a girer. Her raundda 56 bitlik ana anahtardan 48 bitlik özel şifre oluşur. En son olarak final permutation'a (final karıştırması) girer. Başlangıç ve final karıştırmaları birbirinin tersi işlemlerdir.

Inital Permutation (Başlangıç Karıştırma)

Veri, yukarıdaki tabloda bit yerlerinin gösterildiği gibi karıştırılır.

Her Raundda Ne Gerçekleşir ?

Yukarıda bir raundun içi kare içine alınmış şekilde gösterilmektedir. Raundların içinde 64 bitlik veri L0 ve R0 olmak üzere ikiye ayrılır. R0, raund anahtarı ile bir f fonksiyonundan geçer ve L0 ile XOR işlemine sokularak bir sonraki raundun R0'ına geçer. R0 ise direkt olarak bir sonraki raundun L0 yerini alır. Bir çaprazlama söz konusudur.

F fonksiyonu görseli yukarıda gösterilmiştir. 32 bitlik R0 verimiz E fonksiyonu ile 48 bite genişletilir. Bunun sebebi raund anahtarımız 48 bitten oluştuğu içindir. Ardından 48 bitlik verimiz 48 bit anahtarımız ile XORlanır ve her biri 6 bitten oluşacak 8 farklı gruba ayrılır. Şu an verimiz 48 bit fakat bizim 32 bitlik veri dönüş sağlamamız için her grup S-Box yer değiştirme fonksiyonuna uğrar ve 32 bite indirilir. Tekrar P karıştırma fonksiyonuna girer ve 32 bitlik verimiz geri döner.

  • E fonksiyonunda gerçekleşen yer değiştirme yukarıda gösterilmiştir. 32 bitlik veri 48 bite dönüştürülmesi için bazı bitler 2 kere girilmiştir.

  • S-box yer değiştirme işleminde ilk ve son bitin ondalık karşılığı S-box tablosundaki satırı; ortadaki 4 bitin ondalık karşılığı ise tablodaki sütunu ifade eder. Veri satır ve sütun karşılığına göre yeni değerini alır.

  • Son olarak P fonksiyonundaki yer değiştirme tablosu yukarıda verilmiştir. Her bir bitlerin yer değiştirmesinin sebebi karmaşıklığı arttırmaktır.

Key Schedule (Anahtar Zamanlama)

  • Evet daha önce 64 bitlik ana anahtarımızdan her raund için 48 bitlik anahtar oluştuğunu söylemiştik. Peki bu nasıl oluyor?

Key Schedule'nin ana mimarisi yukarılda gösterildiği gibidir. "k" anahtarımız parity bitlerinden arınarak PC-1 yer değiştirme tablosuna göre yer değiştirir. PC-1 tablosu aşağıdaki gibidir ve her bir bitin hangi bitin yerinde olacağı bellidir.

Karıştırmaya uğrayan 56 bitlik veri C0 ve D0 olmak üzere ikiye ayrılır ve shifting (kaydırma) işlemi uygulanır. 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 şeklinde her turda kaç shift yapacağı bellidir.

  • Shifting işlemi yukarıda örnekte gösterildiği gibi uygulanmaktadır.

DES'in Güvenliği

  • Anahtar uzayı (2^56) çok küçük olduğu için günümüz teknolojileri göze alındığında brute force saldırılarına belli bir süre dayanabilir.


3DES

  • Bu algoritmada veriyi 3 kere art arda DES'e sokuyoruz.

  • Her DES'in farklı şifresi var. 3 farklı şifreyi tutmak zor olduğu için pratik bir algoritma değil.

  • DES'in etkili anahtar uzunluğunu 112 bite çıkarmak için yapılır. Bu sayede şifre uzayı genişler.

  • Bilinen bir saldırı tekniği yok.

  • Birçok eski uygulamada kullanılır. (Bankacılık gibi)


AES (Advanced Encryption Standart)

  • Günümüzde en yaygın kullanılan simetrik şifreleme algoritmasıdır.

  • Birkaç yıllık çalışma sürecinden sonra NIST tarafından seçildi.

  • Tur sayısı seçilen anahtar uzunluğuna bağlıdır.

  • DES gibi AES de blok şifreleme algoritmasıdır.

  • Her blok 128 bit veri alır.

  • AES bayt odaklı bir şifreleme algoritmasıdır.

  • 16 baytlık durum (128 bit) 4x4 matrise düzenlenebilir.

İç Yapısı

  • Byte Substitution (Bayt odaklı yer değiştirme)

  • Shift Rows (Satır kaydırma)

  • Mix Columns (Sütunları karıştırma)

  • Add Round Key (Raund anahtarının eklenmesi)

Son turda Mix Column işlemi yapılmıyor.

Byte Substitution

Bayt odaklı olarak her bayt için tabloda verilen satır ve sütunlara göre baytlar yer değiştirilir.

Shift Rows

  • İlk satırda kaydırma işlemi uygulanmaz.

  • Birinci satır bir birim sola kaydırılır.

  • İkinci satır iki birim sola kaydırılır.

  • Üçüncü satır üç birim sola kaydırılır.

Mix Columns

  • Her 4 baytlık sütun sabit bir 4x4 matris ile çarpılır.

  • Durum matrisinin her sütununu karıştırır.

Add Round Key

  • Kelime yönelimli : 1 word 32 bit.

  • 11 alt anahtar W[0], W[1] ... W[43]

128 bitlik veri 4 parçaya ayrılır ve ilk wordlerimizi oluşturur. W3, g fonksiyonuna uğrar ve W0 ile XORlanarak W4'ü oluşturur. W4, W1 ile exorlanarak W5'imizi oluşturur. Bu şekilde art arda XORlanarak wordler oluşur. Her turda bu işlem uygulanır.

  • G fonksiyonunda 32 bitlik veri 4 parçaya ayrılır ve yukarıda görüldüğü gibi sola shift işlemi uygulanır.

  • Sadece en soldaki verimize yukarıda gösterildiği gibi tur katsayısı XORlanır.

  • Birinci turdaysak 1 ile en soldaki verimiz exorlanır gibi düşünebilirsiniz.

AES Güvenliği

  • 128, 192, 256 bitlik anahtar uzunluğu nedeniyle kaba kuvvet saldırısı mümkün değildir.

  • Quantum bilgisayarlar da olsa makul zamanda çözülmesi imkansız. Biz çözene kadar şifre değişebilir.

  • Kaba kuvvet saldırılarına karşı mükemmel uzun vadeli uzunluk sağlar.

  • IPsec ve TLS gibi çok sayıda açık standardın bir parçasıdır.

  • Uzun yıllar boyunca baskın şifreleme algoritması olacak gibi gözüküyor.


Asimetrik Şifreleme Algoritmaları

  • Temelinde asal sayı çarpımlarına dayanır.

RSA (Rivest,Shamir,Adelman)

  • Adım 1 : p ve q, büyük asal sayıları belirlenir.

    • N değeri bulunur. (N = p * q)

    • φ(n) = (p-1) * (q-1)

    • e < p, q üzere obeb(e, φ(n)) = 1 olacak şekilde e değeri bulunur.

  • Adım 2 : d gizli parametresi hesaplanır.

    • (d * e) mod φ(n) = 1

Public Key : (N,e) Private Key : (N,d)

Yukarıda gösterildiği gibi Adım 1'de p ve q adında 2 büyük asal sayı belirlenmesi gerekiyor. Büyük seçilmesi önemli çünkü şifrenin bulunabilirliğini azaltıyor. Sonrasında e değeri obeb(e, (p-1) * (q-1)) = 1 olacak şekilde bulunuyor. D gizli parametresi private keyimizi oluşturacak şifre olacak. D parametresi (d * e) mod φ(n) = 1 şeklinde bulunuyor. Baktığımızda d ve e birbirlerinin tersi işlemlerdir. Public keyimiz N ve e değerinden oluşuyor. Private keyimiz ise N ve d değerlerinden oluşmaktadır.

Örnek

M, şifrelenecek metin olsun.

Şifreleme : M^e mod N = C (şifrelenmiş metin)

Şifre çözme : C^d mod N = M

  1. p = 47, q = 59 olsun.

  2. φ(n) = 47 * 59 = 2668

  3. obeb(e,φ(n)) = 1 olacak şekilde e = 157 bulunur.

  4. (d * e) mod φ(n) = 1 ; (d * 157) mod 2668 = 1 olacak şekilde d = 17 olarak bulunur.

  5. Public key = (N= 2773,e = 157), Private Key = (N = 2773, d = 17)

Ek Kaynaklar

Last updated