# SPEKE
SPEKE, açılımı Simple Password Exponential Key Exchange: "Basit Parola Üstel Anahtar Değişimi" olan, parola doğrulamalı anahtar anlaşması için kullanılan kriptografik bir yöntemdir.


## Açıklama.
Protokol Diffie-Hellman anahtar değişiminden biraz daha farklı işlemlere sahiptir. Diffie-Hellman anahtar değişiminde, Diffie-Hellman üreteç fonksiyonu "g", parolanın özet fonksiyondan geçirilmiş halinden oluşturulmaktadır.
SPEKE’i aşağıdaki gibi sıralı maddelerle özetleyebiliriz:
  - Alice ve Bob uygun olacak biçimde büyük ve rastgele bir güvenli p asal sayısı ve özet fonksiyonu H() üzerinde anlaşırlar.
  - Alice ve Bob bir "π" parolasını paylaşırlar.
  - Alice ve Bob g üreteç değerini  "g" = "H"("π")2 mod "p" şeklinde paroladan türetirler.
  - Alice gizli bir rastgele a tam sayısı seçer ve Bob’a  "ga" mod "p" ’yi gönderir. 
  - Bob gizli bir rastgele tam sayı "b" seçer ve Alice’e  "gb" mod "p" ’yi gönderir. 
  - Alice ve Bob eğer ellerine ulaşan değerler [2,"p"-2] aralığında ise protokole devam eder. Değilse, küçük altgrup hapsetme saldırısını önlemek için, protokolü durdurur. 
  - Alice  "K" = ("gb" mod "p")"a" mod "p’"yi hesaplar. 
  - Bob  "K" = ("ga" mod "p")"b" mod "p" ‘yi hesaplar.
Alice ve Bob’un aynı K değerini elde etmesi için ikisinin de aynı "π " değerini kullanması gerekmektedir. Alice ve Bob paylaşılan gizli K’yı hesapladıktan sonra bu K değerini anahtar onay protokolünde birbirlerine aynı "π" parolasını bildiklerini göstermek için ve ortak gizli şifreleme anahtarı almak için kullanabilirler. Ortak gizli şifre anahtarı alarak birbirlerine güvenli ve doğrulanmış mesajlar gönderebilirler. IEEE P1363.2 ve ISO/IEC 11770-4 standartlarında belirtildiği üzere anahtar onay protokolü opsiyoneldir.
Kimlik doğrulama kısmı olmayan Diffie-Hellman’ın aksine, SPEKE ortadaki adam saldırısını parolayı protokole katarak engellemiş olur. Alice ve Bob arasındaki mesajları okuyup değiştirebilen bir saldırgan paylaşılan gizli anahtar K’yı öğrenemez. Ek olarak bu saldırgan aynı zamanda parolayı bilen bir taraf ile her bir etkileşiminde parola için yalnızca ve en fazla bir tahminde bulunabilir.
Genel olarak, SPEKE, açık anahtar kriptografi için eliptik eğri kriptografisi dahil uygun olan herhangi birinci dereceden grubu kullanabilir. Ancak SPEKE, eliptik eğri kriptografisi kullanılarak gerçekleştirildiğinde, protokol parolayı tasarlanmış eliptik eğri üzerinde rastgele bir nokta ile güvenli bir şekilde eşleyecek ek bir primitif gerektirecek şekilde değişmiştir. (Burada bahsedilen primitif EEE P1363.2 ve ISO/IEC 11770-4’de IOP  veya (Integer-to-Point) fonksiyon olarak belirtilmiştir).


## Tarihçe.
SPEKE, nispeten yeni sayılacak parola doğrulamalı anahtar değişimi alanındaki eski ve iyi bilinen protokollerden biridir. İlk kez 1996 yılında David Jablon tarafından dile getirilmiştir. Bu  makalesinde Jablon yeni bir değişken önererek protokolün 2. adımında g’yi  "g = gqS" şeklinde bir "gq " sabiti kullanılarak hesaplamıştır. Ancak, bu yapı sözlük saldırılarına karşı güvenli olmadığı için yayının revize edilmiş halinde artık önerilmemektedir. 1997 yılında Jablon, B-SPEKE adı verilen daha kapsamlı bir parola doğrulamalı anahtar değişimi protokolünde ilave değişiklilerle SPEKE'yi düzeltti ve geliştirdi. 2001’de yayınlanan MacKenzie’nin makalesinde rassal kahin modeli SPEKE’in güvenli bir PAKE (Password Authenticated Key Exchange) yani şifre kimlik doğrulamalı anahtar değişimi protokolü olduğu, ‘karar Diffie-Hellman varsayımı’nın değişimine bağlı kalarak gösterilmiş, kanıtlanmıştır. Kanıt, SPEKE’deki anahtar onaylama işlevini zorunlu olarak kabul eder şekildedir. Fakat SPEKE IEEE P1363.2 ve ISO / IEC 11770-4 standartlarında bu şekilde tanımlanmamıştır.
1999 yılından beri, bu protokol, diğer şifreleme tekniklerinin desteklenmesi için çeşitli şirketler tarafından çeşitli ürünlerde kullanılmıştır.
2014 yılında, orijinal Jablon'un 1996 makalesinde ve IEEE P1363.2 (D26) ve ISO / IEC 11770-4 (2006) standartlarında belirtildiği gibi SPEKE protokolüne karşı iki saldırı tespit edilmiştir İlk saldırı, aktif bir saldırganın kurban ile iki paralel oturum gerçekleştirerek kurbanın parolasını bilmeden kullanıcıyı taklit etmesine izin verir. İkinci saldırı ise ortadaki adam saldırganının iki masum kullanıcı arasındaki oturum anahtarını tespit edilmeden manupule etmesine izin verir. İlk saldırı uygulama açısından protokolün zayıf yanını gösterirken, ikinci saldırının SPEKE'nin güvenlik kanıtları üzerinde teorik açıdan etkileri olmuştur. Mexico City’de Ekim 2014’te yapılan ISO / IEC JTC 1 / SC 27 toplantısı sırasında, iki saldırı ISO / IEC SC 27 / Çalışma Grubu 2’deki teknik komite tarafından görüşülmüş ve belirtilen hususları ele almak için ISO / IEC 11770-4 (2006)'da yer alan SPEKE spesifikasyonunun revize edilmesi gerektiği kabul edilmiştir. Önerilen düzeltme, oturum kimliklerini açıkça tanımlamayı ve bu kimlikleri protokolün simetrisini değiştirmeyecek şekilde anahtar türetme işlevine dahil etmeyi içermektedir. Güncellenmiş SPEKE ISO / IEC 11770-4 2017 'de yayınlanmıştır. Ancak, IEEE P1363.2'deki SPEKE spesifikasyonu üzerinde düzeltme olmadan kalmıştır.


## Patentler.
 - YÖNLENDİRME metodun çeşitli varyasyonlarını tanımlamaktadır. Bu patent Mart 2017’de sona ermiştir.


## Standartlar.
SPEKE'i tanımlayan standartlar arasında IEEE P1363.2 ve ISO / IEC 11770-4 bulunur. En son olan ISO / IEC 11770-4 (2017) standardında, SPEKE spesifikasyonu 2016 yılında Hao ve Shahandashti tarafından bildirilen iki saldırının belirtilmesi için ISO / IEC 11770-4 (2006) 'dan revize edilmiş, güncellenmiştir.