PasswortBox v1.0
Sicherer Passwort-Manager mit AES-256 Client-seitiger Verschlüsselung
PasswortBox ist ein selbst gehosteter Passwort-Manager mit Zero-Knowledge-Architektur.
Alle Passwörter werden **ausschließlich im Browser** verschlüsselt – der Server sieht
niemals Ihre echten Daten. Einmalige Zahlung, kein Abo, läuft auf Ihrem eigenen Server.
Features
| Feature | Beschreibung |
| **AES-256-GCM** | Militärgrade-Verschlüsselung direkt im Browser |
| **Zero-Knowledge** | Server speichert nur Ciphertext – niemals Klartext |
| **Mastercode** | 64-stelliger Schlüssel, nur du kennst ihn |
| **Unbegrenzte Einträge** | Bezeichnung, Username, Passwort, Notiz – alles verschlüsselt |
| **Client-seitige Suche** | Suche läuft komplett im Browser, ohne Server-Anfrage |
| **Favoriten & Kategorien** | Einträge organisieren und filtern |
| **Passwort-Generator** | Sicher, zufällig, 8–64 Zeichen konfigurierbar |
| **Passwortstärke** | Echtzeit-Anzeige beim Eingeben |
| **Backup-Export** | Verschlüsselter JSON-Export aller Einträge |
| **PayPal-Zahlung** | Einmalig 24,99 € – keine Folgekosten |
| **Admin-Bereich** | Nutzer verwalten, Zahlungen einsehen |
Sicherheitsarchitektur
Mastercode (64 Zeichen)
↓ PBKDF2 (100.000 Iterationen, SHA-256)
AES-256-GCM Schlüssel
↓ Verschlüsselung im Browser (Web Crypto API)
Ciphertext + IV → Server/Datenbank
**Was der Server NICHT sieht:**
- Mastercode (wird niemals übertragen)
- Entschlüsselte Passwörter, Benutzernamen, Notizen
- Den AES-Schlüssel
**Was der Server speichert:**
- Ciphertext (unlesbarer Datenmüll ohne Mastercode)
- IV (Initialisierungsvektor – nicht geheim, für Entschlüsselung nötig)
- Mastercode-Hash (SHA-256, nur zur Validierung beim Entsperren)
? Installation
1. Voraussetzungen
| Anforderung | Details |
|||
| PHP | 8.0 oder höher |
| PDO SQLite | Pflicht |
| SMTP-Zugang | Für E-Mail-Verifizierung |
| HTTPS | **Zwingend erforderlich** (Web Crypto API braucht HTTPS) |
| Schreibrechte | Datenbankordner muss schreibbar sein |
2. Dateien hochladen
https://ihre-domain.de/passwortbox/
3. config.php anpassen
php
// Datenbank
define('DB_PATH', __DIR__ . '/storage/passwortbox.db');
// PayPal
define('PAYPAL_EMAIL', 'ihre@email.de');
define('PAYPAL_SANDBOX', true); // false für Live-Betrieb
define('PRICE', 24.99);
// SMTP (für Verifizierungs-E-Mails)
define('SMTP_HOST', 'mail.ihre-domain.de');
define('SMTP_PORT', 587);
define('SMTP_USER', 'ihre@email.de');
define('SMTP_PASS', 'IhrPasswort');
define('SMTP_FROM', 'ihre@email.de');
define('SMTP_NAME', 'PasswortBox');
// Admin
define('ADMIN_EMAIL', 'admin@ihre-domain.de');
// Basis-URL
define('BASE_URL', 'https://ihre-domain.de/passwortbox');
4. Datenbank installieren
https://ihre-domain.de/passwortbox/install.php
Erstellt alle Tabellen und den Admin-Account.
**Danach `install.php` löschen!**
5. Admin-Passwort ändern
Login: E-Mail aus ADMIN_EMAIL in config.php
Passwort: admin123
**Sofort nach der Installation ändern!**
6. PayPal konfigurieren
Im PayPal-Konto unter **Kontoeinstellungen → Sofortige Zahlungsbenachrichtigung (IPN)**:
IPN-URL: https://ihre-domain.de/passwortbox/paypal-ipn.php
Zum Testen: `PAYPAL_SANDBOX` auf `true` lassen und PayPal Sandbox nutzen.
Für Live-Betrieb: `PAYPAL_SANDBOX` auf `false` setzen.
Der Mastercode – das Wichtigste
Der Mastercode ist ein **64-stelliger zufälliger Schlüssel** der beim Registrieren
einmalig generiert und angezeigt wird.
**Eigenschaften:**
- Wird **niemals** auf dem Server gespeichert (nur ein Hash zur Validierung)
- Ohne Mastercode sind alle gespeicherten Daten **nicht wiederherstellbar**
- Wird nur im `sessionStorage` des Browsers gehalten (nur aktuelle Session)
- Beim Schließen des Browsers muss er beim nächsten Besuch neu eingegeben werden
**Empfohlene Aufbewahrung (den Nutzern mitteilen):**
- Ausdrucken und sicher aufbewahren
- Auf USB-Stick speichern (verschlüsselt)
- In ein physisches Notizbuch schreiben
- In einem zweiten Passwort-Manager speichern
**Verlust des Mastercodes = alle Passwörter unwiederbringlich verloren.**
Es gibt keine Passwort-Reset-Funktion für den Mastercode – das ist by Design so.
Zahlungsablauf
1. Nutzer registriert sich (kostenlos)
2. Nutzer sieht Kaufseite (kaufen.php)
3. Nutzer zahlt 24,99 € via PayPal
4. PayPal sendet IPN an paypal-ipn.php
5. IPN wird verifiziert → Nutzer wird freigeschaltet (paid=1)
6. Bestätigungs-E-Mail wird gesendet
7. Nutzer hat Zugriff auf den vollen Tresor
**Manuell freischalten** (Admin):
Admin → Nutzerverwaltung → Nutzer bearbeiten → Bezahlstatus: Bezahlt
Admin-Bereich
https://ihre-domain.de/passwortbox/admin/
Login: ADMIN_EMAIL aus config.php
**Dashboard zeigt:**
- Nutzer gesamt / bezahlt / aktiv heute
- Anzahl verschlüsselter Einträge
- Gesamtumsatz
- Letzte Registrierungen und Zahlungen
**Nutzerverwaltung:**
- Status ändern: aktiv / ausstehend / gesperrt
- Bezahlstatus manuell setzen
- Anzahl der Einträge pro Nutzer einsehen
Konfigurationsreferenz
php
// Datenbank
define('DB_PATH', __DIR__ . '/storage/passwortbox.db');
// PayPal
define('PAYPAL_EMAIL', 'shop@ihre-domain.de');
define('PAYPAL_SANDBOX', false); // true = Testmodus
define('PRICE', 24.99); // Preis in Euro
// SMTP
define('SMTP_HOST', 'mail.ihre-domain.de');
define('SMTP_PORT', 587); // 587 (STARTTLS) oder 465 (SSL)
define('SMTP_USER', 'ihre@email.de');
define('SMTP_PASS', 'passwort');
define('SMTP_FROM', 'ihre@email.de');
define('SMTP_NAME', 'PasswortBox');
// URLs
define('BASE_URL', 'https://ihre-domain.de/passwortbox');
define('ADMIN_EMAIL', 'admin@ihre-domain.de');
Sicherheitshinweise
- **HTTPS ist Pflicht** – die Web Crypto API funktioniert nur über HTTPS
- `config.php` per `.htaccess` schützen oder außerhalb des Webroots ablegen
- `storage/` Ordner per `.htaccess` vor Direktzugriff schützen
- `install.php` nach Installation sofort löschen
- Admin-Passwort `admin123` sofort nach Installation ändern
- PayPal IPN immer verifizieren (ist bereits implementiert)
- Regelmäßige Backups der `passwortbox.db` empfohlen
**.htaccess Empfehlung:**
apache
<Files "config.php">
Order allow,deny
Deny from all
</Files>
Häufige Fragen
**Kann ich meinen Mastercode zurücksetzen?**
Nein – das ist technisch nicht möglich ohne alle Daten zu verlieren.
Der Mastercode ist der einzige Schlüssel zu deinen Daten.
**Was passiert wenn ich den Browser schließe?**
Der Mastercode wird aus dem sessionStorage gelöscht. Beim nächsten Login
muss er erneut eingegeben werden. Die verschlüsselten Daten bleiben erhalten.
**Kann der Server-Admin meine Passwörter lesen?**
Nein. Der Server speichert nur AES-256-verschlüsselte Daten.
Ohne den Mastercode sind diese Daten wertlos.
**Funktioniert PasswortBox ohne HTTPS?**
Nein. Die Web Crypto API (für AES-256) ist aus Sicherheitsgründen
nur über HTTPS verfügbar. Lokale Entwicklung auf `localhost` funktioniert.
**Wie exportiere ich meine Daten?**
Unter **Konto → Backup herunterladen** – die exportierte JSON-Datei ist
ebenfalls AES-256-verschlüsselt mit deinem Mastercode.
**Kann ich PasswortBox für mehrere Nutzer betreiben?**
Ja – jeder Nutzer hat seinen eigenen Mastercode und eigene verschlüsselte Einträge.
Die Daten sind vollständig voneinander getrennt.
Geplante Erweiterungen (Roadmap)
> Diese Features sind noch nicht implementiert und können in einer späteren Version
> hinzugefügt werden.
- **Browser-Extension** – Passwörter direkt im Browser automatisch ausfüllen
- **TOTP / 2FA** – Zwei-Faktor-Authentifizierung (Google Authenticator)
- **Passwort-Teilen** – Einträge sicher mit anderen Nutzern teilen
- **Ablaufdatum** – Erinnerung wenn Passwörter zu alt werden
- **Passwort-Audit** – Schwache oder doppelte Passwörter erkennen
- **Import** – CSV-Import aus anderen Passwort-Managern (LastPass, Bitwarden)
- **Mobile App** – PWA für Smartphone-Nutzung
Lizenz
MIT Einzelplatz - License – frei verwendbar, anpassbar und weitervertreibbar.
Bei Weitergabe bitte diese README beilegen.
*PasswortBox v1.0 · PHP 8.0+ · SQLite · AES-256-GCM · Web Crypto API · PayPal IPN*
