|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
single-board-computer-x509.md | 4 weeks ago | |
wio-terminal-x509.md | 4 weeks ago |
README.md
Чувајте своју биљку безбедном
Скица од Nitya Narasimhan. Кликните на слику за већу верзију.
Квиз пре предавања
Увод
У претходним лекцијама креирали сте IoT уређај за праћење влажности земљишта и повезали га са облаком. Али шта ако хакери који раде за конкурентског фармера преузму контролу над вашим IoT уређајима? Шта ако пошаљу високе вредности влажности земљишта тако да ваше биљке никада не буду заливане, или укључе систем за заливање да ради непрекидно, што би довело до прекомерног заливања и уништења биљака, уз огромне трошкове за воду?
У овој лекцији научићете како да обезбедите IoT уређаје. Пошто је ово последња лекција за овај пројекат, научићете и како да очистите своје ресурсе у облаку, смањујући потенцијалне трошкове.
У овој лекцији обрадићемо:
- Зашто је потребно обезбедити IoT уређаје?
- Криптографија
- Обезбедите своје IoT уређаје
- Генеришите и користите X.509 сертификат
🗑 Ово је последња лекција у овом пројекту, па након завршетка лекције и задатка, не заборавите да очистите своје услуге у облаку. Услуге ће вам бити потребне за завршетак задатка, па се уверите да сте то прво завршили.
Погледајте упутство за чишћење пројекта ако су вам потребна упутства како то да урадите.
Зашто је потребно обезбедити IoT уређаје?
Безбедност IoT уређаја подразумева осигурање да само очекивани уређаји могу да се повежу са вашим облачним IoT сервисом и шаљу телеметрију, као и да само ваш облачни сервис може да шаље команде вашим уређајима. IoT подаци могу бити лични, укључујући медицинске или интимне податке, па цела ваша апликација мора узети у обзир безбедност како би спречила цурење ових података.
Ако ваша IoT апликација није безбедна, постоји низ ризика:
- Лажни уређај може послати нетачне податке, што би довело до погрешног одговора апликације. На пример, могли би да шаљу стално високе вредности влажности земљишта, што би значило да се систем за наводњавање никада не укључује, а ваше биљке умиру од недостатка воде.
- Неовлашћени корисници могли би да читају податке са IoT уређаја, укључујући личне или пословно критичне податке.
- Хакери би могли да шаљу команде за контролу уређаја на начин који би могао да оштети уређај или повезани хардвер.
- Повезивањем на IoT уређај, хакери могу користити то за приступ додатним мрежама и добијање приступа приватним системима.
- Злонамерни корисници могли би да приступе личним подацима и користе их за уцену.
Ово су сценарији из стварног света и дешавају се стално. Неки примери су наведени у ранијим лекцијама, али ево још неких:
- У 2018. години, хакери су користили отворену WiFi приступну тачку на термостату акваријума да би добили приступ мрежи казина и украли податке. The Hacker News - Casino Gets Hacked Through Its Internet-Connected Fish Tank Thermometer
- У 2016. години, Mirai Botnet је покренуо напад ускраћивања услуге (DDoS) против Dyn-а, провајдера интернет услуга, што је довело до прекида великих делова интернета. Овај ботнет је користио малвер за повезивање са IoT уређајима као што су DVR-ови и камере које су користиле подразумеване корисничке имена и лозинке, и одатле покренуо напад. The Guardian - DDoS attack that disrupted internet was largest of its kind in history, experts say
- Spiral Toys је имао базу података корисника њихових CloudPets повезаних играчака јавно доступну преко интернета. Troy Hunt - Data from connected CloudPets teddy bears leaked and ransomed, exposing kids' voice messages.
- Strava је означавала тркаче које сте прошли и приказивала њихове руте, омогућавајући странцима да ефективно виде где живите. Kim Komndo - Fitness app could lead a stranger right to your home — change this setting.
✅ Урадите истраживање: Потражите још примера IoT хаковања и кршења IoT података, посебно са личним предметима као што су интернет повезане четкице за зубе или ваге. Размислите о утицају који ови хакови могу имати на жртве или купце.
💁 Безбедност је огромна тема, и ова лекција ће се дотаћи само неких основа око повезивања вашег уређаја са облаком. Друге теме које неће бити обрађене укључују праћење промена података у транзиту, директно хаковање уређаја или промене конфигурација уређаја. Хаковање IoT уређаја је толика претња да су развијени алати као што је Azure Defender for IoT. Ови алати су слични антивирусним и безбедносним алатима које можда имате на свом рачунару, само су дизајнирани за мале, слабо напајане IoT уређаје.
Криптографија
Када се уређај повезује са IoT сервисом, користи ID да би се идентификовао. Проблем је што се овај ID може клонирати - хакер би могао поставити злонамерни уређај који користи исти ID као прави уређај, али шаље лажне податке.
Решење за ово је претварање података који се шаљу у шифровани формат, користећи неку вредност познату само уређају и облаку. Овај процес се назива енкрипција, а вредност која се користи за шифровање података назива се кључ за шифровање.
Облачни сервис затим може претворити податке назад у читљив формат, користећи процес назван декрипција, користећи или исти кључ за шифровање, или кључ за декрипцију. Ако шифрована порука не може бити декодирана кључем, уређај је хакован и порука се одбацује.
Техника за енкрипцију и декрипцију назива се криптографија.
Рана криптографија
Најранији типови криптографије били су шифри замене, који датирају од пре 3.500 година. Шифри замене подразумевају замену једног слова другим. На пример, Цезарова шифра подразумева померање абецеде за одређени број, при чему само пошиљалац шифроване поруке и намењени прималац знају за колико слова да помере.
Виженерова шифра је ово унапредила користећи речи за шифровање текста, тако да је свако слово у оригиналном тексту померено за различит број, уместо да се увек помера за исти број слова.
Криптографија је коришћена за широк спектар сврха, као што је заштита рецепта за глазуру грнчара у древној Месопотамији, писање тајних љубавних порука у Индији или чување древних египатских магичних чаролија у тајности.
Савремена криптографија
Савремена криптографија је много напреднија, што је чини тежом за разбијање у односу на ране методе. Савремена криптографија користи сложену математику за шифровање података са превише могућих кључева да би напади грубом силом били могући.
Криптографија се користи на много различитих начина за сигурну комуникацију. Ако читате ову страницу на GitHub-у, можда ћете приметити да адреса веб сајта почиње са HTTPS, што значи да је комуникација између вашег претраживача и веб сервера GitHub-а шифрована. Ако би неко могао да чита интернет саобраћај који тече између вашег претраживача и GitHub-а, не би могао да прочита податке јер су шифровани. Ваш рачунар можда чак шифрује све податке на вашем хард диску, тако да ако га неко украде, неће моћи да прочита ваше податке без ваше лозинке.
🎓 HTTPS означава HyperText Transfer Protocol Secure
Нажалост, није све безбедно. Неки уређаји немају никакву безбедност, други су обезбеђени лако пробојним кључевима, или понекад чак сви уређаји истог типа користе исти кључ. Било је случајева веома личних IoT уређаја који сви имају исту лозинку за повезивање преко WiFi-а или Bluetooth-а. Ако можете да се повежете на свој уређај, можете се повезати и на туђи. Једном када се повежете, могли бисте приступити веома приватним подацима или имати контролу над њиховим уређајем.
💁 Упркос сложености савремене криптографије и тврдњама да разбијање енкрипције може трајати милијардама година, појава квантног рачунарства довела је до могућности разбијања свих познатих енкрипција у веома кратком времену!
Симетрични и асиметрични кључеви
Енкрипција долази у два типа - симетрична и асиметрична.
Симетрична енкрипција користи исти кључ за шифровање и дешифровање података. И пошиљалац и прималац морају знати исти кључ. Ово је најмање сигуран тип, јер кључ мора бити некако подељен. Да би пошиљалац послао шифровану поруку примаоцу, пошиљалац прво мора да пошаље примаоцу кључ.
Ако кључ буде украден током преноса, или ако пошиљалац или прималац буду хаковани и кључ буде пронађен, енкрипција може бити пробијена.
Асиметрична енкрипција користи 2 кључа - кључ за шифровање и кључ за дешифровање, познате као јавни/приватни пар кључева. Јавни кључ се користи за шифровање поруке, али не може се користити за дешифровање, док се приватни кључ користи за дешифровање поруке, али не може се користити за шифровање.
Прималац дели свој јавни кључ, а пошиљалац користи овај кључ за шифровање поруке. Када се порука пошаље, прималац је дешифрује својим приватним кључем. Асиметрична енкрипција је сигурнија јер се приватни кључ чува приватно од стране примаоца и никада се не дели. Јавни кључ може имати било ко, јер се може користити само за шифровање порука.
Симетрична енкрипција је бржа од асиметричне, док је асиметрична сигурнија. Неки системи користе оба типа - користећи асиметричну енкрипцију за шифровање и дељење симетричног кључа, а затим користећи симетрични кључ за шифровање свих података. Ово чини дељење симетричног кључа између пошиљаоца и примаоца сигурнијим, и бржим када се шифрују и дешифрују подаци.
Обезбедите своје IoT уређаје
IoT уређаји могу бити обезбеђени коришћењем симетричне или асиметричне енкрипције. Симетрична је лакша, али мање сигурна.
Симетрични кључеви
Када сте подесили свој IoT уређај за интеракцију са IoT Hub-ом, користили сте низ за повезивање. Пример низа за повезивање је:
HostName=soil-moisture-sensor.azure-devices.net;DeviceId=soil-moisture-sensor;SharedAccessKey=Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0=
Овај низ за повезивање састоји се од три дела одвојена тачка-зарезима, при чему је сваки део кључ и вредност:
Кључ | Вредност | Опис |
---|---|---|
HostName | soil-moisture-sensor.azure-devices.net |
URL IoT Hub-а |
DeviceId | soil-moisture-sensor |
Јединствени ID уређаја |
SharedAccessKey | Bhry+ind7kKEIDxubK61RiEHHRTrPl7HUow8cEm/mU0= |
Симетрични кључ познат уређају и IoT Hub-у |
Последњи део овог низа за повезивање, SharedAccessKey
, је симетрични кључ познат и уређају и IoT Hub-у. Овај кључ се никада не шаље са уређаја на облак, нити са облака на уређај. Уместо тога, користи се за шифровање података који се ша
💁 Због времена истека, ваш IoT уређај мора да зна тачно време, које се обично чита са NTP сервера. Ако време није тачно, веза ће пропасти.
После успостављања везе, сви подаци који се шаљу IoT Hub-у са уређаја, или са IoT Hub-а ка уређају, биће шифровани помоћу заједничког приступног кључа.
✅ Шта мислите да ће се десити ако више уређаја користи исти низ за повезивање?
💁 Није добра пракса у безбедности да се овај кључ чува у коду. Ако хакер дође до вашег изворног кода, може доћи и до вашег кључа. Такође, теже је приликом објављивања кода јер би било потребно поново компајлирати код са ажурираним кључем за сваки уређај. Боље је учитати овај кључ из хардверског безбедносног модула - чипа на IoT уређају који чува шифроване вредности које ваш код може да прочита.
Приликом учења о IoT-у често је лакше ставити кључ у код, као што сте то урадили у претходној лекцији, али морате осигурати да овај кључ није укључен у јавно контролисање изворног кода.
Уређаји имају 2 кључа и 2 одговарајућа низа за повезивање. Ово омогућава ротацију кључева - то јест прелазак са једног кључа на други ако је први компромитован, и поновно генерисање првог кључа.
X.509 сертификати
Када користите асиметрично шифровање са паром јавног/приватног кључа, потребно је да свој јавни кључ дате свима који желе да вам пошаљу податке. Проблем је у томе како прималац вашег кључа може бити сигуран да је то заиста ваш јавни кључ, а не неко ко се претвара да је ви? Уместо да пружите кључ, можете уместо тога пружити свој јавни кључ унутар сертификата који је потврђен од стране треће стране од поверења, названог X.509 сертификат.
X.509 сертификати су дигитални документи који садрже јавни део пара јавног/приватног кључа. Обично их издаје једна од бројних поузданих организација названих сертификационе власти (CAs), и дигитално их потписује CA како би указала да је кључ валидан и да долази од вас. Ви верујете сертификату и да је јавни кључ од онога од кога сертификат каже да је, јер верујете CA, слично као што бисте веровали пасошу или возачкој дозволи јер верујете земљи која их издаје. Сертификати коштају, па можете и сами потписати, то јест креирати сертификат који сами потписујете, за потребе тестирања.
💁 Никада не треба користити сертификат који сте сами потписали за производну верзију.
Ови сертификати имају бројна поља, укључујући од кога је јавни кључ, детаље о CA који га је издао, колико дуго је валидан, и сам јавни кључ. Пре коришћења сертификата, добра је пракса да га проверите тако што ћете проверити да ли је потписан од оригиналног CA.
✅ Можете прочитати комплетан списак поља у сертификату у Microsoft туторијалу о разумевању X.509 јавних кључних сертификата
Када користите X.509 сертификате, и пошиљалац и прималац ће имати своје јавне и приватне кључеве, као и X.509 сертификате који садрже јавни кључ. Затим размењују X.509 сертификате на неки начин, користећи јавне кључеве једни других за шифровање података које шаљу, и своје приватне кључеве за дешифровање података које примају.
Једна велика предност коришћења X.509 сертификата је што се могу делити између уређаја. Можете креирати један сертификат, отпремити га на IoT Hub, и користити га за све своје уређаје. Сваки уређај затим само треба да зна приватни кључ како би дешифровао поруке које прима од IoT Hub-а.
Сертификат који ваш уређај користи за шифровање порука које шаље IoT Hub-у објављује Microsoft. То је исти сертификат који користи много Azure услуга, и понекад је уграђен у SDK-ове.
💁 Запамтите, јавни кључ је управо то - јавни. Azure јавни кључ може се користити само за шифровање података који се шаљу Azure-у, а не за њихово дешифровање, тако да се може делити свуда, укључујући у изворном коду. На пример, можете га видети у Azure IoT C SDK изворном коду.
✅ Постоји много жаргона у вези са X.509 сертификатима. Можете прочитати дефиниције неких термина на које можете наићи у Водичу за лаике кроз X.509 сертификатски жаргон
Генерисање и коришћење X.509 сертификата
Кораци за генерисање X.509 сертификата су:
-
Креирајте пар јавног/приватног кључа. Један од најчешће коришћених алгоритама за генерисање пара јавног/приватног кључа назива се Rivest–Shamir–Adleman(RSA).
-
Поднесите јавни кључ са повезаним подацима за потписивање, било од стране CA, или самопотписивањем.
Azure CLI има команде за креирање новог идентитета уређаја у IoT Hub-у, и аутоматско генерисање пара јавног/приватног кључа и креирање самопотписаног сертификата.
💁 Ако желите да видите кораке детаљно, уместо коришћења Azure CLI-а, можете их пронаћи у Туторијалу за коришћење OpenSSL-а за креирање самопотписаних сертификата у Microsoft IoT Hub документацији
Задатак - креирање идентитета уређаја користећи X.509 сертификат
-
Покрените следећу команду за регистрацију новог идентитета уређаја, аутоматски генеришући кључеве и сертификате:
az iot hub device-identity create --device-id soil-moisture-sensor-x509 \ --am x509_thumbprint \ --output-dir . \ --hub-name <hub_name>
Замените
<hub_name>
именом које сте користили за свој IoT Hub.Ово ће креирати уређај са ID-јем
soil-moisture-sensor-x509
како би се разликовао од идентитета уређаја који сте креирали у претходној лекцији. Ова команда ће такође креирати 2 датотеке у тренутном директоријуму:soil-moisture-sensor-x509-key.pem
- ова датотека садржи приватни кључ за уређај.soil-moisture-sensor-x509-cert.pem
- ово је X.509 сертификатска датотека за уређај.
Чувајте ове датотеке на сигурном! Датотека приватног кључа не би требало да буде укључена у јавно контролисање изворног кода.
Задатак - коришћење X.509 сертификата у коду вашег уређаја
Прођите кроз релевантни водич за повезивање вашег IoT уређаја са облаком користећи X.509 сертификат:
🚀 Изазов
Постоји више начина за креирање, управљање и брисање Azure услуга као што су Resource Groups и IoT Hubs. Један од начина је Azure Portal - веб интерфејс који вам пружа GUI за управљање вашим Azure услугама.
Посетите portal.azure.com и истражите портал. Покушајте да креирате IoT Hub користећи портал, а затим га обришите.
Савет - приликом креирања услуга преко портала, не морате унапред креирати Resource Group, она се може креирати приликом креирања услуге. Уверите се да сте је обрисали када завршите!
Можете пронаћи доста документације, туторијала и водича о Azure порталу у Azure портал документацији.
Квиз након предавања
Преглед и самостално учење
- Прочитајте о историји криптографије на страници о историји криптографије на Википедији.
- Прочитајте о X.509 сертификатима на страници о X.509 на Википедији.
Задатак
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.