215E225 TÜBİTAK 3001 PROJESİ
YÖNTEM
Bu çalışma yapılırken izlenecek olan kuramsal yaklaşım ve yöntemdeki ilk basamak, RFID etiketi üzerinde gerçek rastgele sayı üretimidir. Bilindiği üzere piyasada bulunan etiketlerin mikroişlemcilerine direk müdahale şansı bulunmamaktadır. Bu nedenle çalışmamızda, yazılımına müdahale edebileceğimiz ve donanım tasarımı açık olan WISP (Sample vd., 2008) RFID etiketi kullanılacaktır. WISP etiketi üzerinde rastgele sayı üretimi için kullanılan rand() fonksiyonu bulunmaktadır ancak bu fonksiyonun rastgeleliği çok yetersizdir (Fujdiak vd., 2013). Gerçek rastgele sayı şu yöntemlerle elde edilebilir:
1. WISP 5,0’da yer alan sıcaklık ve ivme sensöründen okunan veriler, gerçek rastgele sayı üretiminde kullanılabilir (Voris vd., 2011). Sıcaklığın çok sık değişmediği durumlarda ve hareket etmeyen cisimler üzerine takılı RFID etiketler için sadece bu iki sensörün kullanımı rastgele sayı üretimi için yeterli olmayacaktır.
2. Sensörlerin yetersiz kaldığı durumlarda WISP üzerindeki MSP430FR5969 işlemcisinin iki farklı saatinden yararlanılabilir. İki farklı saat, iki farklı süreölçere (timer) sinyal üretmek için kullanılmaktadır. SMCLK saati 1, 8, 12 ve 16 Mhz için sıfırlanabilir. Aynı şekilde 12 Khz’de çalışan ACLK saati de sıfırlanabilir. Tüm bu işlemleri yapmak için gerekli yazmaçlar MSP430FR5969 işlemcisinde bulunmaktadır. Temelde 1 Mhz’de çalışan SMCLK saati aslında 0,9 Mhz ile 1,1 Mhz arasında salınım yapmaktadır. Her iki saatin zaman farkı, rastgele sayı üretimi için kullanılabilir (Fujdiak vd., 2013).
3. MSP430FR5969 mikroişlemcisi üzerinde bir adet 12 bitlik analog dijital çevirici (ADC) bulunmaktadır (Şekil 2). WISP üzerindeki kapasitörde biriken voltaj miktarı ADC üzerinden örneklenerek sayısal değer elde edilebilmektedir (Buccini, 2000).
Şekil 2. MSP430 için 12 bit analog dijital çevirici – ADC12 (Westlund, 2006)
Şekil 3. Rastgele sayı üreteçlerinin f fonksiyonu ile birleştirilmesi
Şekil 3’de yeni olarak tanımladığımız rastgele sayı üretecimize ait şema bulunmaktadır. 4 farklı gerçek rastgele sayı üretecinden elde edilen sayılar, belirlenecek bir f fonksiyonu ile yeni bir rastgele sayı üretimi için kullanılacaktır. F fonksiyonu olarak xorshift (Marsaglia, 2003) ya da xorshift+ (Vigna, 2014) gibi hızlı çalışan ve işlemciyi yormayacak bir fonksiyon kullanılacaktır. Buradaki her bir gerçek rastgele sayı üreteci, ayrı ayrı aşağıdaki gibi açıklanmaktadır.
Şekil 4. Sıcaklık sensörünün rastgele sayı üretiminde kullanımı
Şekil 4’de görüldüğü üzere sıcaklık sensöründen ölçümlenen ve 12 bitlik Analog Dijital Çevirici ile elde edilen sayısal değerin en sağdaki bitinin alınması ve bu işlemin 16 kez tekrarlanması ile 16 bitlik bir rastgele sayı üretilebilmektedir.
Şekil 5. İvmeölçer sensörünün rastgele sayı üretiminde kullanımı
Şekil 5’te ise ivmeölçer sensöründen elde edilen bilgiler ile rastgele sayı üretme işleminin adımları gösterilmiştir. Burada öncelikle ivmeölçerden x, y, z koordinat bilgileri alınmaktadır. Bu bilgiler ile Şekil 5’te gösterilen hesaplamalar yapılmaktadır. Hesaplama sonucunda, temp1 ve temp2 gibi iki değer hesaplanarak bu değerler incelenmektedir. Burada tespit edilmek istenen, ilk ölçümleme ile sonraki ölçümleme arasında herhangi bir hareket yakalanması ve bununla rastgele sayının bulunmasıdır.
Şekil 6. Saat farkı ile rastgele sayı üretimi
Şekil 6’da WISP üzerinde mevcut farklı frekanslarda çalışan iki saat üzerinden nasıl rastgele sayı üretileceği gösterilmiştir. Sıcaklık sensöründe olduğu gibi, saat ölçümleri ile oluşan sayının en sağ bitinin (LSB-Least Significant Bit) kullanılması ve bu işlemin 16 defa tekrarlanması ile 16 bitlik rastgele sayı elde edilecektir.
Şekil 7 Voltaj değerinin rastgele sayı üretiminde kullanımı
Şekil 4’de sıcaklık sensörü ile yapılan işlemin aynısı, WISP üzerinde yer alan ve enerjinin depolandığı kapasitör üzerinde voltaj ölçümü yapılarak da sağlanabilmektedir. Şekil 7’de bu işlemin akış diyagramı verilmiştir. 12 bitlik Analog Dijital Çevirici ile 16 kez ölçümleme yapılarak her bir ölçümlemede en sağ bitin alınması ve bundan 16 bitlik bir sayı oluşturulması sağlanacaktır.
Donanımsal yöntemlerle elde edilen gerçek rastgele sayılar, rastgele sayı üretiminde ve kriptografide sınırlı düzeyde kullanılan genetik algoritma (Khan ve Bhatia, 2012) yardımıyla oluşturulacak rastgele sayı için öncelikle tohum üretiminde ardından da genetik algoritmada yeni neslin üretiminde kullanılacaktır. Buradaki amaç, üretilen rastgele sayıların rastgele sayı testlerini geçebilecek şekilde seçilmeleridir. Genetik algoritma işlemi Şekil 8’deki gibi olacaktır.
Şekil 8. Genetik algoritma ile rastgele sayı üretimi işlemi akış diyagramı
Şekil 8’de görülen akış diyagramında, genetik algoritma kullanılarak rastgele sayı üretiminin nasıl yapılacağı gösterilmiştir. Başlangıçta n adet rastgele sayıdan oluşan kromozom oluşturulacak, bu kromozomların her birinin uygunluk (fitness) değerleri hesaplanacaktır. Rulet yöntemi ile oluşan bu nesil üzerinden seçim yapılacak ve sırasıyla çaprazlama ve mutasyon oranlarına bağlı olarak bu işlemler yeni nesilde uygulanacaktır. Bu işlemler sonucunda yeni neslin uygunluk fonksiyonu değerleri de hesaplanacaktır. Sonuç olarak, ön tanım olarak kabul ettiğimiz uygunluk fonksiyonu değerinden daha iyi bir sonuca sahip kromozoma ulaşıldığında işlem durdurulacak ve bir sonraki rastgele sayı olarak bu sayı seçilecek, aksi halde yine önceden belirlediğimiz tekrar sayısı kadar bu işlem tekrarlanacaktır. Herhangi bir adımda koşulumuzu karşılayan bir sonuca ulaşıldı ise işlem durdurulup sonuç bulunmuş olacaktır. Son tekrarda da uygun sonuç (ön tanımlı kritere yakın bir değer) elde edilemedi ise her bir döngüde elde edilmiş kromozomlardan en iyi uygunluk değerine sahip kromozom rastgele sayı olarak belirlenecektir.
Genetik algoritmadaki en önemli adım olan uygunluk fonksiyonu adımları ise şu şekilde olacaktır (Mishra ve Bali, 2013):
1) Öncelikle ilk ve son jenerasyon arasındaki rastgeleliği hesaplamak için Shannon Entropi değeri (H(X)) hesaplanacaktır.
H(X) = -(p* (log2(p)))-((1-p)*(log2(1-p)))
2) Shannon Entropi değeri kullanılarak Ki-Kare (Chi-Square - X^2) değeri hesaplanacaktır.
X^2=(gözlenen_H(X) – beklenen_H(X))2 / (beklenen_H(X))
3) Ki-Kare değeri kullanılarak oto korelasyon katsayısı (autocorrelation coefficient) hesaplanacaktır.
F^2=X^2 / örnek_sayısı
Elde edilen oto korelasyon katsayısı, rastgele sayının seçiminde uygunluk fonksiyonu olarak kullanılacaktır.
Üretilen rastgele sayılar, ENT (Walker, 1998), Diehard (Marsaglia, 1995) ve NIST (Rukhin vd., 2010) rastgele sayı testlerinden geçirilecek test edilecektir. Donanımsal rastgele sayı kaynakları ve genetik algoritmada yeni neslin üretimi, rastgele sayı testlerinden gelen sonuçlara göre şekillendirilecek, başarılı sonuçlar elde edilene kadar donanımsal rastgele sayı üretimi ve genetik algoritma üzerinde iyileştirmeler yapılacaktır. Ardından, günümüz sistemlerinde güvenli kabul edilen ve WISP üzerinde donanımsal olarak da yer alan AES şifreleme algoritması ve üretilen rastgele sayılar kullanılarak RFID etiket ve okuyucu arasında kimlik doğrulama protokolü EPC Gen-2 standardında yer alan kimlik doğrulama protokolü (Bölüm 3 – Şekil 1) dikkate alınarak geliştirilecektir. Geliştirilen protokolün güvenlik analizinde şu saldırılar incelenecektir:
Senkronizasyon kaybı (De-synchronization) saldırısı: Taraflardan birinin (okuyucu ya da etiket) ortak bazı değerleri güncellemesine karşın diğerinin güncellememesidir. Bu işlemin sonucunda, taraflar bir sonraki iletişimde farklı değerler üzerinden haberleşecekleri için iletişim kuramazlar. Bu saldırının önüne geçilebilmesi, taraflardan birinin ortak değerler üzerinde yaptığı güncellemenin diğer tarafın da yaptığından emin olmasıyla sağlanır.
Yeniden gönderme (Replay) saldırısı: Etiket ve okuyucu arasında havadan iletilen mesajlar, saldırgan tarafından kopyalanıp saklanarak yeni bir iletişimde aynen kullanılabilir. Bu saldırıya karşı zaman bilgisinin mesajlara eklenmesi, tek kullanımlık rastgele bir sayının kullanımı (nonce) gibi çözümler bulunmaktadır.
Herşeyin ifşa edilmesi (Full disclosure) saldırısı: Bu saldırı etiketteki tüm verilerin, gizli veriler dâhil, saldırgan tarafından ele geçirilmesidir. Bu saldırıyı engellemek için okuyucu ve etiket arasındaki iletişimde gizli tutulması gereken verilerin güvenli şifreleme algoritmalarından biriyle şifrelenip iletilmesi gerekir.
Kimlik izleme (Identity Tracing): Bu saldırı, etiketin kullanıcının isteği dışında takip edilmesidir. Bu saldırının gerçekleşebilmesi için her bir etiketin birbirinden farklı olan elektronik ürün kodunun (EPC) saldırgan tarafından ele geçirilmiş olması gerekir. Bu saldırının engellenmesi için elektronik ürün kodu hiçbir zaman etiket ile okuyucu arasında açık (şifresiz) bir şekilde paylaşılmaz, etiketin ayırt edilebilmesi için her defasında değişen bir kimlik numarası kullanılır.
Klonlama (Clone) saldırısı: Etiketin birebir kopyasının çıkartılmasıdır. Bu saldırının gerçekleşebilmesi için etiketin tüm gizli alanlarının saldırgan tarafından okunmuş olması gerekir. Etiket üzerinde belirli veriler gizli tutulabildiği sürece bu saldırının önüne geçilebilir. Herşeyin ifşa edilmesi saldırısı engellendiği sürece bu saldırı da engellenmiş olacaktır.
Günümüzde halen RFID kimlik doğrulama protokolleri geliştirilmeye devam edilmekte olup, yapılan çalışmalar çoğunlukla teorik olarak ispatlanmakta, uygulaması yapılmamaktadır (Gope ve Hwang, 2015; Li vd., 2014; Srivastava vd., 2015). Geliştireceğimiz protokol sadece kuramsal olarak geliştirilmeyecek, ayrıca RFID etiketi üzerinde de kodlanarak test edilecektir. Bu amaçla, Washington Üniversitesi araştırma laboratuvarlarında 2014 Ekim ayında kısıtlı sayıda üretilmiş olan WISP 5,0 (WISP, 2014) donanımından araştırmalarımızda kullanmak üzere 2 adet ilgili geliştiricilerle iletişime geçerek edinmiş durumdayız. Ayrıca, WISP üzerinde programlama yapabilmek için “JTAG debugger” cihazını da temin etmiş durumdayız. Rastgele sayı üretimi ve genetik algoritmanın kodlanması WISP ve JTAG debugger aracılığı ile gerçekleşebilmektedir. Kimlik doğruluma algoritması WISP üzerinde kodlandıktan sonra testler şu an elimizde bulunmayan RFID okuyucu ve WISP arasındaki iletişim kurularak yapılacaktır.
Projede uygulanacak yöntemlerle ilerleme kaydedilememesi durumunda devreye sokulacak alternatif yöntemler: Projenin başlangıç noktasında gerçek rastgele sayı kaynağından gelen verilerin rastgele sayı özelliğini tam olarak taşımaması durumunda, kullanılan rastgele sayı kaynakları çeşitlendirilecek, bu sayıların birlikte kullanımını sağlayan farklı yöntemler izlenecektir. Ayrıca, kullanılacak olan AES şifreleme algoritmasının gerekli görüldüğü takdirde mesaj doğrulama kodu olarak kullanılması da düşünülmektedir. Rastgele sayı üretiminin son aşaması olan genetik algoritma gerek sistem kaynaklarının azlığı gerekse de süre yönünden başarısız sonuçlar üretebilir, bu durumda uygunluk fonksiyonu ve genetik algoritma üzerinde modifikasyonlar yapılacaktır. Güvenli analizi sırasında geliştirilecek protokolde çıkabilecek açıklar bilinen yöntemlerle giderilemediği takdirde, güncel literatür taraması yapılarak yeni yöntemler geliştirilerek giderilecektir.