Keystroke Timing Attack¶
Bir kullanıcının ne yazdığını keystroke'lar arasındaki timing'den çıkarmak — her keypress'in kendi packet'inde gittiği encrypted SSH üzerinden bile gözlemlenebilir.
Mechanism¶
Neden çalışır
İki keystroke arasındaki süre rastgele değildir: güçlü bir şekilde hangi iki tuşa basıldığına bağlıdır, çünkü parmak hareket mesafesi ve el değişimi digraph'a göre değişir. Bu inter-keystroke latency'ler her karakter çifti için kararlı, öğrenilebilir bir istatistiksel imza oluşturur. Encryption, bir iletimin içeriğini gizler ama traffic pattern'ini değil. SSH'ın interactive mode'unda, her keystroke tuşa basıldığı anda kendi IP packet'inde sunucuya gönderilir, dolayısıyla yalnızca encrypted packet timestamp'lerini görebilen bir eavesdropper yine de tam inter-keystroke aralıklarını recover eder. SSH, bir block cipher altında yalnızca sekiz-byte sınırına padding yaparak leak'i artırır, ki bu da altta yatan data'nın yaklaşık uzunluğunu açığa çıkarır. Yazılan diziyi bir Hidden Markov Model olarak ele almak — hidden state'ler tuşlar, observation'lar timing'ler — bir attacker'ın channel'ı tersine çevirip olası tuş dizilerini sıralamasına izin verir; no-echo bir prompt'ta yazılan password'ler için search space'i keskin şekilde daraltır.
Walkthrough¶
Attacker pasif bir network observer'ıdır; yalnızca timestamp'ler ve packet boyutları gerekir.
- Keystroke başına packet timestamp'lerini yakala. Bir interactive SSH login sırasında, tek-karakterlik packet'lerin patlamasını izole et (no-echo password aşaması sunucu echo packet'i üretmez, ki bu da bir password girildiğine işaret eder).
# Conceptual capture of SSH interactive-mode packets (timestamps + sizes).
tcpdump -tt -n 'tcp port 22 and (tcp[tcpflags] & tcp-push != 0)'
# Each line ~ one keystroke; the delta between lines is the inter-keystroke time.
- Inter-keystroke latency'leri hesapla.
- Candidate dizileri bir timing model ile skorla. Kullanıcı başına (veya genel) typing data üzerinde eğitilmiş bir Hidden Markov Model, bir latency vektörünü olası tuş çiftlerinin sıralanmış bir listesine çevirir; bir key-sequence prediction algoritması bunları password tahminlerine zincirler.
observed: [t1, t2, t3, ...] # inter-keystroke gaps
HMM: P(latency | key-pair) # learned typing distribution
output: ranked candidate strings, best-first
Raporlanan etki (Song, Wagner, Tian 2001)
Yazarlar, SSH oturumlarını izleyerek password öğrenen Herbivore adlı bir attack sistemi inşa etti. Yalnızca network'ten recover edilen timing'i kullanarak Herbivore, kapsamlı bir password aramasının işini kabaca 50 kat azalttı — ortalama olarak karakter çifti başına yaklaşık 1 bit bilgi recover etmeye eşdeğer.
Uyarılar
Attack aramayı daraltır; password'ü doğrudan nadiren verir. Etkinlik, tutarlı typing'e ve victim'in interactive (keystroke başına) iletim kullanmasına bağlıdır. Yapıştırılan input, local line editing veya batch'lenmiş input onu çökertir.
Detection¶
- Network monitor'ları klasik interactive-SSH fingerprint'ini işaretleyebilir: karşılık gelen echo packet'i olmayan (bir password prompt'u) minimal boyutlu, düzenli PUSH'lanan packet'lerden oluşan bir akış — hem leak eden koşulu hem de aktif toplamayı tespit etmek için yararlı.
- Hassas host'ların yakınındaki bir span/tap port'unda capture tooling'in endpoint detection'ı.
Mitigation¶
- Timing channel'ını protocol'de kır. Keystroke'ları sabit bir clock'ta gönder (constant-rate "padding" packet'leri) veya onları batch'le/geciktir ki packet timing artık keypress timing'ini izlemesin. OpenSSH daha sonra tam da bu nedenle keystroke başına timing obfuscation (chaff/interval iletim) ekledi.
- Latency dağılımına gürültü enjekte etmek için packet iletimine randomize edilmiş gecikmeler ekle (bir usability/latency maliyetiyle).
- Yüksek değerli secret'ları interactive remote oturumlara yazmaktan kaçın; yazılan password'ler yerine key-based auth ve agent forwarding'i tercih et.
- Aynı savunmalar diğer keystroke-timing oracle'larına da genellenir (örn. shared-host microarchitectural timing); gerçek keystroke olaylarını maskelemek için sahte keystroke olaylarının KeyDrown tarzı injection'ına bak.
References¶
- Song, Wagner, Tian — "Timing Analysis of Keystrokes and Timing Attacks on SSH" (USENIX Security 2001)
- Paper PDF (Berkeley)
- See also Flush+Reload and cache template attack for microarchitectural keystroke timing.