İlginizi Çekebilir
  1. Ana Sayfa
  2. Programlama

Diffie-Hellman Nedir? Diffie-Hellman Anahtar Değişimi

Diffie-Hellman Nedir? Diffie-Hellman Anahtar Değişimi
+ - 0

Merhabalar, Diffie-Hellman Nedir? Diffie-Hellman Anahtar Değişimi dersim ile C# eğitim setime devam ediyorum. Önceki dersimde C# Şifreli Mesajlaşma – Diffie Hellman + AES Şifreleme konusunda bakmıştık. Önceki dersimde kullandığım anahtar değişimi konusuna değinmek istiyorum. Bu dersimde Diffie-Hellman Nedir? sorusuna detaylıca cevap vermek istiyorum.

Diffie-Hellman Nedir? Diffie-Hellman Anahtar Değişimi

Diffie-Hellman Nedir?

Kriptografik anahtarların değişimi amacı ile 1976 yılında, Martin Hellman ve Whitfield Diffie tarafından “New Directions in Cryptography” isimli makaleleri ile yayınlanan bir tasarımdır. Aslında bu sistem yayınlanmadan bir kaç yıl kadar öncesinde İngiliz Sinyalleri İstihbarat Teşkilatı, GCHQ kapsamında görev yapan Malcolm J. Williamson tarafından bulunmuştu. Ancak bu bilgi gizli tutulmuştu.  

Güvenliksiz bir ağda iki tarafın ortak bir anahtar ile mesajların şifrelenerek güvenli haberleşmesini sağlar. Bu tasarım kriptografi alanında kullanılan ilk pratik anahtar değişimi sistemidir. Biraz daha netleşmesi için bir örnek üzerinden anlatmaya çalışayım. Taraflar herkesin gördüğü 2 ve gizli olan 2 sayı seçiyor.  Tarafların gönderdiği anahtarlar üzerinde yapılan matematiksel işlemler sonucunda aynı sonuca ulaşmayı hedeflemektedir. İki uçta aynı sonuca ulaştıysa şifreli bağlantı sağlanmış anlamına gelir.

Şimdi bu anlattıklarımızı somutlaştıracak bir örneğe bakalım.

 

Diffie-Hellman Anahtar Değişimi

  1. Mesajlaşma hattını dinleyen herkesin gördüğü değerler g=5 ve p=23 olarak belirleniyor.
  2. Mustafa kullanıcısı gizli olarak bir değer seçiyor. Bu değer a=6, Ahmet kullanıcısı da bir gizli değer seçiyor. Bu değerde b=15
  3. Mustafa  kullanıcısı ( g^a ) mod p işlemini yapıyor ve A=8 değerini buluyor.
  4. Ahmet  kullanıcısı (g^b) mod p işlemini yapıyor ve B=19 değerini buluyor.
  5. Bulunan bu sayılar 8 ve 19 mesajlaşma hattı üzerinden gönderiliyor. Bu değerleri de herkes görebiliyor.
  6. Mustafa  kullanıcısı, Ahmet kullanıcısından gelen 8 değerini alarak (B^a) mod p işlemine tabi tutuyor ve 2 değerini buluyor.
  7. Ahmet  kullanıcısı, Mustafa kullanıcısından gelen 19 değerini alarak (A^b) mod p işlemine tabi tutuyor ve 2 değerini buluyor.
  8. İki kullanıcıda son durumda aynı değeri buluyor. Bu anahtar mesaşlaşma hattı üzerinden gönderilmediğinden, mesajlaşma hattını dinleyenler bu hesaplamaları yapamıyor.

Burada ortak gizli anahtar 2 değeridir. g=5 değeri (base değer) ve p=23 (asal değer) herkes tarafından bilinebilmektedir. Buradaki hesaplamalarda, Mustafa kullanıcısı Ahmet kullanıcısının gizli şifresi olan b=15 değerini bilmiyor. Aynı şekilde Ahmet kullanıcısı da Mustafa kullanıcısının gizli şifresi olan a=6 değerini bilmiyorlar. Bildikleri şey gizli anahtar 2’dir.

Yapılan ilk hesaplamalardan çıkan sonuçlar olan A=8 ve B=19 değerleri de açık anahtarlardır.

Aşağıdaki görselde kimin neyi görüp göremediğini görebilirsiniz. Kırmızılar gizli anahtarlarken maviler açık anahtarlardır.  Görsele baktığımızda aslında 2 değerinin iki uç tarafından da bilindiğini anlayabiliyoruz. Kimsenin bilmediği değerler a ve b değerleridir. Bu değerler kullanıcıların kendilerine özel oluşturduğu gizli anahtarlardır.

Diffie-Hellman Nedir

Gerçek Hayata İse…

Elbette gerçek hayatta bu kadar basit ve kolayca bulunabilecek sayılar kullanılmıyor. Gerçek anlamda güvenliğin sağlanabilmesi için çok daha büyük a,b ve p değerleri seçilmek zorundadır. (g^ab) mod 23 işlemi için tüm olası değerleri denemek çok basit olacaktır. Bu hesaplama 23 tam sayı değeri değeri vardır ve günümüz teknolojisi ile sadece deneme yanılma yapacak basit bir uygulama ile şifre kolayca kırılabilir.

Bu şifrelerin çözülmesini imkansız hale getirmek için, P 300, 400 karakterli bir değer, a ve b en az 100 haneli birer değer olursa bu şifreleri çözümlemek basitçe imkansızdır. Bu hesaplama kullanılan g değeri ise genelde 2,3 veya 5 olarak alınmaktadır.

Yukarıda bahsettiğim değerler hakkında önceki yazımda anlattığım uygulamadan bir ekran görüntüsü paylaşmak istiyorum.

Diffie-Hellman Nedir

Bu görselde gördüğünüz gibi, bağlantı sağlandığı anda kullanıcılar tarafından açık anahtarlar oluşturuluyor. Açık anahtarlar oluşturulduğunda da bir ortak anahtar oluşuyor. Yukarıdaki örnekte verdiğimiz gibi basit tam sayılar olmadığını görmüşsünüzdür. Açık anahtarlar ve ortak anahtar alfanümerik değerler bütününden oluşuyor. Elbete bu değerleri bulmak kısaca imkansızdır.


Diffie-Hellman Nedir? Diffie-Hellman Anahtar Değişimi dersimiz de bu kadardı arkadaşlar. Bu yazım için farklı bir kapak fotosu kullandım. Nasıl olmuş sizce? :)

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

C# Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Şükür ki saçma Wikipedia engeli kısa süre önce kaldırıldı. Bu sayede yazıyı yazarken Wikipedia’dan destek alabildim.

Sağlıcakla ve takipte kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)