diff --git a/src/contents/4-bevezetes.tex b/src/contents/4-bevezetes.tex index 4271988cf5336658b16e95a30e94c7994c02c446..d7ac2837d686965059ff8f6d1f1aa78d1ad24ad4 100644 --- a/src/contents/4-bevezetes.tex +++ b/src/contents/4-bevezetes.tex @@ -15,19 +15,17 @@ } \section{Feladat} -% Az elvégzett munka kontextusa, szakmai indoklása, motivációk, célkitűzés és az elvégzett feladatok összefoglalása. +\label{feladat} -\paragraph{} - -A kitűzött cél a következő: Alkossunk meg egy olyan +\paragraph{} A kitűzött cél a következő: Alkossunk meg egy olyan biztonságtechnikai rendszert, mely a modern háztartásban megállja a helyét. Ezt a kijelentésünket egy ilyen szakdolgozat keretében bizonyára nem lehet teljesíteni, de a célunk az, hogy annak eléréséhez egy biztos alapot adjunk. Ahhoz, hogy ezt belátható keretek között lehessen értelmezni, szükséges megkötéseket és elvárásokat helyezni a projektre. -A legelső konkretizáció az, hogy az említett "alap" felépítését a -következő elemekből definiáljuk (továbbiakban: "a rendszer"): +A legelső konkretizáció az, hogy az említett "alap" felépítését a következő +elemekből definiáljuk (továbbiakban: "a rendszer"): \begin{itemize} \item Központi egység, @@ -37,22 +35,21 @@ következő elemekből definiáljuk (továbbiakban: "a rendszer"): Ebből már látható, hogy a rendszer elsősorban behatolásjelzésre képes. További funkciókkal való bővítés nem tárgya a dolgozatnak, de fontos eleme a -rendszernek, hogy minimális biztonságtechnikai elvárásoknak megfeleljen már a legelső -koncepció is. +rendszernek, hogy minimális biztonságtechnikai elvárásoknak megfeleljen már a +legelső koncepció is. A rendszer feladata az érzékelt események kezelése és a felhasználók értesítése SMS-en vagy e-mail-en, vagy egyéb kommunikációs csatornákon. Emellett kiemelt -cél a rendszer okosotthon-megoldásokkal való integrálása. Az okosotthon -rendszer teljeskörű működése ezen a dolgozaton túlmutat, viszont az előzetes -kutatás során tisztában kell lenni azok, a rendszerrel való integrációs -lehetőségeiről. +cél a rendszer okosotthon-megoldásokkal való integrálása. Az okosotthon rendszer +teljeskörű működése ezen a dolgozaton túlmutat, viszont az előzetes kutatás +során tisztában kell lenni azok, a rendszerrel való integrációs lehetőségeiről. A központi egység a PIR mozgásérzékelőket kezeli és azok eseményeit dolgozza fel. Továbbá vezetékkel vagy vezeték nélkül interfészel a hálózattal, melyen keresztül képes integrációt létesíteni az okosotthonnal. -Feladatom irodalmi adatok alapján megismerkedni a hardveres és szoftveres biztonsági -megoldásokkal és felkeresni számos hasonló rendszert. Megismerni azok +Feladatom irodalmi adatok alapján megismerkedni a hardveres és szoftveres +biztonsági megoldásokkal és felkeresni számos hasonló rendszert. Megismerni azok működését és összegyűjteni azok választott megoldásait. Kiválasztom a központi egység megvalósításához a megfelelő hardveres platformot, illetve programozási környezetet és nyelvet. Figyelembe véve, hogy a központi egység és az okosotthon diff --git a/src/contents/5-elozmenyek.tex b/src/contents/5-elozmenyek.tex index 8b50eec8c8b04aa4349affab5b89105598334138..87a699072bc97474762e29aa37b5fd9f762ef59f 100644 --- a/src/contents/5-elozmenyek.tex +++ b/src/contents/5-elozmenyek.tex @@ -17,6 +17,7 @@ elméleti kérdéseket és a projekt lehetőségeit dokumentálom. } \section{Kereskedelmi megoldások elemzése} +\label{kereskedelmi} \paragraph{} Számos cég foglalkozik biztonságtechnikával, közöttük van sok évnyi tapasztalattal rendelkező, de viszonylag új versenytásak is jelen vannak @@ -180,6 +181,7 @@ ezért sokkal inkább alkalmasak olyan környezetekben való alkalmazásra, ahol rendszerintegráció nem opcionális bővítési lehetőség, hanem elemi követelmény. \subsection{Költséghatékonyság és gazdasági szempontok} +\label{koltseg} \paragraph{} A biztonságtechnikai rendszerek gazdasági értékelésénél nem csupán a kezdeti @@ -568,6 +570,7 @@ vált ki. A védelem egy normál esetben zárt állapotú nyomógombbal valósí meg. \subsection{Informatikai biztonság} +\label{inf-bizt} \paragraph{} A riasztórendszerek informatika-orientált komponenseinek megtervezéséhez elengedhetetlen a kiberbiztonsági szempontok átfogó ismerete. Az diff --git a/src/contents/6-tervezes.tex b/src/contents/6-tervezes.tex index 0d9cf23d46dc65a322c8b47e4294084d4adb7b92..4b37210c0af6deb2e4c8e9bb8cea53fa049a8af9 100644 --- a/src/contents/6-tervezes.tex +++ b/src/contents/6-tervezes.tex @@ -1,17 +1,10 @@ \chapter{Tervezés} -% Alkamazmazott módszertan/technológiák ismertetése: A dolgozat témájához illeszkedve kell részletezni a feladat megoldásához, megvalósításához kapcsolódó szakmai hátteret. - -% \section{A rendszer céljai} - -% Itt definiálom, hogy a rendszer mit kell tudjon végrehajtson, mit várunk el tőle. -% Kimondjuk, hogy miből áll a teljes rendszer, mit tervezünk megvalósítani. -% Megfogalmazom a biztonsági elvásárokat, kényelmi szempontokat (+okosotthon-integráció). \chapterintro{ - Az előzetes kutatás szerint ismerkedem a projekthez illő technológiákkal, megkeresem - a megvalósításhoz használt eszközöket és megválasztom azokat az arra vetett - megkötéseinket figyelembe véve. Miután konkretizáltam a projekt kereteit, a - megvalósítandó rendszer tervezésével foglalkozom. A mikrokontroller az ESP32 + Az előzetes kutatás szerint ismerkedem a projekthez illő technológiákkal, + megkeresem a megvalósításhoz használt eszközöket és megválasztom azokat az arra + vetett megkötéseinket figyelembe véve. Miután konkretizáltam a projekt kereteit, + a megvalósítandó rendszer tervezésével foglalkozom. A mikrokontroller az ESP32 hardver platfomon, Rust szoftveres környezetben valósul meg. Az okosotthon integrációhoz a rendszer vezetékes hálózaton MQTT protokollon fog kommunikálni. A választott technológiákkal ismerkedem. A tervezés befejeztével megindoklom @@ -20,24 +13,103 @@ } \section{Döntések} -% A korábban kutatottak alapján kiértékelem, hogy a létező megoldások milyen minőségben felelnek meg a célunknak. +\paragraph{} \Aref{feladat}. fejezetben definiáltuk a rendszer alapfeladatait. +A megvalósításához meg kell választanom a megfelelő hardveres platformot és +szoftveres környezetet, figyelve a megismert biztonságtechnikai kérdésekre. A +döntéseknél figyelembe veszem a már létező kereskedelmi rendszerek sajátosságait +és megoldásait; azok előnyei és hátrányai között keresem a kompromisszumot. -\section{Választott megoldások indoklása} +A központi egységhez az Espressif ESP32 platformcsaládját választom, a +szoftveres implementációt Rust programozási nyelven, a hivatalos Rust alapú +framework használatával fogom megvalósítani. Az ESP32 viszonylag olcsó, +általános célú mikrokontroller. Szoftveres támogatottsága az elmúlt néhány +évben növekvő figyelmet élvez, különösen a Rust programozási nyelv körében. +\cite{rust-iot} Ez a hardver és szoftver kombináció az iparágban meglehetősen +újkeletűnek mondható például egy Arduino és a hozzá tartozó széleskörű hardveres +és szoftveres támogatottsággal szemben. Vitatható, hogy egy biztonságkritikus +rendszer megvalósításában ésszerű döntés lenne, ha a gyártó által ajánlott +és szélesebb körben használatos C/C++ alapú ESP-IDF framework-öt használnám, +a fiatalabb, kevésbé elterjedt változattal szemben. Azért nem így döntöttem, +mert \aref{inf-bizt}. fejezetben a szoftverbiztonság fényében fontosnak +tartom a memóriabiztonságot. Legalább olyan fontosnak, hogy az már a tervezés +legelején kereteket szabjon. Ezért válaszottam a Rust-ot, ami fundamentálisan +a memóriabiztonságra épülő rendszerek programozására akalmas alacsony szintű +nyelv. -% Itt részletezem miért az ESP32 platformot, majd miért a Rust programozási nyelvet használjuk. -% Előnyei / hátrányai egyebekkel szemben. A célt milyen mélységben képes megvalósítani. Szempont a -% mérnöki tervezés, szoftverfejlesztés környezetének használhatósága is. +A rendszerem kizárólag vezetékes kommunikációt fog alkalmazni. Ez +\aref{kereskedelmi}. fejezetben megismert két kategória közül a hagyományos +rendszerekre jellemző. Láttuk, hogy előny az egyszerűbb architektúra, de +hátrány a rugalmatlanság. Célom, hogy ne adjunk esélyt a kommunikációs médiumon +való információ kiszivárgására, ezért ez a fizikai biztonságon fog múlni. +A rendszeren belül titkosításra emiatt nincs szükség, de a külső hálózaton +mindenképpen kell, ezért erre alkalmas integrációs protokollt fogok választani. +A külső hálózati interfész szerepében egy Ethernet vezérlőt választok, +ami például egy WiFi rádió modulhoz képest kevesebb hibaforrást jelent az +architektúra egyszerűsége miatt szoftver oldalon is. A látott rugalmatlanság itt +nem lesz jellemző -- az okosotthon integráció fogja ellensúlyozni. -\subsection{ESP32 platform} +Az okosotthon integrációhoz előszor meg kell választanom, milyen szoftverrel +kell tudnia a rendszernek kommunikálnia. Ha ezt megtettem, ezután a +kommunikációhoz használt protokollt pontosítom. Ahogy \aref{kereskedelmi}. +fejezetben láttuk, hogy a DIY rendszerek mindegyike önmagában egy IoT platform +is, a gyártó által kiadott zárt szoftverrel együtt. Illetve a nagy hátrányuk +az volt, hogy a legtöbb esetben előfizetés keretében volt elérhető a teljes +funkcionalitás, vagyis hosszútávú költségek magasak voltak. A mi rendszerünknek +azt a célt tűzöm ki, hogy egy nyílt ökoszisztéma legyen, azaz a hardveres +megoldások és a szoftver forrása nyílt és szabadon felhasználható legyen. +Ne legyenek egyáltalán hosszútávú költségek, illetve a rövidtávú költségek +keretében csak a rendszer anyagára legyen számottevő. Ezekkel a megkötésekkel +a rendszer mechanikai telepítése és a szoftveres telepítés időköltsége +kompromitál. A megkötést az integrációra is érvényesítem, ezért az okosotthon +megoldások körében a helyileg futtatott, ``self-hosted'', nyílt forrású és +szabadon felhasználható szoftverek körében szeretnék elsősorban integrációra +lehetőséget keresni. Ezeknek a Home Assistant okosotthon felel meg, ezzel +a szoftvercsomaggal fog integrációt élvezni a rendszerem, ami a feladatban +megfogalmazott feltételeknek megfelel. Továbbá a feladatban említett értesítési +módok mindegyikét lehetséges vele használni. \cite{hass-integrations} A +megfogalmazott feltételből felmerülő hátrány a következő: a rendszer ettől +kezdve feltételezi és elvárja, hogy a felhasználónak legyen egy működő +Home Assistant példánya, és nem pedig egy felhős megoldással integrálódik. +Láthatóan a kényelem árára célom növelni a biztonságot itt is azzal, hogy maga +a riasztórendszer számára nem lesz internetelérés, hanem kizárólag a belső +hálózaton lesz képes kommunikálni az okosotthon-rendszerrel. A Home Assistant +készítői közzé tettek egy teljeskörű telepítési útmutatót számos lehetőséggel. +\cite{hass-install} Ennek tudatában ezt nem tartom hátráltató tényezőnek az +onboarding élmény során. + +Az okosotthon integráció megválasztása után a hálózati kommunikációra +fordítom a tervezés menetét. Választanom kell egy olyan protokollt, mely képes +titkosításra, a Home Assistant támogat és a Rust platformon van hozzá megbízható +implementáció. Ezeknek az MQTT protokoll felel meg leginkább, ezért választottam +azt. Egyetlen hátránynak tűnhet, hogy egy önálló szerver futtatását igényli, +az úgynevezett ``broker''-t. Azért lehet hátrány, mert ez plusz terhet helyezne +a végfelhasználóra alapesetben, de mivel a Home Assistant szoftvercsomagában +széleskörű támogatást élvez, sőt egy hivatalos kiegészítőként is működtethető, +nem vonatkozik esetünkre az állítás. A telepítés lépései könnyűek és rövidek. +\cite{hass-mqtt-broker} Miután elindul a broker, és a rendszer csatlakozik +rá, azonnal láthatóvá fog válni a Home Assistantban. Ez \aref{kereskedelmi}. +fejezetben látottakban kimagasló előnyt jelent a DIY rendszerekhez képest, +mert az onboarding élmény elméletben megbízható lesz a vezetékes kommunikáció +miatt, és a kifejlett protokoll és integráció miatt. A hibafaktor az a saját +implementáláson fog leginkább múlni, melyet a gyakorlatban fogunk tudni +felmérni. -Az Espressif ESP32 platformcsaládja viszonylag olcsó, általános célú -mikrokontrollereket foglal magába. Szoftveres támogatottsága az elmúlt néhány -évben növekvő figyelmet élvez, különösen a Rust programozási nyelv körében. Ez -a hardver és szoftver kombináció az iparágban meglehetősen újkeletűnek mondható -például egy Arduino és a hozzá tartozó széleskörű hardveres és szoftveres -támogatottsággal szemben. +Végezetül, a megtervezett rendszert és a megválasztott komponenseket +\aref{diag:rendszer}. ábrán illusztráltam. A megválasztás során felületesen +szereztem tudást az adott technológiákról, megoldásokról. A következő fejezetben +részletesen adok ismertetést azokról. + +\begin{figure}[htbp!] + \includesvg[width=\columnwidth]{images/rendszer.drawio.svg} + \caption{A teljes rendszer magas szintű vázlata} + \label{diag:rendszer} +\end{figure} + +\section{Választott megoldások ismertetése} + +\subsection{ESP32 platform} -\subsection{Rust környezet} +\subsection{Rust nyelv és környezet} % Rövid ismertető a nyelvről, miért jó választás esetünkben. A nyelv körüli ekoszisztéma és a hardver integrációjáról ismertetés. diff --git a/src/contents/7-eredmenyek.tex b/src/contents/7-eredmenyek.tex index a2a2780a56384b596e15b85a3fa240590a8a50e1..5da6996cba8bd8819c0fc78f364b2eda9ade68d6 100644 --- a/src/contents/7-eredmenyek.tex +++ b/src/contents/7-eredmenyek.tex @@ -17,13 +17,6 @@ \section{Hardver} -\begin{figure}[htbp!] - \includesvg[width=\columnwidth]{images/rendszer.drawio.svg} - \caption{A teljes rendszer magas szintű vázlata} - \label{diag:rendszer} -\end{figure} - - \begin{figure}[htbp!] \ttfamily {\scriptsize \includesvg[width=\columnwidth]{images/hardware.drawio.svg} } diff --git a/src/hivatkozasok.bib b/src/hivatkozasok.bib index e01a1bfa2e351a936122af3be8e86326bf959192..9a94428fe8235d14dfe9309f36aee3be74a2c2e3 100644 --- a/src/hivatkozasok.bib +++ b/src/hivatkozasok.bib @@ -407,3 +407,31 @@ urldate = {2025-04-22}, biburl = {https://dblp.org/rec/journals/corr/abs-2102-01722.bib}, bibsource = {dblp computer science bibliography, https://dblp.org}, } + +@online{rust-iot, + title = {Rust as a platform for IoT}, + author = {Sander, Yannik}, + year = {2021}, + url = { + https://blog.ysndr.de/posts/essays/rust-for-iot/Sander_Rust-for-IoT.pdf + }, + urldate = {2025-04-23}, +} + +@online{hass-integrations, + title = {Integrations - Home Assistant}, + url = {https://www.home-assistant.io/integrations/}, + urldate = {2025-04-23}, +} + +@online{hass-install, + title = {Installation - Home Assistant}, + url = {https://www.home-assistant.io/installation/}, + urldate = {2025-04-23}, +} + +@online{hass-mqtt-broker, + title = {MQTT - Home Assistant (Setting up a broker)}, + url = {https://www.home-assistant.io/integrations/mqtt/#setting-up-a-broker}, + urldate = {2025-04-23}, +}