53
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA DIPLOMSKI RAD br. 1736 Usporedba mehanizama za ostvarivanje sigurne komunikacije u beži ˇ cnim senzorskim mrežama Borna Sirovica Zagreb, lipanj 2018.

Usporedba mehanizama za ostvarivanje sigurne komunikacije ...(WLAN - Wireless Local Area Network). WiFi je zapravo popularni naziv za IEEE 802.11 standard koji je zbog svoje raširenosti

  • 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