Geçiş kontrolünü kendi ellerinizle kurun
Bölümler
Bunlar da ilginizi çeker
Site hakkında
Kartlı geçiş, akıllı kilit ve kapı otomasyonu konularını uygulamalı anlatan bağımsız bir kaynak. Ürün seçiminden kablolamaya, kurulumdan arıza çözümüne kadar adım adım rehberler bulursunuz.

Kart Okuyucudan Okunmuş Verilerin Cihazda Şifrelenmesi

Kart Okuyucudan Okunmuş Verilerin Cihazda Şifrelenmesi

Geçiş kontrol sistemini kendi ellerinizle kurarken, belki de en önemli detaylardan biri okuyucunun içinde sakladığı verinin güvenliğidir. Kart okuyucu, karttan okuduğu bilgileri cihaz belleğinde tutar. İşte tam burada, yetkisiz birinin bu verilere erişmesini önlemek için şifreleme devreye giriyor. Ben bu yazıda, kart verisi şifrelemeyi ve özellikle AES şifrelemasini nasıl uyguladığımı sizinle paylaşacağım.

Başlangıçta, kart verisinin neden şifrelenmesi gerektiğini anlamak önemli. Okuyucu bellekte depolanan kartın benzersiz numarası, dönem bilgisi ve diğer hassas bilgiler, sistem yönetiminin merkezî sunucusuna gelmeden önce bir ara aşamada kalıyor. Eğer birisi okuyucuyu fiziksel olarak ele geçirirse veya haberleşmeyi engellerse, bu veriler açık metin halinde ortaya çıkabilir. Bunun sonucu ise kart klonlaması veya başka sahtekârlık türleridir.

Adım 1: AES Şifreleme Algoritmasını Seçme

İlk olarak hangi şifreleme algoritmasını kullanacağımıza karar verdim. AES (Advanced Encryption Standard), endüstriyel uygulamalarda en yaygın kullanılan ve güvenilir seçeneğidir. 128, 192 veya 256 bit anahtar uzunluklarını destekler. Başlangıçta 128 bit yeterli gelse de, kritik uygulamalarda 256 bit tercih ediyorum.

AES'in en büyük avantajı, hem hız hem de güvenlik arasında mükemmel dengedir. Okuyucu cihazı genellikle sınırlı işlemci gücüne sahip olduğundan, AES gibi hafif ama güçlü bir yöntem tercih etmek gerekir.

Adım 2: Şifreleme Anahtarının Oluşturulması ve Yönetimi

Şifrelemenin en kritik noktası anahtar yönetimidir. Anahtarı nereden alacaksınız? İlk başlarda hata yaptığım yer burasıydı: anahtarı cihazın yazılımında sabit olarak bırakmak. Bu, bulunması çok kolay bir zayıflık yaratır.

Doğru yaklaşım şöyledir: Okuyucuya fiziksel olarak erişimi olan biri bile anahtarı bulamamalı. Bunu sağlamak için:

Yazılım güncellemeleri sırasında anahtarları değiştirmek de iyi bir uygulamadır. Eski anahtarla şifrelenmiş veriler çözülemez hale gelirse, o cihazdan veri çıkarmak neredeyse imkânsız olur.

Adım 3: Verilerin Okuyucuda Şifrelenmesi

Kart okunduğu anda, okuyucu yazılımı hemen şu işlemi yapmalı:

  1. Karttan okuyucu (UID, tanım numarası vb.) çıkar.
  2. Bu veriyi AES algoritması ile, depolanan anahtar kullanarak şifrele.
  3. Şifrelenmiş veriyi bellekte sakla.
  4. Sunucuya göndermeden önce, iletişim kanalı üzerinde yeniden şifrele (opsiyonel ama önerilen).

Okuyucunun işlemci kapasitesi sınırlı ise, şifreleme işlemi yavaş olabilir. Ama bunu tolere etmeye değer, çünkü güvenlik daha önemlidir. Tipik bir kart okuma işlemi birkaç milisaniye sürüyor; şifreleme ekstra 10-50 milisaniye ekleyebilir. Bu fark kullanıcıya hiç hissettirmez.

Adım 4: Anahtar Dosya Biçimi

Anahtarları okuyucuya yüklemek için belli bir biçim seçin. Genellikle ikili (binary) dosya format kullanıyorum, çünkü bu şekilde anahtarı metin editörüyle açıp görmek imkânsız hale gelir. Dosya şu bilgileri içermeli:

Alan Boyut Açıklama
Başlık 4 byte Dosya türünü tanımlayan imza
Versiyon 2 byte Anahtar yönetim versiyonu
Cihaz ID 4 byte Hangi okuyucu için olduğu
Anahtar 32 byte (256 bit) Gerçek şifreleme anahtarı
Kontrol Toplamı 4 byte Dosya bütünlüğü doğrulaması

Adım 5: Bellek Yönetimi

Şifrelenmiş veri bellekte kalırken, asla orijinal (şifresiz) verileri bellekte tutmayın. Kart okuması tamamlandıktan sonra, geçici bellekleri sıfırla. Biraz paranoid gibi gelirse de, bir saldırgan bellek dökümü (memory dump) çekip tüm saklanan verileri bulabilir.

Bellek temizliği için dil kütüphanelerini değil, sistem çağrılarını kullanın. Derleyici optimizasyonları "şifreli verileri saklayan değişkenleri da kopyalamaktan kaçınarak" bellekleri sıfırlamayı atlatabilir. Bunu önlemek için `memset` veya benzeri fonksiyonlar kullanın.

Sık Yapılan Hatalar

Hata 1: Anahtarı kod içinde hardcode etmek. Makine dilinde derlemesi kolay olan yazılımda, anahtarı bulmak birkaç dakika alır.

Hata 2: Aynı anahtarı tüm okuyucular için kullanmak. Bir okuyucudan anahtar sızdırılırsa, tüm sisteminiz çöker.

Hata 3: Şifreleme olmadan iletişim yapmak. Okuyucu şifreli veriyi de şifrelemeden sunucuya gönderse, ortadaki adam (man-in-the-middle) saldırısına açık hale gelir.

Hata 4: Eski şifreleme algoritmaları (DES, MD5) kullanmak. Bunlar artık kırılmıştır. Mutlaka AES tercih edin.

Özet

Geçiş kontrol sistemini kurarken, kart verisi şifrelemeyi hafif almayın. Okuyucuda verileri AES ile şifreleyin, anahtarları güvenli biçimde yönetin ve bellekleri dikkatli temizleyin. Her okuyucu için farklı anahtarlar kullanın, bunları periyodik olarak döndürün ve sunucu iletişimini de şifreleyin. İlk kurulumda biraz daha zaman alırsa da, sonrasında sisteminiz çok daha güvenli olur. Güvenlik, bir kez yanlış yapıldığında çok pahalıya mal olur.

© 2026 MMD Access