This commit is contained in:
Marek Rohač 2021-06-10 11:12:52 +02:00
parent 38f879a02e
commit 402cf7f670
4 changed files with 33 additions and 7 deletions

View File

@ -18,4 +18,30 @@ Spustením tohto príkazu dôjde k vytvoreniu výsledného dokumentu vo formáte
Projekt si samozrejme môžete otvoriť v ktoromkoľvek _LaTeX_ editore alebo IDE, ako je napr. _TeX Studio_
## Source codes & programs
Všetky zdrojové kódy a odladené programy sú dostupné v priečinku:
appendixes --> BC_ZK
Viac informácií je možné násť v tomto priečinku alebo v bakalárskej práci (Obsah Prílohy A).
# Author
Organization: Technical University of Kosice (TUKE),
Department: Department of Electronics and Multimedia Telecommunications (DEMT/KEMT),
Faculties: Faculty of Electrical Engineering and Informatics (FEI),
Feld of study: Informatics,
Study program: Computer Networks,
School year: 3., Bachelor study, 2020/2021,
Author: Marek Rohac -- MR,
Kontakt: marek.rohac@student.tuke.sk
marroh004@gmail.com
ALL RIGHTS RESERVED.

View File

@ -218,13 +218,13 @@ Nasledujúci opis vychádza z~dokumentu \cite[str. 6]{win10rng}. Dodanie náhodn
\begin{itemize}
\item zdroje náhodnosti -- z~ang. \textit{Entropy sources},
\item uložiská náhodnosti -- z~ang. \textit{Entropy pools}, slúžia ako úložisko dát zdrojov entropie, ktoré sa následne používajú ako~seed hodnota pre \acrshort{prng}.
\item úložiská náhodnosti -- z~ang. \textit{Entropy pools}, slúžia ako úložisko dát zdrojov entropie, ktoré sa následne používajú ako~seed hodnota pre \acrshort{prng}.
\item obnovovacia, resp. resetovacia logiky seed-u \footnote{Z~ang. \textit{Reseed logic}.}. Jej úlohou je rozhodovať ako a~kedy dôjde k~aktualizácii seed hodnoty v~zdrojovom \acrshort{prng} z~polí náhodnosti.
\end{itemize}
Proces reseed-u zdrojového generátora sa~opakuje periodicky pomocou časového plánovača. Spúšťa sa jednu sekundu po~inicializácii OS a~následne každým troj-násobkom predchádzajúcej hodnoty (3, 9, 27, ...). Koniec nastane po~dosiahnutí časového limitu. Ten je nastavený na jednu hodinu teda 3600 sekúnd. Plánovanie je nastavené tak,~aby k~reseed-u došlo iba v prípade, ak je CPU prebudený. Dôvodom sú~vysoké energetické nároky na prebudenie.
\subsection{Zdroje náhodnosti}
Ich~úlohou je~poskytovať náhodné dáta. Výstup je~následne uložený v~uložiskách entropie.
Ich~úlohou je~poskytovať náhodné dáta. Výstup je~následne uložený v~úložiskách entropie.
Súčasťou jadra rozhrania systému je~rozhranie na~vytváranie nových zdrojov entropie. \acrshort{api} vo~všeobecnosti podporuje dva typy zdrojov:
\begin{itemize}
@ -233,7 +233,7 @@ Súčasťou jadra rozhrania systému je~rozhranie na~vytváranie nových zdrojov
\end{itemize}
Rozdiely v~ich~spracovaní sú~minimálne. Nízke zdroje označujú nepodmienené udalosti ako je~napríklad pohyb myši. Tie~však môžu byť reprodukovateľné. Vysokokvalitné náhodné dáta zabezpečujú vysoké zdroje. V prípade potreby dokážu ihneď (okamžite) poskytnúť entropiu všetky z uvedených zdrojov. Rozdiel medzi typom \textbf{pull} a~\textbf{push} je v~tom, že~prvý spomenutý neobsahuje vlastnú logiku časovania na~obnovu entropie. Tieto zdroje sú dodatočne informované pri~každom použití zdrojovým \acrshort{rng}.
Prerozdelenie dát v rámci jednotlivých uložísk entropie sa~riadi pomocou tzv. z~ang. \textit{Round-Robin\footnote{\url{https://en.wikipedia.org/wiki/Round-robin\_scheduling}.}} plánovania. Pri vysokých zdrojoch sa~vždy prvých 32 bajtov ukladá do~prvého úložiska entropie a~zvyšné sa~uložia do~poľa, ktoré nasleduje podľa plánu. Viac informácii k zdrojom náhodnosti je dostupných v \cite[str. 8]{win10rng}.
Prerozdelenie dát v rámci jednotlivých úložísk entropie sa~riadi pomocou tzv. z~ang. \textit{Round-Robin\footnote{\url{https://en.wikipedia.org/wiki/Round-robin\_scheduling}.}} plánovania. Pri vysokých zdrojoch sa~vždy prvých 32 bajtov ukladá do~prvého úložiska entropie a~zvyšné sa~uložia do~poľa, ktoré nasleduje podľa plánu. Viac informácii k zdrojom náhodnosti je dostupných v \cite[str. 8]{win10rng}.
\subsubsection{Použité zdroje náhodnosti v OS Windows 10 \cite[str. 8]{win10rng}}
Windows 10 používa viacero zdrojov entropie za~účelom poskytnúť dostatočnú entropiu v~každej situácii. V odbornej literatúre sa uvádzajú tieto zdroje.

View File

@ -113,16 +113,16 @@ int main(){
\end{minipage}\\
\subsection*{Experiment s knižnicou OpenSSL v.1.1.1k}
Po úspešnom prvom experimente so systémovými rozhraniami je overená i~knižnica OpenSSL. Pri generovaní náhodných dát je použitý ako \textbf{zdroj náhodnosti} výstup z CSPRNG API systému, na ktorom je naimplementová zvolená funkcionalita. Teda ak je niektorá z funkcií na RNG implementovaná v OS Windows, tak vstupom OpenSSL generátora \textbf{je výstup funkcie BCryptGenRandom}. Periodicky dochádza k reseed procesu, pričom prvotná inicializácia OpenSSL generátora prebehne pri spustení.
Po úspešnom prvom experimente so systémovými rozhraniami je overená i~knižnica OpenSSL. Pri generovaní náhodných dát je použitý ako \textbf{zdroj náhodnosti} výstup z CSPRNG API systému, na ktorom je naimplementovaná zvolená funkcionalita. Teda ak je niektorá z funkcií na RNG implementovaná v OS Windows, tak vstupom OpenSSL generátora \textbf{je výstup funkcie BCryptGenRandom}. Periodicky dochádza k reseed procesu, pričom prvotná inicializácia OpenSSL generátora prebehne pri spustení.
Pri experimente boli aplikované rovnaké metódy ako pri softvérových rozhraniach.
Generovanie sme vykonali v rozhraní OpenSSL, konkrétne cez prostredie \verb|Command Prompt| (ďalej \verb|cmd|). Knižnicu OpenSSL sme spustili prikazom \verb|openssl| v prostredí \verb|cmd|. V~spustenej aplikácii sme použili príkaz:
Generovanie sme vykonali v rozhraní OpenSSL, konkrétne cez prostredie \verb|Command Prompt| (ďalej \verb|cmd|). Knižnicu OpenSSL sme spustili príkazom \verb|openssl| v prostredí \verb|cmd|. V~spustenej aplikácii sme použili príkaz:
\verb|rand -out result.txt -base64 100|.\\
Pred vykonaním sme vytvorili snímku obrazu. Úlohou príkazu je vygenerovať náhodné dáta s veľkosťou 100 bajtov a~uložiť ich do textového súboru \verb|result.txt| vo~formáte \textit{Base64} \cite{base}.
Pokus sme zopakovali 30-krát avšak ani raz sa nám pri experimente nepodarilo zreprodukovať výstup z generovania.
\section{Vyhodnotenie výsledkov testovania}
Vzhľadom k dobe, ktorá ubehla od uverejnenia článku \cite{vm1}, bolo očakávané úplné vyriešenie tohto bezpečnostného rizika. Počas experimentu sa podarilo vyvrátiť túto hypotézu. Dôkazom je videozáznam, ktorý demonštruje postup od 4. do 7 kroku experimentu. Záznam je obsahom prenosného média prílohy A, spoločne so zdrojovými kódmi použítými pri experimente. Videozáznam je možné vyhľadať aj na webovej platforme Youtube pomocou odkazu \cite{yt1}. Vďaka videu je zrejmé, že pri používaní systémových \acrshort{rng} rozhraní isté bezpečnostný problém pretrváva.
Vzhľadom k dobe, ktorá ubehla od uverejnenia článku \cite{vm1}, bolo očakávané úplné vyriešenie tohto bezpečnostného rizika. Počas experimentu sa podarilo vyvrátiť túto hypotézu. Dôkazom je videozáznam, ktorý demonštruje postup od 4. do 7 kroku experimentu. Záznam je obsahom prenosného média prílohy A, spoločne so zdrojovými kódmi použitými pri experimente. Videozáznam je možné vyhľadať aj na webovej platforme Youtube pomocou odkazu \cite{yt1}. Vďaka videu je zrejmé, že pri používaní systémových \acrshort{rng} rozhraní isté bezpečnostný problém pretrváva.
Je však nutné poukázať na skutočnosť, že zopakovať výstup generovania pomocou systémových RNG API s rovnakým výsledkom, vyžaduje splnenie podmienok, ktoré užívateľ pri bežnej práci nevykonáva. Viď vyššie uvedený postup. Obdobne bolo potrebné počas testovania vykonať veľké množstvo pokusov. Niekedy bolo nutné počas generovaní konkrétnej postupnosti absolvovať reštart obrazu aj 20-krát.
@ -142,7 +142,7 @@ Zmeny sa týkajú:
\end{enumerate}
Testovanie bolo vykonané aj pomocou aktualizovaných nástrojov. Bezpečnostné riziko aj napriek uvedeným zmenám stále pretrváva. Aktualizovaný videozáznam (\cite{yt2}) spoločne s údajmi o nástrojoch je taktiež obsahom prílohy A.
Je nutné informovať čitateľa o možnom probléme pri realizácii vyššie uvedených experimentov. Ak je na natívnom OS Windows použitý Windows Subsystem pre Linux vo verzii 2 (WSL2), tak je vysoko pravdepodobné, že nedosiahnete výsledky uvedené v tejto publikácií. Pred aplikovaním metód je potrebné deaktivovať túto funkciu. Dôvodom je interferencia medzi Hyper-V a týmto systémom. Občasne môže spôsobovať aj pády, respektíve nespoľahlivý výkon systému.
Je nutné informovať čitateľa o možnom probléme pri realizácii vyššie uvedených experimentov. Ak je na natívnom OS Windows použitý Windows Subsystém pre Linux vo verzii 2 (WSL2), tak je vysoko pravdepodobné, že nedosiahnete výsledky uvedené v tejto publikácií. Pred aplikovaním metód je potrebné deaktivovať túto funkciu. Dôvodom je interferencia medzi Hyper-V a týmto systémom. Občasne môže spôsobovať aj pády, respektíve nespoľahlivý výkon systému.
\chapter{Vyhodnotenie dosiahnutých výsledkov}
\label{evaluation}

Binary file not shown.