İlk olarak, bir terminoloji noktası: tarif ettiğiniz şey simetrik şifrelemedir ve katılımcılar arasında paylaşılan bir anahtar genellikle gizli anahtar olarak bilinir; “Özel anahtar” genellikle bir anahtarın ortak anahtar şifrelemesinde yalnızca bir katılımcının bildiği kısmı anlamına gelir .
Gizli bir anahtarı yaymanın iki yolu vardır: fiziksel olarak güvenli bir şekilde taşınabilir veya başka bir şifreleme biçimi, genellikle ortak anahtarlı şifreleme kullanılarak taşınabilir.
Gizli bir iletişim kanalı gerektirmeyen bir gizli anahtarı değiştirmenin yolları vardır. En popüler Diffie-Hellman anahtar değişim protokolüdür. Diffie-Hellman prensibi, her katılımcının kendi anahtar çiftini oluşturması ve bir ortak anahtardan ve bir özel anahtardan çok sayıda inşa eden bir matematik işlemi olmasıdır. Bu matematiksel işlem çok ilginç bir özelliğe sahiptir: büyük sayı Alice'in özel anahtarından ve Bob'un ortak anahtarından veya Bob'un özel anahtarından ve Alice'in ortak anahtarından yapılabilir; aynı numarayı her iki şekilde de alırsınız. Böylece Alice ve Bob ortak anahtarlarını değiştirirler ve her iki taraf da daha sonra gizli anahtar olarak kullanılabilecek çok sayıda numarayı bilir. Bir kulak misafiri her iki ortak anahtarı da bulabilir, ancak büyük sayıları yalnızca ortak anahtarlardan bulmak imkansızdır.
Diffie-Hellman anahtar değişimi, kimin dinlediğine bakılmaksızın iki tarafın bir sırrı değiştirmesine izin verir. Bununla birlikte, Alice'in Bob'u doğrulamaması veya tam tersi. Bu nedenle, ortadaki bir adam saldırısına uygundur : Mallory, Alice'le (Bob ile konuştuğuna inanan) anahtar değişimini ve Bob'la (Alice ile konuştuğuna inanan) ayrı ayrı anahtar değişimini gerçekleştirir ve böylece veya en azından sırrı bil.
Saldırgan iletileri arayabilir ve enjekte edebilirse, katılımcıların birbirlerini doğrulaması için daha fazla şifreleme gerekir. (Pasif bir saldırgan, altta yatan taşıma protokolünün kimlik doğrulaması sağladığı anlamına gelir.) Kolay yol, her bir katılımcının birbirlerinin ortak anahtarını zaten bilmesidir. Alice Bob'un ortak anahtarını biliyorsa:
- Alice ona bir meydan okuma göndererek Bob'un kimliğini doğrulayabilir: Bob'un ortak anahtarıyla şifrelenmiş rastgele bir değer ( nonce ). Bob bu değerin şifresini çözebilir ve geri gönderebilirse Alice gerçekten Bob ile konuştuğunu bilir.
- Bob, açık anahtarıyla imzalanmış bir mesaj göndererek Alice ile kimlik doğrulaması yapabilir. Alice, Bob ile gerçekten konuştuğunu kontrol etmek için imzayı doğrular.
Bu yöntemlerden birini (veya yine bir başka varyantı) bir yönde ve aynı veya farklı bir yöntemi diğer yönde kullanan veya yalnızca bir yönde kimlik doğrulaması yapan birçok varyant vardır. Örneğin, SSL / TLS (HTTPS, SMTPS, IMAPS, vb. Gibi birçok protokol için şifreleme katmanı) birkaç farklı şifre kombinasyonu kullanabilir ve genellikle sunucuyu istemciye doğrular, ancak isteğe bağlı olarak istemciyi de doğrulayabilir. Diffie-Hellman bu uygulama için yavaş ve hantaldır; açık anahtar dağıtımı ile en yaygın algoritma RSA'dır .
Elbette Alice ve Bob birbirlerinin ortak anahtarını önceden bilmiyor olabilirler. Bu yüzden bunun yerine bir güven zincirine güveniyorlar: Bob, Alice'e ortak anahtarını gönderir ve üçüncü bir partiden bu anahtarın gerçekten Bob'un ortak anahtarı olduğunu onaylayan imzalı bir açıklama gönderir. Bu imzalı ifadeye sertifika adı verilir ve üçüncü kısma sertifika yetkilisi denir . Üçüncü taraf Bob tarafından biliniyor olabilir veya kimliği dördüncü bir tarafça teyit edilebilir vb. Sonunda bu güven zinciri (… Bob için kefil olan Charlie için Dominique kefilleri) Bob'un zaten güvendiği bir taraf Ron'a ulaşmalıdır, yani Bob'un Ron'un ortak anahtarı vardır ve Ron'a sadece geçerli sertifikaları imzalaması için güvenir.
Açık anahtarlı kriptografiye dayanmayan protokoller vardır. Özellikle Kerberos protokolü, hem istemci hem de sunucu arasında bağlantı kurmak için hem unix tabanlı hem de Windows tabanlı ağlarda kullanılır. Kerberos, anahtar dağıtım merkezi (KDC) adı verilen merkezi bir kimlik doğrulama sunucusu kullanır . KDC, kullanıcının parolasını bir veritabanında saklamalıdır ve istemci normal olarak kullanıcıdan parolayı ister. Parolayı göstermekten kaçınmak için, protokol parolayı doğrudan kullanmaz, ancak bir şifreleme karması veya daha genel olarak parolaya uygulanan bir anahtar türetme işlevi .
Bu paylaşılan sır ile istemci ve KDC güvenli bir kanal kurar ve KDC istemciye bir “bilet” gönderir. Bilet, bir oturum anahtarı (yani yeni oluşturulan bir gizli anahtar) yanı sıra, KDC ile istemcinin iletişim kurmak istediği sunucu arasında paylaşılan başka bir simetrik anahtarla şifrelenmiş anahtarın bir kopyasını içerir. Istemci daha sonra bu şifreli kopyayı sunucuya iletir. Sunucu, oturum anahtarını almak için bu iletinin şifresini çözer ve oturum anahtarıyla şifrelediği ve istemciye geri gönderdiği bir nonce oluşturur. İstemci daha sonra sunucu ile güvenli bir kanal başlatır, oturum anahtarıyla şifrelenir ve nonce kodunun şifresini çözebileceğini göstererek başlar: bu, istemcinin sunucuda kimliğini doğrular. Bir Kerberos oturum kuruluşu, Needham-Schroeder protokolünün bir çeşididir .
C Kriptografların çok denemesi, ancak bunu yapmanın en iyi yolu ulaşılamaz bir hesaplama gücü gerektiriyor.