Skip to content

3. Projektidee und Anforderungsanalyse

Michael Dick edited this page Feb 17, 2023 · 9 revisions

Needs and Pains

  • Nutzer speichern oft ihre Passwörter im Browser. Das ist höchst unsicher und kann von Angreifern ohne großen Aufwand abgegriffen werden
  • Den Nutzern die Möglichkeit geben ihre Passwörter geordnet und sicher abzuspeichern.
  • Eine ausgezeichnete User Experience anzubieten

Anforderungsanalyse

Fachliche Anforderungen

  • Nur sichere Passwörter sollen als Master Passwort erstellt werden können
  • Nur sichere Passwörter sollen von dem Passwortgenerator erstellt werden. #108
  • Anmeldung mit einem Master Passwort
  • Anmeldedaten (Username, Passwort, URL, Notizen, Erstelldatum) hinzufügen/löschen #70 #87
  • Passwort-Generator für sichere Passwörter (versch. Einstellungen z.B. min. Zeichenanzahl, Sonderzeichen)
  • Sortieren/Gruppieren nach Eigenschaften (Service, Erstelldatum)
  • Anzeigen der Sicherheit der Passwörter bei Eingabe #46 #96
  • Standardlogos für Passworteinträge

Technische Anforderungen

  • Alle Datenbankeinträge sind verschlüsselt und werden nur beim Client entschlüsselt #8 #41
  • Die Kommunikation zwischen Frontend und Backend basiert auf einer IPC Pipe #24 #37 #40
  • Validierung der Felder (E-Mail, etc.)

Funktionale Anforderungen

  • AES256 für das speichern der Passwörter verwenden #8
  • SQLite als Datenbankformat in Kombination mit JDBC #19

Ideen für die Zukunft

  • Verschiedene Sprachen (DE, EN, etc.)
  • Benachrichtigung zum Ändern eines Passworts setzen können
  • Verschiedene Verschlüsselungsarten für das speichern der Passwörter in einer Datenbank
  • Backup der gespeicherten Passwörter (Papierkorb)
  • Text aus Bildern auslesen Hier
  • 2FA Hier
  • HaveIBeenPwned Integration (erste 5 Zeichen eines Passwort-Hashes werden auf Sicherheit geprüft)

MVP Requirements

  • Erstellen einer Datenbank
  • Erstellen eines Masterpassworts
  • Auflistung aller Passwörter
  • Ein Passwort hinzufügen (inkl. Nutzername und z.B. URL)
  • Kopieren eines Passwortes in die Zwischenablage ohne dieses zu sehen
  • Sicheres abspeichern der Datenbank

Gruppeneinteilung

Name Frontend Backend
Alexander Bossert X -
Antonia Herdtner X -
Leonard Laise - X
Luca von Kannen - X
Maurice Dolibois X X
Michael Dick X X
Tom Flocken X -

Benötigte Teilkomponenten

Hauptstruktur

  • Frontend (Electron + JS) -> Direkte Verarbeitung von JSON in JS
  • Schnittstelle Frontend <-> Backend: JSON Messages über IPC, stdin, stdout
  • Backend (Java) -> JSON Mapper auf der Java Seite
  • Schnittstelle Backend <-> DB: JDBC SQLite
  • Datenbank (Lokale Single File Datenbank)

Backend (Details)

  • Datenbank-Controller (JDBC) Nitrite
  • Authentication (LogIn, LogOff, Sessions, ...)
  • Encryption (Key-Management)
  • JSON Parser
  • API für Kommunikation mit Frontend (Frontend fragt Infos immer bei Backend an)
  • Logik (Sicherheits-Check von Passwörtern, Passwort-Generator, Reminder für Passworterneuerung)

Teilkomponente

  • Interface für die IPC Kommunikation
  • Interface und Factory für Datenbankkommunikation (späteres austauschen gegen voll-verschlüsseltes XML File)
  • Interface und Factory für den Verschlüsselungsalgorithmus

Frontend (Details)

  • Electron Desktopanwendung (Startet den Java Prozess im Hintergrund)
  • Grundlogik für Navigation durch die Seiten und Menüs
  • Kommunikationsschnittstelle mit Java

Datenbank (Details)

  • Single-File-Datenbank wie SQLite
  • Verschlüsselte Datenbank-Datei
  • Speicherort entweder in Programmfolder oder an benutzerdefiniertem Ort