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.
|
Hiç yorum yok:
Yorum Gönder
isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler