diff --git a/admin-v2/lib/sdk/dsfa/ai-mitigation-library.ts b/admin-v2/lib/sdk/dsfa/ai-mitigation-library.ts new file mode 100644 index 0000000..613f307 --- /dev/null +++ b/admin-v2/lib/sdk/dsfa/ai-mitigation-library.ts @@ -0,0 +1,417 @@ +/** + * DSFA KI-Massnahmenbibliothek - Vordefinierte KI-spezifische Massnahmen + * + * ~25 Massnahmen gegliedert nach: + * - Bias-Praevention & Fairness + * - Erklaerbarkeit & Transparenz + * - Datenqualitaet & Governance + * - Sicherheit & Robustheit + * - Automatisierte Entscheidungen (Human Oversight) + * - Monitoring & Qualitaetssicherung + * - Privatsphaere & Datenschutz + * + * Quellen: Art. 9-15 AI Act, Art. 22/25/32 DSGVO, EDPB Guidelines, + * BSI-TR-03161, SDM V2.0 + */ + +import type { CatalogMitigation } from './mitigation-library' + +// ============================================================================= +// KI-MASSNAHMENBIBLIOTHEK +// ============================================================================= + +export const AI_MITIGATION_LIBRARY: CatalogMitigation[] = [ + // ========================================================================= + // BIAS-PRAEVENTION & FAIRNESS + // ========================================================================= + { + id: 'M-AI-BIAS-01', + type: 'technical', + sdmGoals: ['nichtverkettung', 'intervenierbarkeit'], + title: 'Bias-Audit und Fairness-Testing', + description: 'Regelmaessige Durchfuehrung von Bias-Audits mit standardisierten Fairness-Metriken (z.B. Demographic Parity, Equalized Odds, Calibration). Automatisierte Tests vor jedem Modell-Update.', + legalBasis: 'Art. 10 AI Act, Art. 22 Abs. 3 DSGVO', + evidenceTypes: ['Bias-Audit-Report', 'Fairness-Metriken-Dashboard', 'Test-Protokoll'], + addressesRiskIds: ['R-AI-BIAS-01', 'R-AI-BIAS-03', 'R-AI-PRIV-04'], + effectiveness: 'high', + }, + { + id: 'M-AI-BIAS-02', + type: 'technical', + sdmGoals: ['nichtverkettung', 'integritaet'], + title: 'Trainingsdaten-Debiasing und Rebalancing', + description: 'Systematische Analyse der Trainingsdaten auf Unterrepraesentation und Verzerrungen. Anwendung von Resampling, Reweighting oder synthetischer Datenerweiterung zur Herstellung von Balance.', + legalBasis: 'Art. 10 Abs. 2-3 AI Act', + evidenceTypes: ['Datenanalyse-Report', 'Rebalancing-Protokoll', 'Datenverteilungs-Bericht'], + addressesRiskIds: ['R-AI-BIAS-01', 'R-AI-BIAS-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-BIAS-03', + type: 'organizational', + sdmGoals: ['nichtverkettung', 'transparenz'], + title: 'Diversitaet in KI-Entwicklungsteams', + description: 'Sicherstellung von Diversitaet in den Teams, die KI-Systeme entwickeln und bewerten. Einbeziehung von Betroffenengruppen in den Evaluierungsprozess.', + legalBasis: 'Art. 9 Abs. 9 AI Act', + evidenceTypes: ['Team-Diversity-Report', 'Stakeholder-Einbeziehungs-Protokoll'], + addressesRiskIds: ['R-AI-BIAS-03'], + effectiveness: 'medium', + }, + + // ========================================================================= + // ERKLAERBARKEIT & TRANSPARENZ + // ========================================================================= + { + id: 'M-AI-EXPL-01', + type: 'technical', + sdmGoals: ['transparenz', 'intervenierbarkeit'], + title: 'Explainable AI (XAI) - Erklaerbare KI-Methoden', + description: 'Einsatz von Erklaerbarkeitsmethoden wie SHAP, LIME oder Attention Maps, um KI-Entscheidungen nachvollziehbar zu machen. Bereitstellung von Erklaerungen in verstaendlicher Sprache.', + legalBasis: 'Art. 13 AI Act, Art. 13-14 DSGVO', + evidenceTypes: ['XAI-Implementierungsbericht', 'Erklaerbarkeits-Screenshots', 'Nutzer-Feedback'], + addressesRiskIds: ['R-AI-EXPL-01', 'R-AI-AUTO-02', 'R-AI-BIAS-03'], + effectiveness: 'high', + }, + { + id: 'M-AI-EXPL-02', + type: 'organizational', + sdmGoals: ['transparenz'], + title: 'KI-Modellkarte (Model Card) und Datenblatt', + description: 'Erstellung und Pflege einer Modellkarte nach dem Model Card Framework. Dokumentation von Leistung, Einschraenkungen, beabsichtigter Nutzung und Fairness-Metriken.', + legalBasis: 'Art. 11 AI Act, Art. 13 DSGVO', + evidenceTypes: ['Model Card (PDF)', 'Data Sheet', 'Leistungsbericht'], + addressesRiskIds: ['R-AI-EXPL-03', 'R-AI-EXPL-01'], + effectiveness: 'medium', + }, + { + id: 'M-AI-EXPL-03', + type: 'organizational', + sdmGoals: ['transparenz'], + title: 'KI-Kennzeichnung und Nutzertransparenz', + description: 'Deutliche Kennzeichnung von KI-generierten Inhalten und KI-Interaktionen. Informierung der Nutzer ueber den Einsatz von KI-Systemen, deren Zweck und Einschraenkungen.', + legalBasis: 'Art. 50 AI Act, Art. 13-14 DSGVO', + evidenceTypes: ['KI-Kennzeichnungs-Screenshots', 'Datenschutzhinweis-Auszug', 'Nutzerinformation'], + addressesRiskIds: ['R-AI-EXPL-02', 'R-AI-EXPL-01'], + effectiveness: 'high', + }, + { + id: 'M-AI-TRANS-01', + type: 'legal', + sdmGoals: ['transparenz'], + title: 'KI-Transparenzbericht (jaehrlich)', + description: 'Veroeffentlichung eines jaehrlichen Transparenzberichts ueber den Einsatz von KI-Systemen, deren Auswirkungen, durchgefuehrte Audits und ergriffene Massnahmen.', + legalBasis: 'Art. 13 AI Act', + evidenceTypes: ['Transparenzbericht (PDF)', 'Veroeffentlichungsnachweis'], + addressesRiskIds: ['R-AI-EXPL-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-DOC-01', + type: 'organizational', + sdmGoals: ['transparenz'], + title: 'Technische Dokumentation nach AI Act', + description: 'Vollstaendige technische Dokumentation des KI-Systems gemaess Art. 11 und Anhang IV AI Act: Systembeschreibung, Designentscheidungen, Datenmanagement, Monitoring-Plan.', + legalBasis: 'Art. 11, Anhang IV AI Act', + evidenceTypes: ['Technische Dokumentation', 'Systemarchitektur-Diagramm', 'Anhang-IV-Checkliste'], + addressesRiskIds: ['R-AI-EXPL-03'], + effectiveness: 'high', + }, + + // ========================================================================= + // DATENQUALITAET & GOVERNANCE + // ========================================================================= + { + id: 'M-AI-DATA-01', + type: 'organizational', + sdmGoals: ['integritaet', 'datenminimierung'], + title: 'Data Governance Framework fuer KI-Training', + description: 'Einrichtung eines strukturierten Data-Governance-Prozesses: Datenherkunft (Provenance), Qualitaetskontrolle, Versionierung, Dokumentation und regelmaessige Ueberpruefung der Trainingsdaten.', + legalBasis: 'Art. 10 AI Act, Art. 5 Abs. 1 lit. d DSGVO', + evidenceTypes: ['Data-Governance-Policy', 'Datenherkunfts-Dokumentation', 'Qualitaetskontroll-Protokoll'], + addressesRiskIds: ['R-AI-DATA-01', 'R-AI-DATA-03', 'R-AI-BIAS-01'], + effectiveness: 'high', + }, + { + id: 'M-AI-DATA-02', + type: 'technical', + sdmGoals: ['integritaet'], + title: 'Automatisierte Datenqualitaetspruefung', + description: 'Automatisierte Pipelines zur Pruefung der Datenqualitaet: Erkennung von Ausreissern, Duplikaten, fehlenden Werten, Datenkonsistenz und statistischen Abweichungen.', + legalBasis: 'Art. 10 Abs. 2 AI Act', + evidenceTypes: ['Data-Quality-Pipeline-Logs', 'Qualitaetsmetriken-Dashboard'], + addressesRiskIds: ['R-AI-DATA-01', 'R-AI-DATA-04', 'R-AI-MON-01'], + effectiveness: 'medium', + }, + { + id: 'M-AI-DATA-03', + type: 'legal', + sdmGoals: ['datenminimierung', 'nichtverkettung'], + title: 'Rechtsgrundlage und DSFA fuer KI-Trainingsdaten', + description: 'Sicherstellung einer validen Rechtsgrundlage fuer die Nutzung personenbezogener Daten im KI-Training. Durchfuehrung einer separaten DSFA fuer den Trainingsdaten-Verarbeitungszweck.', + legalBasis: 'Art. 6, Art. 35 DSGVO, Art. 10 Abs. 5 AI Act', + evidenceTypes: ['Rechtsgrundlagen-Bewertung', 'DSFA-Trainingsdaten', 'Einwilligungsformular'], + addressesRiskIds: ['R-AI-DATA-02', 'R-AI-PRIV-04', 'R-AI-DATA-03'], + effectiveness: 'high', + }, + + // ========================================================================= + // SICHERHEIT & ROBUSTHEIT + // ========================================================================= + { + id: 'M-AI-SEC-01', + type: 'technical', + sdmGoals: ['integritaet', 'verfuegbarkeit'], + title: 'Adversarial Robustness Testing', + description: 'Regelmaessige Tests des KI-Modells gegen Adversarial Attacks, Data Poisoning und Evasion-Angriffe. Einsatz von Robustness Toolkits (z.B. IBM ART, Foolbox).', + legalBasis: 'Art. 15 AI Act, Art. 32 DSGVO', + evidenceTypes: ['Adversarial-Test-Report', 'Robustness-Metriken', 'Penetrationstest-Bericht'], + addressesRiskIds: ['R-AI-SEC-01', 'R-AI-DATA-04', 'R-AI-SEC-03'], + effectiveness: 'high', + }, + { + id: 'M-AI-SEC-02', + type: 'technical', + sdmGoals: ['verfuegbarkeit', 'integritaet'], + title: 'Input-Validierung und Sanitization', + description: 'Implementierung robuster Eingabevalidierung fuer KI-Systeme: Laengen- und Formatpruefung, Content-Filterung, Erkennung adversarialer Eingabemuster.', + legalBasis: 'Art. 15 AI Act, Art. 32 DSGVO', + evidenceTypes: ['Input-Validation-Policy', 'Filter-Regeln-Dokumentation'], + addressesRiskIds: ['R-AI-SEC-01', 'R-AI-SEC-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-SEC-03', + type: 'technical', + sdmGoals: ['vertraulichkeit', 'integritaet'], + title: 'Prompt-Injection-Schutz und Output-Filterung', + description: 'Implementierung mehrschichtiger Schutzmassnahmen gegen Prompt Injection: System-Prompt-Isolation, Input-Sanitization, Output-Filterung und PII-Detection in Antworten.', + legalBasis: 'Art. 15 AI Act, Art. 32 DSGVO', + evidenceTypes: ['Security-Policy', 'Prompt-Injection-Test-Report', 'Filter-Konfiguration'], + addressesRiskIds: ['R-AI-SEC-02', 'R-AI-DATA-04'], + effectiveness: 'high', + }, + { + id: 'M-AI-SEC-04', + type: 'technical', + sdmGoals: ['vertraulichkeit'], + title: 'PII-Detection und Daten-Redaction in KI-Ausgaben', + description: 'Automatisierte Erkennung und Entfernung personenbezogener Daten (PII) in KI-Ausgaben. Echtzeit-Filterung sensibler Informationen vor der Auslieferung an Nutzer.', + legalBasis: 'Art. 32 DSGVO, Art. 25 DSGVO', + evidenceTypes: ['PII-Detection-Konfiguration', 'Redaction-Logs', 'False-Positive-Rate'], + addressesRiskIds: ['R-AI-SEC-02', 'R-AI-PRIV-02'], + effectiveness: 'high', + }, + { + id: 'M-AI-SEC-05', + type: 'technical', + sdmGoals: ['integritaet', 'verfuegbarkeit'], + title: 'Retrieval-Augmented Generation (RAG) gegen Halluzinationen', + description: 'Einsatz von RAG-Systemen, die KI-Antworten auf verifizierte Quelldokumente stuetzen. Quellenangabe in jeder Antwort fuer Nachvollziehbarkeit.', + legalBasis: 'Art. 15 AI Act', + evidenceTypes: ['RAG-Architektur-Dokumentation', 'Quellengenauigkeits-Report', 'Halluzinations-Rate'], + addressesRiskIds: ['R-AI-SEC-04', 'R-AI-EXPL-01'], + effectiveness: 'high', + }, + + // ========================================================================= + // AUTOMATISIERTE ENTSCHEIDUNGEN (HUMAN OVERSIGHT) + // ========================================================================= + { + id: 'M-AI-AUTO-01', + type: 'organizational', + sdmGoals: ['intervenierbarkeit'], + title: 'Human-in-the-Loop / Human-on-the-Loop Prozess', + description: 'Etablierung eines strukturierten Prozesses fuer menschliche Aufsicht: Definierte Eskalationsschwellen, geschulte Entscheider, dokumentierte Ueberpruefungsschritte.', + legalBasis: 'Art. 14 AI Act, Art. 22 Abs. 3 DSGVO', + evidenceTypes: ['Human-Oversight-Prozessdokumentation', 'Eskalationsmatrix', 'Schulungsnachweis'], + addressesRiskIds: ['R-AI-AUTO-01', 'R-AI-AUTO-02', 'R-AI-MON-02'], + effectiveness: 'high', + }, + { + id: 'M-AI-AUTO-02', + type: 'technical', + sdmGoals: ['intervenierbarkeit', 'transparenz'], + title: 'Konfidenzwert-basierte Entscheidungssteuerung', + description: 'KI-System gibt bei jeder Entscheidung einen Konfidenzwert aus. Entscheidungen unterhalb eines definierten Schwellwerts werden automatisch an menschliche Pruefer eskaliert.', + legalBasis: 'Art. 14 AI Act', + evidenceTypes: ['Konfidenzwert-Policy', 'Schwellwert-Konfiguration', 'Eskalationsstatistik'], + addressesRiskIds: ['R-AI-AUTO-01', 'R-AI-SEC-04'], + effectiveness: 'high', + }, + { + id: 'M-AI-AUTO-03', + type: 'legal', + sdmGoals: ['intervenierbarkeit'], + title: 'Widerspruchsrecht und manuelle Ueberpruefung', + description: 'Implementierung eines transparenten Prozesses, ueber den Betroffene einer KI-Entscheidung widersprechen und eine manuelle Ueberpruefung durch eine qualifizierte Person verlangen koennen.', + legalBasis: 'Art. 22 Abs. 3 DSGVO', + evidenceTypes: ['Widerspruchsformular', 'Prozessbeschreibung', 'Bearbeitungsstatistik'], + addressesRiskIds: ['R-AI-AUTO-01', 'R-AI-AUTO-03'], + effectiveness: 'high', + }, + { + id: 'M-AI-AUTO-04', + type: 'organizational', + sdmGoals: ['intervenierbarkeit'], + title: 'Anti-Automation-Bias-Training', + description: 'Schulung der menschlichen Ueberpruefer gegen Automation Bias: Kritisches Hinterfragen von KI-Empfehlungen, regelmaessige Kalibierung, Entscheidungsdokumentation.', + legalBasis: 'Art. 14 Abs. 4 AI Act', + evidenceTypes: ['Schulungsunterlagen', 'Teilnahmebestaetigung', 'Ueberpruefungsstatistik'], + addressesRiskIds: ['R-AI-AUTO-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-AUTO-05', + type: 'legal', + sdmGoals: ['intervenierbarkeit', 'transparenz'], + title: 'Informationspflicht bei automatisierter Entscheidungsfindung', + description: 'Proaktive Information der Betroffenen ueber automatisierte Entscheidungsfindung, die angewandte Logik, die Tragweite und die Rechte der Betroffenen (Art. 13 Abs. 2 lit. f DSGVO).', + legalBasis: 'Art. 13 Abs. 2 lit. f, Art. 14 Abs. 2 lit. g DSGVO', + evidenceTypes: ['Datenschutzerklaerung-Auszug', 'Informationsschreiben', 'Transparenzhinweise-UI'], + addressesRiskIds: ['R-AI-AUTO-03'], + effectiveness: 'medium', + }, + + // ========================================================================= + // MONITORING & QUALITAETSSICHERUNG + // ========================================================================= + { + id: 'M-AI-MON-01', + type: 'technical', + sdmGoals: ['integritaet', 'verfuegbarkeit'], + title: 'KI-Performance-Monitoring und Drift-Detection', + description: 'Kontinuierliches Monitoring der KI-Leistungsmetriken (Accuracy, F1-Score, Fairness). Automatisierte Erkennung von Data Drift und Concept Drift mit Alerting.', + legalBasis: 'Art. 9 Abs. 2 AI Act, Art. 32 DSGVO', + evidenceTypes: ['Monitoring-Dashboard', 'Drift-Detection-Alerts', 'Performance-Trend-Report'], + addressesRiskIds: ['R-AI-MON-01', 'R-AI-DATA-01', 'R-AI-BIAS-02', 'R-AI-SEC-01'], + effectiveness: 'high', + }, + { + id: 'M-AI-MON-02', + type: 'technical', + sdmGoals: ['integritaet', 'transparenz'], + title: 'KI-Audit-Logging und Entscheidungsprotokollierung', + description: 'Vollstaendige Protokollierung aller KI-Entscheidungen mit Eingabe, Ausgabe, Konfidenzwert und Zeitstempel. Aufbewahrung gemaess Art. 12 AI Act.', + legalBasis: 'Art. 12 AI Act, Art. 5 Abs. 2 DSGVO', + evidenceTypes: ['Audit-Log-Konfiguration', 'Log-Retention-Policy', 'Beispiel-Audit-Trail'], + addressesRiskIds: ['R-AI-MON-01', 'R-AI-BIAS-02', 'R-AI-SEC-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-MON-03', + type: 'technical', + sdmGoals: ['verfuegbarkeit', 'intervenierbarkeit'], + title: 'Kill-Switch und Fallback-Mechanismus', + description: 'Implementierung eines Notfall-Abschaltmechanismus (Kill Switch) fuer das KI-System. Automatischer Fallback auf regelbasierte Verarbeitung oder manuelle Bearbeitung bei Stoerungen.', + legalBasis: 'Art. 14 Abs. 4 lit. e AI Act', + evidenceTypes: ['Kill-Switch-Dokumentation', 'Fallback-Prozess', 'Notfall-Testprotokoll'], + addressesRiskIds: ['R-AI-MON-02', 'R-AI-AUTO-01'], + effectiveness: 'high', + }, + { + id: 'M-AI-MON-04', + type: 'organizational', + sdmGoals: ['verfuegbarkeit'], + title: 'Regelmaessiger KI-Systemtest und Wartungsplan', + description: 'Definierter Wartungsplan mit regelmaessigen Systemtests, Modell-Retraining-Zyklen und Leistungsueberpruefungen. Dokumentation aller Aenderungen und deren Auswirkungen.', + legalBasis: 'Art. 9 Abs. 3 AI Act', + evidenceTypes: ['Wartungsplan', 'Testprotokolle', 'Aenderungsdokumentation'], + addressesRiskIds: ['R-AI-MON-02', 'R-AI-MON-01'], + effectiveness: 'medium', + }, + + // ========================================================================= + // PRIVATSPHAERE & DATENSCHUTZ + // ========================================================================= + { + id: 'M-AI-PRIV-01', + type: 'technical', + sdmGoals: ['datenminimierung', 'nichtverkettung'], + title: 'Privacy-Preserving AI (Differential Privacy, Federated Learning)', + description: 'Einsatz von Privacy-Enhancing Technologies: Differential Privacy beim Training, Federated Learning fuer dezentrales Training, K-Anonymitaet bei Trainingsdaten.', + legalBasis: 'Art. 25 DSGVO, Art. 10 Abs. 5 AI Act', + evidenceTypes: ['Privacy-Technik-Beschreibung', 'Epsilon-Budget-Dokumentation', 'Anonymisierungs-Nachweis'], + addressesRiskIds: ['R-AI-PRIV-01', 'R-AI-DATA-02', 'R-AI-PRIV-04'], + effectiveness: 'high', + }, + { + id: 'M-AI-PRIV-02', + type: 'technical', + sdmGoals: ['vertraulichkeit', 'datenminimierung'], + title: 'Trainingsdaten-Anonymisierung und Pseudonymisierung', + description: 'Konsequente Anonymisierung oder Pseudonymisierung personenbezogener Daten vor dem KI-Training. Anwendung von Data Masking, Tokenisierung und synthetischer Datengenerierung.', + legalBasis: 'Art. 25 Abs. 1 DSGVO, Art. 32 DSGVO', + evidenceTypes: ['Anonymisierungskonzept', 'Re-Identifizierungs-Risiko-Bewertung', 'Pseudonymisierungs-Policy'], + addressesRiskIds: ['R-AI-DATA-02', 'R-AI-SEC-03', 'R-AI-PRIV-02'], + effectiveness: 'high', + }, + { + id: 'M-AI-PRIV-03', + type: 'organizational', + sdmGoals: ['datenminimierung'], + title: 'Datenminimierung im KI-Lebenszyklus', + description: 'Systematische Ueberpruefung und Minimierung der verarbeiteten Daten in jeder Phase des KI-Lebenszyklus: Training, Validierung, Inferenz. Loeschkonzept fuer nicht mehr benoetigte Daten.', + legalBasis: 'Art. 5 Abs. 1 lit. c DSGVO, Art. 10 AI Act', + evidenceTypes: ['Datenminimierungs-Assessment', 'Loeschkonzept-KI', 'Datenbestandsbericht'], + addressesRiskIds: ['R-AI-DATA-03', 'R-AI-PRIV-01'], + effectiveness: 'medium', + }, + { + id: 'M-AI-PRIV-04', + type: 'technical', + sdmGoals: ['vertraulichkeit'], + title: 'Machine Unlearning / Modell-Bereinigung', + description: 'Faehigkeit, einzelne Datenpunkte nachtraeglich aus dem trainierten Modell zu entfernen (Machine Unlearning). Unterstuetzung des Rechts auf Loeschung (Art. 17 DSGVO) auch fuer Trainingsdaten.', + legalBasis: 'Art. 17 DSGVO', + evidenceTypes: ['Unlearning-Verfahrensbeschreibung', 'Loeschanfrage-Protokoll', 'Verifikations-Test'], + addressesRiskIds: ['R-AI-SEC-03', 'R-AI-PRIV-02'], + effectiveness: 'medium', + }, + { + id: 'M-AI-PRIV-05', + type: 'technical', + sdmGoals: ['vertraulichkeit', 'nichtverkettung'], + title: 'Self-Hosting / On-Premises KI-Betrieb', + description: 'Betrieb des KI-Systems auf eigener Infrastruktur (Self-Hosting/On-Premises) oder in EU-Rechenzentren, um Drittlandtransfers zu vermeiden und Datensouveraenitaet zu gewaehrleisten.', + legalBasis: 'Art. 44 ff. DSGVO', + evidenceTypes: ['Hosting-Dokumentation', 'Standort-Nachweis', 'Infrastruktur-Audit'], + addressesRiskIds: ['R-AI-PRIV-03'], + effectiveness: 'high', + }, + { + id: 'M-AI-PRIV-06', + type: 'legal', + sdmGoals: ['nichtverkettung'], + title: 'Standardvertragsklauseln und TIA fuer KI-Cloud-Dienste', + description: 'Bei Nutzung von Cloud-basierten KI-Diensten mit Drittlandtransfer: Abschluss von Standardvertragsklauseln (SCC), Durchfuehrung eines Transfer Impact Assessment (TIA) und ergaenzende Massnahmen.', + legalBasis: 'Art. 46 Abs. 2 lit. c DSGVO, Schrems-II', + evidenceTypes: ['SCC-Vertrag', 'Transfer-Impact-Assessment', 'Ergaenzende-Massnahmen-Dokumentation'], + addressesRiskIds: ['R-AI-PRIV-03'], + effectiveness: 'medium', + }, +] + +// ============================================================================= +// HELPER FUNCTIONS +// ============================================================================= + +/** + * Gibt KI-Massnahmen zurueck, die ein bestimmtes Risiko adressieren + */ +export function getAIMitigationsForRisk(riskId: string): CatalogMitigation[] { + return AI_MITIGATION_LIBRARY.filter(m => m.addressesRiskIds.includes(riskId)) +} + +/** + * Gibt KI-Massnahmen zurueck, die einem bestimmten SDM-Gewaehrleistungsziel dienen + */ +export function getAIMitigationsBySDMGoal(goal: string): CatalogMitigation[] { + return AI_MITIGATION_LIBRARY.filter(m => m.sdmGoals.includes(goal as any)) +} + +/** + * Gibt alle technischen KI-Massnahmen zurueck + */ +export function getTechnicalAIMitigations(): CatalogMitigation[] { + return AI_MITIGATION_LIBRARY.filter(m => m.type === 'technical') +} diff --git a/admin-v2/lib/sdk/dsfa/ai-risk-catalog.ts b/admin-v2/lib/sdk/dsfa/ai-risk-catalog.ts new file mode 100644 index 0000000..bfd7188 --- /dev/null +++ b/admin-v2/lib/sdk/dsfa/ai-risk-catalog.ts @@ -0,0 +1,375 @@ +/** + * DSFA KI-Risikokatalog - Vordefinierte KI-spezifische Risiken + * + * ~25 Risiken gegliedert nach: + * - Bias & Diskriminierung + * - Erklaerbarkeit & Transparenz + * - Datenqualitaet & Training + * - Sicherheit & Robustheit + * - Automatisierte Entscheidungen + * - Ueberwachung & Kontrolle + * - Privatsphaere & Datenschutz + * + * Quellen: AI Act (EU 2024/1689), Art. 22 DSGVO, EDPB Guidelines, + * BSI-TR-03161, SDM V2.0 + */ + +import type { CatalogRisk } from './risk-catalog' + +// ============================================================================= +// KI-RISIKOKATALOG +// ============================================================================= + +export const AI_RISK_CATALOG: CatalogRisk[] = [ + // ========================================================================= + // BIAS & DISKRIMINIERUNG + // ========================================================================= + { + id: 'R-AI-BIAS-01', + category: 'rights_freedoms', + sdmGoal: 'nichtverkettung', + title: 'Algorithmische Diskriminierung durch verzerrte Trainingsdaten', + description: 'Das KI-System reproduziert oder verstaerkt bestehende gesellschaftliche Vorurteile durch unausgewogene oder historisch verzerrte Trainingsdaten, was zu diskriminierenden Ergebnissen fuehrt.', + impactExamples: ['Benachteiligung geschuetzter Gruppen', 'Ungleichbehandlung bei Bewerbungsverfahren', 'Diskriminierende Kreditvergabe'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K1', 'K7', 'K8'], + applicableTo: ['decision_support', 'automated_processing', 'recommendation', 'predictive', 'analytics'], + mitigationIds: ['M-AI-BIAS-01', 'M-AI-BIAS-02', 'M-AI-DATA-01'], + }, + { + id: 'R-AI-BIAS-02', + category: 'rights_freedoms', + sdmGoal: 'nichtverkettung', + title: 'Feedback-Loop-Verstaerkung von Bias', + description: 'KI-Entscheidungen beeinflussen kuenftige Trainingsdaten und verstaerken damit bestehende Verzerrungen in einem Teufelskreis (Feedback Loop).', + impactExamples: ['Zunehmende Polarisierung', 'Verstaerkte Ungleichbehandlung ueber Zeit', 'Systematische Benachteiligung'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K1', 'K8'], + applicableTo: ['recommendation', 'predictive', 'automated_processing'], + mitigationIds: ['M-AI-BIAS-02', 'M-AI-MON-01', 'M-AI-MON-02'], + }, + { + id: 'R-AI-BIAS-03', + category: 'rights_freedoms', + sdmGoal: 'intervenierbarkeit', + title: 'Proxy-Diskriminierung durch korrelierte Merkmale', + description: 'Das KI-System diskriminiert indirekt anhand von Merkmalen, die mit geschuetzten Eigenschaften korrelieren (z.B. Postleitzahl als Proxy fuer Ethnizitaet).', + impactExamples: ['Indirekte Diskriminierung', 'Verletzung des Gleichheitsgrundsatzes', 'Schwer nachweisbare Benachteiligung'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K1', 'K6'], + applicableTo: ['predictive', 'decision_support', 'automated_processing', 'analytics'], + mitigationIds: ['M-AI-BIAS-01', 'M-AI-BIAS-03', 'M-AI-EXPL-01'], + }, + + // ========================================================================= + // ERKLAERBARKEIT & TRANSPARENZ + // ========================================================================= + { + id: 'R-AI-EXPL-01', + category: 'rights_freedoms', + sdmGoal: 'transparenz', + title: 'Fehlende Erklaerbarkeit von KI-Entscheidungen (Black Box)', + description: 'Entscheidungen des KI-Systems koennen nicht nachvollzogen oder erklaert werden, was die Wahrnehmung von Betroffenenrechten und die Aufsicht erschwert.', + impactExamples: ['Betroffene koennen Entscheidungen nicht anfechten', 'Aufsichtsbehoerden koennen nicht pruefen', 'Vertrauensverlust'], + typicalLikelihood: 'high', + typicalImpact: 'medium', + wp248Criteria: ['K2', 'K8', 'K9'], + applicableTo: ['decision_support', 'automated_processing', 'predictive', 'recommendation'], + mitigationIds: ['M-AI-EXPL-01', 'M-AI-EXPL-02', 'M-AI-EXPL-03'], + }, + { + id: 'R-AI-EXPL-02', + category: 'rights_freedoms', + sdmGoal: 'transparenz', + title: 'Taeuschung ueber KI-Einsatz (fehlende Kennzeichnung)', + description: 'Nutzer wissen nicht, dass sie mit einem KI-System interagieren oder dass Inhalte KI-generiert sind (Verstoss gegen Transparenzpflicht AI Act Art. 50).', + impactExamples: ['Vertrauensmissbrauch', 'Manipulation durch Deepfakes', 'Fehlende informierte Einwilligung'], + typicalLikelihood: 'medium', + typicalImpact: 'medium', + wp248Criteria: ['K8'], + applicableTo: ['chatbot', 'content_generation', 'speech_processing', 'image_recognition'], + mitigationIds: ['M-AI-EXPL-03', 'M-AI-TRANS-01'], + }, + { + id: 'R-AI-EXPL-03', + category: 'rights_freedoms', + sdmGoal: 'transparenz', + title: 'Unzureichende Dokumentation der KI-Entscheidungslogik', + description: 'Die Funktionsweise des KI-Systems ist nicht ausreichend dokumentiert, um die gesetzlichen Anforderungen an Technische Dokumentation (Art. 11 AI Act) zu erfuellen.', + impactExamples: ['Verstoss gegen Dokumentationspflichten', 'Keine Reproduzierbarkeit', 'Erschwerter Audit'], + typicalLikelihood: 'medium', + typicalImpact: 'medium', + wp248Criteria: ['K8'], + applicableTo: ['decision_support', 'automated_processing', 'predictive', 'recommendation', 'analytics'], + mitigationIds: ['M-AI-EXPL-02', 'M-AI-DOC-01'], + }, + + // ========================================================================= + // DATENQUALITAET & TRAINING + // ========================================================================= + { + id: 'R-AI-DATA-01', + category: 'integrity', + sdmGoal: 'integritaet', + title: 'Schlechte Trainingsdatenqualitaet fuehrt zu fehlerhaften Ergebnissen', + description: 'Unvollstaendige, veraltete oder fehlerhafte Trainingsdaten fuehren zu unzuverlaessigen KI-Ergebnissen, die Entscheidungen negativ beeinflussen.', + impactExamples: ['Falsche Vorhersagen', 'Fehlerhafte Klassifizierungen', 'Unzuverlaessige Empfehlungen'], + typicalLikelihood: 'medium', + typicalImpact: 'medium', + wp248Criteria: ['K8'], + applicableTo: ['predictive', 'decision_support', 'recommendation', 'image_recognition', 'analytics'], + mitigationIds: ['M-AI-DATA-01', 'M-AI-DATA-02', 'M-AI-MON-01'], + }, + { + id: 'R-AI-DATA-02', + category: 'confidentiality', + sdmGoal: 'vertraulichkeit', + title: 'Unbefugte Nutzung personenbezogener Daten im Training', + description: 'Personenbezogene Daten werden ohne ausreichende Rechtsgrundlage oder Einwilligung fuer das Training des KI-Modells verwendet.', + impactExamples: ['Verletzung des Zweckbindungsgrundsatzes', 'Fehlende Rechtsgrundlage', 'Verstoss gegen Informationspflichten'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K4', 'K5', 'K8'], + applicableTo: ['content_generation', 'recommendation', 'predictive', 'speech_processing', 'image_recognition'], + mitigationIds: ['M-AI-DATA-03', 'M-AI-PRIV-01', 'M-AI-PRIV-02'], + }, + { + id: 'R-AI-DATA-03', + category: 'integrity', + sdmGoal: 'datenminimierung', + title: 'Uebermassige Datenerhebung fuer KI-Training', + description: 'Fuer das Training werden mehr personenbezogene Daten erhoben als fuer den Zweck erforderlich, was den Grundsatz der Datenminimierung verletzt.', + impactExamples: ['Verstoss gegen Art. 5 Abs. 1 lit. c DSGVO', 'Erhoehtes Risiko bei Datenleck', 'Unnoetige Profilbildung'], + typicalLikelihood: 'medium', + typicalImpact: 'medium', + wp248Criteria: ['K5', 'K8'], + applicableTo: ['predictive', 'recommendation', 'analytics', 'speech_processing'], + mitigationIds: ['M-AI-PRIV-01', 'M-AI-PRIV-03', 'M-AI-DATA-01'], + }, + { + id: 'R-AI-DATA-04', + category: 'integrity', + sdmGoal: 'integritaet', + title: 'Data Poisoning / Manipulation der Trainingsdaten', + description: 'Boesartige Akteure fuegen gezielt manipulierte Daten in den Trainingsdatensatz ein, um das Verhalten des KI-Systems zu verfaelschen.', + impactExamples: ['Gezielte Fehlklassifizierungen', 'Umgehung von Sicherheitsmechanismen', 'Vertrauensverlust'], + typicalLikelihood: 'low', + typicalImpact: 'high', + wp248Criteria: ['K8'], + applicableTo: ['image_recognition', 'content_generation', 'predictive', 'decision_support'], + mitigationIds: ['M-AI-SEC-01', 'M-AI-DATA-02', 'M-AI-SEC-03'], + }, + + // ========================================================================= + // SICHERHEIT & ROBUSTHEIT + // ========================================================================= + { + id: 'R-AI-SEC-01', + category: 'availability', + sdmGoal: 'verfuegbarkeit', + title: 'Adversarial Attacks auf KI-Modell', + description: 'Angreifer nutzen gezielt manipulierte Eingaben (Adversarial Examples), um das KI-System zu falschen Ausgaben zu verleiten.', + impactExamples: ['Umgehung von Schutzmechanismen', 'Falsche Identifikation', 'Fehlerhafte Entscheidungen'], + typicalLikelihood: 'low', + typicalImpact: 'high', + wp248Criteria: ['K8'], + applicableTo: ['image_recognition', 'speech_processing', 'decision_support', 'automated_processing'], + mitigationIds: ['M-AI-SEC-01', 'M-AI-SEC-02', 'M-AI-MON-01'], + }, + { + id: 'R-AI-SEC-02', + category: 'confidentiality', + sdmGoal: 'vertraulichkeit', + title: 'Prompt Injection / Jailbreaking', + description: 'Nutzer umgehen durch manipulierte Eingaben die Sicherheitsschranken des KI-Systems und extrahieren vertrauliche Informationen oder loesen unerwuenschtes Verhalten aus.', + impactExamples: ['Offenlegung von Systemprompts', 'Extraktion von Trainingsdaten', 'Generierung schaedlicher Inhalte'], + typicalLikelihood: 'high', + typicalImpact: 'medium', + wp248Criteria: ['K4', 'K8'], + applicableTo: ['chatbot', 'content_generation', 'decision_support'], + mitigationIds: ['M-AI-SEC-03', 'M-AI-SEC-04', 'M-AI-MON-02'], + }, + { + id: 'R-AI-SEC-03', + category: 'confidentiality', + sdmGoal: 'vertraulichkeit', + title: 'Model Inversion / Membership Inference', + description: 'Angreifer rekonstruieren Trainingsdaten aus dem KI-Modell oder stellen fest, ob bestimmte Daten im Training verwendet wurden.', + impactExamples: ['Rekonstruktion personenbezogener Daten', 'Verletzung der Vertraulichkeit', 'Re-Identifizierung anonymisierter Daten'], + typicalLikelihood: 'low', + typicalImpact: 'high', + wp248Criteria: ['K4', 'K8'], + applicableTo: ['predictive', 'recommendation', 'image_recognition', 'content_generation'], + mitigationIds: ['M-AI-PRIV-02', 'M-AI-SEC-01', 'M-AI-PRIV-04'], + }, + { + id: 'R-AI-SEC-04', + category: 'availability', + sdmGoal: 'verfuegbarkeit', + title: 'Halluzination / Generierung falscher Informationen', + description: 'Das KI-System generiert plausibel klingende aber faktisch falsche Informationen (Halluzinationen), die zu Fehlentscheidungen fuehren koennen.', + impactExamples: ['Falsche Rechtsauskunft', 'Fehlerhafte medizinische Empfehlung', 'Vertrauensverlust in das System'], + typicalLikelihood: 'high', + typicalImpact: 'medium', + wp248Criteria: ['K8', 'K9'], + applicableTo: ['chatbot', 'content_generation', 'decision_support', 'translation'], + mitigationIds: ['M-AI-SEC-05', 'M-AI-MON-01', 'M-AI-AUTO-02'], + }, + + // ========================================================================= + // AUTOMATISIERTE ENTSCHEIDUNGEN (ART. 22 DSGVO) + // ========================================================================= + { + id: 'R-AI-AUTO-01', + category: 'rights_freedoms', + sdmGoal: 'intervenierbarkeit', + title: 'Automatisierte Einzelentscheidung ohne menschliche Beteiligung', + description: 'Das KI-System trifft Entscheidungen mit Rechtswirkung ohne angemessene menschliche Beteiligung, was gegen Art. 22 Abs. 1 DSGVO verstoesst.', + impactExamples: ['Rechtswidrige automatisierte Ablehnung', 'Fehlende Anfechtungsmoeglichkeit', 'Verletzung der Menschenwuerde'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K2', 'K8', 'K9'], + applicableTo: ['automated_processing', 'decision_support', 'predictive'], + mitigationIds: ['M-AI-AUTO-01', 'M-AI-AUTO-02', 'M-AI-AUTO-03'], + }, + { + id: 'R-AI-AUTO-02', + category: 'rights_freedoms', + sdmGoal: 'intervenierbarkeit', + title: 'Unzureichende menschliche Aufsicht (Human Oversight)', + description: 'Die menschliche Aufsicht ueber das KI-System ist unzureichend oder pro forma, sodass problematische Entscheidungen nicht erkannt und korrigiert werden.', + impactExamples: ['Automation Bias bei Entscheidern', 'Blindes Vertrauen in KI-Ergebnis', 'Fehlende Korrekturmoeglichkeit'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K2', 'K8'], + applicableTo: ['decision_support', 'automated_processing', 'predictive', 'analytics'], + mitigationIds: ['M-AI-AUTO-01', 'M-AI-AUTO-04', 'M-AI-EXPL-01'], + }, + { + id: 'R-AI-AUTO-03', + category: 'rights_freedoms', + sdmGoal: 'intervenierbarkeit', + title: 'Fehlende Widerspruchsmoeglichkeit bei KI-Entscheidungen', + description: 'Betroffene haben keine effektive Moeglichkeit, einer KI-gestuetzten Entscheidung zu widersprechen oder eine manuelle Ueberpruefung zu verlangen.', + impactExamples: ['Verletzung von Art. 22 Abs. 3 DSGVO', 'Rechtsschutzluecke', 'Machtungleichgewicht'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K2', 'K9'], + applicableTo: ['automated_processing', 'decision_support', 'predictive'], + mitigationIds: ['M-AI-AUTO-03', 'M-AI-AUTO-05'], + }, + + // ========================================================================= + // UEBERWACHUNG & KONTROLLE + // ========================================================================= + { + id: 'R-AI-MON-01', + category: 'integrity', + sdmGoal: 'integritaet', + title: 'Model Drift - Verschlechterung der KI-Leistung ueber Zeit', + description: 'Die Genauigkeit und Zuverlaessigkeit des KI-Modells verschlechtert sich durch veraenderte Datenverteilungen (Data Drift) oder Konzeptaenderungen (Concept Drift).', + impactExamples: ['Zunehmend fehlerhafte Entscheidungen', 'Unbemerkte Qualitaetsverschlechterung', 'Veraenderte Diskriminierungsmuster'], + typicalLikelihood: 'high', + typicalImpact: 'medium', + wp248Criteria: ['K8'], + applicableTo: ['predictive', 'recommendation', 'decision_support', 'analytics', 'image_recognition'], + mitigationIds: ['M-AI-MON-01', 'M-AI-MON-02', 'M-AI-DATA-02'], + }, + { + id: 'R-AI-MON-02', + category: 'availability', + sdmGoal: 'verfuegbarkeit', + title: 'Fehlende Notfallmassnahmen bei KI-Fehlfunktion', + description: 'Es existieren keine Fallback-Mechanismen oder Notfallprozeduren fuer den Fall, dass das KI-System fehlerhafte oder schaedliche Ergebnisse produziert.', + impactExamples: ['Langandauernde Stoerung', 'Kaskadierende Fehler', 'Keine manuelle Alternative'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K8'], + applicableTo: ['automated_processing', 'decision_support', 'chatbot', 'predictive'], + mitigationIds: ['M-AI-MON-03', 'M-AI-AUTO-01', 'M-AI-MON-04'], + }, + + // ========================================================================= + // PRIVATSPHAERE & DATENSCHUTZ + // ========================================================================= + { + id: 'R-AI-PRIV-01', + category: 'confidentiality', + sdmGoal: 'datenminimierung', + title: 'Unbeabsichtigte Profilbildung durch KI-Analyse', + description: 'Das KI-System erstellt durch Zusammenfuehrung und Analyse verschiedener Datenpunkte detaillierte Persoenlichkeitsprofile, die ueber den urspruenglichen Verarbeitungszweck hinausgehen.', + impactExamples: ['Unerlaubtes Profiling', 'Verletzung der Zweckbindung', 'Erstellung umfassender Persoenlichkeitsbilder'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K1', 'K6', 'K8'], + applicableTo: ['analytics', 'recommendation', 'predictive', 'chatbot'], + mitigationIds: ['M-AI-PRIV-01', 'M-AI-PRIV-03', 'M-AI-DATA-03'], + }, + { + id: 'R-AI-PRIV-02', + category: 'confidentiality', + sdmGoal: 'vertraulichkeit', + title: 'Datenleck durch KI-Ausgaben (Output Leakage)', + description: 'Das KI-System gibt in seinen Antworten unbeabsichtigt personenbezogene oder vertrauliche Daten aus den Trainingsdaten preis.', + impactExamples: ['Preisgabe von Trainingsdaten', 'Offenlegung vertraulicher Geschaeftsinformationen', 'Verletzung des Berufsgeheimnisses'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K4', 'K8'], + applicableTo: ['chatbot', 'content_generation', 'decision_support', 'translation'], + mitigationIds: ['M-AI-PRIV-02', 'M-AI-SEC-04', 'M-AI-PRIV-04'], + }, + { + id: 'R-AI-PRIV-03', + category: 'confidentiality', + sdmGoal: 'nichtverkettung', + title: 'Drittlandtransfer durch Cloud-basierte KI-Dienste', + description: 'Personenbezogene Daten werden zur KI-Verarbeitung in Drittlaender uebertragen, ohne dass angemessene Garantien bestehen (Art. 44 ff. DSGVO).', + impactExamples: ['Unzulaessiger Drittlandtransfer', 'Zugriff durch auslaendische Behoerden', 'Verlust der Datensouveraenitaet'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K5', 'K8'], + applicableTo: ['chatbot', 'content_generation', 'translation', 'speech_processing', 'image_recognition'], + mitigationIds: ['M-AI-PRIV-05', 'M-AI-PRIV-06'], + }, + { + id: 'R-AI-PRIV-04', + category: 'rights_freedoms', + sdmGoal: 'datenminimierung', + title: 'Verarbeitung besonderer Datenkategorien durch KI ohne explizite Einwilligung', + description: 'Das KI-System verarbeitet oder leitet besondere Kategorien personenbezogener Daten ab (Art. 9 DSGVO), z.B. Gesundheitsdaten aus Schreibmustern oder ethnische Herkunft aus Bildern.', + impactExamples: ['Verstoss gegen Art. 9 DSGVO', 'Diskriminierung aufgrund sensibler Merkmale', 'Verletzung der Menschenwuerde'], + typicalLikelihood: 'medium', + typicalImpact: 'high', + wp248Criteria: ['K4', 'K7', 'K8'], + applicableTo: ['image_recognition', 'speech_processing', 'analytics', 'predictive'], + mitigationIds: ['M-AI-PRIV-01', 'M-AI-DATA-03', 'M-AI-BIAS-01'], + }, +] + +// ============================================================================= +// HELPER FUNCTIONS +// ============================================================================= + +/** + * Gibt KI-Risiken zurueck, die fuer einen bestimmten Use-Case-Typ relevant sind + */ +export function getAIRisksForUseCaseType(useCaseType: string): CatalogRisk[] { + return AI_RISK_CATALOG.filter(risk => risk.applicableTo.includes(useCaseType)) +} + +/** + * Gibt KI-Risiken zurueck, die einem bestimmten SDM-Gewaehrleistungsziel zugeordnet sind + */ +export function getAIRisksBySDMGoal(goal: string): CatalogRisk[] { + return AI_RISK_CATALOG.filter(risk => risk.sdmGoal === goal) +} + +/** + * Gibt alle KI-Risiken zurueck, die fuer Art. 22 DSGVO relevant sind + */ +export function getArt22Risks(): CatalogRisk[] { + return AI_RISK_CATALOG.filter(risk => risk.wp248Criteria.includes('K2')) +} diff --git a/admin-v2/lib/sdk/dsfa/eu-legal-frameworks.ts b/admin-v2/lib/sdk/dsfa/eu-legal-frameworks.ts new file mode 100644 index 0000000..3412034 --- /dev/null +++ b/admin-v2/lib/sdk/dsfa/eu-legal-frameworks.ts @@ -0,0 +1,622 @@ +/** + * EU/EWR Rechtsgrundlagen pro Land + * + * Strukturierter Katalog der datenschutzrechtlichen Grundlagen fuer EU/EWR/DACH. + * 3-Schicht-Architektur: EU-Basis → Nationale Ergaenzungen → Dokumentspezifische Bausteine. + * + * Quellen: Amtliche Rechtstexte (gemeinfrei gemaess §5 UrhG / Art. 1 EU-Beschluss 2011/833/EU), + * EDPB-Leitlinien (CC-BY-4.0), nationale Aufsichtsbehoerden. + */ + +// ============================================================================= +// Types +// ============================================================================= + +export type CountryCode = + | 'EU' // EU-weite Basis + | 'DE' // Deutschland + | 'AT' // Oesterreich + | 'CH' // Schweiz (nicht EU, eigenes DSG) + | 'FR' // Frankreich + | 'ES' // Spanien + | 'IT' // Italien + | 'NL' // Niederlande + | 'GB' // Grossbritannien (post-Brexit) + | 'NO' // Norwegen (EWR) + | 'IS' // Island (EWR) + +export type LegalDocumentType = + | 'regulation' // EU-Verordnung (unmittelbar geltendes Recht) + | 'directive' // EU-Richtlinie (nationale Umsetzung noetig) + | 'national_law' // Nationales Gesetz + | 'guideline' // Behoerdliche Leitlinie + | 'supervisory' // Aufsichtsbehoerden-Praxis + +export type LicenseType = + | 'PUBLIC_DOMAIN' // Amtliche Werke, gemeinfrei + | 'CC-BY-4.0' // Creative Commons Attribution + | 'OGL-3.0' // UK Open Government Licence + | 'DL-DE-BY-2.0' // Datenlizenz Deutschland + +/** Welche SDK-Dokumenttypen sind EU-weit einheitlich vs. laenderspezifisch? */ +export type DocumentUniformity = 'eu_uniform' | 'needs_national_supplement' | 'country_specific' + +// ============================================================================= +// Interfaces +// ============================================================================= + +export interface LegalFramework { + id: string + countryCode: CountryCode + name: string + fullName: string + abbreviation: string + type: LegalDocumentType + description: string + sourceUrl: string | null + license: LicenseType + licenseNote: string + /** Welche DSGVO-Oeffnungsklauseln bedient dieses Gesetz? */ + gdprOpeningClauses?: string[] + /** Spezialregelungen, die ueber die DSGVO hinausgehen */ + specialProvisions?: string[] + /** Zustaendige Aufsichtsbehoerde(n) */ + supervisoryAuthorities?: SupervisoryAuthority[] + /** Relevanz-Phase: wann sollte diese Quelle ins RAG? */ + ragPhase: 1 | 2 | 3 +} + +export interface SupervisoryAuthority { + name: string + abbreviation: string + url: string + country: CountryCode +} + +export interface DocumentTypeMatrix { + documentType: string + label: string + uniformity: DocumentUniformity + description: string + /** Welche Laender brauchen spezifische Logik? */ + countrySpecificNotes?: Record +} + +// ============================================================================= +// EU-Basis (Phase 1 — gilt fuer gesamte EU/EWR) +// ============================================================================= + +export const EU_BASE_FRAMEWORKS: LegalFramework[] = [ + { + id: 'EU-GDPR', + countryCode: 'EU', + name: 'DSGVO / GDPR', + fullName: 'Verordnung (EU) 2016/679 — Datenschutz-Grundverordnung', + abbreviation: 'DSGVO', + type: 'regulation', + description: + 'Die EU-Datenschutz-Grundverordnung gilt unmittelbar in allen EU-Mitgliedstaaten. ' + + 'GDPR und DSGVO sind identisch — nur unterschiedliche Sprachfassungen derselben Verordnung. ' + + 'Kern des europaeischen Datenschutzrechts.', + sourceUrl: 'https://eur-lex.europa.eu/eli/reg/2016/679/oj/deu', + license: 'CC-BY-4.0', + licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', + ragPhase: 1, + }, + { + id: 'EU-EPRIVACY', + countryCode: 'EU', + name: 'ePrivacy-Richtlinie', + fullName: 'Richtlinie 2002/58/EG — Datenschutz in der elektronischen Kommunikation', + abbreviation: 'ePrivacy-RL', + type: 'directive', + description: + 'Ergaenzt die DSGVO fuer elektronische Kommunikation (Cookies, Tracking, Direktmarketing). ' + + 'Als Richtlinie national umgesetzt (DE: TTDSG, FR: Loi Informatique et Libertés, etc.).', + sourceUrl: 'https://eur-lex.europa.eu/eli/dir/2002/58/oj', + license: 'CC-BY-4.0', + licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', + ragPhase: 1, + }, + { + id: 'EU-AI-ACT', + countryCode: 'EU', + name: 'AI Act', + fullName: 'Verordnung (EU) 2024/1689 — KI-Verordnung', + abbreviation: 'AI Act', + type: 'regulation', + description: + 'EU-weite Regulierung kuenstlicher Intelligenz. Risikobasierter Ansatz mit Verboten (Art. 5), ' + + 'Hochrisiko-Anforderungen und Transparenzpflichten. Gilt unmittelbar in allen Mitgliedstaaten.', + sourceUrl: 'https://eur-lex.europa.eu/eli/reg/2024/1689/oj/deu', + license: 'CC-BY-4.0', + licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', + ragPhase: 1, + }, + { + id: 'EU-EDPB', + countryCode: 'EU', + name: 'EDPB-Leitlinien', + fullName: 'Leitlinien des Europaeischen Datenschutzausschusses', + abbreviation: 'EDPB', + type: 'guideline', + description: + 'Verbindliche Auslegungshilfen zur DSGVO (z.B. DSFA, Art. 25, Art. 28, Drittlandtransfer, ' + + 'Pseudonymisierung). Gelten als autoritaetive Rechtsquelle in der gesamten EU.', + sourceUrl: 'https://edpb.europa.eu/our-work-tools/general-guidance/guidelines-recommendations-best-practices_en', + license: 'CC-BY-4.0', + licenseNote: 'EDPB-Publikationen, CC BY 4.0', + ragPhase: 1, + }, +] + +// ============================================================================= +// Nationale Ergaenzungsgesetze (Phase 2 — modular pro Land) +// ============================================================================= + +export const NATIONAL_FRAMEWORKS: LegalFramework[] = [ + // --- Deutschland --- + { + id: 'DE-BDSG', + countryCode: 'DE', + name: 'BDSG', + fullName: 'Bundesdatenschutzgesetz (2018)', + abbreviation: 'BDSG', + type: 'national_law', + description: + 'Nationales Begleitgesetz zur DSGVO. Ergaenzt u.a. Beschaeftigtendatenschutz (§26), ' + + 'Videoueberwachung (§4), Forschung/Statistik, Bussgeldpraxis.', + sourceUrl: 'https://www.gesetze-im-internet.de/bdsg_2018/', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', + gdprOpeningClauses: ['Art. 6 Abs. 2', 'Art. 9 Abs. 4', 'Art. 23', 'Art. 85', 'Art. 88'], + specialProvisions: [ + '§26 BDSG — Beschaeftigtendatenschutz', + '§4 BDSG — Videoueberwachung oeffentlich zugaenglicher Raeume', + '§22 BDSG — Verarbeitung besonderer Kategorien', + '§41-43 BDSG — Straf- und Bussgeldvorschriften', + ], + supervisoryAuthorities: [ + { name: 'Bundesbeauftragter fuer den Datenschutz', abbreviation: 'BfDI', url: 'https://www.bfdi.bund.de', country: 'DE' }, + ], + ragPhase: 2, + }, + { + id: 'DE-TTDSG', + countryCode: 'DE', + name: 'TTDSG', + fullName: 'Telekommunikation-Telemedien-Datenschutz-Gesetz', + abbreviation: 'TTDSG', + type: 'national_law', + description: + 'Deutsche Umsetzung der ePrivacy-Richtlinie. Regelt insbesondere Cookie-Consent (§25 TTDSG), ' + + 'Endgeraetezugriff und Telekommunikations-Datenschutz.', + sourceUrl: 'https://www.gesetze-im-internet.de/ttdsg/', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', + specialProvisions: [ + '§25 TTDSG — Einwilligung fuer Cookies/Tracking', + '§26 TTDSG — Anerkannte Dienste zur Einwilligungsverwaltung', + ], + ragPhase: 2, + }, + { + id: 'DE-TMG', + countryCode: 'DE', + name: 'TMG / DDG', + fullName: 'Telemediengesetz / Digitale-Dienste-Gesetz', + abbreviation: 'TMG', + type: 'national_law', + description: + 'Impressumspflicht (§5 TMG/DDG) und Anbieterkennzeichnung fuer Online-Dienste in Deutschland.', + sourceUrl: 'https://www.gesetze-im-internet.de/tmg/', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', + specialProvisions: [ + '§5 TMG — Impressumspflicht (Anbieterkennzeichnung)', + '§7-10 TMG — Verantwortlichkeit von Diensteanbietern', + ], + ragPhase: 3, + }, + + // --- Oesterreich --- + { + id: 'AT-DSG', + countryCode: 'AT', + name: 'DSG (AT)', + fullName: 'Datenschutzgesetz (Oesterreich, 2018)', + abbreviation: 'DSG', + type: 'national_law', + description: + 'Oesterreichisches Begleitgesetz zur DSGVO. Enthält Besonderheiten fuer Behoerden, ' + + 'Strafverfolgung und teilweise andere Auslegungspraxis als Deutschland.', + sourceUrl: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001597', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Werk, Rechtsinformationssystem des Bundes (RIS)', + supervisoryAuthorities: [ + { name: 'Oesterreichische Datenschutzbehoerde', abbreviation: 'DSB', url: 'https://www.dsb.gv.at', country: 'AT' }, + ], + ragPhase: 2, + }, + + // --- Schweiz (NICHT EU — eigenes Recht) --- + { + id: 'CH-DSG', + countryCode: 'CH', + name: 'revDSG (CH)', + fullName: 'Bundesgesetz ueber den Datenschutz (revidiertes DSG, seit 01.09.2023)', + abbreviation: 'revDSG', + type: 'national_law', + description: + 'Die Schweiz ist nicht EU-Mitglied. Das revidierte DSG (2023) ist inhaltlich aehnlich der DSGVO, ' + + 'aber nicht identisch. Unterschiede: andere Sanktionslogik (Busse bis 250.000 CHF gegen ' + + 'natuerliche Personen), teils andere Begriffe, kein One-Stop-Shop.', + sourceUrl: 'https://www.fedlex.admin.ch/eli/cc/2022/491/de', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Bundesrecht, Fedlex (Schweiz)', + specialProvisions: [ + 'Art. 60-66 revDSG — Strafbestimmungen (gegen natuerliche Personen)', + 'Art. 16-18 revDSG — Drittlandtransfer (eigene Laenderliste)', + 'Art. 22 revDSG — Datenschutz-Folgenabschaetzung', + 'Art. 12 revDSG — Verzeichnis der Bearbeitungstaetigkeiten', + ], + supervisoryAuthorities: [ + { name: 'Eidgenoessischer Datenschutzbeauftragter', abbreviation: 'EDOEB', url: 'https://www.edoeb.admin.ch', country: 'CH' }, + ], + ragPhase: 2, + }, + + // --- Frankreich --- + { + id: 'FR-LIL', + countryCode: 'FR', + name: 'Loi Informatique et Libertés', + fullName: 'Loi n° 78-17 du 6 janvier 1978 relative à l\'informatique, aux fichiers et aux libertés', + abbreviation: 'LIL', + type: 'national_law', + description: + 'Franzoesisches Begleitgesetz zur DSGVO (aktualisiert 2018). Spezialregelungen u.a. ' + + 'zur Einwilligung Minderjaehriger (ab 15 Jahren), Forschungsdaten und Gesundheitsdaten.', + sourceUrl: 'https://www.legifrance.gouv.fr/loda/id/JORFTEXT000000886460', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Gesetz, Légifrance (gemeinfrei)', + supervisoryAuthorities: [ + { name: 'Commission Nationale de l\'Informatique et des Libertés', abbreviation: 'CNIL', url: 'https://www.cnil.fr', country: 'FR' }, + ], + ragPhase: 2, + }, + + // --- Spanien --- + { + id: 'ES-LOPDGDD', + countryCode: 'ES', + name: 'LOPDGDD', + fullName: 'Ley Orgánica 3/2018 de Protección de Datos Personales y garantía de los derechos digitales', + abbreviation: 'LOPDGDD', + type: 'national_law', + description: + 'Spanisches Datenschutzgesetz. Ergaenzt DSGVO u.a. mit Regelungen zu ' + + 'Kindereinwilligung, digitalem Testament und Rechten Verstorbener.', + sourceUrl: 'https://www.boe.es/diario_boe/txt.php?id=BOE-A-2018-16673', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Gesetz, Boletín Oficial del Estado (gemeinfrei)', + supervisoryAuthorities: [ + { name: 'Agencia Española de Protección de Datos', abbreviation: 'AEPD', url: 'https://www.aepd.es', country: 'ES' }, + ], + ragPhase: 2, + }, + + // --- Italien --- + { + id: 'IT-CODICE', + countryCode: 'IT', + name: 'Codice Privacy', + fullName: 'Decreto Legislativo 30 giugno 2003, n. 196 (Codice in materia di protezione dei dati personali)', + abbreviation: 'Codice Privacy', + type: 'national_law', + description: + 'Italienischer Datenschutzkodex, angepasst an die DSGVO (D.Lgs. 101/2018). ' + + 'Enthaelt Spezialregelungen fuer Gesundheitsdaten, Forschung und Journalismus.', + sourceUrl: 'https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.legislativo:2003-06-30;196!vig=', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Gesetz, Normattiva (gemeinfrei)', + supervisoryAuthorities: [ + { name: 'Garante per la protezione dei dati personali', abbreviation: 'Garante', url: 'https://www.garanteprivacy.it', country: 'IT' }, + ], + ragPhase: 2, + }, + + // --- Niederlande --- + { + id: 'NL-AVG', + countryCode: 'NL', + name: 'AVG / UAVG', + fullName: 'Uitvoeringswet Algemene verordening gegevensbescherming (UAVG)', + abbreviation: 'UAVG', + type: 'national_law', + description: + 'Niederlaendisches Ausfuehrungsgesetz zur DSGVO.', + sourceUrl: 'https://wetten.overheid.nl/BWBR0040948/', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Gesetz, wetten.overheid.nl (gemeinfrei)', + supervisoryAuthorities: [ + { name: 'Autoriteit Persoonsgegevens', abbreviation: 'AP', url: 'https://www.autoriteitpersoonsgegevens.nl', country: 'NL' }, + ], + ragPhase: 2, + }, + + // --- Grossbritannien (post-Brexit) --- + { + id: 'GB-DPA', + countryCode: 'GB', + name: 'UK DPA 2018 / UK GDPR', + fullName: 'Data Protection Act 2018 + UK GDPR (retained EU law)', + abbreviation: 'DPA 2018', + type: 'national_law', + description: + 'Nach Brexit: UK GDPR (inhaltlich weitgehend identisch mit EU-DSGVO) plus Data Protection Act 2018 ' + + 'als nationales Begleitgesetz. ICO als Aufsichtsbehoerde.', + sourceUrl: 'https://www.legislation.gov.uk/ukpga/2018/12/contents', + license: 'OGL-3.0', + licenseNote: 'UK legislation, Open Government Licence v3.0', + supervisoryAuthorities: [ + { name: 'Information Commissioner\'s Office', abbreviation: 'ICO', url: 'https://ico.org.uk', country: 'GB' }, + ], + ragPhase: 2, + }, + + // --- Norwegen (EWR) --- + { + id: 'NO-PERSONOPPL', + countryCode: 'NO', + name: 'Personopplysningsloven', + fullName: 'Lov om behandling av personopplysninger (personopplysningsloven)', + abbreviation: 'POL', + type: 'national_law', + description: + 'Norwegisches DSGVO-Ausfuehrungsgesetz (EWR-Mitglied, DSGVO gilt ueber EWR-Abkommen).', + sourceUrl: 'https://lovdata.no/dokument/NL/lov/2018-06-15-38', + license: 'PUBLIC_DOMAIN', + licenseNote: 'Amtliches Gesetz, Lovdata (gemeinfrei)', + supervisoryAuthorities: [ + { name: 'Datatilsynet', abbreviation: 'DT', url: 'https://www.datatilsynet.no', country: 'NO' }, + ], + ragPhase: 2, + }, +] + +// ============================================================================= +// Dokumenttyp-Matrix: EU-einheitlich vs. laenderspezifisch +// ============================================================================= + +export const DOCUMENT_TYPE_MATRIX: DocumentTypeMatrix[] = [ + { + documentType: 'privacy_policy', + label: 'Datenschutzerklaerung', + uniformity: 'needs_national_supplement', + description: 'DSGVO-Kern EU-weit gleich. Nationale Ergaenzungen fuer ePrivacy-Umsetzung, Behoerden-Praxis.', + }, + { + documentType: 'ropa', + label: 'Verarbeitungsverzeichnis (VVT)', + uniformity: 'eu_uniform', + description: 'Art. 30 DSGVO — EU-weit identische Anforderungen.', + }, + { + documentType: 'tom', + label: 'Technisch-Organisatorische Massnahmen', + uniformity: 'eu_uniform', + description: 'Art. 32 DSGVO — EU-weit identische Anforderungen.', + }, + { + documentType: 'dpia', + label: 'Datenschutz-Folgenabschaetzung (DSFA)', + uniformity: 'eu_uniform', + description: 'Art. 35 DSGVO — EU-weit identisch. Muss-Listen variieren je Aufsichtsbehoerde.', + }, + { + documentType: 'dpa', + label: 'Auftragsverarbeitungsvertrag (AVV)', + uniformity: 'eu_uniform', + description: 'Art. 28 DSGVO — EU-weit identische Anforderungen.', + }, + { + documentType: 'deletion_concept', + label: 'Loeschkonzept', + uniformity: 'eu_uniform', + description: 'Art. 5(1)(e), Art. 17 DSGVO — EU-weit einheitlich.', + }, + { + documentType: 'breach_process', + label: 'Data Breach / Incident Response', + uniformity: 'eu_uniform', + description: 'Art. 33-34 DSGVO — EU-weit identische 72-Stunden-Frist.', + }, + { + documentType: 'dsar_process', + label: 'Betroffenenrechte-Prozess (DSAR)', + uniformity: 'eu_uniform', + description: 'Art. 12-22 DSGVO — EU-weit identische Rechte und Fristen.', + }, + { + documentType: 'imprint', + label: 'Impressum', + uniformity: 'country_specific', + description: 'Kein DSGVO-Thema. Nationale Mediengesetze (DE: §5 TMG, AT: §5 ECG, CH: eigene Regeln).', + countrySpecificNotes: { + 'EU': 'Keine EU-weite Regelung', + 'DE': '§5 TMG / DDG — strenge Impressumspflicht', + 'AT': '§5 ECG — aehnlich wie DE, nicht identisch', + 'CH': 'Obligationenrecht + kantonale Regeln', + 'FR': 'Loi pour la Confiance dans l\'Économie Numérique (LCEN)', + 'ES': 'LSSI-CE Art. 10', + 'IT': 'D.Lgs. 70/2003', + 'NL': 'Handelsregisterpflicht + BW', + 'GB': 'Companies Act 2006', + 'NO': 'E-handelsloven', + 'IS': 'Rafraeðislög', + }, + }, + { + documentType: 'terms_of_service', + label: 'AGB / Nutzungsbedingungen', + uniformity: 'country_specific', + description: 'Nationales Vertragsrecht (BGB, ABGB, OR). Verbraucherrecht teils EU-harmonisiert, aber national umgesetzt.', + }, + { + documentType: 'withdrawal_notice', + label: 'Widerrufsbelehrung', + uniformity: 'country_specific', + description: 'EU-Verbraucherrechterichtlinie national umgesetzt. DE/AT: Muster-Widerrufsbelehrung. CH: eigene Logik.', + }, + { + documentType: 'cookie_banner', + label: 'Cookie-Banner / Consent', + uniformity: 'needs_national_supplement', + description: 'ePrivacy + DSGVO EU-weit aehnlich, aber Aufsichtspraxis variiert (CNIL vs. DSK vs. DPC etc.).', + }, +] + +// ============================================================================= +// RAG-Schichtmodell +// ============================================================================= + +export interface RAGLayer { + phase: 1 | 2 | 3 + name: string + description: string + scope: string + sources: string[] +} + +export const RAG_LAYERS: RAGLayer[] = [ + { + phase: 1, + name: 'EU-Basis', + description: 'Einmal laden — gilt fuer gesamte EU/EWR (ausser CH)', + scope: 'EU/EWR', + sources: [ + 'DSGVO Volltext (EU 2016/679)', + 'ePrivacy-Richtlinie (2002/58/EG)', + 'AI Act (EU 2024/1689)', + 'EDPB-Leitlinien (DSFA, Art. 25, Art. 28, Art. 32, Drittlandtransfer etc.)', + ], + }, + { + phase: 2, + name: 'Nationale Ergaenzungen', + description: 'Modular pro Land — nationale Begleitgesetze zur DSGVO', + scope: 'Je Land', + sources: [ + 'DE: BDSG, TTDSG, DSK-Kurzpapiere', + 'AT: DSG (AT), DSB-Entscheidungen', + 'CH: revDSG, EDOEB-Leitlinien (separater Stack!)', + 'FR: Loi Informatique et Libertés, CNIL-Leitfaeden', + 'ES: LOPDGDD, AEPD-Leitfaeden', + 'IT: Codice Privacy, Garante-Leitfaeden', + 'NL: UAVG, AP-Leitlinien', + 'GB: UK DPA 2018, ICO Guidance', + ], + }, + { + phase: 3, + name: 'Dokumentspezifische Bausteine', + description: 'Templates und Mustertexte fuer laenderspezifische Dokumenttypen', + scope: 'Je Land + Dokumenttyp', + sources: [ + 'Impressum-Templates (DE §5 TMG, AT §5 ECG, CH)', + 'AGB-Bausteine (SaaS/Webshop, B2B/B2C)', + 'Widerrufsbelehrung (DE/AT Muster)', + 'Cookie-Banner-Texte (EU-weit + Feinjustierung)', + ], + }, +] + +// ============================================================================= +// Helper Functions +// ============================================================================= + +/** Alle Rechtsgrundlagen zusammen (EU-Basis + National) */ +export function getAllFrameworks(): LegalFramework[] { + return [...EU_BASE_FRAMEWORKS, ...NATIONAL_FRAMEWORKS] +} + +/** Rechtsgrundlagen fuer ein bestimmtes Land (inkl. EU-Basis) */ +export function getFrameworksForCountry(country: CountryCode): LegalFramework[] { + return getAllFrameworks().filter( + f => f.countryCode === country || f.countryCode === 'EU' + ) +} + +/** Nur nationale Ergaenzungsgesetze (ohne EU-Basis) */ +export function getNationalFrameworks(country: CountryCode): LegalFramework[] { + return NATIONAL_FRAMEWORKS.filter(f => f.countryCode === country) +} + +/** Alle Aufsichtsbehoerden */ +export function getAllSupervisoryAuthorities(): SupervisoryAuthority[] { + const authorities: SupervisoryAuthority[] = [] + for (const fw of getAllFrameworks()) { + if (fw.supervisoryAuthorities) { + for (const sa of fw.supervisoryAuthorities) { + if (!authorities.some(a => a.abbreviation === sa.abbreviation)) { + authorities.push(sa) + } + } + } + } + return authorities +} + +/** Aufsichtsbehoerde(n) fuer ein Land */ +export function getSupervisoryAuthority(country: CountryCode): SupervisoryAuthority[] { + return getAllSupervisoryAuthorities().filter(sa => sa.country === country) +} + +/** Dokumenttypen, die fuer ein Land spezifische Logik brauchen */ +export function getCountrySpecificDocTypes(country: CountryCode): DocumentTypeMatrix[] { + return DOCUMENT_TYPE_MATRIX.filter( + d => d.uniformity === 'country_specific' || + (d.uniformity === 'needs_national_supplement' && country !== 'EU') + ) +} + +/** Dokumenttypen, die EU-weit einheitlich generiert werden koennen */ +export function getEUUniformDocTypes(): DocumentTypeMatrix[] { + return DOCUMENT_TYPE_MATRIX.filter(d => d.uniformity === 'eu_uniform') +} + +/** Pruefen ob ein Land EU/EWR-Mitglied ist (DSGVO direkt anwendbar) */ +export function isGDPRCountry(country: CountryCode): boolean { + const gdprCountries: CountryCode[] = ['EU', 'DE', 'AT', 'FR', 'ES', 'IT', 'NL', 'NO', 'IS'] + return gdprCountries.includes(country) +} + +/** Pruefen ob ein Land einen separaten Rechtsrahmen hat (nicht DSGVO) */ +export function hasSeparateLegalFramework(country: CountryCode): boolean { + return country === 'CH' || country === 'GB' +} + +/** RAG-Quellen fuer eine bestimmte Phase */ +export function getRAGSourcesForPhase(phase: 1 | 2 | 3): LegalFramework[] { + return getAllFrameworks().filter(f => f.ragPhase === phase) +} + +/** Zusammenfassung: Was braucht ein Unternehmen in Land X? */ +export function getRequiredFrameworkSummary(country: CountryCode): { + baseLaw: string + nationalLaw: string | null + supervisoryAuthority: string | null + separateFramework: boolean +} { + const isGDPR = isGDPRCountry(country) + const national = getNationalFrameworks(country) + const authorities = getSupervisoryAuthority(country) + + return { + baseLaw: isGDPR ? 'DSGVO (EU 2016/679)' : (country === 'CH' ? 'revDSG (CH)' : 'UK GDPR'), + nationalLaw: national.length > 0 ? national.map(n => n.abbreviation).join(', ') : null, + supervisoryAuthority: authorities.length > 0 ? authorities.map(a => a.abbreviation).join(', ') : null, + separateFramework: hasSeparateLegalFramework(country), + } +} diff --git a/admin-v2/lib/sdk/dsfa/gdpr-enforcement-cases.ts b/admin-v2/lib/sdk/dsfa/gdpr-enforcement-cases.ts new file mode 100644 index 0000000..7b0dacb --- /dev/null +++ b/admin-v2/lib/sdk/dsfa/gdpr-enforcement-cases.ts @@ -0,0 +1,433 @@ +/** + * DSGVO-Bussgeldentscheidungen und Durchsetzungsfaelle + * + * Strukturierter Katalog relevanter Bussgelder und Gerichtsentscheidungen + * als Referenz fuer DSFA-Risikobewertung und Compliance-Beratung. + * + * Quellen: Amtliche Entscheidungen/Bescheide (§5 UrhG), EDPB-Mitteilungen (CC-BY-4.0) + */ + +// ============================================================================= +// Types +// ============================================================================= + +export type GDPRViolationType = + | 'data_minimization' // Art. 5 — Datenminimierung/Zweckbindung + | 'security' // Art. 32 — Technische/Org. Massnahmen + | 'special_categories' // Art. 9 — Besondere Kategorien + | 'transparency' // Art. 12-14 — Informationspflichten + | 'lawfulness' // Art. 6 — Rechtsmaessigkeit + | 'data_subject_rights' // Art. 15-22 — Betroffenenrechte + | 'dpo_conflict' // Art. 38 — DSB-Interessenkonflikt + | 'accountability' // Art. 5 Abs. 2 — Rechenschaftspflicht + | 'international_transfer' // Art. 44-49 — Drittlandtransfer + +export type EnforcementOutcome = 'final' | 'reduced_on_appeal' | 'pending' | 'overturned' + +export interface GDPREnforcementCase { + id: string + company: string + country: string + authority: string + year: number + fineOriginal: number // Urspruengliches Bussgeld in Euro + fineAfterAppeal?: number // Nach Berufung (falls reduziert) + outcome: EnforcementOutcome + violationTypes: GDPRViolationType[] + gdprArticles: string[] // Verletzte Artikel + description: string + keyFacts: string[] // Wesentliche Tatbestandsmerkmale + lessons: string[] // Lehren fuer Unternehmen + /** Nur amtliche Quellen (Bescheide, Urteile, EDPB) */ + officialSources: OfficialSource[] +} + +export interface OfficialSource { + type: 'court_decision' | 'dsb_decision' | 'edpb_news' | 'bfdi_press' + title: string + reference?: string // Aktenzeichen + date?: string + url?: string + licenseNote: string // Lizenzhinweis +} + +export interface GDPRLesson { + id: string + gdprArticles: string[] + title: string + description: string + relatedCaseIds: string[] + severity: 'critical' | 'high' | 'medium' +} + +// ============================================================================= +// Enforcement Cases +// ============================================================================= + +export const GDPR_ENFORCEMENT_CASES: GDPREnforcementCase[] = [ + { + id: 'CASE-HM-2020', + company: 'H&M (Nuernberg)', + country: 'DE', + authority: 'Hamburger Datenschutzbehoerde (HmbBfDI)', + year: 2020, + fineOriginal: 35_300_000, + outcome: 'final', + violationTypes: ['special_categories', 'lawfulness'], + gdprArticles: ['Art. 6 DSGVO', 'Art. 9 DSGVO'], + description: + 'Systematische Ausspaeung von Beschaeftigtendaten. In sog. "Welcome-Back-Talks" nach ' + + 'Krankheit wurden private Informationen zu Gesundheit, Familie und Religion erfasst und ' + + 'in einer Datenbank gespeichert. Die Daten waren fuer Fuehrungskraefte zugaenglich.', + keyFacts: [ + 'Erfassung und Auswertung privater Gesundheitsinformationen', + 'Systematische Dokumentation in Datenbank', + 'Zugang fuer breiten Kreis von Fuehrungskraeften', + 'Verarbeitung besonderer Kategorien (Art. 9) ohne Rechtsgrundlage', + ], + lessons: [ + 'Gesundheitsdaten duerfen nur mit strenger Rechtsgrundlage verarbeitet werden', + 'Mitarbeiter-Gespraeche duerfen nicht zur verdeckten Datenerhebung missbraucht werden', + 'Besondere Kategorien (Art. 9) erfordern besondere Schutzmassnahmen', + ], + officialSources: [ + { + type: 'dsb_decision', + title: 'HmbBfDI Bussgeld gegen H&M Servicecenter', + date: '2020-10-01', + licenseNote: 'Amtlicher Bescheid gem. §5 UrhG', + }, + ], + }, + { + id: 'CASE-DW-2019', + company: 'Deutsche Wohnen SE (Berlin)', + country: 'DE', + authority: 'Berliner Beauftragte fuer Datenschutz (BlnBDI)', + year: 2019, + fineOriginal: 14_500_000, + outcome: 'final', + violationTypes: ['data_minimization', 'accountability'], + gdprArticles: ['Art. 5 DSGVO', 'Art. 25 DSGVO'], + description: + 'Langjaehrige Speicherung von Mieterdaten ohne Rechtsgrundlage. Das Archivsystem erlaubte ' + + 'keine Loeschung veralteter Daten (Gehaltsabrechnungen, Kontodaten, Mietvertraege). ' + + 'Trotz vorheriger Beanstandung keine technischen Massnahmen zur Loeschung umgesetzt.', + keyFacts: [ + 'Archivsystem ohne Loeschmoeglichkeit fuer veraltete Daten', + 'Vorherige Beanstandung durch Aufsichtsbehoerde ohne Abhilfe', + 'Verstoss gegen Datenminimierung und Speicherbegrenzung', + 'Keine Privacy-by-Design-Massnahmen (Art. 25)', + ], + lessons: [ + 'Loeschkonzepte muessen technisch umsetzbar sein', + 'Vorherige Beanstandungen erhoehen das Bussgeld erheblich', + 'Art. 25 (Privacy by Design) betrifft auch bestehende Systeme', + ], + officialSources: [ + { + type: 'edpb_news', + title: 'Berlin Commissioner for Data Protection Imposes Fine on Real Estate Company', + url: 'https://www.edpb.europa.eu/news/national-news/2019/berlin-commissioner-data-protection-imposes-fine-real-estate-company_en', + licenseNote: 'EDPB Nachricht, CC-BY-4.0', + }, + ], + }, + { + id: 'CASE-1U1-2019', + company: '1&1 Telecom GmbH', + country: 'DE', + authority: 'BfDI (Bundesbeauftragter)', + year: 2019, + fineOriginal: 9_550_000, + fineAfterAppeal: 900_000, + outcome: 'reduced_on_appeal', + violationTypes: ['security'], + gdprArticles: ['Art. 32 DSGVO'], + description: + 'Unzureichende Kunden-Authentifizierung: Allein Name und Geburtsdatum genuegten fuer ' + + 'telefonische Auskuenfte. Das LG Bonn bestaetigte den Verstoss, reduzierte das Bussgeld ' + + 'jedoch auf 900.000 Euro, da kein massiver Datenskandal vorlag und das Unternehmen kooperativ war.', + keyFacts: [ + 'Nur Name und Geburtsdatum als Authentifizierung', + 'Verstoesse gegen Art. 32 (technisch-organisatorische Massnahmen)', + 'LG Bonn reduzierte Bussgeld von 9,55 Mio. auf 0,9 Mio. Euro', + 'Kooperatives Verhalten als mildernder Umstand', + ], + lessons: [ + 'Starke Authentifizierung ist Pflicht bei Kundenkontakt', + 'Art. 32 verlangt dem Risiko angemessene Sicherheit', + 'Kooperation mit der Aufsichtsbehoerde kann Bussgelder deutlich reduzieren', + ], + officialSources: [ + { + type: 'bfdi_press', + title: 'BfDI verhaengt Geldbusse gegen Telekommunikationsdienstleister', + date: '2019-12-09', + url: 'https://www.bfdi.bund.de/SharedDocs/Pressemitteilungen/DE/2019/30_BfDIverh%C3%A4ngtGeldbu%C3%9Fe1u1.html', + licenseNote: 'Amtliche Pressemitteilung gem. §5 UrhG', + }, + { + type: 'court_decision', + title: 'LG Bonn, Urteil v. 11.11.2020 — Reduzierung auf 900.000 Euro', + reference: 'LG Bonn, 2020', + date: '2020-11-11', + licenseNote: 'Amtliches Werk gem. §5 UrhG', + }, + ], + }, + { + id: 'CASE-WA-2021', + company: 'WhatsApp Ireland Ltd.', + country: 'IE', + authority: 'Irish Data Protection Commission (DPC)', + year: 2021, + fineOriginal: 225_000_000, + outcome: 'final', + violationTypes: ['transparency'], + gdprArticles: ['Art. 5 DSGVO', 'Art. 12 DSGVO', 'Art. 13 DSGVO', 'Art. 14 DSGVO'], + description: + 'Verletzung der Transparenzpflichten: Unvollstaendige Information ueber Datenweitergabe ' + + 'innerhalb der Meta/Facebook-Unternehmensgruppe. Betroffene wurden nicht ausreichend darueber ' + + 'informiert, welche Daten zu welchen Zwecken mit welchen Empfaengern geteilt wurden.', + keyFacts: [ + 'Mangelnde Transparenz bei konzerninterner Datenweitergabe', + 'Unzureichende Datenschutzhinweise (Art. 12-14)', + 'EDPB-Streitbeilegung erhoehte das Bussgeld erheblich', + 'Hoechstes Bussgeld gegen ein Unternehmen in der EU zum damaligen Zeitpunkt', + ], + lessons: [ + 'Datenschutzhinweise muessen vollstaendig und verstaendlich sein', + 'Konzerninterne Datenweitergabe muss transparent dokumentiert werden', + 'Art. 12 verlangt klare, einfache Sprache', + ], + officialSources: [ + { + type: 'dsb_decision', + title: 'DPC Decision re WhatsApp Ireland Limited', + date: '2021-09-02', + licenseNote: 'Amtliche Entscheidung der irischen Aufsichtsbehoerde', + }, + ], + }, + { + id: 'CASE-GOOGLE-2019', + company: 'Google LLC', + country: 'FR', + authority: 'CNIL (Franzoesische Datenschutzbehoerde)', + year: 2019, + fineOriginal: 50_000_000, + outcome: 'final', + violationTypes: ['transparency', 'lawfulness'], + gdprArticles: ['Art. 6 DSGVO', 'Art. 12 DSGVO', 'Art. 13 DSGVO'], + description: + 'Maengel bei Einwilligung und Transparenz: Informationen zur Datenverarbeitung waren ueber ' + + 'mehrere Seiten verstreut und schwer verstaendlich. Einwilligung fuer personalisierte Werbung ' + + 'war vorausgewaehlt und nicht hinreichend spezifisch.', + keyFacts: [ + 'Informationen ueber 5-6 Klicks verstreut', + 'Vorausgewaehlte Einwilligung (kein aktives Opt-in)', + 'Einwilligung nicht granular genug', + 'Erstes grosses DSGVO-Bussgeld gegen US-Tech-Konzern', + ], + lessons: [ + 'Einwilligung muss aktiv, informiert und spezifisch sein', + 'Datenschutzinformationen muessen leicht zugaenglich sein', + 'Vorausgewaehlte Checkboxen sind keine gueltige Einwilligung', + ], + officialSources: [ + { + type: 'dsb_decision', + title: 'CNIL Deliberation No. SAN-2019-001 v. 21.01.2019', + date: '2019-01-21', + licenseNote: 'Amtliche Entscheidung der CNIL', + }, + ], + }, + { + id: 'CASE-OLG-DD-2021', + company: 'GmbH-Geschaeftsfuehrer (Detektiveinsatz)', + country: 'DE', + authority: 'OLG Dresden', + year: 2021, + fineOriginal: 5_000, // Schadensersatz, kein Bussgeld + outcome: 'final', + violationTypes: ['lawfulness'], + gdprArticles: ['Art. 6 DSGVO', 'Art. 10 DSGVO', 'Art. 82 DSGVO'], + description: + 'Persoenliche Haftung des Geschaeftsfuehrers: Ein GmbH-GF liess eine Privatperson durch ' + + 'einen Detektiv ausspionieren. Das OLG Dresden sprach dem Betroffenen 5.000 Euro Schadensersatz ' + + 'zu — gegen GmbH und Geschaeftsfuehrer als Gesamtschuldner. Begruendung: Der GF entscheide ' + + 'selbst ueber die Datenverarbeitung und sei daher Verantwortlicher i.S.d. Art. 4 Nr. 7 DSGVO.', + keyFacts: [ + 'Geschaeftsfuehrer als Verantwortlicher (Art. 4 Nr. 7)', + 'Persoenliche Haftung neben der GmbH (Gesamtschuldner)', + 'Schadensersatz nach Art. 82 DSGVO', + 'Ausspionierung durch Detektiv = Verstoss gegen Art. 6, 10', + ], + lessons: [ + 'Geschaeftsfuehrer koennen persoenlich fuer DSGVO-Verstoesse haften', + 'Art. 82 DSGVO ermoeglicht Schadensersatz gegen natuerliche Personen', + 'Verantwortlichkeit i.S.d. Art. 4 Nr. 7 kann auch den GF persoenlich treffen', + ], + officialSources: [ + { + type: 'court_decision', + title: 'OLG Dresden, Urteil 2021 — Persoenliche GF-Haftung bei DSGVO-Verstoss', + reference: 'OLG Dresden, 2021', + date: '2021', + licenseNote: 'Amtliches Werk gem. §5 UrhG', + }, + ], + }, +] + +// ============================================================================= +// Lessons Learned (aggregiert) +// ============================================================================= + +export const GDPR_LESSONS: GDPRLesson[] = [ + { + id: 'LESSON-01', + gdprArticles: ['Art. 5 DSGVO', 'Art. 25 DSGVO'], + title: 'Datenminimierung und Loeschkonzepte sind Pflicht', + description: + 'Personenbezogene Daten duerfen nur so lange gespeichert werden, wie es fuer den Zweck ' + + 'notwendig ist. Technische Loeschmechanismen muessen implementiert sein. Archivsysteme ' + + 'ohne Loeschfunktion verstoessen gegen Art. 5 und Art. 25 DSGVO.', + relatedCaseIds: ['CASE-DW-2019'], + severity: 'critical', + }, + { + id: 'LESSON-02', + gdprArticles: ['Art. 32 DSGVO'], + title: 'Angemessene IT-Sicherheit (Art. 32) ist unverzichtbar', + description: + 'Technisch-organisatorische Massnahmen muessen dem Risiko angemessen sein. ' + + 'Schwache Authentifizierung (z.B. nur Name/Geburtsdatum) reicht nicht aus. ' + + 'Verschluesselung, Zugriffskontrollen und starke Authentifizierung sind Pflicht.', + relatedCaseIds: ['CASE-1U1-2019'], + severity: 'critical', + }, + { + id: 'LESSON-03', + gdprArticles: ['Art. 9 DSGVO'], + title: 'Besondere Kategorien erfordern besondere Vorsicht', + description: + 'Gesundheitsdaten, religioese Ueberzeugungen und andere besondere Kategorien (Art. 9) ' + + 'duerfen nur mit expliziter Rechtsgrundlage verarbeitet werden. Informelle Gespraeche ' + + 'duerfen nicht zur verdeckten Erhebung solcher Daten missbraucht werden.', + relatedCaseIds: ['CASE-HM-2020'], + severity: 'critical', + }, + { + id: 'LESSON-04', + gdprArticles: ['Art. 12 DSGVO', 'Art. 13 DSGVO', 'Art. 14 DSGVO'], + title: 'Transparenz und vollstaendige Datenschutzhinweise', + description: + 'Betroffene muessen klar, verstaendlich und vollstaendig informiert werden. ' + + 'Konzerninterne Datenweitergabe muss dokumentiert sein. Informationen duerfen ' + + 'nicht ueber zahlreiche Unterseiten verstreut werden.', + relatedCaseIds: ['CASE-WA-2021', 'CASE-GOOGLE-2019'], + severity: 'high', + }, + { + id: 'LESSON-05', + gdprArticles: ['Art. 82 DSGVO', 'Art. 4 Nr. 7 DSGVO'], + title: 'Persoenliche Haftung von Geschaeftsfuehrern moeglich', + description: + 'Geschaeftsfuehrer koennen neben dem Unternehmen persoenlich fuer DSGVO-Verstoesse ' + + 'haften, wenn sie die Datenverarbeitung selbst veranlassen. Dies gilt insbesondere ' + + 'bei vorsaetzlichen Verstoessen.', + relatedCaseIds: ['CASE-OLG-DD-2021'], + severity: 'high', + }, + { + id: 'LESSON-06', + gdprArticles: ['Art. 83 DSGVO'], + title: 'Kooperation kann Bussgelder deutlich reduzieren', + description: + 'Kooperatives Verhalten und zeitnahe Massnahmen zur Abhilfe werden von Aufsichtsbehoerden ' + + 'und Gerichten als mildernde Umstaende anerkannt. Im 1&1-Fall wurde das Bussgeld um ueber ' + + '90% reduziert.', + relatedCaseIds: ['CASE-1U1-2019'], + severity: 'medium', + }, +] + +// ============================================================================= +// Violation Type Labels +// ============================================================================= + +export const VIOLATION_TYPE_LABELS: Record = { + data_minimization: 'Datenminimierung / Speicherbegrenzung', + security: 'IT-Sicherheit (Art. 32)', + special_categories: 'Besondere Kategorien (Art. 9)', + transparency: 'Transparenz / Informationspflichten', + lawfulness: 'Rechtsmaessigkeit (Art. 6)', + data_subject_rights: 'Betroffenenrechte', + dpo_conflict: 'DSB-Interessenkonflikt', + accountability: 'Rechenschaftspflicht', + international_transfer: 'Drittlandtransfer', +} + +// ============================================================================= +// Helper Functions +// ============================================================================= + +/** + * Gibt Enforcement Cases zurueck, die fuer bestimmte DSGVO-Artikel relevant sind. + */ +export function getEnforcementCasesForArticle(article: string): GDPREnforcementCase[] { + return GDPR_ENFORCEMENT_CASES.filter(c => + c.gdprArticles.some(a => a.toLowerCase().includes(article.toLowerCase())) + ) +} + +/** + * Gibt Enforcement Cases zurueck, die fuer einen bestimmten Verstosstyp relevant sind. + */ +export function getEnforcementCasesForViolationType(type: GDPRViolationType): GDPREnforcementCase[] { + return GDPR_ENFORCEMENT_CASES.filter(c => c.violationTypes.includes(type)) +} + +/** + * Gibt Lessons zurueck, die fuer bestimmte DSGVO-Artikel relevant sind. + */ +export function getLessonsForArticle(article: string): GDPRLesson[] { + return GDPR_LESSONS.filter(l => + l.gdprArticles.some(a => a.toLowerCase().includes(article.toLowerCase())) + ) +} + +/** + * Gibt das hoechste bekannte Bussgeld fuer einen Verstosstyp zurueck. + */ +export function getMaxFineForViolationType(type: GDPRViolationType): { + amount: number + company: string + year: number +} | null { + const cases = getEnforcementCasesForViolationType(type) + if (cases.length === 0) return null + + const sorted = [...cases].sort((a, b) => b.fineOriginal - a.fineOriginal) + return { + amount: sorted[0].fineOriginal, + company: sorted[0].company, + year: sorted[0].year, + } +} + +/** + * Formatiert einen Euro-Betrag fuer die Anzeige. + */ +export function formatFineAmount(amount: number): string { + if (amount >= 1_000_000) { + return `${(amount / 1_000_000).toFixed(1)} Mio. Euro` + } + if (amount >= 1_000) { + return `${(amount / 1_000).toFixed(0)}.000 Euro` + } + return `${amount.toLocaleString('de-DE')} Euro` +} diff --git a/admin-v2/lib/sdk/dsfa/prohibited-ai-practices.ts b/admin-v2/lib/sdk/dsfa/prohibited-ai-practices.ts new file mode 100644 index 0000000..661f140 --- /dev/null +++ b/admin-v2/lib/sdk/dsfa/prohibited-ai-practices.ts @@ -0,0 +1,386 @@ +/** + * Verbotene KI-Anwendungsfaelle nach Art. 5 EU AI Act (2024/1689) + * + * Seit Februar 2025 sind diese Praktiken in der EU ausdruecklich verboten. + * Dieses Modul stellt einen strukturierten Katalog bereit, der sowohl + * im SDK-Frontend als auch via RAG fuer den Compliance Advisor nutzbar ist. + * + * Quellen: + * - EU AI Act Art. 5 (Verbotene Praktiken), Verordnung (EU) 2024/1689 + * - LG Muenchen I, 11.11.2025 (42 O 14139/24) — amtliches Werk nach §5 UrhG + */ + +// ============================================================================= +// Types +// ============================================================================= + +export type ProhibitionSeverity = 'absolute' | 'conditional' + +export type ProhibitionCategory = + | 'manipulation' + | 'vulnerability_exploitation' + | 'social_scoring' + | 'biometric_surveillance' + | 'predictive_policing' + | 'emotion_recognition' + | 'biometric_categorization' + | 'copyright_violation' + +export interface ProhibitedAIPractice { + id: string + title: string + titleEN: string + category: ProhibitionCategory + severity: ProhibitionSeverity + legalBasis: string + description: string + examples: string[] + exceptions?: string[] + /** Stichworte fuer automatische Erkennung */ + detectionKeywords: string[] + /** Relevante Gerichtsentscheidungen */ + caseLaw?: CaseLawReference[] +} + +export interface CaseLawReference { + id: string + court: string + date: string + reference: string + title: string + summary: string + relevance: string + sourceUrl?: string + /** Amtliche Werke nach §5 UrhG — keine Lizenzpflicht */ + licenseNote: string +} + +// ============================================================================= +// Verbotskatalog Art. 5 AI Act +// ============================================================================= + +export const PROHIBITED_AI_PRACTICES: ProhibitedAIPractice[] = [ + // --- Absolut verboten --- + { + id: 'VERBOT-01', + title: 'Irrefuehrende Manipulation', + titleEN: 'Subliminal Manipulation', + category: 'manipulation', + severity: 'absolute', + legalBasis: 'Art. 5 Abs. 1 lit. a AI Act', + description: + 'KI-Systeme, die durch unterschwellige Techniken oder absichtlich manipulative/taeuschende Methoden ' + + 'das Verhalten von Personen wesentlich beeinflussen und ihnen dadurch erheblichen Schaden zufuegen oder ' + + 'zufuegen koennen. Beispiel: Sprachgesteuertes Spielzeug, das Kinder zu gefaehrlichem Verhalten animiert.', + examples: [ + 'Sprachgesteuertes Spielzeug mit manipulativen Inhalten fuer Kinder', + 'Unterschwellige Audio-/Videobotschaften zur Verhaltenssteuerung', + 'Dark Patterns in KI-Interfaces, die zu schaedlichen Entscheidungen fuehren', + 'KI-generierte Deepfakes zur politischen Manipulation', + ], + detectionKeywords: [ + 'manipulation', 'unterschwellig', 'subliminal', 'taeuschung', 'dark pattern', + 'verhaltenssteuerung', 'beeinflussung', 'deepfake', 'desinformation', + ], + }, + { + id: 'VERBOT-02', + title: 'Ausnutzung von Schwaechen', + titleEN: 'Exploitation of Vulnerabilities', + category: 'vulnerability_exploitation', + severity: 'absolute', + legalBasis: 'Art. 5 Abs. 1 lit. b AI Act', + description: + 'KI-Systeme, die gezielt die Verletzlichkeit bestimmter Personen oder Gruppen ausnutzen — ' + + 'etwa aufgrund von Alter, Behinderung, sozialer oder wirtschaftlicher Situation — ' + + 'um deren Verhalten wesentlich zu beeinflussen und ihnen dadurch erheblichen Schaden zuzufuegen.', + examples: [ + 'KI-Werbung, die gezielt aeltere oder kognitiv eingeschraenkte Menschen zu Kaeufen verleitet', + 'Sucht-foerdernde Algorithmen, die psychische Vulnerabilitaet ausnutzen', + 'Finanzprodukt-Empfehlungen, die wirtschaftliche Notlagen ausnutzen', + 'Gamification-KI, die Kinder zur uebermassigen Nutzung verleitet', + ], + detectionKeywords: [ + 'schwaeche', 'vulnerabel', 'alter', 'behinderung', 'kinder', 'sucht', + 'ausnutz', 'manipulation minderjahrig', 'schutzbeduerft', + ], + }, + { + id: 'VERBOT-03', + title: 'Social Scoring', + titleEN: 'Social Scoring', + category: 'social_scoring', + severity: 'absolute', + legalBasis: 'Art. 5 Abs. 1 lit. c AI Act', + description: + 'KI-Systeme zur Bewertung oder Klassifizierung natuerlicher Personen auf Grundlage ihres Sozialverhaltens ' + + 'oder persoenlicher Eigenschaften, wenn dies zu einer ungerechtfertigten oder unverhaeltnismaessigen ' + + 'Benachteiligung fuehrt — insbesondere in Kontexten, die keinen Bezug zur urspruenglichen Datenerhebung haben.', + examples: [ + 'Bewertungssysteme auf Basis von Social-Media-Aktivitaeten', + 'Scoring anhand von Internet-Surfverhalten fuer Kreditwuerdigkeit', + 'Verhaltensbasierte Bewertung von Buergern durch Behoerden', + 'Zugangssteuerung zu oeffentlichen Leistungen basierend auf Verhaltensdaten', + ], + detectionKeywords: [ + 'social scoring', 'sozialkredit', 'verhaltensbewertung', 'buergerscore', + 'personenbewertung', 'social media scoring', 'reputation score', + ], + }, + { + id: 'VERBOT-04', + title: 'Ungezielte Gesichtsdatensammlung', + titleEN: 'Untargeted Facial Image Scraping', + category: 'biometric_surveillance', + severity: 'absolute', + legalBasis: 'Art. 5 Abs. 1 lit. e AI Act', + description: + 'KI-Systeme, die ungezielt Gesichtsbilder aus dem Internet oder von Ueberwachungskameras ' + + 'sammeln, um biometrische Datenbanken aufzubauen. Prominentes Beispiel: Clearview AI.', + examples: [ + 'Scraping von Gesichtsbildern aus sozialen Netzwerken (Clearview AI)', + 'Aufbau biometrischer Datenbanken aus Ueberwachungskameraaufnahmen', + 'Sammlung von Portraetfotos ohne Wissen der Betroffenen', + 'Web-Crawling zur Erstellung von Gesichtserkennungs-Trainingsdaten', + ], + detectionKeywords: [ + 'gesichtserkennung', 'facial recognition', 'biometrisch', 'clearview', + 'gesichtsdatenbank', 'scraping gesicht', 'face scraping', + ], + }, + { + id: 'VERBOT-05', + title: 'Biometrische Echtzeit-Ueberwachung', + titleEN: 'Real-time Biometric Surveillance in Public Spaces', + category: 'biometric_surveillance', + severity: 'absolute', + legalBasis: 'Art. 5 Abs. 1 lit. h AI Act', + description: + 'Biometrische Echtzeit-Fernidentifizierung im oeffentlich zugaenglichen Raum zu Strafverfolgungszwecken ' + + 'ist grundsaetzlich verboten. Ausnahmen bestehen nur bei konkretem, begruendetem Tatverdacht unter ' + + 'strikten Voraussetzungen.', + examples: [ + 'Live-Gesichtserkennung durch Polizei an oeffentlichen Plaetzen', + 'Echtzeit-Identifikation an Bahnhoefen oder Flughaefen ohne konkreten Anlass', + 'Permanente biometrische Ueberwachung in Fussballstadien', + ], + exceptions: [ + 'Gezielte Suche nach Opfern von Entfuehrung oder Menschenhandel', + 'Verhinderung einer konkreten, erheblichen Bedrohung fuer Leib und Leben', + 'Identifizierung von Verdaechtigen schwerer Straftaten (unter richterlicher Genehmigung)', + ], + detectionKeywords: [ + 'echtzeit', 'live', 'ueberwachung', 'surveillance', 'oeffentlicher raum', + 'fernidentifizierung', 'real-time', 'biometric identification', + ], + }, + + // --- Bedingt / teilweise verboten --- + { + id: 'VERBOT-06', + title: 'Predictive Policing auf Personenprofilen', + titleEN: 'Profile-based Predictive Policing', + category: 'predictive_policing', + severity: 'conditional', + legalBasis: 'Art. 5 Abs. 1 lit. d AI Act', + description: + 'KI-Systeme zur Erstellung von Risikobewertungen natuerlicher Personen zur Vorhersage von Straftaten ' + + 'allein auf Grundlage von Profiling oder Persoenlichkeitsmerkmalen. Ortsbezogene Analysen ' + + '(Hotspot-Policing) sind hiervon nicht erfasst.', + examples: [ + 'Persoenlichkeitsprofilbasierte Straftaten-Vorhersage', + 'KI-Score zur Bewertung der Rueckfallgefahr ohne konkreten Anlass', + 'Vorausschauende Ueberwachung auf Basis ethnischer Profile', + ], + exceptions: [ + 'Ortsbezogene Kriminalitaetsanalysen (Hotspot-Policing) ohne Personenbezug', + 'Strafverfolgung mit konkretem Anfangsverdacht und richterlicher Anordnung', + ], + detectionKeywords: [ + 'predictive policing', 'vorhersage straftat', 'risikobewertung person', + 'profiling polizei', 'rueckfallprognose', 'kriminalitaetsprognose', + ], + }, + { + id: 'VERBOT-07', + title: 'Biometrische Kategorisierung sensibler Merkmale', + titleEN: 'Biometric Categorization of Sensitive Attributes', + category: 'biometric_categorization', + severity: 'conditional', + legalBasis: 'Art. 5 Abs. 1 lit. g AI Act', + description: + 'KI-Systeme zur biometrischen Kategorisierung, die Rueckschluesse auf Rasse, politische Meinungen, ' + + 'Gewerkschaftszugehoerigkeit, religioese oder weltanschauliche Ueberzeugungen, Sexualleben oder ' + + 'sexuelle Orientierung ziehen. Ausnahme: Strafverfolgung unter engen Voraussetzungen.', + examples: [ + 'Gesichtsanalyse zur Erkennung ethnischer Zugehoerigkeit', + 'Stimmanalyse zur Ableitung sexueller Orientierung', + 'Gangerkennung zur Kategorisierung nach Religionszugehoerigkeit', + ], + exceptions: [ + 'Strafverfolgung unter eng definierten gesetzlichen Voraussetzungen', + 'Kennzeichnung oder Filterung rechtmaessig erworbener biometrischer Datensaetze', + ], + detectionKeywords: [ + 'biometrisch', 'rasse', 'ethni', 'religion', 'sexuell', 'kategorisierung', + 'gesichtsanalyse', 'stimmanalyse', 'gang erkennung', + ], + }, + { + id: 'VERBOT-08', + title: 'Emotionserkennung am Arbeitsplatz und in Schulen', + titleEN: 'Emotion Recognition in Workplaces and Schools', + category: 'emotion_recognition', + severity: 'conditional', + legalBasis: 'Art. 5 Abs. 1 lit. f AI Act', + description: + 'KI-Systeme zur fortlaufenden Erkennung von Emotionen von Beschaeftigten am Arbeitsplatz oder ' + + 'von Lernenden in Bildungseinrichtungen. Erlaubt nur mit medizinischem oder ' + + 'sicherheitstechnischem Rechtfertigungsgrund.', + examples: [ + 'Webcam-basierte Aufmerksamkeitsueberwachung im Unterricht', + 'Emotionsanalyse von Mitarbeitern waehrend Videokonferenzen', + 'Stimmungsanalyse von Schuelern ueber Mikrofone', + 'Stress-Detection bei Mitarbeitern ohne deren Einwilligung', + ], + exceptions: [ + 'Medizinische Zwecke (z.B. Erkennung von Schmerzpatienten in Pflege)', + 'Sicherheitstechnische Gruende (z.B. Muedigkeitserkennung bei Piloten/Fahrern)', + ], + detectionKeywords: [ + 'emotionserkennung', 'emotion recognition', 'aufmerksamkeit', 'stimmungsanalyse', + 'arbeitsplatz', 'schule', 'unterricht', 'webcam ueberwachung', 'stress detection', + ], + }, +] + +// ============================================================================= +// Relevante Rechtsprechung +// ============================================================================= + +export const AI_CASE_LAW: CaseLawReference[] = [ + { + id: 'CASE-01', + court: 'LG Muenchen I', + date: '2025-11-11', + reference: '42 O 14139/24', + title: 'Urheberrecht bei KI-generierten Inhalten (Memorisierung)', + summary: + 'Das Gericht stellte fest, dass ein KI-System urheberrechtlich geschuetzte Songtexte ' + + 'inhaltsgleich reproduzierte, da diese im Modell „memorisiert" waren. Die KI-Modelle ' + + 'stellen daher Vervielfaeltigungsstuecke i.S.d. Art. 2 InfoSoc-RL, §16 Abs. 1,2 UrhG dar.', + relevance: + 'Zeigt, dass der Einsatz von KI-Systemen, die urheberrechtlich geschuetzte Inhalte ' + + 'unautorisiert reproduzieren, urheberrechtlich unzulaessig ist. Relevant fuer alle ' + + 'KI-Module, die auf urheberrechtlich geschuetzten Trainingsdaten basieren.', + sourceUrl: 'https://www.gesetze-bayern.de/Content/Document/Y-300-Z-GRURRS-B-2025-N-30204', + licenseNote: 'Amtliches Werk nach §5 UrhG — kein Urheberrechtsschutz, frei verwendbar im RAG.', + }, +] + +// ============================================================================= +// Kategorisierung +// ============================================================================= + +export const PROHIBITION_CATEGORY_LABELS: Record = { + manipulation: 'Manipulation & Taeuschung', + vulnerability_exploitation: 'Ausnutzung von Schwaechen', + social_scoring: 'Social Scoring', + biometric_surveillance: 'Biometrische Ueberwachung', + predictive_policing: 'Predictive Policing', + emotion_recognition: 'Emotionserkennung', + biometric_categorization: 'Biometrische Kategorisierung', + copyright_violation: 'Urheberrechtsverletzung', +} + +export const SEVERITY_LABELS: Record = { + absolute: 'Absolut verboten', + conditional: 'Bedingt verboten (Ausnahmen moeglich)', +} + +// ============================================================================= +// Erkennung / Helper Functions +// ============================================================================= + +/** + * Prueft, ob eine Beschreibung oder ein Name auf verbotene Praktiken hinweist. + * Gibt alle potenziell zutreffenden Verbote zurueck, sortiert nach Relevanz. + */ +export function detectProhibitedPractices( + description: string, + name?: string +): { practice: ProhibitedAIPractice; matchCount: number; matchedKeywords: string[] }[] { + const searchText = `${name || ''} ${description}`.toLowerCase() + + const results = PROHIBITED_AI_PRACTICES.map(practice => { + const matchedKeywords = practice.detectionKeywords.filter(kw => + searchText.includes(kw.toLowerCase()) + ) + return { + practice, + matchCount: matchedKeywords.length, + matchedKeywords, + } + }).filter(r => r.matchCount > 0) + + // Absolut verbotene zuerst, dann nach matchCount + results.sort((a, b) => { + if (a.practice.severity !== b.practice.severity) { + return a.practice.severity === 'absolute' ? -1 : 1 + } + return b.matchCount - a.matchCount + }) + + return results +} + +/** + * Gibt alle absolut verbotenen Praktiken zurueck. + */ +export function getAbsoluteProhibitions(): ProhibitedAIPractice[] { + return PROHIBITED_AI_PRACTICES.filter(p => p.severity === 'absolute') +} + +/** + * Gibt alle bedingt verbotenen Praktiken zurueck. + */ +export function getConditionalProhibitions(): ProhibitedAIPractice[] { + return PROHIBITED_AI_PRACTICES.filter(p => p.severity === 'conditional') +} + +/** + * Prueft, ob ein KI-Anwendungsfall Urheberrechts-Risiken birgt. + * Basierend auf LG Muenchen I Urteil. + */ +export function hasCopyrightRisk(trainingDataDescription?: string): boolean { + if (!trainingDataDescription) return false + const keywords = [ + 'urheberrecht', 'copyright', 'lizenz', 'geschuetzt', 'songtext', + 'buch', 'artikel', 'literatur', 'musik', 'film', 'bild', + 'web scraping', 'internet', 'crawl', + ] + const lower = trainingDataDescription.toLowerCase() + return keywords.some(kw => lower.includes(kw)) +} + +/** + * Generiert einen formatierten Warnungstext fuer ein erkanntes Verbot. + */ +export function formatProhibitionWarning(practice: ProhibitedAIPractice): string { + const severity = practice.severity === 'absolute' + ? 'ABSOLUT VERBOTEN' + : 'BEDINGT VERBOTEN' + + let text = `⚠ ${severity}: ${practice.title}\n` + text += `Rechtsgrundlage: ${practice.legalBasis}\n\n` + text += `${practice.description}\n` + + if (practice.exceptions?.length) { + text += `\nAusnahmen:\n` + practice.exceptions.forEach(e => { + text += `- ${e}\n` + }) + } + + return text +}