in Ar-Ge, Kriptoloji ve Bilgi Güvenliği

Diffie Hellman ve Java

Diffie Hellman anahtar anlaşma protokolü iki kişinin bir gizli anahtarı güvensiz bir kanal üzerinde nasıl paylaşabileceklerini göstermektedir. Anahtar değişimi yapacak iki taraf kriptografi camiasının ünlü isimleri Alice ve Bob olsun. Protokol kabaca aşağıdaki gibi ilerler:

Açık bilgiler: p ( büyük bir asal sayı, java uygulamasında 1023 basamaklı bir sayı kullanılmıştır. ) , g

Adımlar:

  1. Alice gizli tutacağı bir sayı seçer ( a ) ve g^a mod p değerini hesaplar ve bu değeri Bob’a yollar.
  2. Bob gizli tutacağı bir sayı seçer ( b ) ve g^b mod p değerini hesaplar ve bu değeri Alice’e yollar.
  3. Alice, Bob’dan gelen bilgiyi ( g^b mod p ) kullanarak , g^(a*b) mod p değerini hesaplar.
  4. Bob, Alice’den gelen bilgiyi ( g^a mod p ) kullanarak , g^(a*b) mod p değerini hesaplar.
  5. Gizli anahtar g^(a*b) mod p olarak belirlenmiştir.

Diffie Hellman

Protokolün güvenliği ayrık logaritma ( umarım Türkçe’sini doğru yazmışımdır, ingilizcesi discrete logarithm ) problemine dayalı. Bu problem kabaca g^a mod p değerini bilerek a değerini bulmanın zorluğundan kaynaklanıyor. Diffie Hellman güvenliğini g^a mod p ve g^b mod p değerleri bilinerek g^(a*b) mod p değerinin elde edilmesinin de ayrık logaritma problemi ile aynı zorluk derecesinde olmasına dayandırıyor.

Diffie Hellman protokolü anahtar anlaşmasına güzel bir çözüm getirmiş olsa da, bu protokolü kullandığımızda kiminle iletişim kurduğumuza dair herhangi bir bilgi elde edemiyoruz. Bu sorun paylaşılan gizli bilgi ya da açık anahtar kriptografisi ve bir sertifika otoritesi kullanılarak çözülebilir. Açık anahtar kriptografisi kullanılırsa her iki taraf da gönderdiği g^(a*b) mod p değerini imzalayarak yollar. Ancak yine de protokolü başlatan tarafın kendini önce tanımlamasının zorunlu hale getirilmesi güvenliği artıracaktır.

Gelelim protokolün java uygulamalarına; bu sayfada protokolün Java 6 kütüphaneleri kullanılarak yazılmış bir örneğine erişebilirsiniz. Bu kodu -gen argümanı ile çalıştırırsanız p ve g değerlerini rastgele baştan üretiyor, kullanmazsanız tanımlanmış değerler kullanıyor p ve g için. -gen argümanı ile çalıştırmak çok uzun sürer diye bir uyarı çıkıyor ama standart bir masaüstü bir bilgisayarda 1 dakikayı geçmiyor. İşin güzel yanı ise protokolü doğal haliyle biraz daha ilerletmişler ve sonuna üretilen gizli anahtarın kullanıldığı bir DES uygulaması eklemişler. Ayrıca bu sayfada diğer protokoller ve çeşitli algoritmalar için Java 6 ile yazılmış kodlar da bulabilirsiniz.

Çeşitli Kaynaklar:

Java’da kullanabileceğiniz sınıflar ile ilgili bilgiye burada bulabilirsiniz.

Diffie Hellman üzerine Java uygulamaları geliştirmek için bu sayfaya göz atabilirsiniz. Diffie Hellman üzerine RSA firmasının bu konudaki sayfasını inceleyebilirsiniz. Diffie Hellman hakkında başka bir yazıyı bu sayfada bulabilirsiniz. Burada da konuyla ilgili bir makale var.

Not: Bu sitede yer alan bilgiler genel bilgilendirme amaçlıdır. Bazı ülkelerde kriptografi kullanımı kısıtlandırılmış ya da yasaklanmış olabilir, bu kurallara uymak okuyucuların sorumluluğundadır.

Görsel referansı: http://commons.wikimedia.org/wiki/File:Diffie-Hellman-Schl%C3%BCsselaustausch.svg

Write a Comment

Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.