# Double Ratchet Algoritması
Kriptografide Double Ratchet Algoritması (daha önce Axolotl Ratchet olarak anılmıştır), Trevor Perrin ve Moxie Marlinspike tarafından 2013 yılında geliştirilen bir anahtar yönetim algoritmasıdır. Anlık mesajlaşma için uçtan uca şifreleme sağlamak adına, kriptografik bir protokolün bir parçası olarak kullanılabilir. İlk anahtar değişiminden sonra, kısa ömürlü oturum anahtarlarının devam eden yenilenmelerini ve bakımlarını yönetir. Diffie-Hellman anahtar değişimi (DH) temelinde bir kriptografik mandal(ratchet) ve bir anahtar türetme fonksiyonu (KDF) (hash fonksiyonu gibi) temelinde bir mandalı kombine etmesinden dolayı, double ratchet(çift mandal) olarak anılmıştır.
Geliştiriciler algoritmayı kendi kendini iyileştirici olarak görür çünkü bir oturum anahtarını ele geçiren bir saldırganın, sonraki iletilerin açık metinlerine erişmesini otomatik olarak devre dışı bırakır.


## Çıkış Noktası.
Double Ratchet Algoritması, 2013 yılında Trevor Perrin ve Moxie Marlinspike (Open Whisper Systems ) tarafından geliştirildi ve Şubat 2014'te Signal Protokolünün bir parçası olarak tanıtıldı. Double Ratchet Algoritmasının tasarımı, Off-The -Record Messaging (Kayıt dışı mesajlaşma) tarafından tanıtılan DH mandalına dayanır ve Silent Circle Anlık Mesajlaşma Protokolünden (SCIMP) sonra modellenen simetrik anahtarlı bir mandal ile birleştirilir. Mandal(rachet), kendine has iyileştirme yeteneğine sahip nesli tükenme tehlikesi altındaki sucul semender Axolotl'un adını almıştır. Mart 2016'da, Axolotl Ratchet'ın ismini, Ratchet ve Full Protokol'ü daha iyi ayırt etmek için Double Ratchet Algoritması olarak değiştirdiler, çünkü bazıları full protokolü belirttiğinde Axolotl ismini kullanmıştı.


## Özellikler.
Double Ratchet Algoritması, uçtan-uca şifreleme sistemlerinde uzun süredir yaygın olarak kullanılan özelliklere sahiptir: içeriğin tüm ulaşım yolunda şifrelenmesinin yanı sıra, uzak eşin kimlik doğrulaması ve mesajların manipüle edilmesine karşı koruma. DH ve KDF mandallarının bir karışımı olarak, her iki ilkenin de istenen özelliklerini bir araya getirir. OTR mesajlaşmasından, forward secrecy özelliğini alır ve bir oturum anahtarının açığa çıkması durumunda otomatik olarak yeniden gizlilik kurar, gizli kalıcı ana anahtardan(secret persistent main key) ödün vermek suretiyle forward secrecy ve mesaj yazanlar için makul bir inkâr edilebilirlik olmuş olur. Ayrıca, sekonder KDF mandallarını kullanarak uzak uç ile etkileşime girmeden oturum anahtarının yenilenmesini sağlar. Aşağıdaki anahtarları tehlikeye atmadan düzensiz mesajlar için oturum anahtarlarının tutulmasını sağlamak adına ilave bir anahtar türetme adımı atılır.
OTR mesajlaşmasına kıyasla, gönderilen mesajların yeniden sıralama, silme ve tekrarlamasını algılaması ve ileri gizlilik (forward secrecy) özelliklerini geliştirdiği belirtilmiştir.
Önceden oluşturulmuş bir kerelik anahtarların tutulması için (prekeys) ortak anahtar altyapısıyla (PKI) birleştirildiğinde, mesajlaşma oturumlarının uzak eşin varlığı olmadan başlatılmasına olanak tanır (eşzamansız iletişim ). İlk anahtar değiştirme yöntemi olarak üçlü Diffie-Hellman anahtar değişimi (3-DH) kullanılması, inkâr edilemezlik özelliklerini iyileştirir. Bunun bir örneği, Signal Protokolü'dür ve Double Ratchet Algoritması, ön tuşlar (prekeys) ve 3-DH el sıkışma özelliklerini bir araya getirir. Protokol, gizlilik, bütünlük, kimlik doğrulama, katılımcı tutarlılığı, hedef doğrulama, ileri yönlü gizlilik(forward secrecy), geriye dönük gizlilik (backward secrecy-aka gelecekteki gizlilik), nedensellik korunması(causality preservation), mesaj bağlantısızlığı(message unlinkability), mesajın reddedilmesi(message repudiation), katılımın reddedilmesi(participation repudiation) ve asenkronite sağlar. Anonimite koruması sağlamaz ve mesajların aktarılması ve ortak anahtar materyallerinin depolanması için sunucular gerektirir.


## Çalışma Şekli.
Bir istemci mümkün olduğunda Diffie-Hellman mandalını kullanarak uzak taraf ile etkileşimde oturum anahtarını yeniler, aksi halde bağımsız olarak bir hash mandalı kullanarak yeniler. Bu nedenle, her mesajda, double ratchet kullanan bir kullanıcı, bir DH mandalından ortak bir sırrı toplayan iki hash mandalından birini (bir tane gönderirken, bir tane de alırken) ilerlemektedir. Aynı zamanda uzaktaki eşe yeni bir genel DH değeri sağlamak için her fırsatı kullanmaya ve uzak uçtan yeni bir DH değeri geldiğinde DH mandalı ilerletmeye çalışır. Yeni bir ortak sır kurulduğunda, yeni bir hash mandalı başlatılır.
Şifreleme ilkelleri olarak Double Ratchet Algoritması,
  - DH mandalı için
 Curve25519 ile Elliptik Curve Diffie-Hellman (ECDH),
  - Mesaj Doğrulama Kodu için (MAC, kimlik doğrulama)
 SHA-256 tabanlı Özet-Tabanlı Mesaj Doğrulama Kodu (HMAC),
  - Simetrik şifreleme için
 PKCS # 5'e göre padding ile Kısmi Blok şifre çalışma kipleri-CBC (Cipher Block Chaining ) ve padding olmaksızın kısmi CTR (Counter Mode) ile AES (Advanced Encryption Standard).
  - Hash mandalı için
 HMAC.
kullanır.


## Kullanımı.
Double Ratchet Algoritması'nı veya bunun özelleştirilmiş bir versiyonunu kullanan şifreleme protokollerinin bir listesi aşağıdadır:
 - Matrix, gerçek zamanlı iletişim için açık kaynak protokol. Double Ratchet Algoritması uygulamasıyla oda bazında isteğe bağlı uçtan uca şifreleme sağlayan bir kütüphane olan Olm'ı içerir. Matrix şu dillerde kullanılır:
   - Amdocs's Riot (eski adıyla Vektör)
 - OMEMO, XMPP'nin bir uzantısı. İçerisinde kullanıldığı yerler:
  - Konuşmalar
  - ChatSecure
  - Gajim, ayrı olarak kurulması gereken bir üçüncü parti eklentisi olarak
  - Cryptocat
 - Proteus, Signal Protokolü temel alınarak "Wire Swiss" tarafından geliştirilen ve şirketin anlık ileti uygulaması Wire'da kullanılan bir protokoldür.
  - Signal Protokolü  Double Ratchet Algoritması, prekeys ve 3-DH el sıkışma kombinasyonudur. Kullanıldığı yerler:
  - Signal Protokolünü kullanan isteğe bağlı bir modu barındıran Facebook Messenger .
  - Google Allo, ayrıca Signal Protokolünü kullanan isteğe bağlı bir moda da sahiptir.
  - G Data'ın "Güvenli Sohbet"i
  - Signal
  - WhatsApp
Diğer:
 - Kasım 2013'te Double Ratchet Algoritması, "Pond" denilen deneysel bir eşzamansız mesajlaşma sistemine entegre edildi. 
 - Mayıs 2016'da Viber, şifreleme protokolünün, Signal Protokolü ile "aynı konsepti kullanan" özelleştirilmiş bir versiyonu olduğunu açıkladı.