<commit_before>\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{graphicx}
\usepackage{float}

\newlist{FA}{enumerate}{1}
\setlist[FA]{label=/FA\arabic*/}

\newlist{NA}{enumerate}{1}
\setlist[NA]{label=/NA\arabic*/}

\newlist{PD}{enumerate}{1}
\setlist[PD]{label=/PD\arabic*/}


\title{Cryptographics Pflichtenheft}
\author{}
\date{\today}

\begin{document}

% The cover page.
\maketitle
\begin{table}[b]
  \begin{tabular}{| l | l | l |}
    \hline
    \textbf{Phase} & \textbf{Verantwortlicher} & \textbf{Email} \\ \hline
    Pflichtenheft & <NAME> & <EMAIL> \\ \hline
    Entwurf & <NAME> & <EMAIL> \\
            & <NAME> & <EMAIL> \\ \hline
    Implementierung & <NAME> & <EMAIL> \\ \hline
    Qualitätssicherung & <NAME> & <EMAIL> \\ \hline
    Präsentation & <NAME> & <EMAIL> \\ \hline
    \end{tabular}
\end{table}
\newpage

% Table of contents page.
\tableofcontents
\newpage

% Start of the actual document.
\section{Zielbestimmung}


Im Rahmen der PSE-Veranstaltung soll für das Kryptologikum des Instituts für
Kryptographie und Sicherheit eine Software (Cryptographics) zur
Demonstration kryptographischer Verfahren erstellt werden. \\
\\
Das Programm soll im Laufe der Ausstellung Kryptologikum das Interesse der Besucher wecken, sich mit Verschlüsselung zu befassen und schließlich auch ausgewählte Inhalte der Kryptographie näher bringen. \\
\\
Wichtig ist, dass die Visualisierungen ansprechend und verständlich gestaltet sind. Die Nutzung von Cryptographics soll Spaß machen. \\
\\
Jedes Verfahren wird hierbei in drei Schritten vorgestellt. Diese sind eine Demo, ein interaktiver Versuch und ein wiki-artiger Artikel für weitere Informationen.
In der Demo wird dem Nutzer der Ablauf der Verschlüsselung möglichst anschaulich demonstriert. Darauf folgend kann im Eigenversuch auf der gleichen Oberfläche die Verschlüsselung selbst ausprobiert werden. Dem Nutzer wird hierbei eine größtmögliche Freiheit zur Wahl sämtlicher Komponenten (wie Klartext, Primzahl, etc.) gelassen. Unter "Mehr Wissen" sollen sich interessierte Benutzer schließlich tiefgehender über das Verfahren informieren können, über seine Entstehung, Einsatz und Nachfolger. Auf geeignete weiterführende Literatur kann mit QR-Codes verwiesen werden. \\


\subsection{Musskriterien}

\begin{itemize}
    \item Visualisierung Caesar-Chiffre
    \item Visualisierung Vigenère-Chiffre
    \item Visualisierung Diffie-Hellmann
    \item Robuste Programmierung
    \item Intuitive Benutzerführung
    \item Schnelle Reaktionszeiten
    \item Zugriff auf Krypto-Verfahren über Zeitleiste
    \item Benutzerführung über Phasen
    \item Angeleiter Selbstversuch bei komplexen Verfahren
    \item Interaktion des Benutzers über den Touchscreen
    \item einfache, übersichtliche UI, die sich gut auf Touchscreen bedienen lässt
    \item Robustheit gegen au"sergewöhnliche Interaktion
    \item Man soll das Programm nicht schlie"sen können währen der Vorführung
    \item Praxisbezug auf moderne Kryptoverfahren
    \item Eingängige optische Darstellung der verschiedenen Verfahren
    \item Krypto-Algorithmen lassen sich schrittweise ausführen, um den Prozess
        langsam zu verdeutlichen
    \item Beenden des Programms / Wechsel zum Desktop nur per angeschlossener Tastatur, nicht über Touch-Eingabe
    \item Das Programm darf zu keinem Zeitpunkt in einen undefinierten Zustand fallen
    \item Es darf nicht möglich sein das Programm in eine Sackgasse zu führen, die einen Neustart erfordert
    \item Time-Out bei fehlender Nutzerinteraktion, Rückkehr zum Startbildschirm
    \item Es ist jederzeit möglich über einen Button zurück zur Startoberfläche zu gelangen
\end{itemize}

\subsection{Wunschkriterien}

\begin{itemize}
    \item Visualisierung Public Key – Infrastruktur
    \item Visualisierung Shamir Secret Sharing
    \item Visualisierung Passwortsicherheit
    \item Visualisierung One-Time-Pad
    \item Visualisierung Blockchiffre (DES, AES)
    \item Visualisierung Hashfunktionen
    \item Visualisierung RSA
    \item Modulares Austauschen/Hinzufügen von weiteren kryptografischen Verfahren
    \item Literaturhinweise(auch weiterführende Literatur), sofern Interesse besteht.
    \item Visualisierungen sollten möglichst ansprechend sein, indem sie z.B. Analogien
        verwenden (ein Datenpaket wird zu einer Postkarte, ein Schlüssel wird zum einem tatsächlichen Schlüssel, ...).
    \item Visualisierungen sollten Grafiken und Animationen verwenden um Vorgänge zu verdeutlichen
    \item Visualisierung von Angriffen auf Verfahren
    \item Erfassung von Nutzungsstatistiken
    \item Animation auf Startbildschirm
    \item Simple Datenerhebung um externe Analyse von Nutzerverhalten zu ermöglichen
\end{itemize}

\subsection{Abgrenzungskriterien}
\begin{itemize}
    \item Sämtliche kryptologischen Verfahren werden nur zu Vorführungszwecken implementiert. Eine sichere Implementierung ist nicht vorgesehen.
    \item Dies ist ein Vorführprogramm für eine Ausstellung, demnach ist eine andere  Verwendung nicht ratsam,
        da dafür ganz andere Anforderungen gelten, die hier nicht beachtet werden. (umformulieren!)
    \item keine optimierte und 100\% standardkonforme Implementierung von Krypto-Algorithmen,
        sondern Fokus auf schrittweiser Ausführbarkeit
    \item keine formale Korrektheit bei Erklärungen sondern Ansatz ohne nötige Vorkenntnisse
        um breiter Masse zugänglich zu sein
    \item nicht zur tatsächlichen Verschlüsselung von Texten gedacht
\end{itemize}

\section{Produkteinsatz}
\subsection{Anwendungsbereiche}
Cryptographics soll in erster Linie als Ausstellungsstück für das Kryptologikum des Instituts für Kryptographie und Sicherheit (IKS) am Karlsruher Institut für Technologie (KIT) dienen.

Besuchern der Ausstellung soll das Funktionsprinzip und die Verwendung historischer, sowie aktueller, kryptographischer Verfahren nähergebracht werden. Diese sollen anhand von vereinfachten und beispielhaften Szenarien aus dem Alltag vermittelt werden, mit dem Ziel, ein größeres Interesse an der Materie zu wecken.

Cryptograhics soll primär auf dem eeePC (siehe Produktumgebung) im Kryptologikum eingesetzt werden. Portabilität wäre jedoch wünschenswert.

\subsection{Zielgruppen}

Das Programm richtet sich insbesondere an Kinder, Jugendliche und Erwachsene mit grundlegenden Kenntnissen der Mathematik. Die Zielgruppe ist demnach ein anonymes Publikum, das sich potenziell aus fachfremden Personen zusammensetzt. Deshalb dürfen für die Verwendung von Cryptographics keine Vorkenntnisse in der Kryptographie vorausgesetzt werden.

\subsection{Betriebsbedingungen}

Das Programm soll im Dauerbetrieb problemlos laufen. Dementsprechend dürfen keine Ausnahmen auftreten, die den Betrieb des Programms behindern, oder gar einen Absturz auslösen, der den Benutzer zur Betriebssystemebene führt. Insbesondere muss darauf geachtet werden, dass schnelle, unkontrollierte Benutzereingaben zu keinem undefinierten Zustand des Programms führen. Auch ein reguläres Beenden von Cryptographics soll durch den Benutzer nicht möglich sein, und nur durch eine angeschlossene Hardwaretastatur erreicht werden können.

Der Betrieb soll für die Hardware des eeePC (siehe Produktumgebung) optimiert sein, der während der Ausstellung über keine Internetverbindung verfügt. Inhalte zu weiterführenden Informationen müssen also lokal in Form von leicht aktualisierbaren und austauschbaren Textdateien vorliegen.

\section{Produktumgebung}

Cryptographics wird nicht ausschließlich, aber primär für folgende Spezifikationen entwickelt.

\subsection{Software}

\begin{itemize}[label={}]
\item Windows XP Home edition
\item Java
\end{itemize}

\subsection{Hardware}

\begin{itemize}[label={}]
\item ASUS Touchscreen EeeTop Tablet
\item 1.6 GHz Intel Atom CPU
\item 1GB RAM
\item 160GB HDD
\item 15.6 Zoll LCD
\item Integrierter Grafikchip
\item resistiver Touchscreen
\end{itemize}

\section{Produktfunktionen}

\subsection{Funktionale Anforderungen}

\subsubsection{Grundfunktionen}

\begin{FA}[start=100]
\item Darstellung aller Visualisierungen auf einer Zeitleiste
\item Interaktion mit der Zeitleiste, um eine einzelne Visualisierung auswählen zu können
\item Darstellung einer Übersichtsseite zur gewählten Visualisierung
\item Start der gewählten Visualisierung
\item Abbruch einer gewählten Visualisierung, um zum Startbildschirm zurückzukehren
\item Darstellung weiterführender Information nach erfolgreichem Beenden einer Visualisierung
\end{FA}

% TODO: do we really need/want this?
%/FA200/ Erfassen von Nutzungsdaten zur Optimierung des Ausstellungsstückes durch
%/FA201/ - Abbruchquote einer Visualiserung
%/FA202/ - Anzahl Starts einer Visualiserung<commit_msg>Rephrasing Muss-/Wunschkriterien<commit_after>\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{graphicx}
\usepackage{float}

\newlist{FA}{enumerate}{1}
\setlist[FA]{label=/FA\arabic*/}

\newlist{NA}{enumerate}{1}
\setlist[NA]{label=/NA\arabic*/}

\newlist{PD}{enumerate}{1}
\setlist[PD]{label=/PD\arabic*/}


\title{Cryptographics Pflichtenheft}
\author{}
\date{\today}

\begin{document}

% The cover page.
\maketitle
\begin{table}[b]
  \begin{tabular}{| l | l | l |}
    \hline
    \textbf{Phase} & \textbf{Verantwortlicher} & \textbf{Email} \\ \hline
    Pflichtenheft & <NAME> & <EMAIL> \\ \hline
    Entwurf & <NAME> & <EMAIL> \\
            & <NAME> & <EMAIL> \\ \hline
    Implementierung & <NAME> & <EMAIL> \\ \hline
    Qualitätssicherung & <NAME> & <EMAIL> \\ \hline
    Präsentation & <NAME> & <EMAIL> \\ \hline
    \end{tabular}
\end{table}
\newpage

% Table of contents page.

\tableofcontents
\newpage

% Start of the actual document.
\section{Zielbestimmung}


Im Rahmen der PSE-Veranstaltung soll für das Kryptologikum des Instituts für
Kryptographie und Sicherheit eine Software (Cryptographics) zur
Demonstration kryptographischer Verfahren erstellt werden. \\
\\
Das Programm soll im Laufe der Ausstellung Kryptologikum das Interesse der Besucher wecken, sich mit Verschlüsselung zu befassen und schließlich auch ausgewählte Inhalte der Kryptographie näher bringen. \\
\\
Wichtig ist, dass die Visualisierungen ansprechend und verständlich gestaltet sind. Die Nutzung von Cryptographics soll Spaß machen. \\
\\
Jedes Verfahren wird in drei Schritten vorgestellt. Diese sind eine automatisch ablaufende Demonstration, ein interaktiver Versuch und ein wiki-artiger Artikel für weitere Informationen.
In der Demo wird dem Nutzer der Ablauf der Verschlüsselung möglichst anschaulich demonstriert. Darauf folgend kann im Eigenversuch auf der gleichen Oberfläche die Verschlüsselung selbst ausprobiert werden. Dem Nutzer wird hierbei eine größtmögliche Freiheit zur Wahl sämtlicher Komponenten (wie Klartext, Primzahl, etc.) gelassen. Unter "Mehr Wissen" sollen sich interessierte Benutzer schließlich tiefgehender über das Verfahren informieren können, über seine Entstehung, Einsatz und Nachfolger. Auf geeignete weiterführende Literatur kann mit QR-Codes verwiesen werden. \\


\subsection{Musskriterien}

\begin{itemize}
    \item Visualisierung Caesar-Chiffre
    \item Visualisierung Vigenère-Chiffre
    \item Visualisierung Diffie-Hellmann
    \item Zugriff auf Krypto-Verfahren über Zeitleiste
    \item Benutzerführung über Phasen
    \item Krypto-Algorithmen lassen sich schrittweise ausführen, um den Prozess
        langsam zu verdeutlichen
    \item Angeleiter Selbstversuch bei komplexen Verfahren
    \item Praxisbezug auf moderne Kryptoverfahren
    \item Time-Out bei fehlender Nutzerinteraktion, Rückkehr zum Startbildschirm
    \item Mögliche Rückkehr zur Startoberfläche per Button zu jedem Ausführungszeitpunkt
    \item Interaktion des Benutzers über den Touchscreen
    \item Intuitive Benutzerführung
    \item Einfache, übersichtliche UI, die sich gut auf Touchscreen bedienen lässt
    \item Eingängige optische Darstellung der verschiedenen Verfahren
    \item Robuste Programmierung
    \item Schnelle Reaktionszeiten
    \item Robustheit gegen au"sergewöhnliche Interaktion
    \item Beenden des Programms / Wechsel zum Desktop nur per angeschlossener Tastatur, nicht über Touch-Eingabe
    \item Vermeidung undefinierter Zustände des Programms
    \item Vermeidung von Sackgassen im Programm, die einen Neustart erfordern
\end{itemize}

\subsection{Wunschkriterien}

\begin{itemize}
    \item Visualisierung Public Key – Infrastruktur
    \item Visualisierung Shamir Secret Sharing
    \item Visualisierung Passwortsicherheit
    \item Visualisierung One-Time-Pad
    \item Visualisierung Blockchiffre (DES, AES)
    \item Visualisierung Hashfunktionen
    \item Visualisierung RSA
    \item Modulares Austauschen / Hinzufügen von weiteren kryptografischen Verfahren
    \item Animation auf Startbildschirm als Blickfang
    \item Literaturhinweise (auch weiterführende Literatur), sofern Interesse besteht
    \item Optisch ansprechende Visualisierungen durch Nutzung von Grafiken und Animationen
    \item Verbesserte Verständlichkeit der Visualisierungen durch Verwendung von z.B. Analogien
    \item Visualisierung von Angriffen auf Verfahren
    \item Erfassung von grundlegenden Nutzungsstatistiken zur potentiellen externen Analyse des Nutzerverhaltens  im Hinblick auf eventuelle zukünftige Optimierung des Programms
\end{itemize}

\subsection{Abgrenzungskriterien}
\begin{itemize}
	\item Implementierung sämtlicher kryptologischer Verfahren nur zu Vorführungszwecken; somit keine festgelegt sichere Implementierung
    \item Keine optimierte und 100\% standardkonforme Implementierung von Krypto-Algorithmen,
        sondern Fokus auf schrittweiser Ausführbarkeit
    \item Keine formale Korrektheit bei Erklärungen sondern Ansatz ohne nötige Vorkenntnisse
        um breiter Masse zugänglich zu sein
    \item Nicht zur tatsächlichen Verschlüsselung von Texten gedacht
\end{itemize}

\section{Produkteinsatz}
\subsection{Anwendungsbereiche}
Cryptographics soll in erster Linie als Ausstellungsstück für das Kryptologikum des Instituts für Kryptographie und Sicherheit (IKS) am Karlsruher Institut für Technologie (KIT) dienen.

Besuchern der Ausstellung soll das Funktionsprinzip und die Verwendung historischer, sowie aktueller, kryptographischer Verfahren nähergebracht werden. Diese sollen anhand von vereinfachten und beispielhaften Szenarien aus dem Alltag vermittelt werden, mit dem Ziel, ein größeres Interesse an der Materie zu wecken.

Cryptograhics soll primär auf dem eeePC (siehe Produktumgebung) im Kryptologikum eingesetzt werden. Portabilität wäre jedoch wünschenswert.

\subsection{Zielgruppen}

Das Programm richtet sich insbesondere an Kinder, Jugendliche und Erwachsene mit grundlegenden Kenntnissen der Mathematik. Die Zielgruppe ist demnach ein anonymes Publikum, das sich potenziell aus fachfremden Personen zusammensetzt. Deshalb dürfen für die Verwendung von Cryptographics keine Vorkenntnisse in der Kryptographie vorausgesetzt werden.

\subsection{Betriebsbedingungen}

Cryptographics soll im Dauerbetrieb problemlos laufen. Dementsprechend dürfen keine Ausnahmen auftreten, die den Betrieb des Programms behindern, oder gar einen Absturz auslösen, der den Benutzer zur Betriebssystemebene führt. Insbesondere muss darauf geachtet werden, dass schnelle, unkontrollierte Benutzereingaben zu keinem undefinierten Zustand des Programms führen. Auch ein reguläres Beenden von Cryptographics soll durch den Benutzer nicht möglich sein, und nur durch eine angeschlossene Hardwaretastatur erreicht werden können.

Der Betrieb soll für die Hardware des eeePC (siehe Produktumgebung) optimiert sein, der während der Ausstellung über keine Internetverbindung verfügt. Inhalte zu weiterführenden Informationen müssen also lokal in Form von leicht aktualisierbaren und austauschbaren Textdateien vorliegen.

\section{Produktumgebung}

Cryptographics wird nicht ausschließlich, aber primär für folgende Spezifikationen entwickelt.

\subsection{Software}

\begin{itemize}[label={}]
	\item Windows XP Home edition
	\item Java
\end{itemize}

\subsection{Hardware}

\begin{itemize}[label={}]
	\item ASUS Touchscreen EeeTop Tablet
	\item 1.6 GHz Intel Atom CPU
	\item 1GB RAM
	\item 160GB HDD
	\item 15.6 Zoll LCD
	\item Integrierter Grafikchip
	\item resistiver Touchscreen
\end{itemize}

\section{Produktfunktionen}

\subsection{Funktionale Anforderungen}

\subsubsection{Grundfunktionen}

\begin{FA}[start=100]
\item Darstellung aller Visualisierungen auf einer Zeitleiste
\item Interaktion mit der Zeitleiste, um eine einzelne Visualisierung auswählen zu können
\item Darstellung einer Übersichtsseite zur gewählten Visualisierung
\item Start der gewählten Visualisierung
\item Abbruch einer gewählten Visualisierung, um zum Startbildschirm zurückzukehren
\item Darstellung weiterführender Information nach erfolgreichem Beenden einer Visualisierung
\end{FA}

% TODO: do we really need/want this?
%/FA200/ Erfassen von Nutzungsdaten zur Optimierung des Ausstellungsstückes durch
%/FA201/ - Abbruchquote einer Visualiserung
%/FA202/ - Anzahl Starts einer Visualiserung
{'fraction_non_alphanumeric': 0.05556201325119144, 'fraction_numerical': 0.003370917121934209, 'mean_word_length': 4.974652777777778, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '356451', 'n_tokens_mistral': 5528, 'n_tokens_neox': 5699, 'n_words': 1812}