Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 1736
Usporedba mehanizama zaostvarivanje sigurne komunikacijeu bežičnim senzorskim mrežama
Borna Sirovica
Zagreb, lipanj 2018.
i
iii
SADRŽAJ
Uvod 1
1. Bežične senzorske mreže i internet stvari 21.1. Bežične tehnologije WSN-a . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1. IEEE 802.11 WiFi standard . . . . . . . . . . . . . . . . . . 4
1.1.2. IEEE 802.15.4 bežični standard . . . . . . . . . . . . . . . . 6
1.1.3. Bluetooth i Bluetooth Low Energy (BLE) standardi . . . . . . 7
1.1.4. LoRaWan bežična tehnologija . . . . . . . . . . . . . . . . . 7
1.2. Integracija bežičnih senzorskih mreža s internetom . . . . . . . . . . 8
1.2.1. TCP/IP stog . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2. 6LoWPAN standard . . . . . . . . . . . . . . . . . . . . . . 12
2. Sigurnost u bežičnim senzorskim mrežama 132.1. Sigurnosni zahtjevi . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Sigurnosne ranjivosti . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1. Napadi na fizičkom sloju i sloju podatkovne poveznice . . . . 15
2.2.2. Napadi na mrežnom sloju . . . . . . . . . . . . . . . . . . . 16
2.2.3. Napadi na transportnom sloju . . . . . . . . . . . . . . . . . 16
2.3. Sigurnosni mehanizmi . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1. Simetrična kriptografija . . . . . . . . . . . . . . . . . . . . 17
2.3.2. Kriptografija javnog ključa . . . . . . . . . . . . . . . . . . . 18
2.3.3. Mehanizmi kontrole ključeva u WSN-u . . . . . . . . . . . . 19
3. kriptografski protokol SSL/TLS 203.1. Skup protokola SSL/TLS stoga . . . . . . . . . . . . . . . . . . . . . 21
3.1.1. Protokol rukovanja . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.2. Protokol zapisa . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2. RSA algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
iv
3.2.1. Metode optimizacije . . . . . . . . . . . . . . . . . . . . . . 28
3.3. HMAC algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4. Implementacija i analiza sigurnosnih mehanizama u bežičnoj senzorskojmreži 314.1. Dizajn sustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.1. Opis korištenog sklopovlja . . . . . . . . . . . . . . . . . . . 32
4.1.2. Sigurna mrežna komunikacija . . . . . . . . . . . . . . . . . 34
4.2. Korištena programska podrška . . . . . . . . . . . . . . . . . . . . . 36
4.2.1. Razvojno okruženje . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2. Programska podrška za spajanje Arduina na internet . . . . . 36
4.2.3. Programska podrška za implementaciju sigurnosnih primitiva 37
4.3. Rezultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.1. Analiza RSA algoritma . . . . . . . . . . . . . . . . . . . . . 40
4.3.2. Analiza HMAC, SHA algoritama . . . . . . . . . . . . . . . 42
4.3.3. Analiza AES algoritma . . . . . . . . . . . . . . . . . . . . . 42
4.3.4. Svojstva komunikacije sigurnim kanalom . . . . . . . . . . . 43
5. Zaključak 44
Literatura 45
v
Uvod
Bežične senzorske mreže (WSN - wireless sensor network) računalne su mreže
prostorno raspodijeljenih autonomnih elektroničkih ured̄aja ograničenih resursa koji
koriste senzore za prikupljanje različitih vrsta informacija iz okoline u kojoj se nalaze.
Svoju popularnost bežične senzorske mreže mogu zahvaliti cjenovnoj isplativosti
senzorske arhitekture, niskoj potrošnji energije senzorskih čvorova, razvoju
ugradbene (embedded) elektronike i napretku bežičnih tehnologija koje su im otvorile
vrata široke primjene u raznim industrijama (vojna, medicinska, prometna, itd.),
praćenju stanja okoliša (temperatura, pritisak, vlaga, detekcija požara i prirodnih
katastrofa, itd.), nadzoru zgrada i objekata, sustavima pametnih kuća (smart homes) i
gradova (smart cities), itd.
Ovako široko i neograničeno područje primjene bežičnih senzorskih mreža podiže
pitanje sigurnosti podataka i komunikacije izmed̄u čvorova čija resursna ograničenost
u vidu procesorskih, memorijskih i energetskih kapaciteta uvelike otežava
implementaciju tradicionalnih sigurnosnih mehanizama što često rezultira
zanemarivanjem komunikacijske sigurnosti. Usprkos navedenim ograničenjima
zanemarivanje sigurnosti komunikacije, u vremenu kada vrijednost podataka raste iz
dana u dan, nije prihvatljivo rješenje, stoga je razvoj sigurnosnih mehanizama
prilagod̄enih resursnim ograničenjima nužan kako bi se ostvarila odred̄ena razina
zaštite komunikacije ovisno o domeni primjene i osjetljivosti podataka koji se
razmjenjuju.
U prvom poglavlju ovog diplomskog rada detaljno su opisane bežične senzorske
mreže u kontekstu interneta stvari (IoT - internet of things). Drugo poglavlje
predstavlja problematiku sigurnosti u WSN-u, treće se bavi kriptografskim
protokolom SSL/TLS, a četvrto implementacijom i analizom sigurnosnih
mehanizama protokola SSL/TLS u komunikaciji dva Arduino ured̄aja preko
internetske veze.
1
1. Bežične senzorske mreže i internetstvari
Bežične senzorske mreže tipično su sastavljene od više senzorskih čvorova i mrežnog
pristupnika (network gateway) često nazvanog i bazna stanica (base station) (slika
1.1). Čvorovi očitavaju podatke iz okoline i komuniciraju med̄usobno ili s
pristupnikom preko radio valova. Pristupnik je ured̄aj puno većih energetskih,
procesorskih i komunikacijskih kapaciteta koji predstavlja sučelje WSN-a prema
krajnjim korisnicima i najčešće je zadužen za spremanje i prosljed̄ivanje podataka
prema poslužitelju preko internetske veze. Kako je naglasak ovog rada stavljen na
ispitivanje procesorskih, memorijskih i komunikacijskih kapaciteta ograničenih
čvorova prilikom implementacije kriptografskih algoritama protokola SSL/TLS,
pristupnik će, u implementacijskom primjeru iz četvrtog poglavlja, imati isključivo
ulogu usmjerivača (router) koji će prosljed̄ivati poruke izmed̄u dva čvora preko
internetske veze. Na taj način teret implementacije TCP/IP protokolarnog stoga past
će na same čvorove.
Slika 1.1: Arhitektura bežične senzorske mreže [1]
2
Svaki čvor WSN-a uobičajeno je sastavljen od jednog ili više senzora,
mikrokontrolera, primopredajnika, vanjske memorije i izvora napajanja (slika 1.2).
Slika 1.2: Arhitektura čvora u WSN-u [2]
Senzori unutar čvora iz okoline očitavaju promjene fizičkih uvjeta poput
temperature, vlage ili tlaka te na osnovu očitanja stvaraju mjerljiv podatak u obliku
analognog signala kojeg analogno digitalni pretvarač pretvara u digitalni oblik i šalje
prema mikrokontroleru na daljnju obradu. Mikrokontroler predstavlja elektronički
mozak cijelog čvora kojeg čini procesor (CPU) zajedno s memorijom (Flash i RAM),
a zadužen je za kontrolu senzorskih očitanja, upravljanje potrošnjom energije,
interakciju s fizičkim slojem radio veze i implementaciju komunikacijskih protokola
za prijenos podataka radio vezom. Za samu bežičnu komunikaciju zadužen je
primopredajnik koji ima sposobnost primanja i slanja digitalnih podataka radio
valovima. Bežična komunikacija predstavlja najveći energetski trošak kod rada
senzora, stoga je bitno odabrati optimalan izvor napajanja ovisno o vrsti bežične
komunikacije koja se koristi u mreži. Sljedeće potpoglavlje detaljnije će opisati
najčešće korištene bežične komunikacijske tehnologije WSN-a koje pokrivaju fizički
sloj i sloj podatkovne poveznice unutar ISO/OSI referentnog modela.
1.1. Bežične tehnologije WSN-a
Da bi uopće mogli govoriti o bežičnim senzorskim mrežama u kontekstu interneta
stvari, senzori moraju imati sposobnost bežičnog prijenosa podataka prema drugim
čvorovima, odnosno pristupniku lokalne senzorske mreže. Bežični prijenos nije
jednoznačno odred̄en i tehnologije se mogu razlikovati po mnoštvu parametara kao
3
što su potrošnja energije, domet, raspon radijskoga spektra, propusnost, cijena,
sigurnost, itd. U nastavku će biti opisane najpopularnije bežične tehnologije (slika
1.3) čiji ubrzani razvoj omogućava i najprimitivnijim elektroničkim ured̄ajima
povezivanje u heterogenu i sve rašireniju mrežu interneta stvari.
Slika 1.3: Usporedba bežičnih tehnologija prema dometu i propusnosti
1.1.1. IEEE 802.11 WiFi standard
WiFi tehnologija danas je najraširenija bežična tehnologija koja je postala sinonim za
pristup internetu preko bežične pristupne točke i spajanje u lokalnu bežičnu mrežu
(WLAN - Wireless Local Area Network). WiFi je zapravo popularni naziv za IEEE
802.11 standard koji je zbog svoje raširenosti i konstantnog razvoja u posljednjih 20
godina logičan odabir za bežičnu komunikaciju senzorskih čvorova s ciljem pristupa
internetu. Iako WiFi generalno uzrokuje povećanu potrošnju energije i manji domet
signala za cijenu veće propusnosti u odnosu na ostale navedene bežične tehnologije,
najnovije verzije protokola usmjerene su na smanjenje potrošnje i primjenu u
mrežama limitiranih kapaciteta. Kronološki popis verzija 802.11 standarda i njihovih
karakteristika dan je u sljedećem odlomku [3]:
• 802.11a - Standard razvijen 1999. godine koji koristi frekvencijski spektar upojasu od 5GHz što mu omogućava veću propusnost do 54Mbp/s, ali smanjuje
domet i otpornost signala. Frekvencijski pojas oko područja od 5GHz manje je
4
zasićen i smanjuje utjecaj interferencije radio signala ostalih potrošačkih
elektroničkih ured̄aja koji uglavnom rade na frekvencijama od 2.4GHz.
• 802.11b - Standard iz 1999. godine s propusnošću do 11Mbp/s ifrekvencijskim rasponom oko frekvencije od 2.4GHz, ali većim dometom i
otpornijim signalom od 802.11a standarda. Frekvencijski pojas oko područja
od 2.4GHz zbog zasićenosti povećava mogućnost interferencije signala.
• 802.11g - Verzija razvijena 2003. godine koja kombinira najbolje od prethodnih802.11a i 802.11b verzija i nudi propusnost do 54 Mbp/s u frekvencijskom
pojasu oko 2.4GHz koji osigurava otpornost signala i veći domet.
• 802.11n - Standard iz 2009. godine koji proširuje propusnost kanala s 20MHzu prijašnjim verzijama na 40 MHz i prvi implementira MIMO tehnologiju koja
koristi više antena kako bi stvorila veći broj tokova unutar jednog kanala kojima
signal može putovati izmed̄u prijamnika i predajnika. Navedeni noviteti donose
značajno poboljšanje propusnosti u rasponu od 54 Mbit/s do 600 Mbit/s na
frekvencijama oko 2.4GHz ili 5GHz.
• 802.11ac - Standard objavljen 2013. godine koji dodatno proširujefrekvencijski raspon kanala na 80 ili 160 MHz te povećava maksimalan broj
paralelnih tokova signala unutar jednog kanala s 4 na 8 te tako omogućuje
brzine prijenosa od 400Mbp/s do 3.5Gbp/s u frekvencijskom pojasu oko 5GHz
što mu smanjuje domet u odnosu na frekvencijski raspon.
• 802.11ah - Jedan od najnovijih IEEE 802.11 standarda objavljen 2017. godinekoji nadomješta nedostatke povećane potrošnje energije, manjeg dometa (slika
1.4) i slabije otpornosti signala prisutne u prethodnim verzijama. Navedeni
nedostaci posebno štete ured̄ajima poput senzorskih čvorova, stoga je ovaj
standard ciljano razvijen za potrebe IoT koncepta. Bežični signal prenosi se na
nižim, manje zasićenim i otpornijim frekvencijama oko 900MHz preko kanala
širine 1, 2, 4, 8 ili 16MHz uz propusnost od 150Kpb/s do 40Mbp/s.
5
Slika 1.4: Usporedba 802.11 bežičnih standarda po dometu [4]
1.1.2. IEEE 802.15.4 bežični standard
IEEE 802.15.4 najrašireniji je standard bežičnih personalnih mreža niske brzine
prijenosa podataka (LRWPAN - Low-Rate Wireless Personal Area Networks) koje u
odnosu na WLAN, uz nižu propusnost, imaju i manji domet uz iznimno nisku
potrošnju energije. Ove karakteristike 802.15.4 standard čine vrlo privlačnim za
primjenu u WSN mrežama. Frekvencijski raspon koji 802.15.4 podijeljen je na
sljedeća tri spektra [5]:
• 868 - 868.6 MHz - Frekvencijski raspon korišten u Europi u kojem se zaprijenos signala koristi amo jedan kanal širine 600kHz što rezultira najmanjom
brzinom prijenosa podataka do 20kbit/s.
• 902 - 928 MHz - Frekvencijski raspon namijenjen Americi koji koristi 10kanala širine 2MHz s ukupnom brzinom prijenos podataka do 40kbit/s.
• 2.4 - 2.4835 GHz - Frekvencijski raspon dostupan u cijelom svijetu. Zaprijenos signala koristi se 16 kanala širine 5MHz koji omogućavaju ukupnu
brzinu prijenosa podataka do 250kbit/s.
Svi navedeni frekvencijski rasponi bazirani su na DSSS (Direct Sequence Spread
Spectrum) tehnici širenja spektra koja svaki bit informacije modulira s 4 različita
signala čime zauzima veći dio spektra za slanje, ali smanjuje utjecaj šumova i
interferencija ostalih radio signala. Standard 802.15.4 najčešće se spominje u
kombinaciji s protokolom ZigBee koji gradi pouzdan mrežni sloj nad slojem
podatkovne poveznice i dodaje mu usluge enkripcije podataka, autentifikacije
čvorova, protokola usmjerivanja i grupiranja čvorova ovisno o njihovoj primjeni.
6
1.1.3. Bluetooth i Bluetooth Low Energy (BLE) standardi
Bluetooth je standard kratkodometnog bežičnog prijenosa podataka radiovalovima na
frekvencijama izmed̄u 2.4 i 2.485 GHz koji je glavnu primjenu našao u izgradnji
WPAN mreža. U kontekstu interneta stvari najzanimljivija je BLE verzija standarda
koja je prilagod̄ena smanjenoj potrošnji energije, a ono što ju čini još popularnijom u
IoT aplikacijama je integriranost s ured̄ajima poput pametnih telefona koji mogu
čvorovima pružiti pristup internetu. BLE, uz nisku potrošnju energije, pruža nešto
veću propusnost (oko 270kbp/s) od IEEE 802.15.4 standarda ali zaostaje u pogledu
dometa.
1.1.4. LoRaWan bežična tehnologija
Sve tri prethodno navedene bežične tehnologije pate od slabije pokrivenosti i kratkog
dometa što u nekim primjenama bežičnih senzorskih mreža može uzrokovati ozbiljne
implementacijske probleme. Te nedostatke rješava LoRaWan standard koji se koristi
u stvaranju bežičnih mreža široke pokrivenost uz malu potrošnju energije (LPWAN
- Low-Power Wide-Area Network). LoRaWan definira sloj podatkovne poveznice i
koristi LoRa tehnologiju kao fizički sloj prijenosa podataka radio vezom na velikim
udaljenostima (više od 10 km u nenaseljenim područjima). Tipična LoRaWan mreža
uključuje sljedeće entitete:
• LoRa krajnji ured̄aji - IoT ured̄aji s LoRa primopredajnikom koji očitanjašalju prema LoRa pristupniku
• LoRa pristupnik (gateway) - omogućava LoRa ured̄ajima prijenos podatakainternetskom vezom i komunikaciju sa poslužiteljem.
• LoRa poslužitelj - upravlja LoRa prometom, kontrolira brzinu prijenosapodataka (ADR - Adaptive data rate) i najčešće nudi aplikacijsko sučelje za
pregled i obradu podataka dobivenih od krajnjih čvorova. Primjer javno
dostupnih poslužitelja su The Things Network i Loriot poslužitelji.
Tipične brzine prijenosa podataka kod ovakvih mreža nešto su niže i variraju od
300bp/s do 50kbp/s, a odred̄uje ih poslužitelj. Nakon opisa bežičnih tehnologija koje
senzorima daju mogućnost komunikacije s ostalim čvorovima i pristupnikom mreže,
sljedeće poglavlje dat će opis mogućnosti spajanja bežičnih senzorskih mreža na
internet.
7
1.2. Integracija bežičnih senzorskih mreža s
internetom
Da bi bežične senzorske mreže potpuno iskoristile svoj potencijal i učinile svoje
usluge javno dostupnima i interaktivnima, arhitektura senzorske mreže mora se
integrirati s arhitekturom interneta. Prilikom te integracije treba uzeti u obzir sljedeća
infrastrukturna pitanja [6]:
• Adresiranje - Odred̄uje način na koji su senzori identificirani u internetskojmreži. Tipičan način adresiranja temeljen na IP adresama (host-centric) može
predstavljati implementacijski problem u senzorskim mrežama s velikim
brojem čvorova koje adresiranje temelje na lokaciji čvorova ili nekom drugom
pristupu baziranom na svojstvu podataka (data-centric) koje čvorovi očitavaju
(data-centric). U tom slučaju potrebno je osigurati dodatne mehanizme koji
usklad̄uju različite načine adresiranja.
• Komunikacijski protokoli - Povezivanje bežičnih senzorskih mreža sinternetom prenosi na njih odgovornost implementacije komunikacijskih
protokola koje internet koristi. Najčešće je to implementacija TCP/IP
protokolarnog stoga ili alternativnog 6LoWPAN stoga o kojima će više riječi
biti kasnije u poglavlju.
• Dostupnost podataka - Definira reakciju senzorske mreže u slučajunedostupnosti čvora i njegovih podataka.
• Sigurnost komunikacije - Bežične senzorske mreže u obzir moraju uzetisigurnost komunikacijskog kanala uspostavljenog izmed̄u krajnjih čvorova i
odredišta podataka. Za ostvarenje sigurnosnih mehanizama i minimalne
zaštite toka podataka čvorovi moraju imati pristup osnovnim sigurnosnim
primitivima poput simetrične kriptografije, kriptografije javnog ključa i
funkcija sažetka (hash function). Budući da su čvorovi WSN-a ograničeni
memorijskim i procesorskim kapacitetima, prilikom implementacije
sigurnosni primitiva naglasak mora biti stavljen na njihovu efikasnost u
takvom ograničenom okruženju. Ovaj problem detaljnije je obrad̄en u
četvrtom poglavlju rada.
• Mrežna ograničenja WSN-a - Kod povezivanja WSN-a na internet trebavoditi računa o specifičnostima takvih mreža u pogledu energetske
učinkovitosti, moguće smanjene brzine prijenosa podataka te kapaciteta i
dostupnosti čvorova.
8
Svi prethodno navedeni integracijski problemi, koje konkretna bežična senzorska
mreža mora adresirati, utječu na odabir jednog od sljedeća tri pristupa povezivanja
čvorova na internet (slika 1.5):
Slika 1.5: Rješenja integracije WSN-a s internetom [6]
• Povezivanje preko posredničkog sučelja (front-end proxy)Rješenje u kojem bazna stanica upravlja svim prometom koji dolazi i odlazi iz
bežične senzorske mreže. Čvorovi su potpuno neovisni o internetu i ne trebaju
implementirati dodatne protokole TCP/IP složaja. Kod ovog pristupa ne
postoji direktna komunikacija čvorova s internetom, a sva senzorska očitanja
sakupljaju se i pohranjuju unutar bazne stanice kako bi kasnije bila dostupna u
internetskoj komunikaciji.
• Povezivanje preko pristupnika (gateway)Metoda povezivanja s internetom u kojoj bazna stanica ima ulogu
aplikacijskog pristupnika koji prevodi protokole nižih slojeva (transportnog i
mrežnog) paketa pristiglih iz obje mreže (WSN-a i interneta) te ih prema IP
adresama prosljed̄uje odgovarajućim odredištima. Ovaj pristup prividno nudi
direktnu komunikaciju izmed̄u čvorova i internet domaćina koji se med̄usobno
mogu adresirati(internet host) iako čvor i dalje može zadržati razinu
neovisnosti o internetskim protokolima ako pristupnik zna obaviti
odgovarajuću translaciju IP adresa u adrese čvorova.
9
• Povezivanje protokolima TCP/IP stoga (TCP/IP overlay)Pristup kod kojeg se zadatak implementacije TCP/IP stoga ili alternativnih
protokola za povezivanje s internetom poput 6LoWPAN-a stavlja na same
čvorove. Bazna stanica poprima ulogu usmjeritelja zaduženog isključivo za
prosljed̄ivanje dolaznih i odlaznih paketa. Ova metoda, za razliku od
prethodna dva pristupa, direktno povezuje čvorove na internet i čini bežičnu
senzorsku mrežu potpuno integriranom s internetom stvari. Ta potpuna
integracija dolazi s cijenom povećane opterećenosti čvorova, ali istovremeno
ukida potrebu za održavanjem i implementacijom centraliziranog
posredničkog mehanizma.
Kako je ovaj rad koncentriran na krajnje čvorove WSN-a, u četvrtom poglavlju pri
uspostavi sigurnog komunikacijskog kanala izmed̄u dva čvora koristit će se direktan
pristup povezivanja s internetom preko protokola TCP/IP složaja. Osim klasičnih
TCP/IP internet protokola za povezivanje bežičnih senzorskih mreža s internetom
može se koristiti i 6LoWPAN standard koji integrira IP mrežni sloj s IEEE 802.15.4
slojem podatkovne poveznice. Ova dva rješenja direktnog povezivanja čvorova na
internet (slika 1.6) bit će ukratko opisana u odlomcima koji slijede.
Slika 1.6: Usporedba TCP/IP i 6LoWPAN protokolarnog stoga [7]
1.2.1. TCP/IP stog
Skup protokola TCP/IP opće je prihvaćen standard mrežne komunikacije na internetu
koji se temelji na dva protokola: protokol IP na 3. mrežnom sloju i protokol TCP na
4. transportnom sloju. Jednostavnost uspostave direktne internetske veze i
iskorištavanje mnoštva dostupnih usluga na aplikacijskom sloju glavne su prednosti
direktne implementacije TCP/IP stoga na čvoru WSN-a. Kako senzorski čvorovi pate
od nedostatka resursa prilikom implementacije TCP/IP treba voditi računa o
sljedećim nedostacima:
10
• Veličina TCP i IP zaglavlja - Minimalna veličina kombinacije TCP i IPzaglavlja iznosi 40 bajtova što kod slanja senzorskih očitanja od nekoliko
bajtova predstavlja ozbiljan komunikacijski višak (overhead). Ukoliko taj
višak senzorskoj mreži predstavlja ozbiljan problem treba razmisliti o
tehnikama kompresije zaglavlja.
• TCP mehanizmi kontrole protoka i zagušenja - Ovo je možda i najozbiljnijiproblem jer TCP ne razlikuje gubitak paketa zbog zagušenja u mreži od
gubitka paketa zbog pogreške u bitovima. Kako su pogreške u bitovima
prilikom bežičnog prijenosa podataka česte, a TCP na njih reagira smanjenjem
brzine prijenosa podataka jer smatra da je došlo do zagušenja u mreži,
općenita propusnost mreže znatno je smanjena.
• TCP kontrola konekcije - Retransmisija izgubljenih paketa na cijelom putukroz mrežu može uzrokovati dodatnu potrošnju kod čvorova koji u njoj
sudjeluju.
• IP adresiranje - shema IP adresiranja usmjerena prema jedinstvenimadresama ured̄aja razlikuje se od uobičajene sheme adresiranja u WSN-u
usmjerene prema podacima koje ti ured̄aji generiraju.
Najpoznatije tehnike optimiziranja protokola TCP/IP u senzorskim mrežama su
raspodijeljeno privremeno spremanje TCP segmenata (DTC - distributed TCP
caching) i TCP podrška za senzorske mreže (TSS - TCP support for sensor networks)
[8]. Oba pristupa nastoje povećati energetsku efikasnost TCP-a ugad̄anjem procesa
privremenog spremanja TCP segmenata na putu prema odredištu i lokalnom
retransmisijom izgubljenih paketa.
U svijetu ugradbenih ured̄aja postoje mnoge biblioteke otvorenog koda koje nude
prilagod̄enu implementaciju TCP/IP stoga primjenjivu i na senzorske čvorove.
Najpoznatije su lwIP (lightweight IP) i uIP (micro IP), a osim programskih rješenja
postoje i TCP/IP implementacije integrirane na čipu koje se mogu dodati modularno
proširivim ured̄ajima poput Arduina i preuzeti na sebe sav teret klasične TCP/IP
komunikacije. Ovo rješenje korišteno je u četvrtom poglavlju kako bi se analiza
mogla koncentrirati isključivo na implementaciju sigurnosnih mehanizama direktno
na čvoru WSN-a koji je predstavljen Arduino ured̄ajem.
11
1.2.2. 6LoWPAN standard
6LoWPAN (low power wireless personal area network) standard predstavlja
proširenje klasičnog TCP/IP stoga usmjereno na bežičnu komunikaciju u mrežama
niskih energetskih kapaciteta. LoWPAN nudi ured̄ajima, koji za bežičnu
komunikaciju koriste IEEE 802.15.4 standard, pristup internetu preko mrežnog
protokola IPv6 (IP protokol verzije 6) i transportnog protokola UDP. Glavna razlika u
odnosu na TCP/IP rješenje dodatni je adaptacijski sloj koji služi za kompresiju IPv6
zaglavlja smanjenjem IPv6 adrese čvorova unutar WSN-a. Uz mehanizam kompresije
IP zaglavlja 6LoWPAN nudi podršku za samo konfiguraciju mreže, otkrivanje
susjednih čvorova, razašiljanje poruka prema većem broju odredišta (multicast i
broadcast), fragmentaciju IPv6 paketa i sigurnosne mehanizme protokola IPSec na
mrežnom sloju [9]. Kako bi se 6LoWPAN mreže integrirala s klasičnim IP mrežama
potrebno je na sučelje mreže dodati rubni 6LoWPAN usmjeritelj koji ima sposobnosti
prilagodbe tipičnih IP paketa 6LoWPAN standardu i njihovog usmjeravanja prema
odredištu unutar WSN-a (slika 1.7).
Slika 1.7: Arhitektura 6LoWPAN integracije s internetom [9]
Nakon detaljno obrad̄ene arhitekture bežičnih senzorskih mreža i različitih načina
njihova povezivanja s internetom, sljedeće poglavlje koncentrirat će se na sigurnosne
zahtjeve i izazove specifične za WSN.
12
2. Sigurnost u bežičnim senzorskimmrežama
Pitanje sigurnosti komunikacije jedno je od najvažnijih i najzahtjevnijih pitanja koja
se trebaju adresirati pri razvoju i održavanju bežičnih senzorskih mreža. Na
zahtjevnost razvoja sigurnosnih mehanizama u okruženju WSN-a utječe niz
ograničavajućih čimbenika poput širokog i raznolikog područja primjene,
raspodijeljene strukture mreža, različitih načina komunikacije i pripadajućih
protokola, heterogenih svojstava čvorova, ograničene količine radne memorije i
prostora za pohranu koda sigurnosnih algoritama, limitiranih energetskih kapaciteta te
nepouzdane komunikacije. Navedeni problemi samo upućuju na važnost istraživanja,
razvoja i testiranja sigurnosnih rješenja u ovom specifičnom području. Da bi mogli
govoriti o cjelovitim sigurnosnim rješenjima, ona moraju ispuniti sigurnosne zahtjeve
opisane u sljedećem potpgolavlju.
2.1. Sigurnosni zahtjevi
Najvažniji sigurnosni zahtjevi bežičnih senzorskih mreža, koje osnovnim sigurnosnim
zahtjevima dodaju i svoje specifične karakteristike, opisani su u nastavku ovog
poglavlja.
• Povjerljivost podataka(Confidentiality)Povjerljivost podataka najvažniji je izazov mrežne sigurnosti u kojem
sigurnosni mehanizmi moraju osigurati da poruke poslane mrežom mogu
razumjeti samo primatelji kojima su te poruke namijenjene. Da bi bežična
senzorska mreža jamčila povjerljivost moraju se zadovoljiti sljedeći uvjeti:
• Očitanja čvorova ne smiju biti dostupna susjednim čvorovima u mreži,
osim ako su za njih autorizirani kako bi se zaštitilo od malicioznih ili
repliciranih čvorova.
13
• Poruke koje se šalju mrežom moraju biti kriptirirane sigurnim
asimetričnim ili simetričnim kriptografskim algoritmom, a dekriptirati
ih može samo krajnji primatelj.
• Javno dostupni podaci poput javnih identiteta i javnih ključeva takod̄er
se trebaju enkriptriati zbog obrane od napada analizom mrežnog
prometa (traffic analysis attacks).
• Integritet podataka (Integrity)Integritet podataka garantira da će poslane poruke stići nepromijenjene do
odredišta. Primatelji preko pouzdanih sigurnosnih mehanizama moraju moći
ustvrditi jesu li primljene poruke putujući kroz mrežu stigle u izvornom
obliku. Za osiguravanje integriteta najčešće se koriste funkcije sažetka u
kombinaciji s asimetričnim ili simetričnim kriptografskim algoritmima.
• Raspoloživost podataka(Availability)Raspoloživost podataka označava sposobnost bežične senzorske mreže da čak
i u slučaju iscrpljivanja dostupnih resursa mreže, najčešće DoS (Denial of
Service) napadima, održi uslugu i podatke koje nudi dostupnima.
• Autentičnost podataka (Authentication)Cilj provjere autentičnosti podataka nedvosmislena je identifikacija čvora kao
izvora podataka na odredištu. Primatelj mora imati mogućnost potvrde
identiteta čvora koju mu je poslao poruku. Osiguravanje autentičnosti
podataka postiže se MAC (Message Authentication Code) mehanizmom
temeljenim na simetričnoj kriptografiji.
• Svježina podataka (Data Freshness)Osigurava zaštitu od zlonamjernog ponovnog slanja starih poruka (replay
attack) pridružujući paketima nasumično definirane brojeve (nonce) ili brojače
temeljene na vremenu slanja paketa. Ovi mehanizmi garantiraju da će
ponovljeni paketi koji stignu na odredište biti odbačeni.
• Samo organizacija mreže (Self-organization)Svaki čvor bežične senzorske mreže trebao bi imati sposobnost samo
organizacije unutar dinamično stvorene tzv. ad-hoc mreže. Samo organizacija
u kontekstu sigurnosti označava sposobnost kontrole i distribucije ključeva u
mreži.
14
2.2. Sigurnosne ranjivosti
Bežične senzorske mreže su kao i većina mreža izložene raznim sigurnosnim
napadima koji postaju sve brojniji i kompleksniji. Glavna motivacija napadača u
napadima na WSN saznavanje je povjerljivih senzorskih očitanja i iskorištavanje
podataka ili kompromitiranje rada WSN-a zakrčenjem mrežnih resursa. Napadi mogu
biti klasificirani u sljedeće tri opće kategorije [10]:
• Napadi na povjerljivost i autentičnost - Napadi poput pasivnogprisluškivanja mrežnog prometa (eavesdropping), modifikacije i slanja lažnih
(spoofing) ili kopiranja starih (replay) paketa. Zaštitu od napada na
povjerljivost i autentičnost pružaju standardi kriptografski mehanizmi.
• Napadi na mrežnu dostupnost - Napadi usmjereni na onemogućavanjepružanja mrežne usluge (DoS). DoS napadi neugodni su zbog svoje
nepredvidljive i isključivo destruktivne prirode. Bežične senzorske mreže
posebno su ugroženo područje jer inherento pate od nedostatka mrežnih
resursa. Još jedna otegotna okolnost u obrani od ove vrste napada je što može
biti usmjeren na razne slojeve mreže. Za obranu od DoS napada mreža mora
implementirati način otkrivanja komunikacije koja je usmjerena isključivo na
iscrpljivanje njenih resursa.
• Napadi na integritet usluge - Skriveni napadi u kojima napadač preuzimakontrolu nad čvorom što mu omogućava slanje lažnih očitanja i
kompromitiranje integriteta usluge.
Odlomci koji slijede dat će pregled raznovrsnosti napada po različitim slojevima
komunikacije u mreži.
2.2.1. Napadi na fizičkom sloju i sloju podatkovne poveznice
Fizički sloj najniži je sloj zadužen za upravljanje i prijenos radio signala mrežom.
Napadi na ovom sloju najčešće su usmjereni na stvaranje što jače interferencije radio
signala i zagušivanje (jamming) frekvencijskog raspona koji se koristi za prijenos.
Sloj podatkovne poveznice izgrad̄en je nad fizičkim slojem i služi za upravljanje
tokovima podataka, detekciju podatkovnih okvira, kontrolu pristupa mediju i
ispravljanje bitovnih pogrešaka. Napadi na podatkovni sloj usmjereni su na stvaranje
frekvencijskih kolizija izmed̄u paketa što uzrokuje njihovim odbacivanjem,
iscrpljivanjem mrežnih resursa i degradiranjem usluge koju WSN pruža.
15
2.2.2. Napadi na mrežnom sloju
Napadi ne mrežnom sloju koncentrirani su na zlonamjerno manipuliranje
usmjeravanja paketa i prisluškivanje prometa koji prolazi kroz mrežu. Najpoznatiji
napadi na mrežnom sloju su:
• Sybil napad - Napad u kojem maliciozni čvor preuzima ulogu više od jednogidentiteta u mreži što mu omogućava kontrolu usmjeravanja paketa na
različitim putovima kroz mrežu.
• Wormhole napad - Napad u kojem maliciozni čvor, koristeći bežičnu vezudugog dometa, stvara tunel kroz mrežu koji mu omogućava brži prijenos
paketa. Na taj način maliciozni čvor skriveno zavarava protokole usmjeravanja
u mreži što mu omogućuje pokretanje različitih vrsta napada poput selektivnog
odbacivanja paketa, prisluškivanja veze, ponovnog slanja paketa, itd.
• Hello flood napad - Napad usmjeren na hello poruke pomoću kojih čvorbežične senzorske mreže utvrd̄uju čvorove u dometu radio signala. Napadač
slanjem većeg broja hello poruka s ured̄aja većeg dometa od čvorova
senzorske mreže uzrokuje odbacivanje poruka poslanih prema lažno
predstavljenom ured̄aju.
• Lažiranje informacija o usmjeravanju - Napadač manipuliranjeminformacija usmjeravanja usmjerava promet kroz komrpomitirani čvor što mu
omogućuje stvaranje petlja u mreži, produživanje ili skraćivanje rute paketa,
povećanje kašnjenja i paritcioniranje mreže.
• Napad analizom prometa - Pasivan napad u kojem napadač prisluškivanjem ianalizom generiranog prometa može identificirati čvorove s odred̄enim
ulogama ili specifične aktivnosti u mreži.
2.2.3. Napadi na transportnom sloju
Napadi preplavljivanjem (flooding) posebno su popularni kod napada na protokole koji
pamte stanje komunikacije. Napadač u takvim napadima šalje mnoštvo zahtjeva za
uspostavom veze s lažiranim adresama odredišta što rezultira velikim brojem otvorenih
konekcija koje troše resurse napadnutih čvorova.
Napadi desinkronizacije usmjereni su na prekid i otimanje već uspostavljene veze.
Napadač slanjem lažnih paketa prisliljava čvor na slanje zahtjeva za prijenos
propuštenih okvira što ga sprječava da uspješno razmjenjuje pakete.
16
Kako ovaj rad obrad̄uje slučaj implementacije TCP/IP stoga na čvoru WSN-a, uz
navedene ranjivosti specifične za protokole usmjeravanja i mrežnu arhitekturu
bežičnih senzorskih mreža u obzir treba uzeti i ranjivosti TCP/IP protokola korištenih
za direktno povezivanje čvora na internet. Nastavak ovog poglavlja bavit će se
sigurnosnim mehanizmima koji bežičnim senzorskim mrežama pružaju sredstva
obrane i zaštite od brojnih i raznolikih vrsta ranjivosti.
2.3. Sigurnosni mehanizmi
Sigurnosni mehanizmi nužni su bežičnim senzorskim mrežama za normalno
funkcioniranje i pružanje visoke razine kvalitete usluge u stvarnom i često
neprijateljskom okruženju punom sigurnosnih izazova i nepredvidljivih situacija.
Zbog specifičnosti bežičnih senzorskih mreža u pogledu mrežne arhitekture i
kapaciteta čvorova implementacija, analiza i nadogradnja postojećih sigurnosnih
mehanizama vrlo je bitno istraživačko područje. Da bi zadovoljile minimalan skup
sigurnosnih značajki, senzorske mreže moraju koristiti kriptografske primitive za
ostvarivanje simetrične i asimetrične krpitografije, podržavati protokole za razmjenu
ključeva u mreži te osigurati svojstvo samo konfiguracije mreže. U nastavku poglavlja
ukratko će biti obrad̄eni simetrični i asimetrični kriptografski algoritmi te protokoli
kontrole ključeva u mreži.
2.3.1. Simetrična kriptografija
Simetrična kriptografija temelji se na šifriranju poruka tajnim ključem dijeljenim
izmed̄u dva entiteta koji komuniciaraju sigurnim kanalom (slika 2.1).
Slika 2.1: Simetrična kriptografija [11]
Algoritmi simetrične kriptografije dijele se na:
• Algoritme šifriranja tokova podataka - Šifriraju i dešifriraju podatke tajnimključem bit po bit. Najpoznatiji algoritmi su: RC4 i ChaCha.
17
• Algoritme šifriranja blokova podataka - Šifriraju i dešifriraju podatke tajnimključem blok po blok. Veličina ključa odred̄uje veličinu bloka, a najpoznatiji
algoritmi su: AES, 3DES, Skipjack i RC4. Kada su podaci dulji od veličine
jednog bloka bitno je definirati siguran način povezivanja šifriranih blokova
(block cipher mode). Najčešće korišteni algoritmi ulančavanja blokova šifrata
su: CBC, CFB, OFB i CTR.
Kako su simetrični algoritmi računalno manje zahtjevni od algoritama javnog
ključa najčešće se koriste za kriptiranje same komunikacje nakon uspješne razmjene
tajnih ključeva. Sigurna razmjena tajnih ključeva predstavlja i najveći problem
simetrične kriptografije koji u praksi najčešće rješavaja kriptografija javnog ključa. U
kontekstu bežičnih senzorskih mreža za razmjenu tajnih ključeva izmed̄u čvorova
koriste se posebno dizajnirani algoritmi opisani kasnije u ovom poglavlju.
2.3.2. Kriptografija javnog ključa
Kriptografija javnog ključa ili asimetrična kriptografija temelji se na dva različita
ključa od kojih je jedan javni, a drugi privatni. Pritom se podaci šifrirani javnim
ključem mogu se dešifrirati isključivo odgovarajućim privatnim ključem i obratno
(slika 2.2). Javni i privatni ključ vezani su uz isti identitet ili entitet (poput ljudi ili
organizacija), a za njihovu kontrolu i dodjeljivanje zadužena su tijela infrastrukture
javnog ključa (PKI). Kriptografija javnog ključa najčešće se koristi u kombinaciji s
algoritmima simetrične kriptografija kojima omogućava sigurnu razmjenu tajnih
ključeva. Uz sigurnu razmjenu ključeva najpopularnija primjena algoritama javnog
ključa digitalni je potpis koji garantira svojstva autentifikacije, neporecivosti i
integriteta podataka. Najpoznatiji algoritmi javnog ključa su RSA i ECC o kojima će
više riječi biti u sljedećem poglavlju o protokolu SSL/TLS.
Slika 2.2: Asimetrična kriptografija [11]
18
Glavni nedostaci kriptografije javnog ključa u odnosu na simetričnu kriptografiju
su veličina ključa i brzina enkripcije odnosno dekripcije. Iako ti nedostaci posebno
dolaze do izražaja u okruženju bežičnih senzorskih mreža, kriptografija javnog ključa
sastavni je dio sigurne komunikacije preko interneta i zbog toga ju je bitno prilagoditi
i integrirati s TCP/IP stogom čvorova direktno povezanih na internet što je slučaj u
praktičnom primjeru iz četvrtog poglavlja. Kako bi se smanjila cijena razmjene
ključeva unutar samog WSN-a razvijeni su specifični protokoli koji su opisani u
sljedećem odlomku.
2.3.3. Mehanizmi kontrole ključeva u WSN-u
Problem efikasne kontrole i raspodjele ključeva izmed̄u čvorova unutar WSN-a
privukao je mnogo pažnje med̄u istraživačkom zajednicom. Neki od mehanizama
najčešće korištenih za ovu namjenu su sljedeći [12]:
• Nasumična distribucija ključeva (random key pre-distribution)Ovaj mehanizama u prvom koraku prije početka rada bežične senzorske mreže
raspodjeljuje prsten nasumično odabranih ključeva (key ring) iz skupa svih
ključeva. U drugom koraku svaki čvor otkriva susjedne čvorove s kojima dijeli
ključeve, a u trećem koraku preko uspostavljenih sigurnih veza razmjenjuje se
tzv. ključ puta (path key) izmed̄u čvorova koji su med̄usobno u dometu, ali u
prethodnom koraku nisu razmijenili ključeve.
• protokol LEAP (localized encryption and authentication protocol)Protokol baziran na kriptografiji simetričnog ključa koji koristi četiri različita
ključa ovisno o vrsti paketa koji se prenose. Individualni i grupni ključ
raspodijeljeni su prije pokretanja same mreže i koriste se u sigurnoj
komunikaciji s baznom stanicom. Posredstvom individualnog ključa moguća
je sigurna raspodijela ključeva med̄u parovima čvorova (pair-wise key).
• protokol PIKE (peer intermediaries for key establishment)Mehanizam razmjene ključa izmed̄u dva čvora koji se temelji na zajedničkom
povjerenju trećeg čvora posrednika. Za bilo koja dva čvora u mreži koji dijele
ključeve, postoji treći čvor koji dijeli ključeve s oba čvora.
Sljedeće poglavlje detaljnije će razraditi mehanizme korištene u protokolu
SSL/TLS koji predstavlja univerzalno i opće prihvaćeno rješenje sigurne
komunikacije preko interneta.
19
3. kriptografski protokol SSL/TLS
Kriptografski protokoli SSL (Secure Sockets Layer) i TLS (Transport Layer Security),
često zbog jednostavnosti zajedno nazvanih SSL/TLS, standard su sigurne
komunikacije preko interneta. TLS predstavlja noviju i sigurniju inačicu koja je
zamijenila SSL (zadnje verzije 3.0) i danas se široko primjenjuje diljem interneta.
SSL/TLS dodaje sloj sigurnosti iznad transportnog sloja protokola TCP (slika 3.1) te
nudi protokolima aplikacijskog sloja siguran komunikacijski kanal za prijenos
podataka uz garantirana svojstva povjerljivosti, autentifikacije i integriteta.
Slika 3.1: Protokol SSL/TLS unutar TCP/IP stoga
Navedena osnovna sigurnosna svojstva SSL/TLS osigurava korištenjem
sigurnosnih mehanizama kriptografije javnog ključa za autentifikaciju i razmjenu
tajnih ključeva, simetrične kriptografije za šifriranje podataka nakon uspostave
sigurne veze te kriptografskih funkcija sažetka za provjeru integriteta podataka.
SSL/TLS u pozadini se sastoji od skupa protokola, detaljnije opisanih u nastavku
poglavlja, koji mu omogućavaju uspostavu i održavanje sigurne veze izmed̄u dva
entiteta, najčešće klijenta i poslužitelja, u mreži interneta.
20
3.1. Skup protokola SSL/TLS stoga
Slojevita Arhitektura SSL/TLS-a (slika 3.2) započinje baznim protokolom zapisa
(record protocol) koji definira osnovnu strukturu SSL/TLS zapisa i izgrad̄en je
direktno iznad transportnog sloja. Zapis predstavlja temeljnu jedinicu prijenosa
podataka u SLL/TLS-u, a osim podataka sadrži 5 bajtno zaglavlje s informacijama o
verziji protokola (2 bajta) te vrsti (1 bajt) i veličini (2 bajta) podataka. Ovisno o vrsti
poruka koje se razmjenjuju SSL/TLS kanalom na protokol zapisa nadovezuju se
protokoli rukovanja (handshake protocol) i promjene algoritma šifriranja (change
cipher spec protocol) zaduženi za razmjenu ključeva, autentifikaciju i dogovor o
korištenju sigurnosnih mehanizama, protokol upozorenja (alert protocol) zadužen za
dojavu grešaka i protokol prijenosa podataka (application data protocol) koji prenosi
podatke aplikacijskog sloja. U sljedećem odlomku detaljnije će biti opisan protokol
rukovanja.
Slika 3.2: Slojevita arhitektura SSL/TLS-a
3.1.1. Protokol rukovanja
Protokol rukovanja najvažniji je protokol unutar SSL/TLS-a zadužen za uspostavu veze
te sigurnu razmjenu i generiranje tajnog ključa koji će se kasnije koristiti za šifriranje
podataka u protokolu prijenosa podataka. Poruke rukovanja sastoje se od 4 bajtnog
zaglavlja s informacijama o tipu poruke (1 bajt) i njenoj veličini (3 bajta) iza kojih
slijede sami podaci. Svaka poruka na ovom sloju pri prijenosu se enkapsulira zapisom
(SSL/TLS record) nižeg sloja koji se zatim predaje transportnom sloju. Pritom jedan
zapis može sadržavati jednu ili više poruka rukovanja, ali i jedna poruka rukovanja
može biti fragmentirana na više zapisa [13].
21
Protokol rukovanja podijeljen je u 4 osnovne faze (slika 3.3). Pritom poruke
označene znakom ’*’ nisu nužne da bi se uspostavila valjana SSL/TLS konekcija, aporuke [ChangeCipherSpec] pripadaju protokolu promjene algoritma šifriranja koji je
integriran u proces rukovanja.
Slika 3.3: Protokol rukovanja
• 1. faza: Dogovor okruženja šifriranja (cipher suite)Cjelokupnu komunikaciju započinje klijent slanjem ClientHello poruke koja
sadrži najvišu podržanu verziju SSL/TLS-a, nasumični 32 bajtni broj,
identifikacijski broj sjednice ukoliko klijent želi nastaviti već uspostavljenu
sjednicu te listu podržanih okruženja šifriranja i algoritama kompresije.
Poslužitelj odgovara ServerHello porukom s odabranom verzijom protokola,
nasumičnim 32 bajtnim brojem, identifikacijskim brojem sjednice za
uspostavljenu konekciju, okruženjem šifriranja i algoritmom kompresije.
22
Okruženje šifriranja (cipher suite) u ovom kontekstu predstavlja skup
sigurnosnih mehanizama sastavljen od konkretnih algoritama asimetrične i
simetrične kriptografije te funkcije sažetka.
• 2. faza: PoslužiteljNakon ServerHello poruke poslužitelj šalje ServerCertificate poruku koja
sadrži njegov certifikat s pripadajućim javnim ključem. Certifikat mora biti
digitalno potpisan od strane jednog ili lanca vjerodostojnih Certificate
Authority (CA) tijela kako bi klijent mogao provjeriti njegovu valjanost.
Slanje certifikate u većini slučajeva je obavezno, ali postoje i okruženja
šifriranja koja ne traže razmjenu certifikata.
Ako su za razmjenu tajnog ključa potrebne dodatne vrijednosti koje nisu
sadržane u certifikatu poslužitelja one se šalju ServerKeyExchange porukom.
CertificateRequest poruka šalje se samo u slučaju u kojem poslužitelj traži
autentifikaciju klijenta provjerom njegovog certifkata.
Na kraju 2. faze poslužitelj šalje ServerHelloDone poruku kojom klijentu javlja
da je trenutno završio sa slanjem i očekuje njegove poruke kako bi završio
protokol rukovanja.
• 3. faza: KlijentNakon ServerHelloDone poruke klijent šalje svoj certifikat u obliku
ClientCertificate poruke ako je poslužitelj prethodno zatražio autentifikaciju
klijenta porukom CertificateRequest.
Jedina obavezna poruka ove faze je ClientKeyExchange poruka koja sadrži
nasumičnu Pre-Master Secret (PMS) vrijednost korištenu, zajedno s
prethodno razmijenjenim nasumičnim 32 bajtnim brojevima, za generiranje
dijeljene tajne Master Secret (MS) vrijednosti. Ovu poruku klijent šifrira
javnim ključem iz poslužiteljeva certifikata kako bi ju samo poslužitelj mogao
dešifrirati svojim privatnim ključem. MS vrijednost ima fiksnu duljinu od 48
bajtova i nužna je za generiranje ključeva za enkripciju podataka i provjeru
autentičnosti poruka (MAC).
Poruku CertificateVerify klijent šalje samo ako je poslužitelj tražio certifikat
klijenta. Cilj ove poruke, koja sadrži sve prethodno razmijenjene poruke
rukovanja digitalno potpisane privatnim ključem klijenta, potvrda je
poslužitelju da klijent doista posjeduje javni ključ koji mu je poslao unutar
ClientCertificate poruke.
23
• 4. faza: Promjena šifriranja i kraj rukovanjaNakon razmjene informacija potrebnih za generiranje potrebnih ključeva i
potvrdu autentičnosti certifikata klijent šalje ChangeCipherSpec poruku kako
bi označio početak kriptiranja podataka koji slijede po prethodno dogovorenim
sigurnosnim specifikacijama.
Poruka Finished šalje se neposredno nakon ChangeCipherSpec poruke kako bi
potvrdila da su razmjena ključeva i proces autentifikacije bili uspješni. Poruka
sadrži kriptografsku kontrolnu sumu (checksum) svih dosad poslanih poruka
rukovanja šifriranu tajnim ključem generiranim preko dijeljene Master Secret
vrijednosti. Kada poruka stigne do poslužitelja, on ju dešifrira identičnim
tajnim ključem te provjerava njen integritet i autentičnost kako bi ustvrdio da
je cijelo vrijeme razgovarao s istim legitimnim klijentom.
Nakon provjere klijentske strane, poslužitelj takod̄er šalje ChangeCipherSpec i
Finished poruke kojima se zaključuje protokol rukovanja i započinje razmjena
kriptiranih podataka aplikacijskog sloja protokolom zapisa.
3.1.2. Protokol zapisa
SSL/TLS protokol odgovoran je za enkripciju, dekripiciju te osiguravanje i provjeru
integriteta i autentičnosti aplikacijskih podataka. Proces kojim protokol zapisa
nesigurne aplikacijske podatke enkapsulira i osigurava zapisima koje zatim predaje
transportnom sloju podijeljen je u sljedećih 5 koraka (slika 3.4):
Slika 3.4: Protokol zapisa
24
1. FragmentacijaAplikacijski podaci koji s višeg sloja dolaze do SSL/TLS sloja zapisa prvo se
dijele na blokove (fragmente) maksimalne veličine 214 bajtova.
2. KompresijaSvaki fragment dodatno se može sažeti algoritmom kompresije dogovorenim u
procesu rukovanja kako bi se smanjila ukupna veličina podataka koja se mora
prenijeti mrežom. Najnoviji standardi ne preporučaju korištenje kompresije jer
algoritmi kompresije ovise o sadržaju podataka i dokazano je da mogu
uzrokovati ranjivosti na napade analizom prometa [14].
3. Dodavanje MAC vrijednostiKako bi osigurao integritet i autentičnost podataka SSL/TLS protokol zapisa
koristi autentifikacijski kod poruke (MAC). MAC vrijednost najčešće se računa
korištenjem pripadajućeg simetričnog ključa i funkcije sažetka nad
kombinacijom ključa i poruke (HMAC). SSL/TLS definira dva različita
dijeljena tajna ključa od kojih se jedan koristi za izračun MAC-a nad porukama
klijenta (client write MAC key), a drugi nad porukama poslužitelja (server write
MAC key).
4. EnkripcijaPovjerljivost odnosno tajnost podataka osigurava se simetričnom enkripcijom.
Pritom se promet koji teče od klijenta prema poslužitelju kriptira različitim
tajnim ključem (client write key) od prometa koji teče od poslužitelja prema
klijentu (server write key).
5. Dodavanje zaglavlja zapisaNa kraju protokola zapisa na kriptirane podatke dodaje se odgovarajuće zaglavlje
kako bi se formirao konačan zapis spreman za predaju nižem sloju pouzdanog
prijenosa podataka (TCP).
Nastavak ovog poglavlja donijet će detaljan opis RSA algoritma, najraširenijeg
standarda kriptografije javnog ključa koji predstavlja sigurnosni temelj protokola
SSL/TLS.
25
3.2. RSA algoritam
RSA algoritam najkorišteniji je algoritam kriptografije javnog ključa kojeg su 1977.
godine razvili Rivest, Shamir i Adelman. Sigurnost RSA temelji se složenosti
problema cjelobrojne faktorizacije velikih prirodnih brojeva koji predstavljaju
temeljne vrijednosti za generiranje parova privatnih i javnih ključeva. Razinu
sigurnosti RSA kriptosustava odred̄uje veličina ključa koja je najčešće predstavljena
potencijama broja dva i u praksi varira izmed̄u 1024 (210) i 4096 (212). Preporučene
veličine RSA ključeva za koje se smatra da pružaju dovoljnu razinu sigurnosti rastu s
porastom računalne moći, padom cijena skolpovlja i naprecima u algoritmima
faktorizacije prirodnih bojeva što znači da se s vremenom povećava i minimalna
veličina ključa koja je dovoljno sigurna da se odupre tehnološkim naprecima.
Algoritam generiranja RSA ključeva koji je temeljen na svojstvima modularne
aritmetike i predstavlja osovinu RSA kriptosustava opisan je sljedećim koracima [15]:
1. Odabir dva velika prosta broja p i q tipično veličine 512 ili 1024 bitova
2. Izračun umnoška dva prethodno izabrana prosta broja n = p ∗ q. Ovaj broj upostupcima enkripcije i dekripcije naziva se modulus i njegova veličina označava
veličinu para RSA ključeva (tipično 1024 ili 2048 bitova).
3. Izračun Eulerove totient (phi) funkcije φ(n) koja daje ukupan broj prirodnihbrojeva iz skupa Zn = {1, 2, ..., n} koji su relativno prosti s brojem n. Pritom sudva prirodna broja x i y relativno prosta ako im je najveći zajednički djelitelj (gcd
- greatest common divisor) jednak 1, tj. vrijedi gcd(x, y) = 1. U konkretnom
RSA slučaju Eulerova funkcija ima vrijednost φ(n) = φ(pq) = (p− 1)(q − 1).
4. Odabir vrijednosti javnog eksponenta e takvog da je e ∈ {1, 2, ..., φ(n) − 1}i vrijedi jednakost gcd(e, φ(n)) = 1 što znači da su e i φ(n) relativno prosti.
Par vrijednosti javnog eksponenta e i modulusa n predstavlja javni RSA ključ
Kpub = (n, e).
5. Ako su e i φ(n) relativno prosti znači da postoji vrijednost d koja predstavljamodularni inverz broja e mod φ(n) gdje je mod operacija koja vraća ostatak
cjeloborojnog dijeljenja dva prirodna broja. Modularni inverz d pritom mora
zadovoljavati sljedeću jednakost: d ∗ e ≡ 1 (mod φ(n)). Broj d naziva seprivatnim eksponentom te u paru s modulusom n predstavlja privatni RSA ključ
Kpriv = (d, e). Za efikasan izračun modularnog inverza u praksi se koristi
prošireni Euklidov algoritam.
26
Sigurnost RSA privatnog ključa temelji se na težini faktorizacije modulusa n
objavljenog u sklopu javnog Kpub ključa, odnosno težini izračuna tajnih faktora p i q
uz poznavanje njihovog umnoška.
Kod šifriranje poruke RSA javnim ključem Kpub = (n, e) niz bitova koji
predstavljaju tekst poruke u heksadecimalnom formatu preslikan je u prirodni broj iz
skupa Zn = {0, 1, ..., n − 1} što znači da binarna vrijednost poruke mora biti manjaod vrijednosti modulusa n kako bi funkcija enkripcije bila ispravna. Šifriranje poruke
m kojim nastaje šifrat c predstavljeno je sljedećom funkcijom:
c = eKpub(m) ≡ me mod n
gdje su c i e ∈ Zn.Dešifriranje šifrata c otkriva izvornu poruku m, a predstavljeno je sljedećom
funkcijom koja je inverzna funkciji šifriranja:
m = dKpriv(c) ≡ cd mod n
Osim opisane operacije enkripcije javnim ključem koja jamči povjerljivost
komunikacijskog kanala, RSA nudi i operaciju digitalnog potpisa koja jamči
autentifikaciju izvora poruke. Kod digitalnog potpisa operacija šifriranja obavlja se
tajnim privatnim ključem izvora, a operacija dešifriranja njegovim javnim ključem
potvrd̄uje identitet izvora na odredištu (slika 3.5).
Slika 3.5: Modeli rada RSA kriptosustava
RSA algoritam u stvarnosti barata velikim brojevima (512 - 4096 bitova) što
operacije modularnog potenciranja (modular exponentiation) prilikom šifriranja, a
27
posebno dešifriranja, čini procesorski i memorijski vrlo zahtjevnima. Kako bi se
povećala efikasnost i omogućila izvedivost RSA algoritma u stvarnom vremenu za
modularno potenciranje velikih brojeva potrebno je koristiti tehnike optimizacije od
kojih su najkorišetnije metoda uzastopnog kvadriranja (square and multiply),
Montgomeryjeve redukcije (Montgomery reduction) i kineskog teorema o ostatcima
(Chinese remainder theorem) opisane u sljedećem potpoglavlju.
3.2.1. Metode optimizacije
Najjednostavnija i najstarija med̄u efikasnim metodama je metoda uzastopnog
kvadriranja (još se naziva i binarna metoda ili metoda ”kvadriraj i množi”) koja koristi
binarni zapis eksponenta kako bi ubrzala operaciju potenciranja uzastopnim
kvadriranjem i množenjem koje ovisi o vrijednosti trenutnog bita binarnog
eksponenta. Algoritam je opisan sljedećim pseudo kodom [15]:
Algoritam "kvadriraj i množi"
Ulaz:element baze potenciranja x
binarni zapis eksponenta E =∑i=0
t ei2i gdje je ei ∈ 0, 1, ht = 1
modulus n
Izlaz: xE mod nInicijalizacija: r = x
for i = t− 1 downto 0 dor = r2 mod n
if Ei = 1 thenr = r ∗ x mod n
return r
Prikazani algoritam operaciju kvadriranja provodi u svakom koraku, a operaciju
množenja samo kad je trenutni bit eksponenta jednak 1 što poboljšava performanse
klasičnog potenciranja isključivo operacijom množenja.
Za razliku od metode uzastopnog kvadriranja koja je usredotočena na
optimiziranje operacije množenja, metoda Montgomeryjeve redukcije nastoji
optimizirati operaciju dijeljenja velikih brojeva izbjegavanjem klasične modularne
redukcije (mod n operacija kod RSA šifriranja i dešifriranja). To se postiže
transformacijom brojeva u tzv. Montgomeryjevu domenu u kojoj se vremenski skupo
dijeljenje s modulusom n prilikom uzastopnog množenja brojeva u modulo aritmetici
28
zamjenjuje jednostavnim dijeljenjem s brojem R oblika bk gdje je b baza u kojoj je
prikazan broj n (najčešće binarna baza 2), a k broj znamenaka broja n u toj bazi.
Transformacija brojeva a i b i njihovog umnoška ab u Montgomeryjevu reprezentaciju
obavlja se na sljedeći način:
a = a ∗R mod n b = b ∗R mod n
ab =(a ∗R)(b ∗R)
Rmod n = ab ∗R mod n
Ovakvim načinom množenja brojeva u Montogmeryjevoj domeni, zbog dijeljena s
R prilikom množenja izbjegava se modularna redukcija brojem n, a umnožak je na
kraju lako vratiti u orignalni oblik ponovnim dijeljenjem s R. Kako bi to dijeljenje
bilo efikasno važno je osigurati da binarna reprezentacija umnoška
(a ∗ R)(b ∗ R) mod n bude što više ispunjena nulama s desne strane koje se prilikomdijeljenja s R jednostavno odbacuju jer je R oblika 100...000(2) gdje je broj
znamenaka 0 jednak k − 1. Ispunjavanje umnoška nulama postiže se višestrukimdodavanjem broja n što je moguće jer se radi o modulo n aritmetici tako da vrijedi
x+ yn mod n = x.
Treći popularni način optimizacija RSA algoritma je kineski teorem o ostatcima
(CRT) koji služi za ubrzanje zahtjevnije operacije modularnog potenciranja privatnim
eksponentom d koja se koristi za dekripciju ili digitalno potpisivanje. CRT iskorištava
dostupnost tajnih prostih vrijednosti p i q kako bi operaciju dekripcije m = cd mod
n razložio na dvije operacije m1 = cd11 mod p i m2 = cd22 mod q pomoću kojih je
moguće doći do originalne poruke modularnim potenciranjem manjih brojeva (brojevi
c1, d1, c2 i d2 optilike su dva puta manji od n) što dekripciju čini puno bržom.
29
3.3. HMAC algoritam
HMAC algoritam bitan je sigurnosni čimbenik protokola SSL/TLS koji osigurava
svojstva integriteta i autentifikacije izvora podataka koristeći dijeljeni tajni ključ i
funkciju sažetka. Funkcije sažetka proizvoljno dugačak ulaz deterministički mapiraju
na izlaz (sažetak) fiksne veličine iz kojega je nemoguće doći do originalnog uzlaza, a
svaka najmanja promjena informacije na ulazu uzrokuje drastičnu promjenu sažetka.
Navedena svojstva funkciju sažetka čine idealnom za provjeru integriteta poruke jer je
lagano iz originalne poruke dobiti i provjeriti sažetak, a dovoljno teško iz sažetka
dobiti originalnu poruku. Najčešće korištene funkcije sažetka su iz SHA porodice
(SHA-1, SHA-2 ili SHA-3). Uz integritet koji osigurava funkcija sažetka, MAC
algoritam uporabom tajnog ključa stvara oznaku (tag) koja potvrd̄uje autentičnost
poruke na njenom odredištu. HMAC proširuje osnovni MAC algoritam funkcijom
sažetka na sljedeći način:
HMAC(K,m) =((K ′ ⊕ opad)||H
((K ′ ⊕ ipad)||m
))gdje su:
• K - tajni ključ
• H - kriptografska funkcija sažetka
• m - poruka čija se autentičnost i integritet žele osigurati
• K ′ - ključ izveden iz originalnog ključa K koji se ispunjava nulama do veličinebloka koju koristi funkcija sažetka ako je kraći od veličine bloka, a ako je dulji
predaje se funkciji sažetka.
• || - operator spajanja
• ⊕ - XOR operator
• opad - vanjsko ispunjenje (outer padding) koje se sastoji od n bajtovaheksadekadske vrijednosti 0x5C, gdje n označava veličinu bloka.
• ipad - unutarnje ispunjenje (inner padding) koje se sastoji od n bajtovaheksadekadske vrijednosti 0x36, gdje n označava veličinu bloka.
30
4. Implementacija i analizasigurnosnih mehanizama u bežičnojsenzorskoj mreži
Ovo poglavlje bavi se stvarnom implementacijom pojednostavljene bežične senzorske
mreže u kojoj dva ured̄aja komuniciraju preko interneta pokušavajući pritom ostvariti
siguran komunikacijski kanal uporabom prilagod̄ene lagane verzije protokola
SSL/TLS. Uz utjecaj sigurnosnih mehanizama na kašnjenje u komunikaciji, detaljnije
će se analizirati memorijski i procesorski kapaciteti resursno ograničenih ured̄aja za
izvod̄enje najraširenijih sigurnosnih algoritama simetrične i asimetrične kriptografije.
Da bi uopće mogli govoriti o SSL/TLS komunikaciji izmed̄u čvorova bežičnih
senzorskih mreža moramo voditi računa o sljedećim implementacijskim izazovima
koje sigurna komunikacija internetom stavlja na led̄a čvorova WSN-a:
• Implementacija TCP/IP stogaKako bi mogli komunicirati preko interneta i biti integrirani u mrežu interneta
stvari, ured̄aji moraju govoriti jezik protokola TCP/IP složaja. To se može
ostvariti korištenjem prilagod̄ene programske podrške (software rješenje) ili
sklopovskim proširenjem koje nudi implementaciju TCP/IP stoga na čipu
(hardware rješenje) i oslobad̄a sami ured̄aj od memorijskih i procesorskih
zahtjeva koje na njega stavlja programsko rješenje.
• Memorijski otisak korištene programske podrške (memory footprint)Kod korištenja provjerene programske podrške za ostvarenje osnovnih
sigurnosnih mehanizama naglasak mora biti stavljen na uštedu memorijskih
resursa. Pritom se mora voditi računa o ograničenjima stalne (non-volatile)
flash memorije za statičnu pohranu programa i nestalne (volatile) RAM
memorije za trenutnu pohranu podataka korištenih prilikom izvod̄enja
programa.
31
• Brzina izvod̄enja sigurnosnih algoritamaUšteda memorijskih resursa često smanjuje brzinu izvod̄enja samih algoritama
zbog čega je kod implementacije alogritama bitno naći odgovorajući
kompromis s obzirom na stvarne zahtjeve same komunikacije.
Nastavak ovog poglavlja donijet će detaljan opis ured̄aja, koji predstavljaju čvorove
bežične senzorske mreže, i njihove komunikacije preko sigurnog kanala ostvarenog
uporabom osnovnih algoritama simetrične i asimetrične kriptografije. Nakon opisa
glavnih karakteristika sustava bit će riječi o korištenim programskim proširenjima koja
ugradbenim ured̄ajima omogućavaju sigurnu komunikaciju, a kraj poglavlja donijet
će pregled rezultata uz objašnjenje utjecaja sigurnosnih mehanizama na performanse
sustava.
4.1. Dizajn sustava
Bežična senzorska mreža korištena za analizu sigurnosnih rješenja sastavljena je od
dva čvora koja su predstavljena Arduino UNO ured̄ajima. Iako je osnovna ideja bila
ostvariti M2M (machine-to-machine) komunikaciju preko interneta izmed̄u Arduino
UNO i Waspmote ured̄aja, zbog nedostatka ispravnog Waspmote WiFi modula, za
ispitivanje svojstava sigurne M2M komunikacije korištena su dva Arduino UNO
ured̄aja dok je Waspmote, čiji su memorijski kapaciteti nešto veći od Arduina,
korišten za njihovo testiranje prilikom izvod̄enja sigurnosnih algoritama.
Karakteristike ovih ured̄aja detaljno su opisane u sljedećem odlomku.
4.1.1. Opis korištenog sklopovlja
Arduino je programska platforma otvorenog koda s mogućnošću modularnog
proširivanja i kombiniranja programabilnih pločica (programmable circuit board) u
svrhu spajanja ugradbenih ured̄aja u internet stvari. Arduino UNO jedna je od
osnovnih programabilnih pločica čiju bazu čini 8 bitni ATmega328P AVR
mikrokontroler s RISC procesorskom arhitekturom koji upravlja svim komponentama
pločice i zadužen je za izvod̄enje i pohranu programa. Mikrokontroler sadrži 32kB
flash memorije za pohranu programskog koda, 2kB SRAM memorije korištene za
vrijeme izvod̄enja programa i 1kB dodatne EEPROM memorije za trajnu pohranu
podataka. Uz mikrokontroler na Arduino pločici nalazi se 14 digitalnih
ulazno/izlaznih (I/O) pinova te 6 analognih ulaznih pinova koji služe za komunikaciju
s ostalim ured̄ajima najčešće predstavljenim pločicama proširenja odnosno štitovima
32
(shield), USB priključak za jednostavnu komunikaciju i učitavanje programa s
računala, priključak za napajanje, gumb za resetiranje, pretvarač USB signala u
serijski signal te 16MHz kvarcni kristal za odred̄ivanje takta procesora (slika 4.1).
Slika 4.1: Arduino UNO ured̄aj [16]
Kako bi se opisana Arduino UNO programska pločica mogla spojiti na internet
potrebno ju je proširiti odgovarajućim štitom. Za tu svrhu korišten je službeni Arduino
WiFi štit (WiFi shield) koji se spaja na Arduino UNO preko I/O pinova i omogućuje mu
WiFi konekciju na internet preko bežične pristupne točke (wireless access point). WiFi
štit predstavlja zasebnu programabilnu pločicu s vlastitim mikrokontrolerom koji pruža
gotovu implementaciju TCP/IP stoga i omogućava Arduinu jednostavnu komunikaciju
nesigurnim kanalom preko interneta.
Uz Arduino UNO pločicu za izvod̄enje memorijski zahtjevnijih operacija korišten
je Waspmote ured̄aj čiji ATmega1281 8 bitni AVR mikrokontroler sadrži 128kB flash,
8kB SRAM i 4kB EEPROM memorije što mu, u odnosu na Arduino UNO, omogućuje
pohranu veće količine programskog koda i podataka pri njegovom izvod̄enju.
33
4.1.2. Sigurna mrežna komunikacija
Zbog ozbiljnih memorijskih nedostatak Arduino UNO ured̄aja kod uspostave
sigurnog komunikacijskog kanala korištena je prilagod̄ena verzija SSl/TLS protokola.
Sigurnosni mehanizmi koji se koriste bazirani su na mehanizmima SSL/TLS-a, a
naglasak je stavljen na ispitivanje izvedivosti algoritama kriptografije javnog ključa
koji se smatraju najzahtjevnijim implementacijskim izazovom u ostvarivanju sigurne
komunikacije. Proces uspostave sigurnog kanala, nad protokolima IP na mrežnom i
TCP na transportnom sloju, po uzoru na SSL/TLS podijeljen je na sljedeće
komunikacijske korake (slika 4.2):
Slika 4.2: Uspostava sigurnog komunikacijskog kanala
34
1. Prije početka komunikacije oba Arduino UNO ured̄aja moraju se preko WiFištita spojiti na bežičnu pristupnu točku kako bi med̄usobno mogli razmjenjivati
poruke preko interneta.
2. Inicijalna ClientHello poruka kojom Arduino ured̄aj s ulogom klijenta traži javniključ Arduina s ulogom poslužitelja.
3. Nakon što Arduino poslužitelj primi ClientHello poruku klijentu šalje svoj javniključ. Zbog jednostavnosti se pretpostavlja da je pripadajući par ključeva
unaprijed dostupan u programskoj memoriji Arduina. poslani javni ključ sastoji
se od javnog eksponenta i modulusa koji odred̄uje veličinu samog ključa.
4. Po primitku javnog ključa poslužitelja klijent generira nasumični ključ koji će sekasnije koristiti za očuvanje tajnosti komunikacijskog kanala.
5. klijent generira autentifikacijski kod (MAC) poruke m koja se sastoji od svihdosad razmijenjenih poruka. Autentifikacijski kod računa se HMAC algoritmom
koji koristi funkciju sažetaka i tajni ključ.
6. Klijent kriptira generirani tajni ključ javnim ključem poslužitelja i šalje mupripadajući šifrat.
7. Klijent kriptira MAC oznaku simetričnim ključem i šalje šifrat poslužitelju.
8. Poslužitelj dešifrira šifrat svojim privatnim ključem i kao rezultat dekripcijedobija dijeljeni tajni ključ koji se koristi za šifriranje poruka koje slijede
osiguravajući tako svojstvo tajnosti komunikacijskog kanala.
9. Poslužitelj dešifrira MAC oznaku poruke te provjerava integritet i autentičnostdosad poslanih poruka.
10. Ako je provjera prošla poslužitelj kriptira MAC vrijednost svih dosadrazmijenjenih poruka simetričnim ključem i šalje ga klijentu.
11. Klijent provjerava integritet i autentičnost primljene poruke. U slučaju uspješneprovjere započinje komunikacija sigurnim kanalom preko kojeg se šalju poruke
čiji su integritet i autentičnost zaštićeni HMAC algoritmom, a tajnost
simetričnim ključem.
U nastavku poglavlja detaljnije će biti opisana programska podrška koja
omogućava jednostavno učitavanje programa s računala na Arduino, komunikaciju s
WiFi štitom te implementaciju sigurnosnih primitiva protokola SSL/TLS.
35
4.2. Korištena programska podrška
4.2.1. Razvojno okruženje
Za implementaciju sustava opisanog u prethodnom odlomku korišten je programski
jezik c++ unutar službenog Arduino IDE razvojnog okruženja koje preko avr-gcc i
avr-g++ programskih prevodilaca (compiler) omogućuje prevod̄enje programa pisanih
u c++ i c programskim jezicima u strojni kod razumljiv AVR mikrokontrolerima.
Strojni kod se preko USB konekcije prenosi s računala na Arduino pločicu na kojoj se
pomoću USB serijskog pretvarača pretvara u oblik pogodan za serijski prijenos do
mikrokontrolera. Prevedeni program poslan sa serijskog sučelja u flash programsku
memoriju mikrokontrolera učitava tzv. bootloader program koji se nalazi na višim
memorijskim adresama flash memorije i obično je veličine 512 bajtova. Arduino
programi u Arduino IDE razvojnom okruženju nazivaju se skicama (sketch) i
sastavljeni su od dvije osnovne funkcije:
• setup() funkcije koja incijalizira i postavlja početne vrijednosti te pokrećeserijsko sučelje preko kojeg Arduino komunicira sa serijski monitorom
pokrenutim u sklopu Arduino IDE okruženja na računalu.
• loop() funkcije koja unutar beskonačne petlje izvodi definirane naredbe.
Programsko okruženje Waspmote PRO IDE korišteno za razvoj Waspmote programa
identično je Arduino IDE okruženju tako da se ono neće detaljno opisivati u okviru
ovog poglavlja.
4.2.2. Programska podrška za spajanje Arduina na internet
Spajanje Arduino ured̄aja na internet preko WiFi štita omogućava službena WiFi
programska biblioteka[17] koja podržava IEEE 802.11 b/g standarde za bežični
prijenos podataka uz WEP i WPA2 enkripciju bežične komunikacije izmed̄u Arduina
i bežične pristupne točke. Arduino s WiFi štitom komunicira preko SPI serijske
sabirnice što mu omogućava korištenje protokola TCP/IP stoga implementiranog na
pločici WiFi štita. WiFi biblioteka sastoji se od sljedeće četiri temeljne klase:
• WiFi - Klasa koja služi za inicijalizaciju WiFi konteksta, skeniranjedostupnih mreža (scanNetworks()), provjeru statusa konekcije
(status()) te pokretanje (begin()) i zaustavljanje (disconnect())
bežične konekcije. Ako se za bežičnu komunikaciju koriste WEP i WPA2
sigurnosni mehanizmi kod pokretanja je, uz naziv pristupne točke, potrebno
36
definirati i sigurnosnu lozinku.
• IPAddress - Klasa koja pruža informacije o mrežnoj konfiguraciji poputlokalne IP adrese (localIP()), adresne maske podmreže
(subnetMask()) te IP adrese mrežnog pristupnika (gatewayIP()).
• WiFiServer - Klasa koja stvara instancu poslužitelja s mogućnošćupovezivanja i razmjene podataka s klijentima preko interneta. Prilikom
stvaranja klase potrebno je definirati TCP port na kojem poslužitelj sluša
dolazne konekcije. Za provjeru dostupnosti klijentskih podataka koristi se
funkcija available(), a za TCP komunikaciju s klijentima koriste se
funkcije print(), write() i println() kojima se podaci prenose bajt
po bajt.
• WiFiClient - Klasa koja enkapsulira klijenta TCP komunikacije iomogućava mu povezivanje s poslužiteljem (connect(ip, port)) uz
definiranu IP adresu i TCP port, provjeru dostupnosti podataka poslužitelja
(available()), čitanje (read()) dolaznih i slanje odlaznih podataka
(print(), write() i println()) te zaustavljanje konekcije (stop())
4.2.3. Programska podrška za implementaciju sigurnosnihprimitiva
Kako Arduino nema službenu kriptografsku biblioteku za implementaciju sigurnosnih
primitiva potrebno je uključiti vanjske programske biblioteke prilagod̄ene ugradbenim
ured̄ajima s memorijskim ograničenjima. Kod uključivanja biblioteka unutar Arduino
programa treba voditi računa o njihovom memorijskom otisku i količini RAM i flash
memorije koju zauzimaju prilikom učitavanja i izvod̄enja programa. Arduino IDE
nakon prevod̄enja programa izračunava i ispisuje količinu programske i RAM
memorije koju će program zauzeti nakon učitavanja i pokretanja na Arduino pločici.
U programsku memoriju smješta se strojni kod programa sa svim pripadajućim
ovisnostima, a u RAM memoriju se neposredno nakon pokretanja učitavaju globalne
varijable programa. Za praćenje zauzeća RAM memorije koje se mijenja tijekom
izvod̄enja programa ovisno o lokalnim varijablama i funkcijskim pozivima korištena
je MemoryFree biblioteka koja vraća količinu trenutno slobodne RAM memorije
pozivom freeMemory() funkcije.
Implementacija AES algoritma simetrične kriptografije ostvarena je preko AES
biblioteke[18] koja podržava AES enkripciju i dekripciju u CBC načinu rada sa 128,
37
192 i 256 bitnim simetričnim ključevima. Biblioteka nudi sljedeće funkcije u svrhu
očuvanja tajnosti komunikacijskog kanala:
• set_key(key, size) - Funkcija za učitavanje prethodno nasumičnogeneriranog AES ključa key definirane veličine size.
• padPlaintext(input, padded_input) - Funkcija koja dodajeispunjenje (padding) poruci u izvornom formatu input kako bi duljina
poruke bila dijeljiva s veličinom CBC bloka od 16 bajtova. Ispravno ispunjena
poruka spremljena je u padded_input varijablu.
• cbc_encrypt(plain, cipher, n_blocks, iv) - Funkcija zašifriranje poruke plain CBC algoritmom ulančavanja blokova s definiranim
incijalizacijskim vektorom iv za šifriranje prvog bloka i ukupnim brojem
blokova n_blocks. Šifrat se kao krajnji rezultat sprema u varijablu
cipher.
• cbc_decrypt(cipher, plain, n_blocks, iv) - Funkcija zadešifriranje šifrata poruke cipher CBC algoritmom ulančavanja blokova s
definiranim incijalizacijskim vektorom iv za dešifriranje prvog bloka i
ukupnim brojem blokova n_blocks. Izvorna poruka se kao krajnji rezultat
sprema u varijablu plain.
Kako ova biblioteka ne nudi programsko sučelje za nasumično generiranje AES
ključa o tome treba voditi računa prije poziva set_key() funkcije. Arduino za
pseudo-slučajno generiranje (pseudo-random number generator) brojeva nudi
funkciju random(min, max) čija stvarna nasumičnost (true randomness) ovisi o
jačini nepredvidljivosti seed vrijednosti koja odred̄uje početnu točku generiranja
brojeva. Seed vrijednosti definira se funkcijom randomSeed(random_number)
za koju je bitno da je parametar random_number generiran iz dobrog izvora
entropije što ga čini uistinu nepredvidljivim. Izvor entropije korišten u ovom radu
oslanja se na nepredvidljive frekvencijske šumove signala takta (clock jitter)
Arduinovog ugrad̄enog sata. Biblioteka Entropy[20] omogućava inicijalizaciju
(initialize()) i generiranje slučajne vrijednosti (random()) korištenjem
navedenog izvora entropije.
Za implementaciju memorijski i procesorski najzahtjevnijeg, ali ujedno i
najraširenijeg temeljnog sigurnosnog mehanizma SSL/TLS protokola, RSA algoritma
korištena je programska biblioteka mbedTLS[19] posebno dizajnirana za
implementaciju SSL/TLS protokola na ugradbenim ured̄ajima malih procesorskih i
memorijskih kapaciteta. Kako se implementacija potpunog SSL/TLS protokola
38
pokazala kao prevelik memorijski zahtjev za ograničene Arduino ured̄aje, iz ove
biblioteke preuzeta je samo programska podrška za RSA algoritam (rsa i bignum)
koja se oslanja na matematičke operacije nad brojevima višestruke preciznosti (MPI -
multi-precision integer). Sučelje RSA programske biblioteke nudi sljedeće funkcije
za ispravnu inicijalizaciju RSA konteksta te enkripciju i dekripciju korištenjem RSA
javnog odnosno privatnog ključa:
• rsa_init(rsa_ctx) - Funkcija za inicijalizaciju instance objekta RSAkonteksta rsa_ctx nakon koje se kontekstu dodaju odgovarajuće vrijednosti
privatnog i javnog ključa.
• rsa_public_import(rsa_ctx, N, E) - Funkcija koja kontekstursa_ctx dodaje vrijednosti modulusa N i eksponenta E potrebne za stvaranje
javnog ključa.
• rsa_private_import(rsa_context, N, D) - Funkcija kojakontekstu rsa_ctx dodaje vrijednosti modulusa N i eksponenta D potrebne
za stvaranje privatnog ključa.
• rsa_public(rsa_ctx, input, output) - Funkcija za šifriranje ilidešifriranje (digitalni potpis) ulaza input javnim ključem učitanim iz RSA
konteksta rsa_ctx koja krajnji rezultat (šifrat ili originalnu poruku) sprema
u output varijablu.
• rsa_private(rsa_ctx, input, output) - Funkcija za dešifriranjeili šifriranje (digitalni potpis) ulaza input privatnim ključem učitanim iz RSA
konteksta rsa_ctx koja krajnji rezultat (originalnu poruku ili šifrat) sprema
u output varijablu.
Elementi RSA ključa poput privatnog eksponenta D i modulusa N u praksi
predstavljaju vrlo velike binirane brojeve duljine izmed̄u 512 i 4096 bita (64 i 512
bajtova), stoga je za njihovu pohranu u memoriju korištena bignum programska
biblioteka koja nad brojevima višestruke preciznosti implementira operacije
modularne aritmetike potrebne za uspješnu RSA enkripciju i dekripciju. Uz osnovne
operacije modularne aritmetike temeljnu operaciju za RSA algoritam predstavlja
modularno potenciranje koje je unutar bignum programske biblioteke ostvareno
metodama uzastopnog kvadriranja, Montgomeryjeve redukcije te kineskog teorema o
ostacima.
Za osiguravanje integriteta i autentičnosti poruka odabrana je SHA biblioteka [21]
koja nudi sučelje za inicijalizaciju SHA-1 i SHA-256 (init()) konteksta te
definiranje HMAC (initHmac(key, key_length)) ključa koji se zajedno s
39
funkcijom sažetka koristi prilikom generiranja MAC vrijednosti poruke
(resultHmac()).
4.3. Rezultati
Sve biblioteke korištene za implementaciju sigurnosnih primitiva testirane su na
Waspmote i Arduino platformama, a naglasak je stavljen na ispitivanje memorijskih
kapaciteta samih ured̄aja pri izvod̄enju sigurnosnih algoritama te utjecaj dodavanja
sigurnosti unutar komunikacijskog kanala na vremensko kašnjenje i količinu dodatnih
podataka. U nastavku poglavlja prvo će detaljno biti objašnjeni rezultati testiranja
RSA algoritma i podržanih veličina RSA ključeva uz pregled tehnika optimizacije
radne memorije, nakon čega slijede rezultati ispitivanja AES i HMAC algoritama te
na kraju zaključci vezani za sigurnu komunikaciju prilagod̄enom verzijom protokola
SSL/TLS.
4.3.1. Analiza RSA algoritma
Rezultati prikazani u sljedećoj tablici daju uvid u vremena izvod̄enja algoritama RSA
enkripcije i dekripcije na Arduino i Waspmote platformama ovisno o veličini RSA
ključeva i korištenoj metodi optimizacije modularnog potenciranja pri čemu
SQ_MUL označava metodu uzastopnog kvadriranja, MONT_RED metodu
Montgomeryjeve redukcije, a CRT kineski teorem o ostacima.
Kao što je vidljivo iz rezultata, nedostatak memorijskog kapaciteta (2kB RAM-a)
Arduino ured̄aja prevelik je za implementaciju uobičajenih veličina ključeva od 1024
i 2048 bitova za razliku od Waspmotea koji sa svojih 8kB RAM memorije može
podnijeti teret izračuna operacija potenciranja velikih brojeva u modulo aritmetici.
Operacija dekripcije privatnim ključem očekivano je zbog veće duljine eksponenta
računalno zahtjevnija i ona predstavlja najveći izazov i vremenski trošak kod
uspostave sigurnog kanala preko internetske veze. Ubrzanje koje donose navedene
metode optimizacije proporcionalne su s povećanjem memorijskih zahtjeva tijekom
izvod̄enja programa tako da kod njihove implementacije treba voditi računa o što
većoj uštedi memorije. Glavne tehnike uštede radne memorije koje nude Arduino i
Waspmote navedene su u nastavku.
Korištenje PROGMEM makroa za spremanje statičkih i globalnih varijabli u
programsku flash memoriju rasterećuje RAM memoriju od trajnog spremanja
navedenih varijabli tijekom životnog ciklusa programa. Ova metoda spremanja
40
Duljina ključa Metoda Enkripcija (ms) Dekripcija(ms)
(b) optimizacije Arduino Waspmote Arduino Waspomte
512
SQ_MUL 1294 1313 55154 59026
MONT_RED 498 541 16781 17392
CRT - - 5007 5317
768
SQ_MUL 2719 2803 - 188252
MONT_RED - 1173 - 56036
CRT - - - 16112
1024
SQ_MUL - 3813 - -
MONT_RED - 2006 - 131477
CRT - - - 35977
2048
SQ_MUL - 8056 - -
MONT_RED - 4439 - -
CRT - - - 115826
Tablica 4.1: Vremena RSA enkripcije i dekripcije na Arduino UNO i Waspmote platformama
podataka, iako uzrokuje sporiji pristup podacima, može biti vrlo korisna kod pohrane
velikih spremnika podataka poput kriptografskih ključeva koji se u RAM memoriju
učitavaju samo kad se trebaju koristiti.
Kako Arduino razvojno okruženje ne nudi podršku za debugiranje koda funkcije
ispisa glavno su sredstvo provjere tijeka izvod̄enja programa. F() makro dodaje se
unutar poziva funkcija ispisa kao bi osigurao spremanje konstantih znakovnih nizova
(string literal) u programsku memoriju.
Prilikom pisanja programa treba staviti naglasak na odabir pravilnog tipa varijable
ovisno o njenoj uporabi i veličini. Najmanje zauzeće memorije uzrokuje korištenje
char, unsigned char i byte tipova koji zauzimaju 1 bajt, za razliku od int i
short (2 bajta) te long, float i double (4 bajta) tipova.
Kod dinamičke alokacije memorije funkcijama malloc(), realloc() i
calloc() treba voditi računa o mogućnosti fragmentacije memorije nakon
oslobad̄anja funkcijom free().
Ako Arduino program ne prima i ne šalje veliku količinu podataka preko serijskog
sučelja postoji mogućnost smanjivanja serijskih spremnika za prijenos (TX_BUFFER)
i prijem (RX_BUFFER) podataka koji imaju zadanu početnu veličinu od 64 bajta koja
se može smanjiti na 32 ili 16 bajtova za dodatnu uštedu memorije.
Nakon analize RSA algoritma kriptografije javnog ključa nastavak poglavlja donosi
41
rezultate testiranja AES algoritma simetrične kriptografije, HMAC algoritma za izradu
koda autentičnosti poruke te SHA algortima za osiguravanje integriteta poruke.
4.3.2. Analiza HMAC, SHA algoritama
HMAC algoritam uz funkciju sažetka koristi i simetrični ključ za osiguravanje
autentičnosti što ga čini neznatno sporijim od SHA funkcije sažetka. Ovaj algoritam
primjenuje se nad svakom porukom koja se šalje sigurnim kanalom što povećava
veličinu same poruke za fiksni broj bitova koji ovisi o samoj funkciji sažetka koja se
koristi i najčešće iznosi 160 (SHA-1), 256 ili 512 (SHA-2 i SHA-3) bitova. Rezultati
testiranja funkcija sažetaka i HMAC algoritma dani su u sljedećoj tablici.
AlgoritamDuljina Veličina poruke Duljina ključa Vrijeme
(b) (B) sažetka (b) izvod̄enja (ms)
SHA-1 160100
-33
1000 67
SHA-256 256100
-36
1000 183
SHA-512 512100
-55
1000 235
HMAC SHA-256 256100
25657
1000 217
Tablica 4.2: Vremena izračunavanja sažetka i MAC vrijednosti poruka
4.3.3. Analiza AES algoritma
AES algoritam najpopularniji je algoritam kriptografije simetričnog ključa koji se
koristi za osiguravanje tajnosti sigurnog komunikacijskog kanala. Poruka se prilikom
enkripcije dijeli na blokove od 16 bajtova i šifrira blok po blok ulančavajući pritom
prethodne šifrate s trenutnim blokom. U CBC načinu rada šifrat bloka predaje se
XOR funkciji zajedno s izvornim tekstom sljedećeg bloka nakon čega se izlaz XOR
funkcije kriptira simetričnim ključem i na isti način ulančava sa sljedećim blokom.
Kod šifriranja prvog bloka koristi se i inicijalizacijski vektor (IV) koji zamjenjuje
šifrat u XOR funkciji. Vremena šifriranja AES algoritma dana su u sljedećoj tablici.
Treba napomenuti kako najveći vremenski trošak kod ovog algoritma na Arduinu
predstavlja generiranje nasumičnog ključa (540 ms) zbog vremena potrebnog da se
42
postigne odgovarajuća količina entropije preko frekvencijskih odstupanja signala
takta za generiranje stvarno nasumične vrijednosti.
Algoritam Duljina ključa (b) Veličina poruke (B) Vrijeme šifriranja (ms)
AES-128 128128 6
256 10
AES-256 256128 8
256 14
Tablica 4.3: Vrijeme izvod̄enja simetrične enkripcije podataka
4.3.4. Svojstva komunikacije sigurnim kanalom
Predložena sigurna mrežna komunikacija izmed̄u dva Arduino ured̄aja koristi sve
prethodno analizirane sigurnosne primitive kako bi, po uzoru na protokol SSL/TLS,
osigurala temeljna sigurnosna svojstva povjerljivosti, autentičnosti i integriteta.
Sigurnost komunikacijskog kanala Arduino ured̄aji plaćaju povećanim procesorskim i
memorijskim zahtjevima, a uz to se povećava i veličina samih poruka koje se prenose
kanalom. Kada se tome doda još i vremensko trajanje prilagod̄enog procesa
rukovanja jasno je da sigurnost predstavlja ozbiljan komunikacijski trošak. Kada
promatramo proces rukovanja najveći izazov na ured̄aje stavlja RSA algoritam čije
operacije kriptiranja, a posebno dekriptiranja znatno povećavaju vrijeme potrebno za
uspješnu uspostavu šifriranog kanala. Na kašnjenja u komunikaciji osim samog
procesa rukovanja utječu i podaci koje porukama za vrijeme komunikacije sigurnim
kanalom dodaju HMAC (MAC vrijednost) i AES (ispuna poruke i razmjena
inicijalizacijskog vektora).
43
5. Zaključak
Pitanje sigurnosti u bežičnim senzorskim mrežama kojim se bavi ovaj rad vrlo je
bitno pitanje u današnjem vremenu intern