# Model Fingerprinting and Watermarking for Attribution

**Kategori:** AI Security Engineering
**Dato:** 2026-05
**Status:** Active

---

## Hva dette handler om

Model fingerprinting og watermarking er teknikker for å etablere eierskap, spore opprinnelse og beskytte AI-modeller og AI-generert innhold mot uautorisert bruk, kopiering eller manipulasjon. Dette er kritiske sikkerhetskontroller i en tid hvor AI-modeller representerer betydelig forretningsverdi, og hvor AI-generert innhold må kunne verifiseres og spores.

**To primære bruksområder:**

1. **Content Watermarking** — merking av AI-generert innhold (bilder, video, lyd) med metadata eller synlige merker som viser at innholdet er AI-generert og hvem som har generert det
2. **Model Fingerprinting** — unik identifikasjon av ML-modeller for å bevise eierskap, detektere kopiering og spore uautorisert distribusjon

Microsoft implementerer begge tilnærminger i Azure AI-plattformen for å sikre transparens, etterlevelse og beskyttelse av immaterielle rettigheter.

---

## Content Watermarking i Microsoft-stakken

### C2PA Content Credentials (Azure OpenAI)

**Coalition for Content Provenance and Authenticity (C2PA)** er den tekniske standarden Microsoft bruker for å merke AI-generert innhold med tamper-evident metadata.

**Støtte i Microsoft:**
- **Azure OpenAI** (DALL-E 3, GPT-image-1): Alle genererte bilder får automatisk Content Credentials
- **Azure Text to Speech Avatar**: Video-output merkes med content credentials (kun `.mp4`)
- **Microsoft 365 Copilot**: AI-generert innhold (bilder, video, lyd) kan merkes med watermarks (policy-styrt)

**Manifest-struktur (C2PA):**

| Felt | Innhold | Formål |
|------|---------|--------|
| `description` | `"AI Generated Image"` | Attesterer at innholdet er AI-generert |
| `softwareAgent` | `"Azure OpenAI DALL-E"` eller `"Azure OpenAI ImageGen"` | Identifiserer generasjonsmodellen |
| `when` | Timestamp | Når credentials ble opprettet |
| `generator` | `"Microsoft Azure Txt to Speech Avatar Service"` | For TTS avatar-videoer |

**Kryptografisk signering:**
- Manifest er **cryptographically signed** med et sertifikat som tracer tilbake til Microsoft
- Gjør metadata **tamper-evident** — manipulering kan detekteres
- Signatur verifiserer at innholdet faktisk kommer fra Azure AI

**Verifikasjon:**

1. **Content Credentials Verify** (https://contentcredentials.org/verify)
   - Web-basert verktøy for å inspisere C2PA-metadata
   - Viser utsteder (Microsoft Corporation), timestamp, modell
2. **Content Authenticity Initiative (CAI) open-source tools**
   - Programmatisk verifikasjon via SDKer og biblioteker
   - For integrasjon i egne applikasjoner

**No-op setup:**
- Content Credentials er **alltid aktivert** — ingen konfigurasjon nødvendig
- Metadata legges til automatisk i alle støttede formater

---

### Visual and Audio Watermarking (Microsoft 365)

Microsoft 365 tilbyr **synlige og hørbare watermarks** for AI-generert innhold som et ekstra lag for transparens.

**Policy-kontroll:**
- Admins aktiverer via **Cloud Policy**: _"Include a watermark when content from Microsoft 365 is generated or altered by AI"_
- Gjelder video og lyd (f.eks. Clipchamp-video, Copilot-audioresume)
- Bilder: Brukerstyrt (aktiveres i myaccount.microsoft.com/privacy)

**Karakteristikker:**
- **Ikke-muterbar:** Watermark kan ikke fjernes eller modifiseres av brukeren
- **Persistent:** Vises også ved printing og screenshots
- **MIP-labeling aware:** Støtter sensitivity-labeled PDFer

**Metadata uansett:**
Selv om watermark er deaktivert, legges **C2PA-metadata** til i alle AI-genererte filer (modell, app, timestamp).

---

## Model Fingerprinting og Provenance

### Hva er model fingerprinting?

Model fingerprinting er teknikker for å:
1. **Identifisere unikt en modell** — skape en "fingeravtrykk" som identifiserer modellen
2. **Detektere kopiering** — oppdage om noen har stjålet eller replikert modellen
3. **Verifisere eierskap** — bevise at en gitt modell tilhører deg
4. **Spore distribusjon** — følge hvor modellen brukes uautorisert

**Trussel-kontekst (MITRE ATT&CK):**
- **AML.T0050: Backdoor Model** — adversaries embed backdoors i modeller
- **AML.T0020: Compromise Model Supply Chain** — poisoned models i model marketplaces
- **T1195: Supply Chain Compromise** — compromised libraries, datasets

### Teknikker for model fingerprinting

#### 1. Model Watermark Embedding (Steganography in Neural Networks)

**Konsept:**
- Embed et unikt signal (watermark) i modellens vekter eller arkitektur
- Signalet påvirker ikke modellens prediksjoner, men kan detekteres
- Brukes til å bevise eierskap hvis modellen blir stjålet

**Metoder:**
- **Weight perturbation:** Modifiser vekter i spesifikke lag med et hemmelig signal
- **Trigger-set embedding:** Tren modellen til å svare på spesifikke, ukjente input-mønstre (trigger inputs)
- **Adversarial watermarking:** Bruk adversarial examples som watermark-trigger

**Eksempel:**
En modell kan trenes til å returnere en spesifikk output for et hemmelig input som bare eieren kjenner. Hvis noen stjeler modellen, kan eieren bevise eierskap ved å vise denne oppførselen.

**Begrensninger:**
- Kan fjernes ved re-training eller model pruning (hvis angriper har tilgang til vekter)
- Kan påvirke modellytelse hvis ikke designet forsiktig
- Krever at eieren kan teste modellen (white-box eller black-box testing)

#### 2. Model Provenance og Registry

**Azure Machine Learning Model Registry** (Microsoft-tilnærming):

**Model provenance tracking:**
- **Model registration:** Hver modell får en unik ID, versjonsnummer, metadata
- **Metadata captured automatically:**
  - Training script snapshot
  - Training data lineage (hvilke datasets ble brukt)
  - Training metrics og hyperparameters
  - Hvem som trengte modellen, når, hvor
  - Eksperiment-ID (MLflow eller Azure ML experiment tracking)
- **Tagging:** Custom tags for å kategorisere modeller (miljø, godkjenningsstatus, etc.)

**Approval workflows (AI-1 Security Benchmark):**
1. **Centralized model registry** — single source of truth
2. **Automated security validation:**
   - Hash verification (integrity check)
   - Backdoor scanning (static analysis)
   - Adversarial testing
3. **RBAC:** Kun autorisert personell kan registrere og deploye modeller
4. **Multi-stage approval:**
   - Security team review
   - Data provenance validation
   - Business owner sign-off
5. **Audit trails:**
   - Azure Monitor logging av alle model-relaterte hendelser
   - Registration attempts, approval decisions, deployment actions

**Eksempel-policy:**
```
"[Preview]: Azure Machine Learning Deployments should only use approved Registry Models"
```
- Blokkerer deployment av modeller som ikke er i approved list
- Krever at modeller har gjennomgått security scanning
- Håndheves via Azure Policy (Deny effect)

**Benefits:**
- **Traceability:** Fullt spor fra data til deployed model
- **Accountability:** Hvem godkjente modellen for prod?
- **Compliance:** Møter krav i regulerte bransjer (GDPR, AI Act, finansregulering)
- **Incident response:** Hvis modell oppfører seg unormalt, kan lineage fortelle hvorfor

#### 3. Data Lineage og Unity Catalog (Databricks)

**Unity Catalog for AI governance:**
- **Runtime lineage:** Fanger data-lineage ned til kolonnenivå på tvers av notebooks, jobs, dashboards
- **Model-to-dataset tracking:** Når en modell trenes på en tabell, trackes upstream dataset
- **Cross-workspace visibility:** Lineage deles på tvers av workspaces i samme metastore
- **1-year retention:** Lineage data lagres i ett år

**Anvendelser:**
- **Compliance audits:** Kan bevise at modellen er trent på godkjente datasett
- **Bias debugging:** Spor bias tilbake til data preprocessing eller source data
- **Reproducibility:** Re-create modeller med eksakt samme data-input

**Three-level namespace:**
- Catalog → Schema → Table/View/Model
- Brukes til å strukturere data og AI-assets

---

### Detection of Model Copies (Model Stealing Detection)

**Model stealing** (MITRE #5):
- Adversary recreates modellen ved å query API og lære fra outputs
- Bruker extracted model til å utvikle adversarial attacks offline

**Fingerprinting for detection:**

1. **Query pattern analysis:**
   - Monitorere API calls for systematiske queries som ligner model extraction
   - Detektere brute-force querying av modell-inputs
2. **Output obfuscation:**
   - Returner rounded confidence values (ikke flere desimaler)
   - Begrens detaljer i API-respons
3. **Rate limiting:**
   - Begrens antall API-kall per bruker/IP
   - Stopper brute-force model extraction
4. **Watermark triggers:**
   - Hvis modellen har embedded watermark, kan du teste en mistenkt kopi for watermark-response
   - Beviser at kopien er derived fra din modell

---

## Legal og Compliance Implications

### Immaterielle rettigheter

**Model watermarking som IP-beskyttelse:**
- I mange jurisdiksjoner kan watermarked modeller være lettere å beskytte juridisk
- Beviser eierskap hvis noen distribuerer uautorisert kopi
- Kan brukes som bevis i rettssak

**C2PA for copyright:**
- Content credentials etablerer **provenance** — hvem genererte innholdet
- Viktig for å bevise originality i copyright-tvister
- Hjelper å skille AI-generert innhold fra menneskeskapt innhold

### Regulatory Compliance

**EU AI Act:**
- **Transparency krav:** AI-systemer må kunne forklare sine beslutninger
- **Provenance tracking:** Organisasjoner må kunne dokumentere data-lineage og modell-lineage
- **Content labeling:** AI-generert innhold må merkes som AI-generert (C2PA oppfyller dette)

**GDPR:**
- **Right to explanation:** Brukere har rett til å vite hvordan AI-beslutninger påvirker dem
- **Data lineage:** Må kunne spore hvilke persondata som ble brukt til å trene modellen

**Norsk offentlig sektor:**
- **Utredningsinstruksen § 5:** Krever dokumentasjon av beslutningsgrunnlag
- **Forvaltningsloven § 24:** Begrunnelsesplikt — lineage hjelper å forklare AI-beslutninger
- **Personopplysningsloven (GDPR):** Må kunne dokumentere databehandling

---

## Implementering i Microsoft-stakken

### Content Watermarking: C2PA for bilder

**Azure OpenAI (DALL-E 3, GPT-image-1):**

```python
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key="YOUR_API_KEY",
    api_version="2024-05-01-preview",
    azure_endpoint="https://YOUR_RESOURCE.openai.azure.com"
)

# Generate image — Content Credentials automatically applied
response = client.images.generate(
    model="dall-e-3",
    prompt="A futuristic cityscape at sunset",
    size="1024x1024"
)

image_url = response.data[0].url
# Download image — will contain C2PA manifest with Microsoft signature
```

**Verifikasjon (C2PA):**

```python
# Using Content Authenticity Initiative (CAI) tools
# pip install c2pa-python

from c2pa import Reader

reader = Reader("generated_image.png")
manifest = reader.get_manifest()

print(f"Issuer: {manifest.issuer}")  # Microsoft Corporation
print(f"Software: {manifest.claim_generator}")  # Azure OpenAI DALL-E
print(f"Timestamp: {manifest.timestamp}")
```

**Output:**
```
Issuer: Microsoft Corporation
Software: Azure OpenAI DALL-E
Timestamp: 2026-02-05T14:23:45Z
```

---

### Model Provenance: Azure Machine Learning

**Model registration med metadata:**

```python
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Model
from azure.identity import DefaultAzureCredential

ml_client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="YOUR_SUBSCRIPTION",
    resource_group_name="YOUR_RG",
    workspace_name="YOUR_WORKSPACE"
)

# Register model with provenance metadata
model = Model(
    name="fraud-detection-model",
    version="2",
    path="./model",
    type="mlflow_model",
    description="Fraud detection model trained on balanced dataset",
    tags={
        "environment": "production",
        "approval_status": "approved",
        "training_data": "fraud_dataset_v3_balanced",
        "trained_by": "data-science-team",
        "compliance": "GDPR-compliant"
    },
    properties={
        "experiment_id": "fraud-detection-exp-001",
        "training_date": "2026-02-05",
        "data_lineage": "fraud_raw -> fraud_balanced -> model",
        "metrics": {"auroc": 0.94, "precision": 0.89}
    }
)

registered_model = ml_client.models.create_or_update(model)
print(f"Model registered: {registered_model.name}:{registered_model.version}")
```

**Query model provenance:**

```python
# Retrieve model with full metadata
model = ml_client.models.get(name="fraud-detection-model", version="2")

print(f"Model: {model.name} v{model.version}")
print(f"Training data: {model.tags['training_data']}")
print(f"Trained by: {model.tags['trained_by']}")
print(f"Experiment: {model.properties['experiment_id']}")
print(f"Data lineage: {model.properties['data_lineage']}")
print(f"AUROC: {model.properties['metrics']['auroc']}")
```

**Output:**
```
Model: fraud-detection-model v2
Training data: fraud_dataset_v3_balanced
Trained by: data-science-team
Experiment: fraud-detection-exp-001
Data lineage: fraud_raw -> fraud_balanced -> model
AUROC: 0.94
```

---

### Model Approval Policy (Azure Policy)

**Enforce approved models only:**

```json
{
  "properties": {
    "displayName": "[Preview]: Azure Machine Learning Deployments should only use approved Registry Models",
    "policyType": "BuiltIn",
    "mode": "All",
    "description": "Restrict model deployments to only approved publisher names and asset IDs from Azure Machine Learning Model Catalog.",
    "parameters": {
      "allowedPublisherNames": {
        "type": "Array",
        "metadata": {
          "displayName": "Allowed Publisher Names",
          "description": "List of approved publisher names"
        },
        "defaultValue": ["Microsoft", "OpenAI", "Meta"]
      },
      "approvedAssetIds": {
        "type": "Array",
        "metadata": {
          "displayName": "Approved Asset IDs",
          "description": "List of approved model asset IDs"
        }
      },
      "effect": {
        "type": "String",
        "defaultValue": "Deny",
        "allowedValues": ["Audit", "Deny", "Disabled"]
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments"
          },
          {
            "not": {
              "field": "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments/model.assetId",
              "in": "[parameters('approvedAssetIds')]"
            }
          }
        ]
      },
      "then": {
        "effect": "[parameters('effect')]"
      }
    }
  }
}
```

**Håndhever:**
- Kun modeller fra approved publishers kan deployes
- Må ha gjennomgått security scanning (backdoor detection, adversarial testing)
- Audit trail i Azure Monitor for alle deployment attempts

---

## Anbefalinger for norsk offentlig sektor

### 1. Content Watermarking

**Anbefalte kontroller:**
- **Aktiver C2PA Content Credentials** for all AI-generert innhold (bilder, video, lyd)
- **M365 watermark policy:** Vurder synlige watermarks for video/lyd hvis innholdet kan misbrukes
- **Verifikasjonsrutiner:** Etabler prosedyrer for å verifisere content credentials når innhold mottas eksternt

**Compliance:**
- **Forvaltningsloven § 11a:** AI-generert innhold i saksbehandling må kunne spores
- **Personopplysningsloven:** Hvis AI-generert innhold inneholder persondata, må provenance dokumenteres

### 2. Model Fingerprinting og Provenance

**Anbefalte kontroller:**
- **Model registry:** All modeller skal registreres i Azure ML Model Registry med metadata
- **Data lineage tracking:** Bruk Unity Catalog eller Azure ML lineage for å spore data-til-modell
- **Approval workflows:** Implementer multi-stage godkjenning før prod-deployment
- **Audit logging:** Azure Monitor logging av alle model-relaterte hendelser (registration, approval, deployment)

**Governance:**
- **NIST AI RMF:** Model provenance støtter "Govern" og "Map" functions
- **ISO/IEC 42001:** Krever traceability av AI-systems
- **Digdir AI-prinsipper:** Transparens krever at modeller kan forklares — lineage hjelper

### 3. Supply Chain Security

**Trusselmodell:**
- **Backdoor models:** Adversary embedder backdoor i modell og distribuerer via model marketplace
- **Poisoned datasets:** Training data compromised med adversarial examples
- **Model theft:** Adversary extracts modell via API queries

**Mitigations:**
- **Azure Policy enforcement:** Kun approved models fra trusted publishers
- **Security scanning pipeline:** Hash verification, backdoor scanning, adversarial testing
- **Rate limiting:** Begrens API queries for å stoppe model extraction
- **RBAC:** Kun autorisert personell kan registrere og deploye modeller

### 4. Legal og Contractual Considerations

**IP-beskyttelse:**
- Watermark modeller hvis de representerer betydelig forretningsverdi
- Inkluder IP-klausuler i kontrakter med leverandører (hvem eier modellen?)

**Liability:**
- Hvis AI-generert innhold fører til skade, kan provenance bevise hvem som genererte det
- Viktig for å etablere ansvarslinje i juridiske tvister

---

## For Cosmo Skyberg

### Når dette temaet er relevant

**Trigger-signaler:**
- Kunde spør om "hvordan bevise at innholdet er AI-generert"
- Kunde er bekymret for "model theft" eller "uautorisert bruk av modellen"
- Kunde trenger å oppfylle transparenskrav i AI Act eller GDPR
- Kunde driver med høy-verdi ML-modeller (f.eks. fraud detection, medical diagnostics)
- Kunde jobber i regulerte bransjer (finans, helse, offentlig sektor)

### Conversational framing

"Model fingerprinting og watermarking handler om to ting: **å bevise eierskap av AI-modeller**, og **å merke AI-generert innhold slik at det kan spores**. I Microsoft-stakken har vi innebygde løsninger for begge — C2PA Content Credentials for innhold, og Azure ML Model Registry for modell-provenance."

**Spørsmål å stille:**
1. "Trenger dere å bevise at innhold er AI-generert, eller trenger dere å beskytte selve modellen mot kopiering?"
2. "Jobber dere i en bransje med strenge compliance-krav (GDPR, AI Act, finansregulering)?"
3. "Har dere høy-verdi modeller som representerer kritisk IP?"
4. "Trenger dere å kunne dokumentere data-lineage for audit-formål?"

### Decision tree for anbefalinger

```
Trenger kunde watermarking/fingerprinting?
├─ Ja, for AI-generert innhold (bilder, video, lyd)
│  ├─ → Anbefal: Azure OpenAI (C2PA automatisk)
│  ├─ → Anbefal: M365 watermark policy (hvis synlige merker ønskes)
│  └─ → Anbefal: Verifikasjonsrutiner (contentcredentials.org/verify)
│
├─ Ja, for modell-beskyttelse (IP-beskyttelse, eierskap)
│  ├─ → Anbefal: Azure ML Model Registry med approval workflow
│  ├─ → Anbefal: Azure Policy (kun approved models)
│  ├─ → Anbefal: Audit logging (Azure Monitor)
│  └─ → Anbefal: RBAC (kun autorisert personell kan deploye)
│
├─ Ja, for compliance (GDPR, AI Act, norsk regelverk)
│  ├─ → Anbefal: Data lineage tracking (Unity Catalog eller Azure ML)
│  ├─ → Anbefal: Model provenance metadata (tags, properties)
│  └─ → Anbefal: Audit trails (bevise at data er GDPR-compliant)
│
└─ Nei
   └─ → Fortsett med standard sikkerhetskontroller
```

### Teknisk depth vs. executive summary

**For tekniske stakeholders:**
- Gå i dybden på C2PA-manifest struktur, kryptografisk signering
- Vis kodeeksempler for model registration og provenance queries
- Diskuter steganography i neural networks som avansert teknikk

**For executives:**
- Fokus på compliance (GDPR, AI Act), IP-beskyttelse, reputasjonsrisiko
- Fremhev at Microsoft har **innebygde løsninger** (C2PA, Model Registry) — no custom development
- Fremhev kostnaden ved **ikke** å ha watermarking (tap av IP, compliance-brudd)

### Common pitfalls å advare mot

1. **"Vi kan legge til watermark senere"**
   - Nei — C2PA må være embedded fra generering (kan ikke retrofitte)
   - Anbefal: Aktiver fra dag 1
2. **"Vi trenger ikke model provenance, vi har god intern kontroll"**
   - Compliance-krav (AI Act, GDPR) krever dokumentasjon
   - Audit trails er kritiske for incident response
3. **"Watermark kan fjernes hvis noen er motivert nok"**
   - Korrekt for synlige watermarks, men C2PA-signature er tamper-evident
   - Detection av manipulasjon er også verdifullt

---

*(Verified MCP 2026-04)*

## Kilder

1. **C2PA Specification** — https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html
2. **Azure OpenAI Content Credentials** — https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-credentials
3. **Azure Text to Speech Content Credentials** — https://learn.microsoft.com/en-us/azure/ai-services/speech-service/text-to-speech-avatar/content-credentials
4. **Microsoft 365 Watermarking** — https://learn.microsoft.com/en-us/copilot/microsoft-365/watermarks
5. **Azure Machine Learning Model Management** — https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment
6. **Microsoft Security Benchmark: AI-1 (Approved Models)** — https://learn.microsoft.com/en-us/security/benchmark/azure/mcsb-v2-artificial-intelligence-security
7. **Threat Modeling AI/ML Systems** — https://learn.microsoft.com/en-us/security/engineering/threat-modeling-aiml
8. **Unity Catalog Data Lineage** — https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/data-lineage
9. **Content Authenticity Initiative (CAI)** — https://opensource.contentauthenticity.org/
10. **Coalition for Content Provenance and Authenticity (C2PA)** — https://c2pa.org/

---

**Sist oppdatert:** 2026-04
**Neste review:** Q3 2026 (eller ved nye C2PA-oppdateringer)
