Simetrik Needham – Schroeder protokol şeması
**Needham–Schroeder protokolü** her ikisi de Roger Needham ve Michael Schroeder  tarafından önerilen güvenli olmayan bir ağ üzerinde kullanılması amaçlanan iki anahtar taşıma protokolünden biridir. Bunlar:

* Needham-Schroeder Simetrik Anahtar Protokolü bir simetrik şifreleme algoritmasına dayalı protokoldür. Kerberos protokolünün temelini oluşturur. Bu protokol, genellikle daha fazla iletişimi korumak için bir ağ üzerindeki iki taraf arasında bir oturum anahtarı oluşturmayı amaçlamaktadır.
* Needham-Schroeder Açık Anahtar Protokolü açık anahtar şifrelemeye dayalı bir protokoldür. Bu protokol, bir ağ üzerinde iletişim kuran iki taraf arasında karşılıklı kimlik doğrulaması sağlamayı amaçlamaktadır, ancak önerilen biçiminde güvensizdir.

Simetrik protokol
-----------------

Burada Alice (A) Bob (B) ile iletişimi başlatır. S, her iki tarafın da güvendiği bir sunucudur. İletişimde:

* A ve B sırasıyla Alice ve Bob'un kimlikleri
* KAS, yalnızca A ve S tarafından bilinen bir simetrik anahtardır
* KBS, yalnızca B ve S tarafından bilinen bir simetrik anahtardır
* NA ve N B, nonce'ları(tek kullanımlık sayı) sırasıyla A ve B tarafından üretilir
* KAB, A ve B arasındaki oturumun oturum anahtarı olacak şekilde oluşturulmuş simetrik anahtardır

Protokol, güvenlik protokolü gösteriminde aşağıdaki gibi belirtilebilir:

{\displaystyle A\rightarrow S:\left.A,B,N\_{A}\right.}

Alice sunucuya kendini ve Bob'u tanımlayan bir mesaj gönderir ve sunuya Bob ile iletişim kurmak istediğini söyler.
{\displaystyle S\rightarrow A:\{N\_{A},K\_{AB},B,\{K\_{AB},A\}\_{K\_{BS}}\}\_{K\_{AS}}}

Sunucu {\displaystyle {K\_{AB}}} oluşturur ve Alice'e {\displaystyle {K\_{BS}}} ile şifrelenmiş bir kopyasını Bob'a iletmesi için ve bu Kab'nin bir kopyasını kendisinde tutması için yollar. Nonce Alice'e gelen mesajın güncel olduğunu ve server'ın bu belirli mesajı cevapladığını garanti etmektedir. Alice birçok kişi ile iletişim kurabileceği için Alice'in bu anahtarı paylaşması gereken kişi olan Bob'un ismini Alice ile mesajın bir içeriği olarak bu mesaj içerisinde paylaşılmaktadır.
{\displaystyle A\rightarrow B:\{K\_{AB},A\}\_{K\_{BS}}}

Alice anahtarı sunucu ile daha önceden paylaştığı anahtarla şifresini çözebilen Bob'a iletir ve böylece verilerin kimlik doğrulaması gerçekleşir.
{\displaystyle B\rightarrow A:\{N\_{B}\}\_{K\_{AB}}}

Bob Alice'e Kab ile şifrelenmiş bir nonce'ı kendisinin anahtara sahip olduğunu göstermek için gönderir.

{\displaystyle A\rightarrow B:\{N\_{B}-1\}\_{K\_{AB}}}

Alice, nonce üzerinde basit bir işlem yapar,yeniden şifreler,onu kendisinin hala hatta olduğunu ve anahtara sahip olduğunu doğrulamak için geri yollar.
### Protokole yapılan saldırılar

Protokol bir tekrarlama saldırısına karşı savunmasızdır (Denning ve Sacco  tarafından tanımlandığı gibi). Bir saldırgan daha eski, güvenliği ihlal edilmiş KAB kullanırsa {\displaystyle \{K\_{AB},A\}\_{K\_{BS}}}mesajı kabul eden ve anahtarın taze olmadığını bilmeyen Bob'a yeniden mesajı oynattırabilir.

### Saldırıyı düzeltme

Bu kusur Kerberos protokolünde bir zaman damgası eklenerek düzeltildi. Aşağıda tarif edildiği gibi nonces kullanımı ile de düzeltilebilir. Protokolün başında:

{\displaystyle A\rightarrow B:A}
Alice, Bob'a bir istek gönderir.
{\displaystyle B\rightarrow A:\{A,\mathbf {N\_{B}'} \}\_{K\_{BS}}}
Bob sunucudaki anahtar ile nonce'ı şifreleyerek yanıt verir.
{\displaystyle A\rightarrow S:\left.A,B,N\_{A},\{A,\mathbf {N\_{B}'} \}\_{K\_{BS}}\right.}
Alice sunucuya kendisini ve Bob'u tanımlayan bir mesaj gönderir ve sunucuya Bob ile iletişim kurmak istediğini söyler.
{\displaystyle S\rightarrow A:\{N\_{A},K\_{AB},B,\{K\_{AB},A,\mathbf {N\_{B}'} \}\_{K\_{BS}}\}\_{K\_{AS}}}
Nonce'in dahil edildiğine dikkat edilmelidir.
Protokol daha sonra yukarıdaki orijinal protokolde tarif edildiği gibi son üç adım ile devam eder. {\displaystyle N\_{B}'}nin {\displaystyle N\_{B}} 'den farklı bir nonce olduğuna dikkat edilmesi gerekmektedir. Bu yeni nonce'nin dahil edilmesi, güvenliği ihlal edilmiş bir {\displaystyle \{K\_{AB},A\}\_{K\_{BS}}} sürümünün tekrar oynatılmasını engeller çünkü böyle bir mesajın {\displaystyle \{K\_{AB},A,\mathbf {N\_{B}'} \}\_{K\_{BS}}} formda olması gerekir ki saldırgan, {\displaystyle K\_{BS}}'ye sahip olmadığı için bu formu taklit edemez.

Açık anahtarlı şifreleme protokolü
----------------------------------

Bu protokol açık anahtarlı şifreleme algoritmasının kullanıldığını varsayar.

Burada Alice (A) ve Bob (B), açık anahtarların dağıtılması için bir güvenilir sunucu kullanır. Bu anahtarlar:

* K PA ve K SA, sırasıyla A'ya ait bir şifreleme anahtar çiftinin genel ve özel yarılarıdır (S burada "gizli anahtar" anlamına gelir)
* K PB ve K SB, A'dakine benzer B'ye ait anahtarlardır.
* KPS ve KSS, A ve B'dekine benzer S'ye ait olan anahtarlardır. (Bu anahtar çiftleri dijital imzalar için kullanılacaktır, yani, KSS mesajı imzalamak için kullanılır ve KPS mesajı doğrulamak için kullanılır. KPS protokol başlamadan önce A ve B tarafından bilinmelidir.)

Protokol aşağıdaki gibi çalışır:

{\displaystyle A\rightarrow S:\left.A,B\right.}

A, B'nin S'den açık anahtarlarını ister.
{\displaystyle S\rightarrow A:\{K\_{PB},B\}\_{K\_{SS}}}

S, kimlik doğrulama amacıyla sunucu tarafından imzalanan B'nin kimliğinin yanında B'nin açık anahtarı olan KPB ile yanıt verir.
{\displaystyle A\rightarrow B:\{N\_{A},A\}\_{K\_{PB}}}

A bir rastgele NA seçer ve B'ye gönderir
{\displaystyle B\rightarrow S:\left.B,A\right.}

B artık A'nın iletişim kurmak istediğini biliyor, bu yüzden B A'nın açık anahtarlarını ister.
{\displaystyle S\rightarrow B:\{K\_{PA},A\}\_{K\_{SS}}}

Sunucu yanıt veriyor.
{\displaystyle B\rightarrow A:\{N\_{A},N\_{B}\}\_{K\_{PA}}}

B rastgele bir NB seçer ve KSB anahtarı ile çözümleyebildiğini ispatlayabilmek için gönderdiği NA 'nın yanında NB 'yi gönderir.
{\displaystyle A\rightarrow B:\{N\_{B}\}\_{K\_{PB}}}

A B'ye KSA ile deşifreleme yapabildiğini ispatlamak için NB 'yi onaylayarak B'ye gönderir.
Protokolün sonunda, A ve B birbirlerinin kimliklerini biliyorlar ve NA ve N B de biliniyor olacaktır. Bu nonce'lar araya sızacak olan dinleyiciler tarafından bilinmiyor olacaktır.

### Protokole Yapılan Bir Saldırı

Bu protokol man-in-the-middle saldırısına karşı savunmasızdır. Bir sahtekar {\displaystyle I}, {\displaystyle A}'yı kendisi ile bir oturum başlatmak için ikna edebilirse,sahtekar mesajı {\displaystyle B}'ye iletebilir ve {\displaystyle B}'yi {\displaystyle A} ile konuştuğuna ikna edebilir.

S'ye giden ve S'den gelen trafiği göz ardı ederek, saldırı aşağıdaki gibi çalışır:

{\displaystyle A\rightarrow I:\{N\_{A},A\}\_{K\_{PI}}}

A, NA'yı KSI ile mesajın şifresini çözen I'ya gönderir.
{\displaystyle I\rightarrow B:\{N\_{A},A\}\_{K\_{PB}}}

I mesajı A'nın B ile iletişim kurmasını önleyerek B'ye aktarır.
{\displaystyle B\rightarrow I:\{N\_{A},N\_{B}\}\_{K\_{PA}}}

B, NB 'yi gönderir
{\displaystyle I\rightarrow A:\{N\_{A},N\_{B}\}\_{K\_{PA}}}

A'ya aktarıyorum
{\displaystyle A\rightarrow I:\{N\_{B}\}\_{K\_{PI}}}

A,NB'yi çözer ve onaylamak için NB'yi öğrenmek isteyen I'ya gönderir.
{\displaystyle I\rightarrow B:\{N\_{B}\}\_{K\_{PB}}}

I,NB'yi yeniden şifreler ve B'yi NB 'yi çözdüğüne ikna etmek için geri gönderir.
Saldırının sonunda B, A'nın onunla iletişim kurduğuna ve NA,NB 'nin sadece A ve B tarafından bilindiğine inanıyor olacaktır.

Bir sonraki örnek saldırıyı göstermektedir. Alice (A) bankası (B) ile temasa geçmek istiyor. Bir sahtekârın (I) A'yı başarılı bir şekilde banka olduklarına ikna ettiğini varsayıyoruz. Sonuç olarak A, bankasına göndermek istediği mesajları şifrelemek için B'nin açık anahtarını kullanmak yerine I'nin açık anahtarını kullanır. Bu nedenle, A, I'inin açık anahtarıyla şifrelenmiş olan nonce'ı gönderir. Gizli anahtarını kullanarak mesajı çözümler ve B ile A'nın açık anahtarı ile şifrelenmiş gibi mesajı yollamak için iletişime geçer.B'nin mesajın I'dan geldiğini anlamasının hiçbir yolu yoktur. B kendi nonce ve mesajı kendi açık anahtarı ile şifreleyerek yanıt verir. I, A'nın açık anahtarına sahip olmadığı için o mesajı A'ya içeriği bilmeden aktarmak zorundadır. A mesajı kendi gizli anahtarıyla çözümler ve B'nin nonce'nı kendi I'nın açık anahtarı ile şifreleyerek yanıt verir. I mesajı kendi açık anahtarı ile çözümler ve A,B'nin nonce'ına aynı anda sahip olur. Bu yüzden dolayı,I sırasıyla banka ve kullanıcı gibi davranabilir.

### Man-in-the-middle saldırısını düzeltme

Saldırı ilk olarak 1995 yılında Gavin Lowe tarafından bulunmuştur. Makalesinde ayrıca, **Needham – Schroeder – Lowe protokolü** 'nün düzeltilmiş bir versiyonu da açıklanmaktadır. Düzeltilmiş versiyona mesajın yanıtlayanın kimliğini içermesi dahil edilmiştir. Protokolün şu kısmı değiştirilmiştir:

{\displaystyle B\rightarrow A:\{N\_{A},N\_{B}\}\_{K\_{PA}}}

Düzeltilmiş versiyonu:

{\displaystyle B\rightarrow A:\{N\_{A},N\_{B},B\}\_{K\_{PA}}}

İzinsiz girmeye çalışan kişi mesajı tekrar oynattıramayabilir çünkü mesaj B'nin kimliğine sahip olmasına karşı A mesajda I'nın kimliğini beklemektedir.

Ayrıca bakınız
--------------

* Kerberos
* Otway–Rees protocol
* Yahalom
* Wide Mouth Frog protocol
* Neuman–Stubblebine protocol
* Diffie-Hellman key exchange protocol

Kaynakça
--------

  

1. ↑  
Needham (Aralık 1978). "Using encryption for authentication in large networks of computers". *Communications of the ACM*. **21** (12). ss. 993-999.
2. ↑  Denning (1981). "Timestamps in key distribution protocols". *Communications of the ACM*. **24** (8). ss. 533-535.
3. ↑  Needham (1987). "Authentication revisited". *ACM SIGOPS Operating Systems Review*. **21** (1). s. 7.
4. ↑  Lowe (Kasım 1995). "An attack on the Needham-Schroeder public key authentication protocol". *Information Processing Letters*. **56** (3). ss. 131-136. 24 Ağustos 2007 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2008.

Dış bağlantılar
---------------

* Roger Needham and Michael Schroeder (1978). "Needham-Schroeder Public Key". Laboratoire Spécification et Vérification. 17 Ağustos 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.
* Roger Needham and Michael Schroeder (1978). "Needham Schroeder Symmetric Key". Laboratoire Spécification et Vérification. 6 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.
* Gavin Lowe (1995). "Lowe's fixed version of Needham-Schroder Public Key". Laboratoire Spécification et Vérification. 24 Nisan 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 17 Nisan 2020.