Zamanlama saldırısı

Vikipedi, özgür ansiklopedi

Kriptografide, bir zamanlama saldırısı, saldırganın kriptografik algoritmaları yürütmek için geçen zamanı analiz ederek bir kriptosistemi tehlikeye atmaya çalıştığı yan kanal saldırısıdır. Bir bilgisayardaki her mantıksal işlemin yürütülmesi zaman alır ve zaman girdiye göre değişebilir; her işlem için tam zaman ölçümleriyle, bir saldırgan girdiye geriye doğru çalışabilir.[1]

Belirli sorgulara yanıt vermek için geçen sürenin ölçülmesi yoluyla sistemden bilgi sızabilir. Bu bilginin bir saldırgana ne kadar yardımcı olabileceği birçok değişkene bağlıdır: kriptografik sistem tasarımı, sistemi çalıştıran CPU, kullanılan algoritmalar, çeşitli uyarlama detayları, zamanlama saldırısı karşı tedbirleri, zamanlama ölçümlerinin doğruluk oranı, vb.

Zamanlama saldırıları genellikle tasarım aşamasında göz ardı edilir, çünkü uyarlamaya çok bağımlıdırlar ve derleyici optimizasyonlarıyla yanlışlıkla tanıtılabilirler. Zamanlama saldırılarından kaçınılması, sabit zamanlı işlevlerin tasarımını ve son yürütülebilir kodun dikkatle test edilmesini içerir.[1]

Kavram[değiştir | kaynağı değiştir]

Zamanlama saldırısı, algoritmanın diğer matematiksel özelliklerinden ziyade bir Algoritma uyarlamasının 1 Haziran 2020 tarihinde Wayback Machine sitesinde arşivlendi. verilere bağlı davranışsal karakteristiklerinden yararlanan bir saldırı örneğidir.

Birçok kriptografik algoritma, veriye bağlı zamanlama bilgilerini azaltacak veya ortadan kaldıracak şekilde uygulanabilir (veya bir proxy tarafından maskelenebilir): bir alt rutine yapılan her çağrının her zaman tam olarak x saniye içinde döndüğü bir uygulamayı düşünün; burada x, her muhtemel yetkili girişi için bu rutini yürüttüğü maksimum süredir. Böyle bir uyarlamada, algoritmanın zamanlaması söz konusu çağrılma için sağlanan veriler hakkında hiçbir bilgi sızdırmaz. Bu yaklaşımın kötü tarafı, tüm yürütmeler için kullanılan sürenin, işlevin en kötü durum performansı haline gelmesidir.

Zamanlama saldırıları birçok yönden pratiktir:

  • Zamanlama saldırıları, veriye bağlı zamanlama varyasyonu olan herhangi bir algoritmaya uygulanabilir. Veri önbelleği olan bir CPU üzerinde çalışan yazılım, belleğin önbelleğe bakması sonucunda verilere bağlı zamanlama varyasyonları sergileyecektir. Çarpma gibi bazı işlemler, girdilere bağlı olarak değişen yürütme sürelerine sahip olabilir. Sıklıkla çeşitli yürütme süreleri gösteren düşük düzeyli işlemler kullanan bazı algoritmalarda zamanlama bağımlılıklarını kaldırmak zordur.
  • Zamanlama bilgileriyle sır bulmak, bilinen düz metin, şifreli metin çiftlerinin kriptanalizini kullanmaktan çok daha kolay olabilir. Bazen bilgi sızıntı hızını arttırmak için zamanlama bilgisi kriptanaliz ile birleştirilir.

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

Modüler üs almada 1 Haziran 2020 tarihinde Wayback Machine sitesinde arşivlendi. kullanılan kare ve çarpma algoritmasının 22 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi. yürütme süresi, doğrusal olarak anahtardaki '1' bit sayısına bağlıdır. Tek başına '1' bit sayısı, anahtarı bulmak için neredeyse yeterli bilgi olmamakla birlikte, aynı anahtar ve farklı girişlerle tekrarlanan yürütmeler, anahtarı tamamen kurtarmak için zamanlama bilgilerinin istatistiksel korelasyon analizini gerçekleştirmek için kullanılabilir, pasif saldırgan tarafından bile. Gözlemlenen zamanlama ölçümleri genellikle gürültüyü içerir (ağ gecikmesi gibi kaynaklardan veya erişimden erişime disk sürücüsü erişim farklılıkları ve iletim hatalarından kurtulmak için kullanılan hata bulma ve düzeltme teknikleri). Bununla birlikte, zamanlama saldırıları RSA Algoritması, ElGamal ve Dijital İmza Algoritması dahil olmak üzere bir dizi şifreleme algoritmasına karşı pratiktir.

2003 yılında Boneh 12 Haziran 2020 tarihinde Wayback Machine sitesinde arşivlendi. ve Brumley 26 Ağustos 2019 tarihinde Wayback Machine sitesinde arşivlendi., Çin'in Chinese Remainder Theorem29 Nisan 2017 tarihinde Wayback Machine sitesinde arşivlendi. optimizasyonlarıyla RSA kullanımı ile ilgili farklı bir güvenlik açığına dayanan, SSL etkin web sunucularında pratik bir ağ tabanlı zamanlama saldırısı gösterdiler. Gerçek ağ mesafesi deneylerinde küçüktü, ancak saldırı birkaç saat içinde bir sunucu özel anahtarını başarıyla kurtardı. Bu gösteri SSL uygulamalarında körleştirme (blinding) 28 Şubat 2020 tarihinde Wayback Machine sitesinde arşivlendi. tekniklerinin yaygın olarak başvurulmasına ve kullanılmasına yol açmıştır. Bu bağlamda körleştirme, anahtar ve şifreleme süresi arasındaki korelasyonları ortadan kaldırmayı amaçlamaktadır.

Unix'in bazı sürümleri, 8 karakterlik bir parolayı 11 karakterlik bir dizeye ayırmak için crypt kitaplığı işlevinin nispeten pahalı bir uyarlaması kullanır. Eski donanımlarda, bu hesaplama kasıtlı olarak ve kısmen uzun bir zaman aldı: bazı durumlarda iki veya üç saniye kadar.[kaynak belirtilmeli] Unix'in ilk sürümlerindeki login programı, yalnızca oturum açma adı sistem tarafından tanındığında crypt işlevini yürüttü. Bu, şifre yanlış olsa bile, oturum açma adının geçerliliği hakkında zamanlama yoluyla bilgi sızdırdı. Bir saldırgan, ilk olarak geçerli olduğu bilinen giriş adlarının bir listesini üretmek için kaba kuvvet 15 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi. uygulayarak bu tür sızıntılardan yararlanabilir, daha sonra yalnızca bu adları sıkça kullanıldığı bilinen çok sayıda parola ile birleştirerek erişim elde etmeye çalışabilir. Oturum açma adlarının geçerliliği hakkında herhangi bir bilgi olmadan, böyle bir yaklaşımın yürütülmesi için gereken süre, büyüklük sıralarına göre artarak etkili bir şekilde işe yaramaz hale gelir. Unix'in sonraki sürümleri, oturum açma adının geçerliliğine bakılmaksızın her zaman crypt işlevini çalıştırarak bu sızıntıyı giderdi.[kaynak belirtilmeli]

Önbellek veya sanal bellek ile tek bir sistemde çalışan, aksi takdirde güvenli bir şekilde izole edilmiş iki işlem, bir işlemde kasıtlı olarak sayfa hatalarına 9 Mayıs 2020 tarihinde Wayback Machine sitesinde arşivlendi. ve/veya önbellek hatalarına 10 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi. neden olarak iletişim kurabilir, ardından diğerinden erişim sürelerinde oluşan değişiklikleri izleyebilir. Benzer şekilde, bir uygulama güvenilirse, ancak disk belleği / önbelleğe alma dallanma mantığından etkileniyorsa, ikinci bir uygulamanın erişim süresi değişikliklerini izleyerek şube durumuna kıyasla verilerin değerlerini belirlemesi mümkün olabilir; uç örneklerde bu, kriptografik anahtar bitlerinin kurtarılmasına izin verebilir.[2][3]

CPU üreticilerini (Intel, AMD, ARM ve IBM dahil) CPU'larını yeniden tasarlamaya zorlayan 2017 Meltdown 17 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi. ve Spectre11 Ocak 2018 tarihinde Wayback Machine sitesinde arşivlendi. saldırıları, zamanlama saldırılarına güveniyor.[4] 2018'in başından itibaren, dünyadaki hemen hemen her bilgisayar sistemi, bir zamanlama saldırısının tarihteki en güçlü örneği haline getirerek Spectre'den etkilendi.[5][6][7]

Aşağıdaki Visual Basic kodu, karakter uyuşmadığı zaman en kısa sürede sınamayı durduran tipik bir güvenli olmayan string karşılaştırma gösterir. Örneğin, "ABCDE" ile "ABxDE" karşılaştırıldığında, 3 döngü iterasyonundan sonra geriye dönüş yapar:

Function InsecureCompare(StrA As String, StrB As String, length As Integer) As Boolean
 Dim result As Boolean
 For i = 1 To length
  If Mid(StrA, i, 1) <> Mid(StrB, i, 1) Then Exit For
 Next
 result = (i > length)
 InsecureCompare = result
End Function

Karşılaştırma olarak, aşağıdaki sürüm tüm karakterleri test ederek ve koşullu atlama olmadan test etmek için bitsel işlemleri 27 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi. kullanarak sabit zamanda çalışır:

Function SecureCompare(StrA As String, StrB As String, length As Integer) As Boolean
 Dim result As Boolean
 For i = 1 To length
  result = result Or (Asc(Mid(StrA, i, 1)) Xor Asc(Mid(StrB, i, 1)))
 Next
 SecureCompare = Not result
End Function

Notlar[değiştir | kaynağı değiştir]

Eğer düşman donanım uygulamasının içsellerini ve hatta kullanılan kriptografik sistemi biliyorsa, zamanlama saldırılarının monte edilmesi daha kolaydır. Kriptografik güvenlik asla ikisinin de belirsizliğine bağlı olmamalı iken (bkz. belirsizliğe bağlı güvenlik 30 Nisan 2020 tarihinde Wayback Machine sitesinde arşivlendi., özellikle hem Shannon'un Maxim'i hem de Kerckhoffs ilkesi), zamanlama saldırılarına karşı direnç de olmamalıdır. Başka bir şey yoksa, bir örnek satın alınabilir ve tersine mühendislik yapılabilir. Zamanlama saldırıları ve diğer yan kanal saldırıları, bazı aygıtlar tarafından kullanılan bir şifreleme algoritmasını tanımlamak veya muhtemelen tersine mühendislik yapmak için de yararlı olabilir.

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

  1. ^ a b "BearSSL – Constant-Time Crypto". www.bearssl.org. 11 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ocak 2017. 
  2. ^ See Percival, Colin, Cache Missing for Fun and Profit 14 Mayıs 2011 tarihinde Wayback Machine sitesinde arşivlendi., 2005.
  3. ^ Bernstein, Daniel J., Cache-timing attacks on AES 7 Haziran 2011 tarihinde Wayback Machine sitesinde arşivlendi., 2005.
  4. ^ Meltdown (security vulnerability)
  5. ^ "Arşivlenmiş kopya". 3 Ocak 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Nisan 2020. 
  6. ^ "Arşivlenmiş kopya". 3 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Nisan 2020. 
  7. ^ "Arşivlenmiş kopya". 3 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Nisan 2020. 

Daha fazla okuma için[değiştir | kaynağı değiştir]