DiffieHellman anahtar değişimi, bir genel kanal üzerinden kriptografik anahtarların güvenli bir şekilde değiş tokuş edilmesi yöntemidir. Ralph Merkle tarafından tasarlanan adını Whitfield Diffie ve Martin Hellman'dan alan ilk ortak anahtar protokollerinden biridir. DH kriptografi alanında uygulanan açık anahtar değişiminin en eski pratik örneklerinden biridir. 1976'da Diffie ve Hellman tarafından yayınlandı, özel bir anahtar ve buna karşılık gelen bir ortak anahtar fikrini öneren, genel olarak bilinen en eski çalışmadır.
Diffie-Hellman anahtar anlaşması anonim (kimliği doğrulanmamış) anahtar-anlaşma protokolü olmasına rağmen, çeşitli kimliği doğrulanmış protokoller için temel oluşturur ve Taşıma Katmanı Güvenliği'nin (TLS) geçici modlarında kusursuz iletme gizliliği'ni sağlamak için kullanılır.
DiffieHellman, çeşitli İnternet servislerinin güvenliğini sağlamak için kullanılır. Ancak, Ekim 2015'te yayınlanan araştırma DH'nin İnternet uygulaması için kullandığı parametrelerin, bazı ülkelerin güvenlik hizmetleri gibi çok iyi finanse edilen yerlerin güvenliğini koruyacak kadar güçlü olmadığını gösteriyor.
Diffie-Hellman gizli iletişimlerde kullanılabilecek ortak gizli anahtar üretir. Bu anahtar da ortak ağlarda (güvenli olmayan kanaldan) güvenli veri alışverişini sağlar. Aşağıdaki diyagram anahtar değişiminin genel çalışma mantığını çok büyük sayılar yerine renkler kullanarak açıklar. Bu sürecin önemli bir parçası Alice ve Bob kendi gizli renklerini sadece karışım içinde değişirler. Sonunda her iki taraf matematiksel olarak arada dinleyen başka bir kişi tarafından geri döndürülmesi zor olan (bugünkü süper bilgisayarların mantıklı bir zamanda geri döndürememesi)aynı anahtarı elde eder. Bu aşamadan sonra Alice ve Bob oluşturmuş oldukarı ortak gizli anahtarla aralarındaki veri alışverişini şifrelemek ve deşifrelemek için kullanırlar.
Tablo
Bu tablonun amacı kimin hangi bilgilere sahip olduğunu kolayca anlaşılması içindir. (Eve Eavesdropper Alice ve Bob'un arasındaki iletişimi içeriğini değiştirmeden dinliyor.)
- s = ortak gizli anahtar olsun. s = 2
- g = herkes tarafından bilinen taban(base) olsun. g = 5
- p = herkes tarafından bilinen (asal) sayı olsun. p = 23
- a = Alice'in gizli anahtarı olsun. a = 6
- A = Alice'in açık anahtarı olsun. A = ga mod p = 8
- b = Bob'un gizli anahtarı olsun. b = 15
- B = Bob'un açık anahtarı olsun. B = gb mod p = 19