Internet of Things kavramının tarihine baktığımızda ilk olarak 1999 yılında Kevin Ashton tarafından kullanıldığını görüyoruz. “Fiziksel nesnelerin birbirleriyle ya da daha büyük sistemlerle bağlantılı olduğu iletişim ağı” şeklinde bir tanıma sahip olan Nesnelerin İnterneti, en sadeleşmiş ifadeyle nesnelerin internete bağlı olup birbirleriyle etkileşim içinde olması anlamına geliyor. Nesnelerin İnterneti için kullanılan iletişim protokollerini değerlendirdiğimizde, bu protokollerin ortaya çıkmasında önemli rolü olan IEEE 802.15.4 standartıdır. Bu standart, noktadan noktaya iletişim ve yıldız topolojisini kullanarak dizayn edilmiştir. Bu topolojide merkezde bir koordinatör cihaz vardır ve diğer tüm cihazdan noktadan noktaya iletişim ile koordinatörle bağlantı kurar. Mesajlar, koordinatör cihaz üzerinden gönderilir. Ayrıca, düşük hızlı ve düşük güç tüketimine uygun ortamlar için kullanımı ideal olan bir standarttır.
ZigBee, IEEE 802.15.4 standardına uyularak yapılan düşük hızlı kablosuz kişisel alan ağları protokolüdür. ZigBee, düşük oranda veri kullanımı için, minimum düzeyde güç tüketimini hedefleyen bir prensibe dayanır. Veri alışverişi olmadığı zamanlarda, cihazların ve koordinatörün kendini uyku moduna alması ve büyük boyutta veri gönderilmemesi, düşük güç tüketimini sağlar. Güvenlik açısından temel olarak iki algoritma kullanılır: İleri düzeyde Şifreleme Standardı -AES- ve Mesaj Denetleme Kodu -MAC- AES algoritmasında, şifrelemede sıklıkla kullanılan simetrik anahtar algoritması kullanılır. Yani, alıcı ve verici mesajı şifrelemek ya da çözmek için, aynı anahtarı kullanır. Bu anahtar sadece onlarda bulunmalıdır. ZigBee protokolünde AES, genellikle 128 bitlik anahtar ile kullanılır. AES, yerine koyma yani permutasyon ağı üzerine temellendirilmiştir. 128 bit yerine 16 byte olarak düşünülen şifrelenmemiş mesaj, 4×4 lük bir matris yardımıyla, belli bir matematiksel formül kullanılarak şifrelenir. Her döngüde farklı bir döngü anahtarı kullanılır. Mesajı çözümlerken, uygulanan matematiksel formüller tersten uygulanır. Bu yüzden, şifreleme ve çözümleme algoritmaları ayrı şekilde kodlanmalıdır.
MAC, oturum anahtarı kullanarak, bilgi üzerinde kriptografik denetleme sağlayan ve gönderilen mesajdaki bilinçli ya da bilinçsiz değişimleri tespit eden bir algoritmadır. MAC’de şifrelenmemiş mesaj bloklara bölünür. Ve gizli olmayan, rastgele bir başlangıç vektörünün ilk blok ve bir anahtar ile şifrelenmesiyle oluşan çıktı, ikinci blokla birlikte şifrelenmek için girdi olarak kullanılır. Şifrelemede, XOR işlemi kullanılır. Buna Blok zincirleme modu denir. Şifre çözümünde ise, aynı anahtarla işlemler uygulanır ve sonuçların aynı olup olmadığı kontrol edilir. Eğer sonuçlar farklı ise, mesajın ya da MAC değerinin manipüle edildiği sonucuna varılır.
ZigBee, bu algoritmaların yanında, ekstra güvenlik yöntemlerini destekler. Böylece, üç farklı çeşit anahtar (ana -master-, bağlantı -link-, ve ağ -network- anahtarları) noktalar arası güvenliği sağlamak için kullanılır. Ana anahtar, tedarikçi tarafından her cihaza önceden yerleştirilmiş olup, iki ZigBee cihazı arasındaki anahtar değişim işleminde korumayı sağlar. Ana anahtardan elde edilen bağlantı anahtarı, her çift cihaz için özel ve farklı olup, iki cihaz arasındaki bütün bilgileri şifreler ve korur. Bu sebepten dolayı, daha fazla hafıza yeri gerektiğinden, IoT cihazlarına uygun değildir ve kullanımı yok denecek kadar azdır.
Ağdaki tüm cihazlar arasında paylaşılan ağ anahtarı, ağa girebilmek için bu cihazlar için bir koşuldur. Güvenlik merkezi tarafından üretilen bu anahtar, tüm cihazlara dağıtılır. Ayrıca güvenlik merkezinin takip ettiği iki ana güvenlik yolu vardır: ana ve bağlantı anahtarlarını tüm cihazlara yayan, yüksek miktarda kaynağa ihtiyaç duyan Commercial (yüksek seviyede güvenlik) modu ve sadece ağ anahtarını yayan Residential modu (standart modda güvenlik). Mesela, Commercial modu kullandığımızda, ağ anahtarını ana anahtarı kullanarak şifreleyebilir ve böylece cihazlar arası güvenli iletişimi sağlayabiliriz. Eğer Residential mod kullanılırsa, bu kez ağ anahtarı şifrelenmemiş bir şekilde yayılacağından, güvenliğinin sağlanması kritik olan sistemlerde, bu modun kullanılması önerilmez.


Zigbee ile ilgili bu kadar teknik detay ve bilgi verdikten sonra şimdi ZigBee için yapılabilecek başlıca saldırıları hep birlikte inceleyelim.
1) Same-Nonce Saldırısı
AES ve CBC algoritmalarının birleşimiyle oluşan AES-CBC yönteminde kullanılan 4 ana unsurdan biri nonce dur. Nonce, İngilizce Number only used once (Sadece bir kere kullanılan sayı), istenilen blok özetleme değerini üretmek amacıyla kullanılan ve değiştirilebilen sayı değeridir. Mesela aynı mesajları şifrelerken aynı anahtarı kullanmamıza rağmen, farklı şifrelenmiş mesajlar oluşur çünkü kullanılan noncelar sadece o şifrelemeye özeldir. Buna mantıksal veya anlamsal güvenlik de denir. Eğer herhangi bir nedenden dolayı, erişim kontrol listesi aynı nonce’u ve aynı anahtarı birbirini takip eden iki mesaj için sağlarsa, saldırgan mesaj hakkında birtakım bilgiler elde edebilir. Fakat saldırgan iki ayrı şifrelenmiş mesaj için kullanılan anahtarın ve nonce’un aynı olduğundan emin olmalıdır. Emin olduktan sonra, algoritmanın çözümleme yöntemini kullanarak, XoR işlemi operasyonlarıyla mesajı elde edebilir.

2) ZED Saldırısı
Sensörleri ve IoT uç cihazlara düzenli bir şekilde özel bir sinyal göndererek, bataryanın bitirilmesi yöntemiyle yapılan saldırı türüdür. Veri alışverişi yapılmadığı zamanlarda kendisini uyku moduna alan IoT cihazların devamlı olarak aktif halde tutulmasıdır. Eğer mesaj bütünlüğü yoksa, iletilen mesajlar şifreli olsa bile ZigBee ağı DoS saldırılarına tamamiyle açıktır. ZED saldırısını daha detaylı olarak anlatmak gerekirse; saldırgan, gizli anahtarı bilmeden şifrelenmiş rastgele içerikli bir mesaj oluşturur ve resim karesi sayacını (frame counter) maximum değere eşitler. Saldırgan bu mesajı IoT cihazına gönderir. IoT cihazı üst protokol katmanı için bir anlam ifade etmeyen bu rastgele mesajı çözümler. Bu sırada saldırgan resim karesi sayacı (frame counter) ile, ulaşabileceği en yüksek noktayı (high-water mark) maximuma eşitlemiştir. Bu saldırıdan sonra gelecek tüm normal verileri cihaz reddedecektir çünkü gelen mesajın sayacı, saldırgan tarafından manipüle edilen en yüksek noktadan daha aşağıda olacaktır.
3) Ağı Keşfetme ve Cihaz Tanımlama Saldırısı
Ağ keşfetme sürecinde, ZigBee cihazları bir kanal üzerinden kontrol ışığını yakmak için istek gönderirler. Bunun sonucunda, bu isteği alan yönlendiriciler ve koordinatörler, cevap verirken, bazı önemli bilgileri açık hale getirir. Bu ağ keşfetme yönteminde, KillerBee yazılımını bir AVR RZ Raven USB’e kurup, diğer AVR RZ Raven USB cihazına kurduğumuz RZUSB yazılımı ile birlikte taklit etmek mümkündür. RZUSB yazılımı ile, yanıltma uygulanırken, KillerBee yazılımı ile paket enjekte edilir. Benzer bir istek oluşturulur ve KillerBee’nin zbstumbler aracı kullanılarak, koordinatörler ve cihazlar hakkında önemli bilgiler elde edilir. Ağın bir kanalını yakalayan saldırgan, artık gönderilen paketleri yakalamak için saldırı oluşturmaya hazırdır.
 
 
4) Paketleri Yakalama SaldırısıZigBee ağları, çoğunlukla şifreleme kullanmadığından dolayı ağ trafiğini ve önemli bilgileri elde etmek paketleri yakalama yöntemiyle mümkündür. KillerBee’nin zbdumps aracıyla bu trafiği elde edilir ve kaydedilir. Tekrarlama saldırıları ile trafikte elde edilen paketleri manipüle edip, istediğimiz işlemleri yapma hakkına erişebiliriz.
 
 
5) Fiziksel SaldırılarBunların dışında ZigBee IoT cihazlarına fiziksel bir saldırının gerçekleştirilmesi de mümkündür. Önemli ve kritik yerlerin güvenliğinde kullanılan ZigBee’ye yönelik bu tür saldırıları önlemek için, kolayca erişilemeyen yerlere yerleştirilmelidir ve izinsiz girişleri tespit eden ve önleyen güvenlik mekanizmaları ile korunmalıdır.