Daha önceki makalelerimde de belirttiğim gibi simetrik yane private-key algoritma düzenine bağlı bir şifreleme yöntemidir.
DES(Data Encryption Standart) algoritma DEA yani data encryption algoritma’nın standart bir düzeye bağlanması sonucu ortaya çıkmıştır.DES şifreleme blok şifreleme olarakta geçer.Çünkü şifrelenecek olan metni parçalara böler ve her parçayı ayrı ayrı şifreler.DES algoritma 64 bitlik bir anahtar kullanır.Ancak bunun sadece 56 bit’i kullanılır.Çünkü diğer 8 bit “eşlik bit kontrolü dediğimiz” , “partiy” için kullanılır.
DES algoritma günümüz teknolojisinde en çok Brute Force dediğimiz saldırı tiplerine yane “deneme yanılma” yöntemlerine karşı kullanılır.Her nesne parçalara ayrılıp kendi içerisinde şifrelendiği için bu risk i büyük ölçekte azaltır.
DES algoritmaya .net teknolojisi üzerinde bakmamız gerekirse;
C#à “public abstract class DES : SymmetricAlgorithm” şeklinde
VBà <ComVisibleAttribute(True)> _
Public MustInherit Class DES _
Inherits SymmetricAlgorithm
Dim instance As DES
“System.Security.Cryptography” namespace i altında kullanılır.
DESCryptoServicesProvider Methodu ile .net platformunda bir örnek ile devam etmek istiyorum.
using System.Security.Cryptography;
[ComVisibleAttribute(true)]
public abstract class DES : SymmetricAlgorithm
{
private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
{
FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
byte[] bin = new byte[100];
long rdlen = 0;
long totlen = fin.Length;
int len;
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
Console.WriteLine("Encrypting...");
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
Console.WriteLine("{0} bytes processed", rdlen);
}
encStream.Close();
fout.Close();
fin.Close();
}
}
DES algoritma metnin üzerinde permütasyonlar halinde ilerler.DES algoritmada SBox dediğimiz yapılar vardır ve bu yapılar permütasyon ilerlerken bitstringleri bit düzeyinde düşürmeye devam eder.Yane 12 bitlik bir bitstring 8 bitlik bir bitstring e düşürülür.Bunlardan kaynaklanan yazılım hataları da olsa yazılımın kendi sorunuda olsa DES üzerindeki en kırılmaya müsait yapıdır ve DES algoritmaları brut force ataklarda ileri seviyeye geçilerek SBox üzerindeki açıklar nedeniyle kırılır.Bu ve bunun gibi bazı açıklar DES algoritmanın bir sonraki makalemin konusu olan TripleDES(3-DES) geliştirilmiş algortimasında kapatılmıştır.
İşte bütün bu SBox yapıları ve büt düzeylerini yukarıda yapmış olduğumuz örnekte gördüğümüz gibi .net Platformu kendi içerisinde gerçekleştiriyor.
Güvenli ve sağlıklı günler dilerim…