# Tekrarlama saldırısı
Tekrarlama saldırısı (yeniden oynatma saldırısı olarak da bilinir), geçerli bir veri iletiminin kötü niyetlilik veya sahtekarlıkla tekrarlandığı veya geciktirildiği bir ağ saldırısıdır. Bu saldırı, orijinal veri iletimcisi tarafından ya da veri iletimini IP paketi değişimi içeren bir aldatma saldırısı kullanarak kesen ve yeniden ileten bir saldırgan tarafından gerçekleştirilir. Bu, ortadaki adam saldırısının alt kademe versiyonlarından biridir.
Böyle bir saldırıyı tarif etmenin bir başka yolu: "Amaçlanan (orijinal ve beklenen) kaynak yerine farklı bir kaynaktan mesaj tekrarı yaparak güvenli protokole saldırı gerçekleştirmek ve böylece dürüst katılımcıları protokolü başarılı bir şekilde gerçekleştirdiklerine inandırmaktır."


## Gerçekleşmesi.
Diyelim ki Alice kimliğini Bob'a kanıtlamak istiyor. Bob, Alice'ten kimliğinin kanıtı olarak şifresini ister, Alice zorunlu olarak şifresini büyük ihtimalle özetleme fonksiyonu gibi bir çevirim işleminden geçirerek Bob'a verir; bu sırada Eve ise bu konuşmaya kulak kabartır ve şifreyi ya da özetlenmiş halini ele geçirir. Değişim sona erdiğinde Eve, Alice gibi davranarak Bob ile bir oturum açar; Bob tarafından kimliğinin kanıtı sorulduğunda Eve, Bob'un son oturumda kabul ettiği kanıt olan Alice'in şifresini ya da özetlenmiş halini gönderir ve böylece erişim hakkı elde eder.


## Önlem ve tedbirler.
### Tüm tekrarlama saldırıları için tedbirler.
Tekrarlama saldırıları her bir şifrelenmiş bileşeni bir oturum kimliğiyle ve bileşen numarasıyla etiketleyerek önlenebilir. Bu iki işaretleme kombinasyonu birbirine bağımlı hiçbir şey kullanmaz. Bağımlılık olmadığı için daha az güvenlik açığı olur. Oluşturulan oturum kimliği her oturum için rastgele ve eşsiz olduğu için önceki oturumları tekrar etmek daha zor olur, bu yüzden etiketleme yöntemi önleme konusunda başarılıdır. Bu durumda saldırgan tekrarlama yapamaz çünkü yeni oturum sonucunda oturum kimliği değişmiş olur.


### Oturum kimlikleri.
Oturum kimlikleri ya da oturum belirteçleri, tekrarlama saldırılarını önlemeye yardımcı olan mekanizmalardır. Oturum kimlikleri aşağıdaki şekilde üretilir.
  - Bob, Alice'e tek seferlik bir tanımlayıcı (token) gönderir, Alice bu tanımlayıcıyı kullanarak şifreyi dönüştürür ve sonucu Bob'a gönderir. Örneğin, Alice, Bob'un gönderdiği tanımlayıcıyı oturum tanımlayıcısının özetleme fonksiyonunu hesaplamak için kullanıp, kullanılacak şifrenin sonuna ekleyebilir.
  - Bob da kendi için oturum tanımlayıcısı ile aynı hesaplamayı yapar.
  - Sadece ve sadece Alice ve Bob'un hesaplamış olduğu değerler aynı ise oturum açma başarılı olur. 
  - Saldırgan Eve'in bu değeri ele geçirdiğini ve başka bir oturumda kullanmaya çalıştığını varsayalım. Bu durumda Bob farklı bir oturum tanımlayıcısı gönderir ve Eve ele geçirdiği değer ile cevap verdiğinde Bob'un yeni oturum tanımlayıcısı ile yaptığı hesap ile Eve'in gönderdiği değer farklı olacağı için Bob karşısındakinin Alice olmadığını anlar.
Oturum tanımlayıcıları rastgele bir işlemle seçilmelidir (genellikle sözde-rastgele işlemler kullanılır). Aksi takdirde Eve, Bob gibi davranabilir ve kendi tahmin ettiği tanımlayıcıyı kullanıma sunabilir. Böylece Alice'i, kullanıma sunduğu tanımlayıcıyı yardımıyla dönüşüm yapmaya ikna edebilir. Eve daha sonrası için (Bob, Eve'in tahmin ettiği tanımlayıcıyı kullanıma sunduğunda) cevabını tekrar edebilir ve Bob kimlik doğrulamasını kabul eder.


### Tek seferlik parolalar.
Bir defalık şifreler, kullanıldıktan sonra veya çok kısa bir süre sonra sürelerinin dolması nedeniyle oturum tanımlayıcılarına benzer. Oturum doğrulanmasına ek olarak bireysel işlemlerin doğrulanmasında da kullanılabilirler. Bu şifreler aynı zamanda birbiriyle iletişim halinde olan iki tarafın doğrulanma işleminde kullanılarak taraflar arası güven oluştururlar.


### Tek kullanımlık sayılar ve MDK.
Bob, Alice'e tek kullanımlık sayı da gönderebilir ancak bu sayıya mesaj doğrulama kodunu da dahil etmelidir. Böylece Alice kontrol edebilir.


### Zaman damgaları.
Zaman damgası, tekrarlama saldırısını önlemenin başka bir yoludur. Senkronizasyon güvenli bir protokol kullanarak gerçekleştirilmelidir. Örneğin, Bob periyodik olarak saatindeki zamanı bir mesaj doğrulama kodu ile birlikte yayınlar. Alice, Bob'a bir mesaj göndermek istediğinde, Bob'un saatindeki zaman hakkındaki en iyi tahminini doğrulanmış mesajına dahil eder. Bob yalnızca mesajın zaman damgasının kabul edilebilir bir aralıkta olması durumunda mesajı kabul eder. Bu tasarımın avantajları, Bob sözde rastgele sayılar üretmek zorunda kalmaz ve Alice Bob'dan rastgele bir sayı istemez. Tek-yönlü ya da neredeyse tek-yönlü ağlarda bu bir avantaj olabilir. Buradaki avantaj-risk takası ise eğer tekrarlama saldırıları yeterince hızlı yapılırsa, örneğin "kabul edilebilir" bir zamanda, o halde başarıya ulaşabilirler.


## Belirli senaryolarda tedbirler.
### Kerberos protokolü ile önleme.
Kerberos kimlik doğrulama protokolü bazı tedbirler içerir. Klasik bir tekrarlama saldırısı durumunda, saldırgan tarafından bir mesaj yakalanır ve bir etki yaratmak için daha sonraki bir tarihte tekrar oynatılır. Örneğin, eğer bir bankacılık programı bu saldırıya karşı savunmasız olacaksa, para transferi ile sonuçlanan bir mesaj, amaçlanandan daha fazla para transferi yapmak için sürekli tekrar edilebilir. Ancak, LDAP'ın çoğu sürümünde ve Microsoft Windows Active Directory'de kullanılan Kerberos protokolünde tekrarlama saldırılarının etkililiğini ciddi bir şekilde sınırlamak için zaman damgalama tasarımı kullanılır. Yaşam Süresi'ni (TTL) geçen mesajlar eski kabul edilir ve dikkate alınmaz.
Üç şifreleme tasarımı kullanımı gibi geliştirmeler önerildi. Bu üç şifre, doğrulama sunucusu, bilet sunan sunucu (ticket granting server) ve TGS ile kullanıldı. Sunucular bu şifreleri farklı sunucular arasındaki mesajları gizli anahtarlar ile şifrelemek için kullandı. Bu üç gizli anahtar tarafından sağlanan şifreleme tekrarlama saldırılarını önlemede yardımcı oldu.


### Ad Hoc ağlarında güvenli yönlendirme.
Kablosuz özel ağlar da tekrar saldırılarına karşı zayıftır. Bu durumda, AODV protokolünü genişleterek doğrulama sistemi daha güçlü hale getirilebilir ve geliştirilebilir. Ad hoc ağlarının güvenliğini arttırma yöntemi ağın güvenliğini küçük miktarda ilave hesaplama (overhead) ile arttırabilir. Eğer yoğun miktarda ilave hesaplama eklenirse ağ daha yavaş çalışabilir ve performansı düşebilir. Bu yüzden, ilave hesaplamayı göreceli olarak düşük tutarak hem ağın güvenliği arttırılabilir hem de performans düşüklüğü yaşanmaz.


### Challenge-Handshake Kimlik Doğrulama Protokolü.
Kullanıcılar tarafından Noktadan-noktaya protokolü (PPP) kullanarak doğrulama ve oturum açma işlemleri eğer Parola Doğrulama Protokolü (PAP) kullanılırsa tekrarlama saldırılarına karşı zayıftır, çünkü doğrulama işlemi yapan kullanıcı kullanıcı adı ve şifresini "düz metin" halinde yollar. Daha sonra doğrulama sunucusu ACK mesajını şuna bir cevap olarak gönderir; araya giren bir kullanıcı iletilen veriyi okumakta ve kullanıcıyı ve sunucuyu taklit etmekte, aynı zamanda kullanıcıyı daha sonra tekrar taklit edebilmek için kullanıcının bilgilerini saklamakta özgürdür. Challenge-Handshake Authentication Protocol (CHAP) bu tür tekrarlama saldırısını doğrulama aşamasında "bilmece" mekanizması kullanarak güvenli hale getirir. Kullanıcı bu mekanizmada bilmeceye paylaşılan sır (shared secret) (örneğin; kullanıcının şifresi'ni kullanarak cevap verir. Doğrulayan taraf daha sonra bilmeceye kendi verdiği cevap ile kullanıcının verdiği cevabı karşılaştırır ve kullanıcıyı doğrular. Hiç iletilmeyen paylaşılan sırra, doğrulayıcı kontrolünde bilmece tekrarına ve değişen tanımlayıcı ve bilmeceler sayesinde, CHAP tekrarlama saldırılarına karşı sınırlı bir koruma sağlar.


## Tekrarlama saldırılarına karşı zayıflığın gerçek dünyadan örnekleri.
Tekrarlama saldırılarının nasıl kullanıldığına ve daha fazla saldırıyı önlemek için sorunların nasıl tespit edilip düzeltildiğine dair birkaç gerçek dünya örneği vardır.


### Araçlar için uzaktan anahtarsız-giriş sistemi.
Piyasadaki birçok araç, kullanıcının kolay kullanımı için uzaktan anahtarsız bir sistem veya anahtarlık kullanır. Modern sistemler basit tekrarlama saldırılarına karşı güçlendirilmiştir, ancak hafızalı tekrarlamalı saldırılara (buffered replay attacks) karşı savunmasızdır. Bu saldırı, radyo dalgalarını alabilen ve iletebilen bir cihazı hedef aracın menzili içine yerleştirilerek gerçekleştirilir. Verici herhangi bir RF aracına kilidini açmak için gönderilen sinyali kesecek ve aynı zamanda bu sinyali daha sonra kullanmak için hafızasına(buffer) kaydedecektir. Daha sonraki aracın kilidin açma denemelerinde, verici yeni sinyali kesecek ve öncekini gönderecek ve böylece hafızasını kullanarak aracın bir adım önünde olacaktır. Daha sonra saldırgan aracın kilidini açmak için bu hafızaya alınmış sinyali kullanabilir.


### Konuşulan metin ile hoparlörden kimlik doğrulama.
Çeşitli türlerde cihazlar konuşanın kimliğini doğrulamak için speaker recognition kullanır. Metne bağlı sistemlerde sistem tarafından doğrulanmış olan metni kaydedip sistem tarafından doğrulanmak için bu metni tekrar kullanabilir. Doğrulanmış kullanıcıların hafızaya alınmış konuşmaları ile sanal bit-haritaları (spectral bitmaps) oluşturulmuş ve bu haritalar ile bir tedbir sistemi tasarlanmıştır. Saldırganın yeniden oynattığı konuşma bu durumda farklı bir kalıpta olur ve sistem tarafından reddedilir.