İzleyiciler

13 Eylül 2008 Cumartesi

PYIK ve Donanımsal Güvenlik

Bilkent Hidromobil takımında yaptığım sıradan 7 segmentli ekranların bulunduğu bir nevi ufak araç bilgisayarı bize yetmedi hem de görünüm bakımından bize pek tat vermedi.Biz de yeni çıkan eepc serilerinden birini alıp içine bir linux dağıtımı kurduktan sonra çevresel arabirimlerden(sensörler,GPS vs) bir mikrodenetleyici ve usb aracılığıyla bilgiyi nasıl elde edip hoş bir arayüz tasarlarızı düşündük.Önümüze çıkabilecek en büyük engellerden birisi de bir programlama dilini kullanarak USB'den veri okuyup göndermek.Aslında komplex bir iş fakat uzun araştırmalar sonucunda Microchip firmasının PIC18 serisi ürünlerinin USB portlarının bulunduğu bilgisini elde ettik fakat bu durum bilgisayar tarafında USB'den bilgi okuma/gönderme gerektiren kütüphaneleri elde etmekte sıkıntı olacağını düşündük.Bu işi seri portla yapsaydık ne kadar kolay olurdu derken FTDI çipleri ile tanıştık. FTDI çipleri aslında çokça kullanılan çiplerden ve biz bu çipi mikrodenetleyici ve bilgisayarın USB portları arasında kullanmayı düşünüyoruz.Peki bu bize ne sağlayacak?Her iki tarafta da seri porttan bilgi okur/yazar gibi yapıp aslında USB protokolunu kullanmamızı sağlayacak.Böylelikle iki tarafta da işimiz çok kolaylaşmış olacak. Hidromobil ile ilgili bazı fikirler üretirken biz bu FTDI/Mikrodenetleyici ikilisini güvenlik adına kullanabilirmiyiz gibi bir fikir oluştu, peki nasıl?Mesela şu anda arkadaşlarım ile üzerinde çalıştığımız PYIK(Python ve Django ile insan kaynakları yönetim projesi) projesinde,proje ile ilgili ayarların saklandığı settings.py isimli dosyamızda Django'nun oluşturduğu bir secret key bulunmakta. Django bunu büyük ihtimalle kriptolama işlemlerinde kullandığını düşünüyorum çünkü kimseyle bu şifreyi paylaşmamamız yönünde uyarısı bulunmakta, aynı zamanda biz bu secret key'i kullanıcı hesabı aktifleştirmede de kullanıyoruz fakat secret key'i bilgisayarın herhangi yerinde saklamak yerine mikrodenetleyicide saklamak ve kripto ile yapılan kontrolleri yine mikrodenetleyicinin yapması yönünde. Örnegin biz PYIK projesinde;kullanıcı aktivasyonu için mail ile bir link yollayacağız, www.pyikonline.net/username=egemen&activation=527d7b1913b9536011b942add7f93151. Bu activation nedir acaba? diyenleriniz olabilir.Activation md5 ile kullanıcı isminin yani bu örnekte egemen textinin kriptolanıp bir kere daha bizim secret key ile kriptolanma sonucu oluşan bir text. Kullanıcı bu linke tıkladığında kullanıcı ismini ve activation anahtarını alıp,aldığımız kullanıcı ismini md5 ile kriptoladıktan sonra settings.py içerisindeki secret key ile bir kere daha kriptolayıp kullanıcıdan gelen activationu karşılaştırıp ona göre kullanıcıyı aktif yapacak.İşte bu noktada sisteme sızılma halinde secret keyimiz elde edilmiş olacak bu da bize çeşitli sorunlar teşkil edebilir.Fakat bu işi mikrodenetleyici ile yapsaydık şöyle olurdu; Mikrodenetleyiciye hesabı aktif edilmek istenen kullanıcının biraz önceki örnekteki gibi activation anahtarı ve aktive olmak isteyen kullanıcının adı gelecek.Mikrodenetleyici içerisinde kullanıcı adı, md5 ile kriptolanıp ardından secret key ile bir kere daha kriptolanıp activation ile karşılaştırılacak.Eğer ki sonuç doğru ise 1 yanlış ise 0 döndürecek.Böylelikle secret key'i donanımsal bir koruma altına almış olacağız fakat bunun da her güvenlik sisteminde olduğu gibi bazı dezavantajları da var elbette, örneğin hız gibi; mikrodenetleyiciler genelde 20-100mhz civarı gibi hızlarda çalıştığı için sistem başlı başına yavaşlar ama sonuçta hem çok ucuz hem de güvenli bir sistem elde etmiş oluruz:)Sağolsun Emre ile kriptolama yöntemleri ile ilgili bazı şeyleri konuştuktan sonra birçok işlemi mikrodenetleyici ile gerçekleştirebileceğimin farkına vardım. Bu konuda daha çok bilgi sahibi olup farklı fikirlerimi gerçekleştirmek istiyorum.Tabi bunun için çokça okumak gerekiyor:)

Hiç yorum yok: