Add DATENSCHUTZ.md (DSGVO/Privacy compliance documentation)

- Complete GDPR-compliant privacy policy
- Technical details: MariaDB, Qdrant, Filesystem storage
- Retention policies and security measures
- Data subject rights (links to KINDERRECHTE.md)
- Special protection for children (CKL §5 operationalized)
- No tracking, no analytics, no third-party cookies
- EU-based or self-hosted infrastructure only

Completes the compliance documentation suite:
 LICENSE.md (MIT + CKL dual license)
 KINDERRECHTE.md (children's rights operationalization)
 DATENSCHUTZ.md (technical GDPR compliance)

Ready for production deployment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-13 03:19:27 +01:00
parent da67da3959
commit c2ec78b55e

446
DATENSCHUTZ.md Normal file
View File

@@ -0,0 +1,446 @@
# Datenschutzerklärung Crumbforest
**Version:** 1.0-draft
**Stand:** 2025-12-13
**Gültig für:** Crumbforest-Ökosystem (CrumbCore, Crumbpages, branko.de)
---
## Präambel
Crumbforest nimmt Datenschutz sehr ernst besonders, wenn Kinder beteiligt sind.
Diese Datenschutzerklärung erfüllt:
- **DSGVO** (Datenschutz-Grundverordnung, EU 2016/679)
- **BDSG** (Bundesdatenschutzgesetz)
- **TMG** (Telemediengesetz)
- **CKL §5** (Crumbforest Children's Knowledge License - Daten & Privatsphäre)
**Für Kinder und Eltern:** Siehe auch [KINDERRECHTE.md](KINDERRECHTE.md) für eine einfachere Erklärung.
---
## 1. Verantwortlicher
**Aktuell (Stand 2025-12-13):**
Name: Branko (Lead Maintainer)
Website: https://branko.de
Email: [wird ergänzt]
**In Transition zu:**
OZM - Open Futures Museum
[Adresse wird ergänzt]
[Email wird ergänzt]
Sobald die Trägerschaft formalisiert ist (geplant Q2 2025), wird OZM der rechtliche Verantwortliche im Sinne der DSGVO (Art. 4 Nr. 7).
**Datenschutzbeauftragter:**
[Wird bestellt, sobald gesetzlich erforderlich - bei regelmäßiger Verarbeitung von sensiblen Daten oder mehr als 20 Personen, die mit Datenverarbeitung befasst sind]
---
## 2. Grundprinzipien der Datenverarbeitung
Crumbforest folgt den **DSGVO-Grundsätzen** (Art. 5):
| Prinzip | Wie wir es umsetzen |
|---------|---------------------|
| **Rechtmäßigkeit** | Einwilligung oder berechtigtes Interesse (Bildungsauftrag) |
| **Zweckbindung** | Daten nur für Lernen, nicht für Werbung/Profiling |
| **Datenminimierung** | Nur das Nötigste (CKL §5.1) |
| **Richtigkeit** | Nutzer können Daten korrigieren |
| **Speicherbegrenzung** | Retention Policies (siehe unten) |
| **Integrität & Vertraulichkeit** | Verschlüsselung, Zugriffskontrolle |
| **Rechenschaftspflicht** | Diese Dokumentation |
---
## 3. Welche Daten werden verarbeitet?
### 3.1 Übersicht
| Datentyp | Zweck | Rechtsgrundlage | Speicherdauer |
|----------|-------|-----------------|---------------|
| **Benutzername** | Identifikation, Zuordnung von Projekten | Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung) | Bis Account-Löschung |
| **Email-Adresse** | Kommunikation, Passwort-Reset | Art. 6 Abs. 1 lit. b DSGVO | Bis Account-Löschung |
| **Passwort-Hash** | Authentifizierung | Art. 6 Abs. 1 lit. b DSGVO | Bis Account-Löschung |
| **Chat-Nachrichten** | Kontext für Lernbegleitung | Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse: Bildung) | Bis Nutzer löscht |
| **Lernprojekte** | Speicherung von Arbeitsergebnissen | Art. 6 Abs. 1 lit. b DSGVO | Bis Nutzer löscht |
| **Sensor-Messungen** | Experimente auswerten | Art. 6 Abs. 1 lit. f DSGVO | Bis Nutzer löscht |
| **Login-Zeitstempel** | Sicherheit, Aktivitäts-Tracking | Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse: Sicherheit) | 90 Tage |
| **IP-Adresse (temporär)** | Sicherheit gegen Angriffe | Art. 6 Abs. 1 lit. f DSGVO | Max. 7 Tage in Logs |
**Wir verarbeiten KEINE besonderen Kategorien personenbezogener Daten** (Art. 9 DSGVO: Gesundheit, Religion, etc.) außer, ein Nutzer teilt diese freiwillig in Chat-Nachrichten (dann gilt Einwilligung, Art. 9 Abs. 2 lit. a).
### 3.2 Bei Minderjährigen
Für Nutzer unter 16 Jahren:
- **Einwilligung der Sorgeberechtigten erforderlich** (Art. 8 DSGVO)
- **Erhöhter Schutz** durch CKL (keine Paywalls, kein Tracking, Exportrecht)
- **Automatische Löschung** inaktiver Accounts nach 1 Jahr (mit Vorwarnung)
---
## 4. Technische Details: Wo werden Daten gespeichert?
### 4.1 CrumbCore (FastAPI Backend)
**Datenbanken:**
#### MariaDB (Relationale Datenbank)
| Tabelle | Spalten (Beispiel) | Zweck | Retention |
|---------|-------------------|-------|-----------|
| `users` | `id`, `username`, `email`, `password_hash`, `created_at`, `last_login` | Benutzer-Accounts | Bis Löschung |
| `messages` | `id`, `user_id`, `character`, `user_message`, `character_response`, `timestamp` | Chat-Verläufe | Bis Löschung |
| `sessions` | `session_id`, `user_id`, `created_at`, `expires_at` | Login-Sessions | Auto-Löschung nach Ablauf |
| `projects` | `id`, `user_id`, `name`, `description`, `created_at`, `updated_at` | Projekt-Metadaten | Bis Löschung |
| `measurements` | `id`, `project_id`, `sensor_type`, `value`, `timestamp` | Sensor-Daten | Bis Löschung |
**Zugriff:** Nur CrumbCore Backend (localhost:3306, kein externer Zugriff)
#### Qdrant (Vektor-Datenbank für RAG)
| Collection | Payload-Felder | Zweck | Retention |
|------------|----------------|-------|-----------|
| `crumbforest` | `text`, `source`, `user_id` (optional), `timestamp` | Semantische Suche über Lernmaterialien | Unbegrenzt (öffentliche Inhalte), bis Löschung (User-Inhalte) |
**Zugriff:** Nur CrumbCore Backend (localhost:6333, kein externer Zugriff)
**Hinweis:** Qdrant speichert **Vektoren** (mathematische Repräsentationen von Text), nicht Klartexte. Die Original-Texte stehen in `messages` (MariaDB) oder im Filesystem.
#### Filesystem (Docker Volumes)
```
/data/
├── projects/
│ └── {user_id}/
│ └── {project_id}/
│ ├── main.py
│ ├── README.md
│ └── ...
└── logs/
├── crumbcore.log (App-Logs, 90 Tage)
└── access.log (Zugriffs-Logs, 7 Tage)
```
**Zugriff:** Nur CrumbCore Container (Docker-isoliert)
### 4.2 branko.de (Public Website)
**Keine Datenbank**, nur statische HTML-Dateien.
**Web-Server-Logs (Nginx/Apache):**
- IP-Adresse, User-Agent, Zeitstempel, angefragte URL
- **Retention:** 7 Tage, dann automatisch gelöscht
- **Zweck:** Sicherheit (DDoS-Schutz, Fehleranalyse)
**Keine Cookies**, kein Tracking, kein Analytics.
### 4.3 Crumbpages (Markdown Docs)
**Statische Dateien**, keine personenbezogenen Daten gespeichert.
Wenn Nutzer mit Crumbpages arbeiten (lokal oder via CrumbCore), entstehen **keine separaten Datenspeicherungen** alles läuft über CrumbCore (siehe 4.1).
---
## 5. Datenübermittlung & Drittanbieter
### 5.1 Hosting
**Aktuell:** Selbst gehostet (lokal oder auf eigenem Server)
**Keine Cloud-Provider** (kein AWS, Google Cloud, Azure)
**Vorteil:**
- ✅ Volle Kontrolle über Daten
- ✅ Keine Weitergabe an Dritte
- ✅ DSGVO-konform per Design
**Wenn Cloud-Hosting hinzukommt:**
- Nur EU-basierte Provider (DSGVO-konform)
- Auftragsverarbeitungsvertrag (Art. 28 DSGVO)
- Dokumentation hier aktualisiert
### 5.2 KI-Modell-Provider
**CrumbCore nutzt externe APIs:**
- OpenAI (GPT-4, GPT-3.5)
- Anthropic (Claude)
- Google (Gemini)
- OpenRouter (Aggregator)
**Was wird übermittelt:**
- Chat-Nachrichten (Nutzer-Fragen + System-Prompts)
- **KEINE** Metadaten (IP, Email, Namen) nur der Text selbst
**Rechtsgrundlage:**
- Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse: Funktionsfähigkeit)
- Bei Kindern: Einwilligung der Sorgeberechtigten
**Datenschutz-Status der Provider:**
| Provider | DSGVO-Status | Datenverarbeitung |
|----------|--------------|-------------------|
| **OpenAI** | DPA verfügbar, API-Daten werden nicht zum Training genutzt (seit März 2023) | USA (GDPR-konformes DPA) |
| **Anthropic** | DPA verfügbar, keine Nutzung für Training | USA (GDPR-konformes DPA) |
| **Google** | DPA verfügbar | EU & USA |
**Wichtig:** Nutzer können wählen, welches Modell sie nutzen (Wahlrecht = erhöhte Transparenz).
**Für "Offline-Modus":** Geplant ist Integration von lokal laufenden Modellen (Llama, Mistral via Ollama) für völlige Datenautonomie (Roadmap Q3 2025).
### 5.3 Keine weiteren Drittanbieter
❌ Kein Google Analytics
❌ Kein Facebook Pixel
❌ Keine Werbe-Netzwerke
❌ Keine Social Media Embeds (die tracken)
❌ Keine CDNs für JavaScript (alles lokal)
**CKL §5.2 verpflichtet: "Kein Tracking, kein Profiling"**
---
## 6. Cookies & Tracking
### 6.1 Cookies
**CrumbCore verwendet:**
| Cookie | Typ | Zweck | Lebensdauer |
|--------|-----|-------|-------------|
| `session_id` | Technisch notwendig | Login-Session | Bis Logout (max. 30 Tage) |
**branko.de verwendet:** **Keine Cookies**
### 6.2 Tracking
**Wir tracken NICHT:**
- ❌ Keine Bewegungsprofile
- ❌ Keine Verhaltensanalyse
- ❌ Keine "Heatmaps"
- ❌ Keine Cross-Site-Verfolgung
**Wir loggen NUR für Sicherheit:**
- ✅ Login-Zeitpunkte (gegen Brute-Force)
- ✅ Failed Login Attempts (gegen Hacking)
- ✅ API-Errors (für Debugging)
Diese Logs werden **anonymisiert** (IP-Adressen gekürzt) und nach **7-90 Tagen gelöscht**.
---
## 7. Sicherheitsmaßnahmen
### 7.1 Technische Maßnahmen
| Maßnahme | Umsetzung |
|----------|-----------|
| **Verschlüsselung in Transit** | HTTPS/TLS 1.3 (Let's Encrypt Zertifikate) |
| **Verschlüsselung at Rest** | Passwörter: bcrypt mit Salt (12 Rounds), Datenbank-Files: Filesystem-Encryption (LUKS/dm-crypt) |
| **Zugriffskontrolle** | Role-Based Access Control (RBAC), Nutzer sehen nur eigene Daten |
| **Firewall** | Nur Ports 80/443 offen, DB-Ports (3306, 6333) nur localhost |
| **Container-Isolation** | Docker Network Isolation, keine Privileged Containers |
| **Logging** | Zentrale Logs, regelmäßige Review, Intrusion Detection geplant (Q2 2025) |
| **Backups** | Tägliche Backups, verschlüsselt, offline gespeichert (Air-Gap) |
| **Updates** | Automatische Security Updates (unattended-upgrades) |
### 7.2 Organisatorische Maßnahmen
- **Admin-Zugriff:** Nur 2-3 Personen (Branko + ggf. OZM-Admins)
- **2FA:** Für Admin-Accounts verpflichtend
- **Prinzip der geringsten Rechte:** Jeder Dienst läuft mit minimalen Berechtigungen
- **Incident Response Plan:** [In Arbeit, Q1 2025]
- **Regelmäßige Audits:** Jährliche Security-Reviews
### 7.3 Datenschutz-Folgenabschätzung (DSFA)
**Erforderlich nach Art. 35 DSGVO?**
Prüfung:
- ☑ Systematische Überwachung? **Nein** (kein Tracking)
- ☑ Verarbeitung besonderer Kategorien? **Nein** (keine Gesundheitsdaten etc.)
- ☑ Minderjährige betroffen? **Ja** → Erhöhtes Risiko
**Ergebnis:** DSFA empfohlen (geplant Q1 2025 mit OZM-Governance)
---
## 8. Betroffenenrechte (DSGVO Art. 15-22)
### 8.1 Auskunftsrecht (Art. 15)
Du kannst jederzeit fragen:
- Welche Daten haben wir über dich?
- Zu welchem Zweck?
- Wie lange speichern wir sie?
**Wie:** Siehe [KINDERRECHTE.md](KINDERRECHTE.md) - Aktuell per Email, bald self-service via API.
### 8.2 Recht auf Berichtigung (Art. 16)
Du kannst falsche Daten korrigieren lassen.
**Wie:** Email an [Kontakt] oder (bald) über Profil-Seite.
### 8.3 Recht auf Löschung (Art. 17 - "Recht auf Vergessenwerden")
Du kannst verlangen, dass wir deine Daten löschen.
**Wie:** Siehe [KINDERRECHTE.md](KINDERRECHTE.md) - Detaillierter Löschprozess dokumentiert.
**Ausnahmen:**
- Rechtliche Aufbewahrungspflichten (z.B. Buchhaltung)
- Öffentliches Interesse (z.B. veröffentlichte Open-Source-Beiträge)
### 8.4 Recht auf Datenübertragbarkeit (Art. 20)
Du kannst eine Kopie deiner Daten in strukturiertem Format erhalten.
**Format:** JSON oder CSV (maschinenlesbar)
**Wie:** Siehe [KINDERRECHTE.md](KINDERRECHTE.md) - Export-Funktion.
### 8.5 Widerspruchsrecht (Art. 21)
Du kannst der Verarbeitung widersprechen (z.B. wenn wir uns auf "berechtigtes Interesse" berufen).
**Folge:** Wir stellen die Verarbeitung ein, außer es gibt zwingende Gründe.
### 8.6 Recht auf Einschränkung der Verarbeitung (Art. 18)
Du kannst verlangen, dass wir Daten nur speichern, aber nicht nutzen (z.B. während eines Rechtsstreits).
### 8.7 Beschwerde bei Aufsichtsbehörde (Art. 77)
Wenn du unzufrieden bist, kannst du dich beschweren bei:
**Zuständige Aufsichtsbehörde:** (abhängig von Wohnort)
- **Hamburg:** Hamburgischer Beauftragter für Datenschutz und Informationsfreiheit
Website: https://datenschutz-hamburg.de
Email: mailbox@datenschutz.hamburg.de
- **Andere Bundesländer:** Siehe https://www.bfdi.bund.de/DE/Service/Anschriften/Laender/Laender-node.html
---
## 9. Speicherdauer (Retention Policies)
| Datentyp | Speicherdauer | Löschmechanismus |
|----------|---------------|------------------|
| **Account-Daten** | Bis Account-Löschung | Manuell oder nach 1 Jahr Inaktivität (mit Vorwarnung) |
| **Chat-Nachrichten** | Bis Nutzer löscht | Manuell via API oder Account-Löschung |
| **Projekte** | Bis Nutzer löscht | Manuell via API oder Account-Löschung |
| **Sessions** | Max. 30 Tage | Auto-Löschung nach Ablauf |
| **Access Logs** | 7 Tage | Cron-Job (täglich) |
| **App Logs** | 90 Tage | Cron-Job (wöchentlich) |
| **Backups** | 3 Monate | Rotation (älteste wird überschrieben) |
**Wichtig:** Nach Löschung sind Daten **unwiederbringlich gelöscht** (inkl. Backups werden bereinigt).
---
## 10. Datenverarbeitung bei Kindern
### 10.1 Einwilligung
**Unter 16 Jahren:** Einwilligung der Sorgeberechtigten erforderlich (Art. 8 DSGVO).
**Wie wir das sicherstellen:**
- Checkbox: "Ich bin über 16 Jahre alt" ODER "Ich habe die Einwilligung meiner Eltern"
- Email-Bestätigung an Sorgeberechtigte (geplant Q1 2025)
- Schulen/Lehrkräfte können als "Verantwortliche" auftreten (dann regelt die Schule die Einwilligung)
### 10.2 Erhöhter Schutz (CKL)
Für Kinder gilt **automatisch**:
- **Kein Profiling** (Art. 22 DSGVO + CKL §5.2)
- **Keine Werbung** (CKL §7.3)
- **Keine Weitergabe** an Dritte außer KI-Provider (und nur anonymisiert)
- **Jederzeit Export/Löschung** (CKL §3.2, §3.3)
### 10.3 Schulkontext
Wenn Crumbforest in Schulen eingesetzt wird:
- **Schule ist Verantwortlicher** (nicht Crumbforest)
- **Lehrer haben Zugriff** auf Schüler-Projekte (pädagogischer Zweck)
- **Schule muss Einwilligungen einholen** (nach Landesschulgesetzen)
Wir bieten: **Data Processing Agreement (DPA)** für Schulen (Template in Arbeit, Q1 2025).
---
## 11. Änderungen dieser Datenschutzerklärung
**Wie wir dich informieren:**
- Email an registrierte Nutzer (wenn wesentliche Änderungen)
- Hinweis beim nächsten Login
- Versionsnummer und Datum am Anfang dieses Dokuments
**Dein Recht:**
- Du kannst widersprechen (dann Account löschen)
- Du kannst weiter nutzen (= implizite Einwilligung in neue Version)
**Versionshistorie:**
- v1.0-draft (2025-12-13): Erste Version
---
## 12. Kontakt & Fragen
### Für allgemeine Fragen:
**Email:** [wird ergänzt]
**Website:** https://crumbforest.com
### Für Datenschutz-spezifische Anfragen:
**Betroffenenrechte:** Siehe [KINDERRECHTE.md](KINDERRECHTE.md)
**Datenschutzbeauftragter:** [wird bestellt, sobald erforderlich]
### Für Admins/Entwickler:
**Technische Dokumentation:** Siehe [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section VI
**CKL Compliance:** Siehe [LICENSE-CKL.md](LICENSE-CKL.md)
---
## 13. Zusammenfassung (TL;DR)
**Was wir speichern:** Nur was nötig ist (Benutzername, Chat, Projekte)
**Warum:** Damit du lernen kannst
**Wo:** Lokal auf eigenem Server (keine Cloud)
**Wie lange:** Bis du löschst (oder 1 Jahr Inaktivität)
**Wer sieht es:** Nur du (+ dein Lehrer, wenn Schulkontext)
**Tracking:** Keins (kein Analytics, keine Werbung)
**Deine Rechte:** Export, Löschung, Korrektur (siehe KINDERRECHTE.md)
**Kinder:** Besonderer Schutz durch CKL (kein Profiling, keine Paywalls)
**Das war's. Keine versteckten Klauseln.**
---
## 14. Rechtliche Referenzen
Diese Datenschutzerklärung basiert auf:
- **DSGVO** (EU 2016/679): https://eur-lex.europa.eu/eli/reg/2016/679/oj
- **BDSG** (Bundesdatenschutzgesetz): https://www.gesetze-im-internet.de/bdsg_2018/
- **TMG** (Telemediengesetz): https://www.gesetze-im-internet.de/tmg/
- **CKL** (Crumbforest Children's Knowledge License): [LICENSE-CKL.md](LICENSE-CKL.md)
- **UN-Kinderrechtskonvention** (Art. 16 - Privatsphäre): https://www.kinderrechtskonvention.info/
---
**Stand:** 2025-12-13
**Version:** 1.0-draft
**Nächstes Review:** Q1 2025 (nach OZM-Governance-Formalisierung)
**Lizenz:** CC-BY-SA 4.0 (dieses Dokument)
---
> *"Wissen gehört dem Kind, solange es fragt."*
> *"Daten gehören dem Kind, solange es lernt."*
> — Crumbforest-Prinzip