Double Ratchet Algoritması

Vikipedi, özgür ansiklopedi
Şuraya atla: kullan, ara

Kriptografide Double Ratchet Algoritması (daha önce Axolotl Ratchet[1][2] 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.[3]

Çıkış Noktası[değiştir | kaynağı değiştir]

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 [2], çünkü bazıları full protokolü belirttiğinde Axolotl ismini kullanmıştı.[2][4]

Özellikler[değiştir | kaynağı değiştir]

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 inkar 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ı, inkar 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.[5] 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.[6] Anonimite koruması sağlamaz ve mesajların aktarılması ve ortak anahtar materyallerinin depolanması için sunucular gerektirir.[6]

Çalışma Şekli[değiştir | kaynağı değiştir]

Diagram of the working principle

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.[7]

kullanır.

Kullanımı[değiştir | kaynağı değiştir]

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) [8]
  • OMEMO , XMPP'nin bir uzantısı. İçerisinde kullanıldığı yerler:
    • Konuşmalar
    • ChatSecure
    • Gajim , ayrı olarak kurulması gereken bir üçüncü parti eklentisi olarak
    • Cryptocat [9]
  • Proteus, Signal Protokolü [10] temel alınarak "Wire Swiss" tarafından geliştirilen ve şirketin anlık ileti uygulaması Wire'da kullanılan bir protokoldür.[11]
  • Signal Protokolü; Double Ratchet Algoritması, prekeys ve 3-DH el sıkışma kombinasyonudur.[5] Kullanıldığı yerler:

Diğer:

  • Kasım 2013'te Double Ratchet Algoritması, "Pond" denilen deneysel bir eşzamansız mesajlaşma sistemine entegre edildi.[17]
  • Mayıs 2016'da Viber , şifreleme protokolünün, Signal Protokolü ile "aynı konsepti kullanan" özelleştirilmiş bir versiyonu olduğunu açıkladı.[18]

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Perrin, Trevor (30 Mart 2016). "Compare Revisions". 7 Mayıs 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170507135157/https://github.com/trevp/double_ratchet/wiki/Home/_compare/6fa4a516b01327d736df1f52014d8b561a18189a...ab41721f9ed7ca0bdac3e24ce9fc573750e0614d. Erişim tarihi: 9 Nisan 2016. 
  2. ^ a b c Marlinspike, Moxie (30 Mart 2016). "Signal on the outside, Signal on the inside". Open Whisper Systems. 28 Aralık 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20161228221122/https://whispersystems.org/blog/signal-inside-and-out/. Erişim tarihi: 31 Mart 2016. 
  3. ^ Marlinspike, Moxie (26 Kasım 2013). "Advanced cryptographic ratcheting". whispersystems.org. Open Whisper Systems. 24 Mart 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170324070200/https://whispersystems.org/blog/advanced-ratcheting/. Erişim tarihi: 16 Ocak 2016. "The OTR style ratchet has the nice property of being 'self healing.'" 
  4. ^ Cohn-Gordon et al. 2016, s. 1
  5. ^ a b Unger et al. 2015, s. 241
  6. ^ a b Unger et al. 2015, s. 239
  7. ^ Frosch et al. 2014
  8. ^ Butcher, Mike (19 Eylül 2016). "Riot wants to be like Slack, but with the flexibility of an underlying open source platform". AOL Inc.. http://social.techcrunch.com/2016/09/19/riot-wants-to-be-like-slack-but-with-the-flexibility-of-an-underlying-open-source-platform/. Erişim tarihi: 20 Eylül 2016. 
  9. ^ "Security". Cryptocat. 3 Nisan 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170403164620/https://crypto.cat/security.html. Erişim tarihi: 14 Temmuz 2016. 
  10. ^ "Add attribution". Wire Swiss GmbH. 9 Mayıs 2016. 7 Mayıs 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170507135204/https://github.com/wireapp/proteus/blob/develop/src/internal/session.rs. Erişim tarihi: 15 Temmuz 2016. 
  11. ^ "Wire Security Whitepaper". Wire Swiss GmbH. https://wire.com/resource/Wire%20Security%20Whitepaper/download/. Erişim tarihi: 15 Temmuz 2016. 
  12. ^ Greenberg, Andy (4 Ekim 2016). "You Can All Finally Encrypt Facebook Messenger, So Do It". Condé Nast. 15 Nisan 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170415004558/https://www.wired.com/2016/10/facebook-completely-encrypted-messenger-update-now. Erişim tarihi: 5 Ekim 2016. 
  13. ^ Greenberg, Andy (18 Mayıs 2016). "With Allo and Duo, Google Finally Encrypts Conversations End-to-End". Condé Nast. 2 Şubat 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170202161556/https://www.wired.com/2016/05/allo-duo-google-finally-encrypts-conversations-end-end/. Erişim tarihi: 14 Temmuz 2016. 
  14. ^ Seals, Tara (17 Eylül 2015). "G DATA Adds Encryption for Secure Mobile Chat". Infosecurity Magazine. Reed Exhibitions Ltd.. 22 Temmuz 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20160722065627/http://www.infosecurity-magazine.com/news/g-data-adds-encryption-for-secure/. Erişim tarihi: 16 Ocak 2016. 
  15. ^ "SecureChat". G Data. 7 Mayıs 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170507135213/https://github.com/GDATASoftwareAG/SecureChat. Erişim tarihi: 14 Temmuz 2016. 
  16. ^ Metz, Cade (5 Nisan 2016). "Forget Apple vs. the FBI: WhatsApp Just Switched on Encryption for a Billion People". Condé Nast. 28 Nisan 2017 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20170428182256/https://www.wired.com/2016/04/forget-apple-vs-fbi-whatsapp-just-switched-encryption-billion-people. Erişim tarihi: 5 Nisan 2016. 
  17. ^ Langley, Adam (9 Kasım 2013). "Wire in new ratchet system" (GitHub contribution). 28 Aralık 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20161228222122/https://github.com/agl/pond/commit/338395668fbb8a7819c0fccf54dccaa4d7f0ae9e. Erişim tarihi: 16 Ocak 2016. 
  18. ^ "Viber Encryption Overview". Viber. 3 Mayıs 2016. 24 Ekim 2016 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20161024125724/http://www.viber.com:80/en/security-overview. Erişim tarihi: 14 Temmuz 2016.