Needham–Schroeder protokolü

**Needham–Schroeder protokolü** her ikisi de  ve  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  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  (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, (tek kullanımlık sayı) sırasıyla A ve B tarafından üretilir
* KAB, A ve B arasındaki oturumun  olacak şekilde oluşturulmuş simetrik anahtardır

Protokol,  aşağıdaki gibi belirtilebilir:

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.

S \rightarrow A: \{N_A, K_{AB}, B, \{K_{AB}, A\}_{K_{BS}}\}_{K_{AS}}

: Sunucu {K_{AB}} oluşturur ve Alice'e  {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.

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.

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.

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 ( ve Sacco tarafından tanımlandığı gibi). Bir saldırgan daha eski, güvenliği ihlal edilmiş KAB kullanırsa \{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:

:: A \rightarrow B: A

: Alice, Bob'a bir istek gönderir.

:: B \rightarrow A: \{A,\mathbf{N_B'}\}_{K_{BS}}

: Bob sunucudaki anahtar ile nonce'ı şifreleyerek yanıt verir.

:: 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.

:: 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.  N_B' nin  N_B 'den farklı bir nonce olduğuna dikkat edilmesi gerekmektedir. Bu yeni nonce'nin dahil edilmesi, güvenliği ihlal edilmiş bir \{K_{AB}, A\}_{K_{BS}} sürümünün  tekrar oynatılmasını engeller çünkü böyle bir mesajın \{K_{AB}, A,\mathbf{N_B'}\}_{K_{BS}}  formda olması gerekir ki saldırgan, 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:

A \rightarrow S: \left . A, B \right .

: A, B'nin S'den açık anahtarlarını ister.

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.

A \rightarrow B: \{N_A, A\}_{K_{PB}}

: A bir rastgele NA seçer ve B'ye gönderir

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.

S \rightarrow B: \{K_{PA}, A\}_{K_{SS}}

: Sunucu yanıt veriyor.

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.

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 I, A'yı kendisi ile bir oturum başlatmak için ikna edebilirse, sahtekar mesajı B'ye iletebilir ve B'yi 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:

A \rightarrow I: \{N_A, A\}_{K_{PI}}

: A, NA'yı KSI ile mesajın şifresini çözen I'ya gönderir.

I \rightarrow B: \{N_A, A\}_{K_{PB}}

: I mesajı A'nın B ile iletişim kurmasını önleyerek B'ye aktarır.

B \rightarrow I: \{N_A, N_B\}_{K_{PA}}

: B, NB 'yi gönderir

I \rightarrow A: \{N_A, N_B\}_{K_{PA}}

: A'ya aktarıyorum

A \rightarrow I: \{N_B\}_{K_{PI}}

: A,NB'yi çözer ve onaylamak için NB'yi öğrenmek isteyen I'ya gönderir.

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  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:

B \rightarrow A: \{N_A, N_B\}_{K_{PA}}

Düzeltilmiş versiyonu:

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


## Dış bağlantılar

* 
* 
*