aboutsummaryrefslogtreecommitdiff
path: root/doc/class-assignment/idee/gewaehlte_implementation.tex
blob: c41a763f69e21a7546d2dbc82cc467a7c7b2d8a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\subsection{Gewählte Implementation}
In Anbetracht existierender Dateiverifizierungsprogramme wie Androids dm-verity und mein vorheriges, ähnliches Projekt \href{https://github.com/linux-immutability-tools/FsGuard}{FsGuard}.
\\
Für die Implementation habe ich die Blockverifizierung ausgewählt, da sie durch Multithreading sehr schnell sein kann, aber auch neue Dateien bemerkt, welche die Per-Datei-Verifizierung nicht gewährleistet.
\\
Um die Hashes zu speichern, wird ein eigenes Partitionsschema benutzt, welches alle Metadaten und die Datenbank beinhaltet. Der minisign öffentliche Schlüssel kann durch mehrere Methoden gespeichert werden, wie einer Textdatei oder einem Gerät, welches über USB-Serial den Schlüssel übergibt.
\\
Weitere Entscheidungen für die Implementation sind:
\begin{itemize}
\item Programmiersprache: go\\
  go ist mir vertraut und Memory Safe, welches für die Sicherheit des Programmes eine große Rolle spielt.
\item Datenbank: bbolt\\
  bbolt ist eine Datenbank, welche direkt in go geschrieben wurde und somit eine robustere API als sqlite hat; zudem ist bbolt unter einer richtigen Lizenz lizenziert und wirkt moderner.
\end{itemize}