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.

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

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

Kaynakça