Hitag2 ile 360 saniyede kaçırma

1996 yılında piyasaya sürülen Hitag2, motor kilidi (immobiliser) sistemlerinde yaygın olarak kullanılan aktarıcılardan (transponder) biridir. Hitag2, 48 bit boyunda anahtarla şifreleyen dizi şifreleyici kullanır. Bu dizi şifreleyiciyi kullanarak, araba ile arabayı çalıştırmak isteyen taraf arasında kimlik doğrulamasını ve gizliliği sağlar.
Tanımlama
Elektronik motor kilidi, uygun aktarıcı veya anahtar olmadan arabanın çalıştırılmasını engelleyen, hırsızlık önleyici cihazdır. Motor kilid sistemi iki esas kısımdan oluşur: anahtarın içinde gömülmüş aktarıcı yonga (transponder chip) ve arabanın ön panosunun bir yerinde bulunan okuyucu. Araba çalıştırılmazdan önce bu iki taraf arasında kablosuz bağlantı vasıtasıyla kimlik doğrulaması yapılır. Ama, bazı durumlarda arabayı çalıştırmak için anahtar yerine 'start' düğmesi vardır. Bu zaman, anahtar kullanılmadığı için hırsızlığı önleyen olarak sadece motor kilidi var. Yani, önceden anahtarı da bulundurması gereken hırsız artık anahtarı ele geçirmesi şart değil.
Hitag2
Hitag2'nin belleğine erişim, aktarıcının çalıştığı moda göre farklılık gösterir. Hitag2 aktarıcısı üç modda çalışır:
açık mod
şifre modu
kripto modu
Kripto modunda, okuyucu ile aktarıcı arasındaki iletişim 48 bit boyunda ortak saklı anahtar ile şifrelenir. Bu şifreleme dizi şifreleme şeklinde yapılır.
Aktarıcı 256 bit belleğe sahip olup, her biri 4 byte olan 8 tane bloktan ibaret. Kripto modunda çalışan aktarıcının belleği aşağıda gösterilen içeriğe sahiptir:
Blok [0] − aktarıcının id numarası (identifikasyon)
Blok [1] − saklı anahtarın ilk 32 biti (k0... k31)
Blok [2] − saklı anahtarın son 16 biti (k32... k47) ve 16 bit boyunda ayrılmış kısım
Blok [3] − konfigürasyon ve şifre
Blok [4-7] − kullanıcıya ayrılmış sayfalar
Okuyucu ile aktarıcı arasındaki iletişim okuyucunun komut göndermesi (örneğin: oku, yaz ve b.) ve aktarıcının komuta yanıt vermesi şeklinde olur. Komutlar 10 bit boyunda. Sadece kimlik doğrulama komutu 5 bit. Komutlara beşin katları kadar fazladan bitler eklenebilir ve bu komutun yapacağı işi etkilemez. Eklenen bitler son beş bitin tersi olmak durumunda.
Her bir bit anahtar dizisinin biri biti ile XOR işleminden geçerek şifrelenir. Bunu Hitag2 dizi şifreleyicisi yapar. Bu şifreleyici, 48 bit uzunluğunda geribildirimli doğrusal kayan yazmaç (GDKY) (linear feedback shift register, LFSR) ve doğrusal olmayan filtre fonksiyonundan ibaret. Her birim zamanda GDKY'nin 20 biti filtre fonksiyonundan geçerek anahtar dizisinin bir bitini üretir. Bu üretilen anahtar dizisi bitleri ile komut bitleri şifrelenir. Sonra GDYK bir bit sola kayar ve GDYK-nin en sağına, yine polinom bir fonksiyonla üretilen bir bit getirilir. Filtre fonksiyonu 2 aşamadan oluşmakta. Birinci aşamada her biri 4 bit girdi alan, toplam 5 tane olmak üzere fa ve fb fonksiyonları, ikinci aşamada ise 5 bit girdi alıp sonuç olarak 1 bit üreten fc fonksiyonu yer alır.
Kimlik doğrulama yapılırken ilk olarak okuyucu aktarıcıya şifrelenmemiş şekilde kimlik doğrulama komutu gönderir, aktarıcı şifrelenememiş şekilde id numarası (identifikasyon) ile yanıt verir, (bu aşamadan sonra iletişim şifreli olacaktır) sonrasında aktarıcının anahtar bilgisini kontrol etmek için şifreli olarak nR ve aR mesajlarını gönderir okuyucu, buna yanıt olarak da aktarıcı şifreli olarak aT mesajını gönderir.
Hitag2'nin zayıflıkları
Aktarıcı sözderastlantısal sayı üretecine sahip olmadığı için aktarıcıya geçerli nR ve aR çiftini göndererek kimlik doğrulaması yapılabilir, yani bir başka deyişle, kimlik doğrulama işlemi tekrarlama atağına açık. Aktarıcı, id numarasının tutulduğu sıfırıncı bloğu okuma komutu aldıkda kolaylıkla ele geçirebileceğimiz (örneğin: gizlice dinlemekle) id numarasını yanıt olarak döndüğü için anahtar dizisinin elde edilmesine neden olabilir. Komuta ekleyebiliyor olduğumuz istenilen kadar fazla bitlerle de istenilen kadar anahtar dizisi elde edebiliriz.
1/4 olasılıkla şifreleyicinin 1 bit çıktısı GDKY'nin son 14 bitinden etkilenmiyor, yani sadece ilk 34 biti, 1 bit çıktıyı belirliyor. Bu da, ortalama her 4 kimlik doğrulama girişiminden birinde saklı anahtarın 1 bitinin ortaya çıkmasına neden oluyor.
Şifreleyicinin 48 bit iç durumu (yani, GDKY'nin durumu) sadece 32 bit ile rastgeleleştiriliyor (başlarda, nR değeri ile). O sırada, iç durumun diğer 16 biti saklı anahtarın ilk 16 biti olduğu için, bu durum başka oturumlarda da tekrar eder. Bu da farklı oturumlar arasında benzerliğe neden olur.
Hitag2'ye yapılan saldırılar
Birinci atak − yumuşaklık atağı, şifreleyicinin yumuşaklık (malleability) yönünü ve aktarıcının sözderastlantısal sayı üretecine sahip olmamasını kullanır. Kimlik doğrulaması girişimini aktarıcıya bir defa yaptıktan sonra aynı girişim aktarıcıya tekrar-tekrar yapılır, bilinen metin üzerinden (aktarıcının id numarası) anahtar dizisi ortaya çıkarılır. Bundan sonra belleğin başka diğer bloklarına ulaşılabilir. Bu sayede eğer yanlışlıkla saklı anahtar okuma korumalı değilse saklı anahtarın tutulduğu blok okunarak saklı anahtara ulaşılır.
İkinci atak − zaman/bellek pazarlık (time/memory tradeoff) atağı GDKY'nin doğrusallığını kullanarak daha küçük arama tablosu (bu tabloda her bir iç duruma, bu iç durumdan başlayarak üretilen anahtar dizisi karşılık geliyor) yapar (248 yerine 242.5) ve tabloya daha başka, aramayı hızlandıracak özellikler katar. Bu arama tablosu 1.2 TB (terabayt = 1024 gigabayt) olup, onun hazırlanması, normal bir bilgisayarda 1 günden az sürer. Sonrasında, 1 dakika içinde saklı anahtar elde edilebilir.
Üçüncü atak −kriptanalitik atağı, şifreleyicinin filtre fonksiyonunun belirleyiciliğinin az olması ve oturumlar arasındaki benzerliği (yukarıda bahsi geçen 2 ve 3-cü zayıflıklar) kullanarak 136 adet kimlik doğrulama girişimi gerçekleştirir. Bu sayede saklı anahtarın 34 (=136/4) bitini bulur ve geri kalan 14 bitini de kaba kuvvetle elde eder. Bunu yapabilmek için 1 dakika içinde 136 tane girişim gerçekleştirir ve 5 dakikadan daha kısa bir sürede normal bir 4 çekirdekli bilgisayarda bu atağı gerçekleştirebilir. Bu atak, makalemizin isminde de gösterildiği gibi 360 saniyeden daha kısa bir sürede yapılabiliyor.