Toplu taşımadan bina giriş sistemlerine kadar günlük hayatımızın pek çok alanında dokun-geç mantığıyla çalışan kartlar kullanıyoruz. Bu sistemlerin en bilinen ve en yaygın donanımlarından biri MIFARE Classic 1K kartlardır. Dışarıdan bakıldığında basit bir plastik parçası gibi görünen bu kartlar, aslında içinde kendi bellek organizasyonuna, iletişim protokollerine ve şifreleme algoritmalarına sahip küçük birer sistemdir.
Peki, bu kartlar okuyucularla nasıl iletişim kuruyor ve daha da önemlisi, barındırdıkları bazı yapısal zafiyetler sistemin tamamen ele geçirilmesine nasıl kapı aralıyor? Bu yazıda MIFARE Classic 1K kartların anatomisine ve ünlü Darkside Saldırısının detaylarından bahsedilecektir.
Kart ve Okuyucu Nasıl İletişim Kurar?
MIFARE Classic 1K kartlar, ISO/IEC 14443 standardıyla uyumlu okuyucularla çalışır. İletişimin başlaması için kartın okuyucuya yaklaşık 10 cm kadar yaklaşması yeterlidir. Bu kısa mesafede, okuyucunun yaydığı elektromanyetik alan karta güç verir ve sistemi uyandırır.
Bu aşamada iletişim şu adımlarla şekillenir:
Kart ve okuyucu arasındaki çift yönlü iletişim, onaltılık formatta kodlanmış komutlar üzerinden gerçekleşir. İletişimin başlangıcında, okuyucunun manyetik alanında birden fazla kart bulunuyorsa, okuyucu olası çakışmaları önlemek adına işlem yapacağı belirli bir kartı seçer. İlgili kart ile başarılı bir bağlantı kurulduktan sonra ise iletişim, veri güvenliğini garanti altına almak amacıyla doğrudan üç aşamalı bir kimlik doğrulama sürecine geçer.

Üç Aşamalı Kimlik Doğrulama (Three-Pass Authentication)
Okuyucu hedef kartı seçtikten sonra, şifreli bir iletişimin kurulabilmesi için hem kartın hem de okuyucunun aynı gizli anahtara sahip olduğunu kanıtlaması gerekir. Bu süreç beş adımdan ve üç ana aşamadan oluşur
Kimlik doğrulama süreci, okuyucunun işlem yapılacak sektör için A veya B anahtarından birini seçmesiyle başlar. Ardından gelen ilk aşamada kart, istenen gizli anahtarı ve erişim koşullarını kontrol ederek okuyucuya nt (nonce tag) adı verilen rastgele bir sorgu gönderir. İkinci aşamada okuyucu, kendi sisteminde kayıtlı olan gizli anahtarı ve karttan gelen bu nt sorgusunu kullanarak bir yanıt (ar) hesaplar; sonrasında bu yanıtı kendi ürettiği yeni ve rastgele bir sorgu (nr) ile birlikte karta iletir. Üçüncü aşamaya geçildiğinde ise kart, daha önce gönderdiği nt değerini baz alarak okuyucudan gelen ar yanıtının doğruluğunu teyit eder. Eğer bu doğrulama başarılı olursa, kart okuyucunun nr sorgusuna karşılık yeni bir yanıt hesaplayıp bunu okuyucuya geri gönderir. Süreç, son aşamada okuyucunun karttan gelen bu yanıtı doğrulamasıyla başarıyla tamamlanır ve şifreli iletişim için gereken güven ortamı sağlanmış olur.İki taraf da birbirini onayladığında, ilgili anahtar üzerinden şifreli veri alışverişi başlar.

Bellek (Hafıza) Organizasyonu
MIFARE Classic 1K adındaki “1K”, kartın sahip olduğu 1 Kilobaytlık veri kapasitesini temsil eder. Bu bellek son derece düzenli bir yapıya sahiptir
NACK Nedir ve Mifare Kartlarda Neden Bir Zafiyettir?
Ağ ve iletişim protokollerinde NACK (Negative Acknowledgment), “Gönderdiğin veriyi aldım ama bir sorun var (paket eksik, veri bozuk vb.)” anlamına gelen bir hata bildirimidir. Bunun zıttı olan ACK ise verinin başarıyla alındığını onaylar.
Kartın belleği toplam 16 sektöre ayrılmış olup, her bir sektör kendi içinde 16 bayt veri tutabilen 4 blok barındırır. Bu bellek organizasyonunun başlangıcı olan ilk sektörün ilk bloğu, karta özel seri numarası gibi Üretici Verilerine ayrılmıştır ve genellikle salt okunur formattadır. Diğer yandan, her sektörün son bloğu “Sektör Kuyruğu” (Sector Trailer) olarak adlandırılır; bu kritik blok, A anahtarını, B anahtarını ve o sektördeki blokların nasıl okunup yazılacağını belirleyen erişim bitlerini (Access Bits) barındırarak veri yönetimini ve güvenliğini sağlar.
İşte tam bu noktada MIFARE Classic kartların en büyük güvenlik açıklarından biri ortaya çıkar.
Güvenli olarak tasarlanmış bir sistemde, eğer kimlik doğrulama başarısız olursa, sistem karşı tarafa hiçbir ipucu vermeden iletişimi anında kesmelidir. Ancak MIFARE kartlar böyle davranmaz. Kart, okuyucudan gelen verinin yapısal olarak (eşlik bitleri – parity bits) doğru olduğunu teyit eder ama şifreli yanıtın yanlış olduğunu fark ederse sessiz kalmaz. Bunun yerine okuyucuya 4 bitlik şifrelenmiş bir NACK kodu gönderir. Bu küçük iletişim,bir zaafiyet meydana getirir.

Darkside Saldırısı: Sızıntıdan Anahtara Giden Yol
Darkside saldırısı, bir saldırganın hiçbir sektör anahtarını bilmeden sisteme sızmasını sağlayan sofistike bir yöntemdir. Temelinde NACK zafiyeti ve sistemin verdiği tepkileri ölçmek yatar.
Saldırı süreci, kartın okuyucu konumundaki saldırgana bir nt sorgusu göndermesiyle başlar. Saldırgan bu sorguya karşılık rastgele bir yanıt hesaplar ve bunu kendi belirlediği eşlik bitleriyle (parity bits) karta iletir. Şifreleme anahtarına sahip olmayan saldırganın bu eşlik bitlerini doğru tahmin etme ihtimali 1/256’dır. Ancak saldırgan bu ihtimali gerçekleştirip eşlik bitlerini doğru tutturduğunda, asıl şifreleme yanıtı yanlış olsa dahi, kart bu durumu işlerken yapısal bir zafiyet göstererek geriye 4 bitlik şifreli bir NACK kodu döndürür. NACK kodunun standart düz metin (plaintext) hali önceden bilindiği için, saldırgan bu değeri karttan dönen şifreli NACK ile XOR işlemine sokarak şifreleme akışının (keystream) 4 bitini başarıyla deşifre eder. Sonuç olarak, doğru tahmin edilen 8 eşlik biti ile NACK üzerinden çözülen 4 bitin bir araya getirilmesiyle, saldırgan hedef anahtar akışının kritik 12 bitini tamamen elde etmiş olur.
Pratikte ortalama 6 başarılı girişim (yaklaşık 1536 kimlik doğrulama denemesi) saldırganın bu kritik 12 biti elde etmesi için yeterlidir.
Zafiyeti Derinleştiren Faktörler: PRNG ve CRYPTO1
Peki 12 bitlik bir anahtar akışı sızıntısı, 48 bitlik ana anahtarın (master key) bulunmasını nasıl sağlar? Burada MIFARE mimarisindeki iki temel hata devreye girer.
1. Yetersiz Rastgele Sayı Üreteci (PRNG)
MIFARE Classic kartlardaki rastgele sayı üreteci, LFSR mimarisine dayanır. En büyük sorun, üretilen sayıların zamanla doğrudan ilişkili olmasıdır. Kart elektromanyetik alana her girdiğinde aynı iç durumla başlar. Bu yüzden kartın ürettiği nt (nonce tag) değeri, kartın enerjilendiği an ile okuyucunun sorgu attığı zaman aralığına bağlıdır. Zamanlama senkronize edilirse , bir sonraki nt değeri %100 doğrulukla tahmin edilebilir. LFSR’nin düşük entropisi, üretilen sayıların kriptografik açıdan asla yeterince rastgele olmamasına neden olur.
2. CRYPTO1 Algoritması
Darkside saldırısıyla elde edilen 12 bit, MIFARE’in kullandığı CRYPTO1 şifreleme algoritmasının buzdağının görünen kısmıdır. 48 bitlik bir şifreyi sıfırdan brute-force ile kırmak standart donanımlarla uzun sürebilir. Ancak PRNG’nin öngörülebilirliği ve elimizdeki 12 bitlik kesin anahtar akışı bilgisi, bu arama uzayını dramatik şekilde daraltır ve kırma süresini dakikalar seviyesine indirger.
Dahası, CRYPTO1 algoritmasının iç yapısı bugün tamamen tersine mühendislikle çözülmüş durumdadır. Elde edilen NACK bitleri üzerinden istatistiksel analizler yapılarak, algoritmanın 48-bitlik LFSR iç durumu mantıksal olarak geri sarılır. Sistem, tek bir sektörden alınan bu sızıntılarla “Hardnested” gibi gelişmiş vektörler kullanarak diğer tüm sektör anahtarlarını da çözebilir.

Sonuç
Başlangıçta masum görünen 4 bitlik bir NACK hata mesajı ve saate bağımlı çalışan bir rastgele sayı üreteci, sistemin tüm şifreleme kalkanını düşürür ve saldırganın karttaki tüm verilere tam erişim sağlamasıyla sonuçlanır. MIFARE Classic 1K, siber güvenlik dünyasında, ufak bir tasarım hatasının nasıl sistem çapında bir çöküşe yol açabileceğinin örneklerinden biridir.
