Zamanlama saldırısı - Timing attack

İçinde kriptografi, bir zamanlama saldırısı bir yan kanal saldırısı saldırganın bir şifreleme sistemi kriptografik algoritmaları çalıştırmak için geçen zamanı analiz ederek. Bir bilgisayardaki her mantıksal işlemin yürütülmesi zaman alır ve bu süre, girişe bağlı olarak değişebilir; Her işlem için zamanın hassas ölçümleriyle, bir saldırgan girdiye doğru geriye doğru çalışabilir. Zamanlama bilgileri aracılığıyla sırları bulmak, bilinen düz metin, şifreli metin çiftlerinin kriptanalizini kullanmaktan önemli ölçüde daha kolay olabilir. Bazen zamanlama bilgisi, bilgi sızıntısı oranını artırmak için kriptanaliz ile birleştirilir.[1]

Bilgi, belirli sorgulara yanıt vermek için geçen sürenin ölçülmesiyle bir sistemden 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 uygulama ayrıntıları, zamanlama saldırısı karşı önlemleri, zamanlama ölçümlerinin doğruluğu vb. Zamanlama saldırıları uygulanabilir. veriye bağlı zamanlama varyasyonuna sahip herhangi bir algoritma. Zamanlama bağımlılıklarını kaldırmak, sıklıkla değişen yürütme süreleri sergileyen düşük seviyeli işlemleri kullanan bazı algoritmalarda zordur.

Zamanlama saldırıları genellikle tasarım aşamasında göz ardı edilir, çünkü bunlar uygulamaya çok bağlıdır ve yanlışlıkla derleyici optimizasyonları. Zamanlama saldırılarından kaçınma, sabit zamanlı işlevlerin tasarımını ve son çalıştırılabilir kodun dikkatli bir şekilde test edilmesini içerir.[1]

Kaçınma

Birçok kriptografik algoritma, verilere bağlı zamanlama bilgilerini azaltan veya ortadan kaldıran bir şekilde uygulanabilir (veya bir proxy tarafından maskelenebilir). sabit zamanlı algoritma. Bir alt yordama yapılan her çağrının her zaman tam olarak x saniye içinde geri döndüğü bir uygulama düşünün; burada x, her olası yetkilendirilmiş girdi üzerinde bu yordamı yürütmek için gereken maksimum süredir. Böyle bir uygulamada, algoritmanın zamanlaması, bu çağrıya sağlanan veriler hakkında hiçbir bilgi sızdırmaz. Bu yaklaşımın dezavantajı, tüm yürütmeler için kullanılan zamanın, işlevin en kötü durum performansına dönüşmesidir.

Zamanlamanın veri bağımlılığı aşağıdakilerden birinden kaynaklanabilir:[1]

  • CPU verileri önbelleğe alabileceğinden yerel olmayan bellek erişimi. Veri önbelleğine sahip bir CPU üzerinde çalışan yazılım, belleğin önbelleğe bakmasının bir sonucu olarak veriye bağlı zamanlama varyasyonları sergileyecektir.
  • Koşullu sıçramalar. Modern CPU'lar deniyor spekülatif olarak yürütmek tahmin ederek geçmiş atlar. Yanlış tahmin etmek (esasen rastgele gizli verilerde nadir değildir), CPU geri adım atmaya çalışırken ölçülebilir büyük bir gecikmeye neden olur. Bu yazmayı gerektirir şubesiz kod.
  • Gerçek CPU donanımına bağlı olarak bazı "karmaşık" matematiksel işlemler:
    • Tamsayı bölümü neredeyse her zaman sabit olmayan zamandır. CPU, bölen veya bölünen küçük olduğunda farklı bir kod yolu kullanan bir mikro kod döngüsü kullanır.
    • Olmayan CPU'lar namlu değiştirici Bir döngüde, her seferinde bir pozisyonda vardiya ve rotasyonlar çalıştırır. Sonuç olarak, kaydırılacak miktar gizli olmamalıdır.
    • Daha eski CPU'lar çarpmaları bölmeye benzer şekilde çalıştırır.

Örnekler

Yürütme süresi kare ve çarpma algoritması kullanılan modüler üs alma doğrusal olarak anahtardaki '1' bit sayısına bağlıdır. Tek başına '1' bit sayısı, anahtarı bulmayı kolaylaştırmak için neredeyse yeterli bilgi olmasa da, aynı anahtar ve farklı girdilerle tekrarlanan işlemler, anahtarı tamamen kurtarmak için zamanlama bilgilerinin istatistiksel korelasyon analizini gerçekleştirmek için kullanılabilir, pasif saldırgan. Gözlemlenen zamanlama ölçümleri genellikle gürültüyü içerir (ağ gecikmesi gibi kaynaklardan veya erişime erişimden disk sürücüsü erişim farklılıkları ve hata düzeltme iletim hatalarını düzeltmek için kullanılan teknikler). Bununla birlikte, zamanlama saldırıları bir dizi şifreleme algoritmasına karşı pratiktir. RSA, ElGamal, ve Dijital İmza Algoritması.

2003'te, Boneh ve Brumley üzerinde pratik bir ağ tabanlı zamanlama saldırısı gösterdi SSL RSA'nın kullanımıyla ilgili farklı bir güvenlik açığına dayalı olarak etkinleştirilmiş web sunucuları Çin kalıntı teoremi optimizasyonlar. Gerçek ağ mesafesi deneylerinde azdı, ancak saldırı birkaç saat içinde bir sunucunun özel anahtarını başarıyla kurtardı. Bu gösteri, yaygın olarak konuşlandırılmasına ve kör edici SSL uygulamalarında teknikler. Bu bağlamda, körlemenin, anahtar ve şifreleme zamanı arasındaki ilişkiyi ortadan kaldırması amaçlanmaktadır.[2]

Bazı sürümleri Unix nispeten pahalı bir uygulamasını kullanın mezar odası 8 karakterlik bir parolayı 11 karakterlik bir dizeye hashinglemek için kütüphane işlevi. Eski donanımda, bu hesaplama kasıtlı olarak ve ölçülebilir derecede uzun sürdü: bazı durumlarda iki veya üç saniye kadar.[kaynak belirtilmeli ] oturum aç Unix'in önceki sürümlerindeki program, crypt işlevini yalnızca oturum açma adı sistem tarafından tanındığında çalıştırıyordu. Bu bilgiler, şifre yanlış olsa bile, oturum açma adının geçerliliği hakkında zamanlama yoluyla sızdırıldı. Bir saldırgan, bu tür sızıntıları ilk olarak uygulayarak kullanabilir. kaba kuvvet geçerli olduğu bilinen oturum açma adlarının bir listesini oluşturmak için, daha sonra yalnızca bu adları sık kullanıldığı bilinen çok sayıda parolayla birleştirerek erişim sağlamaya çalışın. Oturum açma adlarının geçerliliği hakkında herhangi bir bilgi olmadan, böyle bir yaklaşımı uygulamak için gereken süre, büyüklük sırasına göre artacak ve etkin bir şekilde yararsız hale gelecektir. Unix'in sonraki sürümleri, oturum açma adı geçerliliğinden bağımsız olarak her zaman crypt işlevini çalıştırarak bu sızıntıyı giderdi.[kaynak belirtilmeli ]

Tek bir sistemde çalışan, aksi halde güvenli bir şekilde izole edilmiş iki işlem, ön bellek veya sanal bellek kasıtlı olarak neden olarak iletişim kurabilir sayfa hataları ve / veya önbellekte eksik bir işlemde, ardından erişim sürelerinde ortaya çıkan değişiklikleri diğerinden izler. Benzer şekilde, bir uygulama güvenilirse, ancak sayfalama / önbelleğe alma, dallanma mantığından etkileniyorsa, ikinci bir uygulamanın, erişim süresi değişikliklerini izleyerek, dallanma durumuna kıyasla verilerin değerlerini belirlemesi mümkün olabilir; uç örneklerde bu, kriptografik anahtar bitlerinin kurtarılmasına izin verebilir.[3][4]

2017 Erime ve Spectre CPU üreticilerini (Intel, AMD, ARM ve IBM dahil) CPU'larını yeniden tasarlamaya zorlayan saldırılar, zamanlama saldırılarına dayanıyor.[kaynak belirtilmeli ] 2018'in başlarından itibaren, dünyadaki hemen hemen her bilgisayar sistemi Spectre'den etkileniyor ve bu da onu tarihteki bir zamanlama saldırısının en güçlü örneği yapıyor.[5][6][7]

Algoritma

Aşağıdaki C kod, bir karakter eşleşmediği anda testi durduran tipik bir güvenli olmayan dizge karşılaştırmasını gösterir. Örneğin, "ABCDE" ile "ABxDE" karşılaştırılırken 3 döngü yinelemesinden sonra geri dönecektir:

bool insecureStringCompare(sabit geçersiz *a, sabit geçersiz *b, size_t uzunluk) {  sabit kömür *CA = a, *cb = b;  için (size_t ben = 0; ben < uzunluk; ben++)    Eğer (CA[ben] != cb[ben])      dönüş yanlış;  dönüş doğru;}

Karşılaştırıldığında, aşağıdaki sürüm tüm karakterleri test ederek ve bir bitsel işlem sonucu biriktirmek için:

bool ConstantTimeStringCompare(sabit geçersiz *a, sabit geçersiz *b, size_t uzunluk) {  sabit kömür *CA = a, *cb = b;  bool sonuç = doğru;  için (size_t ben = 0; ben < uzunluk; ben++)    sonuç &= CA[ben] != cb[ben];  dönüş sonuç;}

Notlar

Düşman donanım uygulamasının ve hatta kullanımdaki kriptografik sistemin dahili özelliklerini biliyorsa, zamanlama saldırıları daha kolay monte edilebilir. Kriptografik güvenlik hiçbir zaman ikisinin de belirsizliğine bağlı olmamalıdır (bkz. belirsizlik yoluyla güvenlik, özellikle hem Shannon'un Maxim'i hem de Kerckhoffs prensibi ), zamanlama saldırılarına karşı direnç de olmamalıdır. Hiçbir şey değilse, 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ı cihazlar tarafından kullanılan bir kriptografik algoritmanın tanımlanmasında veya muhtemelen tersine mühendislik işleminde yararlı olabilir.

Referanslar

  1. ^ a b c "Sabit Zamanlı Kripto". BearSSL. Alındı 10 Ocak 2017.
  2. ^ David Brumley ve Dan Boneh. Uzaktan zamanlama saldırıları pratiktir. USENIX Güvenlik Sempozyumu, Ağustos 2003.
  3. ^ Percival, Colin, Eğlence ve Kar İçin Önbellek Eksik, 2005.
  4. ^ Bernstein, Daniel J., AES'e önbellek zamanlama saldırıları, 2005.
  5. ^ "Spectre sistemleri SSS". Meltdown ve Spectre.
  6. ^ "Güvenlik kusurları neredeyse tüm telefonları ve bilgisayarları riske atıyor". Reuters. 4 Ocak 2018.
  7. ^ "POWER Ailesindeki İşlemciler Üzerindeki Potansiyel Etki". IBM PSIRT Blogu. 14 Mayıs 2019.

daha fazla okuma