21 Ocak 2013 Pazartesi

Dijital Imza


Dijital Imza

Şifrelenmiş metin üzerinde yapılacak en önemli işlemlerden biri de nereden geldiğinin doğrulanması, kimlik denetiminin yapılmasıdır. Bu makalemizde dijital imzayı inceleyeceğiz.

Günlük hayatımızda, yasalar önünde bir kişiyi ifade eden en önemli şey kişinin imzasıdır. Altında imzanızın olduğu her anlaşmayı her metni kabul etmek zorundasınızdır. Çünkü imza kişinin kimlik denetiminin yapılması sağlayan bir araçtır.

Kimlik denetimi yapılabilmesi için belirli şartlar vardır. Sağlanması gereken şartları şu şekilde sıralayabiliriz:
  • Açıklama, uygun kriptografik anahtarı sağlamayan bir işleme ya da kişiye mesajın içeriğinin açıklanmaması anlamına gelir.
  • Trafik analizi, haberleşenler arasındakı trafik deseninin tespiti anlamındadır. Bağlantıya dayalı bir uygulamada, bağlantıların frekans ve süresi tespit edilebilir. Bağlantıya dayalı ya da bağlantısız ortamlarda, iki taraf arasındaki mesajların sayısı ve uzunluğu tespit edilebilir.
  • Rol yapma, sahte bir kaynak ağa mesajların eklenmesidir. Mesajların izin verilen yetkili bir kaynak tarafından oluşturulmasını, ayrıca alıcı ya da alıcı olmayan istemcilerden gelen ek bilgileri içerir.
  • İçerik değişimi, mesajın içeriğinin değiştirilmesi anlamına gelir. Bu değişiklik, ekleme, silme, yer değiştirme ve ya değiştirme de olabilir.
  • Sıra değişimi, gönderilen mesajlarının sırasının değiştirilmesi anlamına gelir.
  • Zamanlama değişimi, mesajın gecikmesi ya da tekrar gönderilmesi anlamındadır. Bağlantıya dayalı bir uygulamada, bir oturumun tamamı ya da başka bir oturuma ait bir dizi mesajın tekrar gönderilmesi ve ya geciktirilmesi şeklinde olabilirken, bağlantısız ortamlarda tek bir mesajın geciktirilmesi ve ya tekrar gönderilmesi olabilir.
  • Red etme, alıcı tarafından mesajın alındığının ve ya gönderen tarafından mesajı gönderdiğini inkar etmesi anlamındadır.
Mesaj kimlik denetimi, mesajın gerçekten de gelmesi gereken yerden geldiğinin ve değişmediğinin kontrolü için gerçekleştirilir. Mesaj kimlik denetimi ile sıralamasının ve zamanın doğruluğunu da denetleyebiliriz.
Mesaj kimlik denetimi ve ya dijital imza mekanizması başlıca iki seviyeli olarak görüşebilir. Alt seviyede, mesajın kimlik denetimini gerçekleyen bir kimlik denetçisi üreten bir fonksiyon vardır. Alt seviyedeki bu fonksiyon üst seviyede mesajın kimlik denetimini yapmak için kullanılır. Mesaj kimlik denetiminin 3 temel fonksiyonu vardır;
  • Mesaj Şifreleme, mesajın şifreli metni orjinal metin için bir kimlik denetim mekanizması sağlar.
  • Kriptografik Kontrol Toplamı(Cryptgraphic Checksum),mesaj ve gizli bir anahtar kullanarak sabit uzunlukta kimlik deneticisi üreten bir fonksiyondur.
  • Hash fonksiyonu, bir mesaja karşılık gelen sabit uzunluktaki bir hash değeri üreten fonksiyondur.

Şimdiye kadar bahsettiğimiz klasik ve genel şifreleme tekniklerini de düşünerek, dijital imza ve kimlik denetimi konusunu tekrar ele alalım. Klasik şifreleme tekniklerinde tek bir anahtar kullanılarak imzalama yapılır. Bu tekniklere dayanan imzalamada, sadece iki tarafın anahtarı paylaştığı düşünülürek imzalama geliştirilir. Alıcı mesajın gerçekten de gönderen tarafafından sağlandığına, gönderen de mesajın gerçekten alıcı tarafından alındığına emin olamaz. Genel anahtarlı şifreleme tekniklerine dayanan imzalama da, iki ayrı anahtar kullanılmaktadır. Gönderen öncelikle kendi özel anahtarı ile şifreler, ardından da alıcının genel anahtarı ile şifreler. Bu demektir ki, mesaj sadece alıcı tarafından açılabilir. Gönderen, mesajı gerçekten de alıcının aldığına emindir. Alıcı ise, kendi özel anahtarı ile mesajı deşifreler. Ardından da gönderenin genel anahtarını kullanarak mesajı ikinci defa deşifreler. Bu da mesajın gerçekten gönderen tarafından gönderildiğini garanti eder. Bu sayede mesajı şifreleme kullanarak imzalamayı gerçekleştirmiş oluruz.

Microsoft .NET Framework’ ün dijital imzalar için DSA isminde soyut bir sınıf tanımlamıştır. Bu soyut sınıf AsymmetricAlgorithm sınıfından türemiştir. Bu sınıfın erişilebilir özellikleri şunlardır:
  • KeyExchangeAlgorithm, anahtar değişimi algortimasının ismini belirtir. DSA için anahtar değişimi algoritması yoktur.
  • KeySize, şifreleme ve deşifreleme için kullanılacak anahtarların kaç bitten oluşacağını gösterir. Bu özelliğin değerini değiştirerek, kullanılacak bit sayısını ayarlayabilirsiniz. Varsayılan anahtar boyutu 1024 bittir.
  • LegalKeySize, bu algoritma tarafından desteklenen geçerli anahtarlar bit olarak büyüklüğünü gösterir. DSA algoritması için anahtar büyüklüğü en az 512 bit en fazla 1024 bittir.
  • SignatureAlgorithm, imzalama için kullanılacak algoritmanın adını gösterir. DSA için “http://www.w3.org/2000/09/xmldsig#dsa-sha1” tir.
Bu sınıfın erişilebilir metotları ise şunlardır:
  • Clear, DSA tarafından kullanılan tüm kaynakları sisteme geri verir.
  • Create, DSA'nın özel uygulamalarının yazıldığı durumlarda nesnenin oluşturulduğunda yapılacak işleri içerir.
  • CreateSignature, belirtilen bilgi için imza oluşturur.
  • Equals, iki nesnenin birbirine eşit olup olmadığını test eder.
  • ExportParameters, DSA'in tüm parametreleri özel ve genel anahtarlar dahil DSAParameter yapısından bir nesne içine kaydeder.
  • FromXmlString, XML Deserileştirme gibidir. ToXMLString metotu ile XML'e aktarılmış nesneyi yeniden oluşturur, nesneyi XML'e yüklenmeden önceki durumuna getirir.
  • GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.
  • GetType, bu nesnenin tipini verir.
  • ImportParameters, DSAParameters yapısından bir nesne içindeki, DSA'nın kullanacağı tüm parametreleri özel ve genel anahtarları dahil geri yükler.
  • ToString, şu an ki nesneyi ifade eden bir metin oluşturur.
  • ToXmlString, XML Serileştirme gibidir. Nesnenin o anki durumunu yeniden oluşturulabilecek bir şekilde XML'e aktarır.
  • VerifySignature, Belirtilen bilgi için DSA imzasını doğrular.

Şimdi, DSA sınıfından bahsederken ismi geçen DSAParameters yapısını inceleyelim. Bu yapı da yine System.Security.Cryptography altında yer almaktadır. Bu yapının en önemli özelliği serileştirilebiliyor olmasıdır. Bu özelliği sayesinde Binary(ikili) ve ya XML olarak bu yapıyı serileştirip, aktarabiliriz. DSA algoritması tarafından kullanılan P, Q ve Counter gibi özellikleri üzerinde barındır.
DSASignatureFormatter sınıfı, AsymmetricSignatureFormatter soyut sınıfından türeyen Dijital İmza Algoritması PKCS#1 v1.5 imzası oluşturur. Bu sınıfın erişebilir bir özelliği bulunmamaktadır. Bu sınıf tarafından sağlanan metotlar ise şu şekildedir:
  • CreateSignature, İmza Oluşturur. Ancak öncelikle hash algoritması SetHashAlgorithm metotu ile belirtilmelidir.
  • Equals, iki nesnenin birbirine eşit olup olmadığını test eder.
  • GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.
  • GetType, bu nesnenin tipini verir.
  • SetHashAlgorithm, Dijital İmza Algoritması tarafından kullanılacak algoritmayı belirtmenizi sağlar.
  • SetKey, Dijital İmza Algoritması imza biçimleyicisi tarafından kullanılacak anahtarı ayarlamanıza izin verir.
  • ToString, şu an ki nesneyi ifade eden bir metin oluşturur.

DSASignatureDeformatter sınıfı, AsymmetricSignatureDeformatter soyut sınıfından türeyen Dijital İmza Algoritması PKCS#1 v1.5 imzasını doğrular. Bu sınıfın erişilebilir bir özelliği bulunmamaktadır. Bu sınıf tarafından sağlanan metotlar ise şu şekildedir:
  • Equals, iki nesnenin birbirine eşit olup olmadığını test eder.
  • GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.
  • GetType, bu nesnenin tipini verir.
  • SetHashAlgorithm, Dijital İmza Algoritması tarafından kullanılacak algoritmayı belirtmenizi sağlar.
  • SetKey, Dijital İmza Algoritması imza biçimleyicisi tarafından kullanılacak anahtarı ayarlamanıza izin verir.
  • ToString, şu an ki nesneyi ifade eden bir metin oluşturur.
  • VerifySignature, belirtilen dijital imzayı doğrular. Ancak kullanımından önce hangi hash algoritması ile imzanın oluşturulduğunu SetHashAlgorithm metotu ile belirtmeniz gerekir.

Son Söz:
Günümüz güvenlik sistemlerinin temelini oluşturan dijital imzalar hakkında bir fikir sahibi olduğunuzu düşünüyorum. Bir sonraki makalemizde Microsoft .NET ile imza oluşturmayı inceleyeceğiz. Bir sonraki makalemizde görüşünceye kadar güvende kalın...
İlgili Makaleler:

Hiç yorum yok:

Yorum Gönder

isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler