diff --git a/DATENSCHUTZ.md b/DATENSCHUTZ.md new file mode 100644 index 0000000..cf830b0 --- /dev/null +++ b/DATENSCHUTZ.md @@ -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