Tam olarak “Gönüllü bağlam anahtarları” nedir?


34

İkili bir dosya aldım ve şifresini kırmam gerekiyor (ödev). Ayrıca verilen bir fonksiyon vardı (ikili dosyanın bir parçası olan bir fonksiyon). Bu işlev, giriş dizgisinin karaktere göre doğru şifre karakteriyle karşılaştırıldığını ve karakter yanlış olduğunda anında yanlış döndürdüğünü gösterdi (bunu yapmanın güvenli bir yolu değil sanırım çünkü sızıntı zamanı ve doğru şifre uzunluğu hakkında bir fikir edindik) örnek). Ama hocamız sonucu biraz daha zorlaştırmak için sonucu (Doğru / Yanlış) döndüren rastgele bir zamanlayıcı ekledi ...

Neyse, tersine mühendislikle başarılı bir şekilde yaptım ve doğru şifreyi aldım. Şimdi komut satırında onunla oynuyorum:

/usr/bin/time -v ./program_name enter_password

Bu komutla, sistem zamanı, takaslar, çalıştırma zamanı gibi birçok bilgi alıyorum. Ama benim için en ilginç olanı "Gönüllü bağlam anahtarları" dır. " Alırım!

Ne kadar yanlış karakter girersem o kadar “Gönüllü içerik anahtarları” alıyorum.

Sadece bu komutu girerek, karakterleri girerek ve "Gönüllü içerik anahtarları" nı izleyerek şifreyi kırmam neredeyse iki saatimi aldı. BİR karakter doğru olduğunda, "Gönüllü içerik anahtarları" bir azalır.

Sorum, tam olarak "Gönüllü bağlam anahtarları" nedir ve neden şifreyi kırmama yardım ettiler?


5
Yan kanal saldırılarının zengin ve hala tam olarak anlaşılmayan alanını keşfettiğiniz için tebrikler .
zwol

1
@zwol "Zengin" ile ne demek istiyorsun? Ve ayrıca, şu anda sınıfta yan kanal saldırılarıyla uğraşıyoruz, pardon, alanını hızla "tam olarak anlamadım" ...
cnmesr

15
@cnmesr Ben yeni bir keşifler yapıldığından beri zwolün bu alanı ilginç olarak gördüğünü söyleyerek alaycı değil, samimi bir yorum olarak kabul ettim. Ondan değil sen öyle olduğunu, tam olarak anlaşılamamış olması kimsenin tam olarak anlar ve en ilginç kılan söyledi.
HVD

3
@ hvd cnmesr Evet, demek istediğim buydu.
zwol

@zwol Oh üzgünüm o zaman! Seni yanlış yorumluyorum ve bir saldırı olarak gördüm: p
cnmesr

Yanıtlar:


36

Man sayfasıtime istemli ve istemsiz bağlam anahtarlar kavramını açıklıyor:

The resource specifiers [...] are:
   c      Number of times the process was context-switched involuntarily
          (because the time slice expired).
   w      Number of times that the program was context-switched voluntarily, 
          for instance while waiting for an I/O operation to complete.

(alıntı Debian sistemimdendir, bağlantılı adam sayfasının biraz farklı bir metni vardır)

Başka bir deyişle, işlem CPU'dan başka bir şey yapamadığı için işlemciden ayrılırsa (harici bir şeyin olmasını beklerken) isteğe bağlı bir anahtardır. Bazı hesaplamalara devam etmek isterse istemsiz, ancak işletim sistemi başka bir sürece geçme zamanının geldiğine karar veriyor.


Bunların herhangi birinin şifre kontrol programına bağlı olması, programın gerçekte ne yaptığına bağlıdır.

Yorumlara bağlanan kaynak kodundan, programın usleep()eşleşmeyen her karakter için bir kez aradığını , ardından bir sonraki karakterdeki karşılaştırma döngüsüne devam ettiğini görüyoruz . Uyumak, CPU'nun şimdiye kadar vermiş olduğu kadar gönüllüdür, bu nedenle bu çağrılar, işlenmeyen her karakter için isteğe bağlı bağlam anahtarları olarak gösterilecektir.

Linux'ta da çağrıları görebilmeniz gerekir strace.

Nihai gecikme T * (rand() % 3), sabit bir 0, 1 veya 2 kez randomize bir uykudan gelir . Bu oldukça kaba bir ayrıntıdır, bu nedenle aynı parola ile birden çok deneme yaparak ortalamanın üzerinde olması gerekir.


3
Yukarıda bahsettiğim işlevin kaynak kodu pastebin.com/iTzheD4u Teşekkürler strace ile yapılan çağrılara bakacağım ve umarım biraz daha bilgi alacağım. Rastgele zamanlayıcı hakkında: Eğer şifre yanlış bir uzunluğa sahipse, çıkış zamanı aynıdır (çok çok hızlı) ve rastgele zamanlayıcı çalıştırılmaz. Eğer şifre uzunluğu doğruysa, rasgele zamanlayıcı yürütüldüğü için çıkış rasgeledir.
cnmesr

@cnmesr, oh, bu mükemmel!
ilkkachu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.