Kart Okuyucudan Okunmuş Verilerin Cihazda Şifrelenmesi Yöntemi
Kart Okuyucudan Okunmuş Verilerin Cihazda Şifrelenmesi Yöntemi
Geçiş kontrol sistemi kurarken en çok kaygılandığım konulardan biri, kart verilerinin güvenliğiydi. Kart okuyucudan okunan bilgilerin olduğu gibi iletilmesi, sistemin en zayıf noktasıdır. Bu yazıda, AES algoritması kullanarak verileri okuyucu yazılımında nasıl şifreleyeceğimi sizinle paylaşacağım.
Neden Kart Veri Şifreleme Gereklidir?
Bir kart okuyucusu, kartın üzerindeki bilgileri okuduğunda bu veriyi kontrol paneline iletir. Eğer bu veri şifrelenmemişse, ağ trafiğini izleyen birisi kartınızın numarasını, üzerindeki tüm bilgileri görebilir. Hatta aynı veriyi kullanarak yeni bir kart klonlayabilir. İşte bu nedenle verileri okuyucu seviyesinde şifrelemeye başlamanız gerekir.
Şifreleme işlemini cihazda yapmanın bir başka avantajı, panel tarafında daha az işlem yükü oluşturmasıdır. Yüzlerce okuyucunuz varsa, her birinde şifreleme yapıldığında merkezi sisteminiz rahatlar.
AES Algoritması Nedir?
AES (Advanced Encryption Standard), günümüzde en güvenilir simetrik şifreleme yöntemidir. Simetrik demek, şifreleyen ve çözen tarafın aynı anahtarı kullanması anlamına gelir. AES-256 seviyesinde kullanıldığında, kart verileriniz için yeterli bir güvenlik sağlar.
AES'in güzel tarafı, işlemci tarafından doğrudan desteklenmesidir. Çoğu modern kontrolcü ve bilgisayarın AES işlemleri için özel bir bölümü vardır. Bu sayede şifreleme hızlı ve enerji tasarruflu olur.
Adım Adım Uygulama
Adım 1: Okuyucu Yazılımında Şifreleme Kütüphanesini Entegre Etmek
Okuyucu cihazınızda çalışan yazılıma bir AES kütüphanesi eklemeniz gerekir. Çoğu gömülü sistem platformu (Arduino, Raspberry Pi, STM32 gibi) için açık kaynaklı AES kütüphaneleri mevcuttur. Bu kütüphaneleri projenize dahil edip derlediğinizde, şifreleme fonksiyonlarını kullanmaya başlayabilirsiniz.
Yazılımınız C veya C++ dilinde yazılıyorsa, TinyAES gibi hafif kütüphaneler ideal seçimdir. Bu kütüphaneler çok az bellek kullanırlar ve hızlıdırlar.
Adım 2: Şifreleme Anahtarını Güvenli Şekilde Saklamak
AES şifreleme için 32 baytlık bir anahtar (256 bit) gereklidir. Bu anahtarı okuyucu cihazında sabit olarak kodlamanız büyük bir hata olur. Anahtarı cihazın EEPROM veya güvenli depolama alanında saklamanız gerekir.
Anahtarı oluştururken mutlaka güvenli bir rassal sayı üretecinden faydalanın. Anahtarınız 32 karakterlik bir hexadecimal dizisi olabilir. Bu anahtarı kontrol panelinde de saklamanız lazım; çünkü şifreli veriyi çözmek için aynı anahtara ihtiyacınız olacak.
Adım 3: Kart Verilerini Şifrelemek
Okuyucu kartı okuduğu anda, ham kart numarasını alıp direkt panele göndermek yerine önce şifreleyin. Örneğin, 10 baytlık bir kart numarasını AES-256 ile şifreleyin. Şifrelenmiş veri 16 baytlık bloklar halinde çıkacaktır.
Şifreli veriyi panele gönderirken başına bir başlık eklemeyi tavsiye ederim. Bu başlık, panelin gelen verinin şifreli olduğunu anlamasını sağlar. Örneğin ilk iki bayt "ENC" olarak belirleyebilirsiniz.
Adım 4: Kontrol Panelinde Veriyi Çözmek
Panel, "ENC" başlığını gördüğünde aynı AES anahtarını kullanarak veriyi çözer. Çözdüğü veriyi, veritabanındaki kart listesiyle karşılaştırır ve erişim kararını verir.
Bu işlem için panelin yazılımında da aynı AES kütüphanesinin olması gerekir. Anahtar yönetim rehberinde de anlatıldığı gibi, paneldeki anahtar da güvenli şekilde saklanmalıdır.
Adım 5: İletişim Protokolüne Entegrasyon
Okuyucunuzun panelle iletişim kurarken hangi protokolü kullandığının (Wiegand, RS-485, TCP/IP gibi) önemi vardır. Şifreli veriyi, protokolün desteklediği veri yapısına uygun olarak paketlemeniz gerekir.
TCP/IP üzerinden haberleşiyorsanız, HTTPS kullanmayı da düşünün. Bu durumda hem okuyucu tarafında AES şifreleme hem de iletişim kanalında TLS şifreleme olacak. Çift katman güvenlik sağlar.
Sık Yapılan Hatalar
Anahtarı yazılım koduna yazmak: Kodunuzu git sistemine yükleseniz, anahtarınız herkesin eline geçer. Anahtar, yapılandırma dosyasında veya güvenli depolamada olmalıdır.
Tüm okuyucularda aynı anahtarı kullanmak: Evet, merkezi yönetim kolaydır ama bir okuyucu çalınırsa tüm sistem tehlikeye girer. Mümkünse her okuyucu grubunun veya hatta her okuyucunun kendi anahtarı olmalıdır.
Şifreleme hızını göz ardı etmek: AES hızlı bir yöntemdir ama çok sayıda kart okunması gerekiyorsa (örneğin turnike geçişi), şifreleme maliyetini hesap etmelisiniz. Başarısız şifrelemeler sistemi askıya alabilir.
Anahtarı hiç değiştirmemek: Güvenlik açısından anahtarı periyodik olarak değiştirmeyi alışkanlık haline getirin. En az yılda bir kez yeni anahtar üretin.
Özet
Kart verilerini okuyucu yazılımında AES-256 ile şifrelemedikçe, sisteminiz tam güvenliğe kavuşmaz. Anahtarı güvenli tutmak, şifreleme işlemini doğru uygulamak ve panelde çözmek üç ayağa dayalı bir yapıdır. Hepsi eşit derecede önemlidir.
Başta karmaşık görünse de, adım adım ilerlediğinizde göreceksiniz ki şifreleme entegrasyonu çok da zor değildir. Geçiş kontrol sisteminizde bu seviyede güvenlik uyguladığınız zaman, kart kopyalanması ve yetkisiz erişim olasılıkları minimum seviyeye iner.