Skip to content
Snippets Groups Projects
Verified Commit b8513808 authored by Nádudvari Ákos's avatar Nádudvari Ákos
Browse files

feat(tervezés): döntések init

parent bfdb074e
Branches
No related tags found
No related merge requests found
Pipeline #2705 passed
...@@ -15,19 +15,17 @@ ...@@ -15,19 +15,17 @@
} }
\section{Feladat} \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{} \paragraph{} A kitűzött cél a következő: Alkossunk meg egy olyan
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. 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 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. 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 Ahhoz, hogy ezt belátható keretek között lehessen értelmezni, szükséges
megkötéseket és elvárásokat helyezni a projektre. 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 A legelső konkretizáció az, hogy az említett "alap" felépítését a következő
következő elemekből definiáljuk (továbbiakban: "a rendszer"): elemekből definiáljuk (továbbiakban: "a rendszer"):
\begin{itemize} \begin{itemize}
\item Központi egység, \item Központi egység,
...@@ -37,22 +35,21 @@ következő elemekből definiáljuk (továbbiakban: "a rendszer"): ...@@ -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. 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 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ő rendszernek, hogy minimális biztonságtechnikai elvárásoknak megfeleljen már a
koncepció is. legelső koncepció is.
A rendszer feladata az érzékelt események kezelése és a felhasználók értesítése 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 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 cél a rendszer okosotthon-megoldásokkal való integrálása. Az okosotthon rendszer
rendszer teljeskörű működése ezen a dolgozaton túlmutat, viszont az előzetes teljeskörű működése ezen a dolgozaton túlmutat, viszont az előzetes kutatás
kutatás során tisztában kell lenni azok, a rendszerrel való integrációs során tisztában kell lenni azok, a rendszerrel való integrációs lehetőségeiről.
lehetőségeiről.
A központi egység a PIR mozgásérzékelőket kezeli és azok eseményeit dolgozza 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 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. keresztül képes integrációt létesíteni az okosotthonnal.
Feladatom irodalmi adatok alapján megismerkedni a hardveres és szoftveres biztonsági Feladatom irodalmi adatok alapján megismerkedni a hardveres és szoftveres
megoldásokkal és felkeresni számos hasonló rendszert. Megismerni azok 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 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 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 környezetet és nyelvet. Figyelembe véve, hogy a központi egység és az okosotthon
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
elméleti kérdéseket és a projekt lehetőségeit dokumentálom. elméleti kérdéseket és a projekt lehetőségeit dokumentálom.
} }
\section{Kereskedelmi megoldások elemzése} \section{Kereskedelmi megoldások elemzése}
\label{kereskedelmi}
\paragraph{} Számos cég foglalkozik biztonságtechnikával, közöttük van sok \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 é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 ...@@ -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. 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} \subsection{Költséghatékonyság és gazdasági szempontok}
\label{koltseg}
\paragraph{} \paragraph{}
A biztonságtechnikai rendszerek gazdasági értékelésénél nem csupán a kezdeti 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í ...@@ -568,6 +570,7 @@ vált ki. A védelem egy normál esetben zárt állapotú nyomógombbal valósí
meg. meg.
\subsection{Informatikai biztonság} \subsection{Informatikai biztonság}
\label{inf-bizt}
\paragraph{} A riasztórendszerek informatika-orientált komponenseinek \paragraph{} A riasztórendszerek informatika-orientált komponenseinek
megtervezéséhez elengedhetetlen a kiberbiztonsági szempontok átfogó ismerete. Az megtervezéséhez elengedhetetlen a kiberbiztonsági szempontok átfogó ismerete. Az
......
\chapter{Tervezés} \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{ \chapterintro{
Az előzetes kutatás szerint ismerkedem a projekthez illő technológiákkal, megkeresem Az előzetes kutatás szerint ismerkedem a projekthez illő technológiákkal,
a megvalósításhoz használt eszközöket és megválasztom azokat az arra vetett megkeresem a megvalósításhoz használt eszközöket és megválasztom azokat az arra
megkötéseinket figyelembe véve. Miután konkretizáltam a projekt kereteit, a vetett megkötéseinket figyelembe véve. Miután konkretizáltam a projekt kereteit,
megvalósítandó rendszer tervezésével foglalkozom. A mikrokontroller az ESP32 a megvalósítandó rendszer tervezésével foglalkozom. A mikrokontroller az ESP32
hardver platfomon, Rust szoftveres környezetben valósul meg. Az okosotthon 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. 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 A választott technológiákkal ismerkedem. A tervezés befejeztével megindoklom
...@@ -20,24 +13,103 @@ ...@@ -20,24 +13,103 @@
} }
\section{Döntések} \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. A rendszerem kizárólag vezetékes kommunikációt fog alkalmazni. Ez
% Előnyei / hátrányai egyebekkel szemben. A célt milyen mélységben képes megvalósítani. Szempont a \aref{kereskedelmi}. fejezetben megismert két kategória közül a hagyományos
% mérnöki tervezés, szoftverfejlesztés környezetének használhatósága is. 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ú Végezetül, a megtervezett rendszert és a megválasztott komponenseket
mikrokontrollereket foglal magába. Szoftveres támogatottsága az elmúlt néhány \aref{diag:rendszer}. ábrán illusztráltam. A megválasztás során felületesen
évben növekvő figyelmet élvez, különösen a Rust programozási nyelv körében. Ez szereztem tudást az adott technológiákról, megoldásokról. A következő fejezetben
a hardver és szoftver kombináció az iparágban meglehetősen újkeletűnek mondható részletesen adok ismertetést azokról.
például egy Arduino és a hozzá tartozó széleskörű hardveres és szoftveres
támogatottsággal szemben. \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. % 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.
......
...@@ -17,13 +17,6 @@ ...@@ -17,13 +17,6 @@
\section{Hardver} \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!] \begin{figure}[htbp!]
\ttfamily \ttfamily
{\scriptsize \includesvg[width=\columnwidth]{images/hardware.drawio.svg} } {\scriptsize \includesvg[width=\columnwidth]{images/hardware.drawio.svg} }
......
...@@ -407,3 +407,31 @@ urldate = {2025-04-22}, ...@@ -407,3 +407,31 @@ urldate = {2025-04-22},
biburl = {https://dblp.org/rec/journals/corr/abs-2102-01722.bib}, biburl = {https://dblp.org/rec/journals/corr/abs-2102-01722.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}, 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},
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment