bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
193 lines
6.8 KiB
Markdown
193 lines
6.8 KiB
Markdown
# quiXzoom — Verified Reality
|
|
*Beslutad: 2026-06-17. Konceptuell grund för hela produkten.*
|
|
|
|
---
|
|
|
|
## Vad produkten egentligen är
|
|
|
|
> Zoomern samlar inte in bilder.
|
|
> Zoomern samlar in **verifierbar verklighet**,
|
|
> medan AI avgör när tillräcklig evidens har samlats in
|
|
> för att uppdragsgivarens datakrav ska anses uppfyllda.
|
|
|
|
Uppdragsgivaren köper inte bilder.
|
|
De köper **förtroende för att en observation av verkligheten faktiskt har ägt rum**.
|
|
|
|
---
|
|
|
|
## De fyra nivåerna
|
|
|
|
### Nivå 1 — Foto
|
|
Användaren tar en bild.
|
|
|
|
Problem: lätt att fuska, dålig kvalitet, många omtag.
|
|
Liveness: **noll**.
|
|
|
|
---
|
|
|
|
### Nivå 2 — Smart Scan
|
|
Användaren filmar objektet. AI väljer bästa frames, vinklar, OCR-underlag automatiskt.
|
|
|
|
Liveness: **låg** — en stillbild kan inte ersätta scanning, men en inspelad video kan.
|
|
|
|
---
|
|
|
|
### Nivå 3 — Guided Evidence Collection
|
|
AI kräver aktiv rörelse under scanning.
|
|
|
|
Exempel på direktiv i sekvens:
|
|
- "Gå ett steg åt vänster"
|
|
- "Luta telefonen uppåt"
|
|
- "Zooma in etiketten"
|
|
- "Visa objektets högra sida"
|
|
|
|
Här börjar det bli svårt att fuska med en stillbild eller förberedd video.
|
|
Liveness: **medium** — kräver att man aktivt följer instruktioner.
|
|
|
|
---
|
|
|
|
### Nivå 4 — Liveness Verified Evidence
|
|
Systemet bevisar att:
|
|
- Objektet **existerar**
|
|
- Objektet **finns på platsen** (geo-verifierat)
|
|
- Objektet **filmas just nu** (inte en inspelning)
|
|
- Videoströmmen **är äkta** (inte en skärm som visar en annan skärm)
|
|
|
|
Liveness: **hög** — korrelerade signaler från oberoende sensorer.
|
|
|
|
---
|
|
|
|
## Liveness Score — poängsystem, inte binärt
|
|
|
|
```
|
|
Liveness Score: 97/100
|
|
|
|
✓ Kamerarörelse (gyro-pattern matchar naturlig rörelse)
|
|
✓ Parallax verifierad (djupförändring vid rörelse)
|
|
✓ Fokusförändringar (autofokus-aktivitet matchar scen)
|
|
✓ GPS verifierad (±15m från uppdragets adress)
|
|
✓ App Attest verifierad (iOS / Android Play Integrity)
|
|
✓ Videoström kontinuerlig (inga klipp eller hopp)
|
|
✓ Challenge-respons löst (se nedan)
|
|
⚠ Ljusskiftningar svaga (inomhus, acceptabelt)
|
|
|
|
Risk: låg
|
|
```
|
|
|
|
Varje signal är oberoende. Förfalskning av en signal hjälper inte — alla måste korrelera.
|
|
|
|
Poängsystemet möjliggör kalibrering per uppdragstyp:
|
|
- Lågvärdesuppdrag: Liveness Score >60 accepteras
|
|
- Högvärdesuppdrag (infrastruktur, juridisk dokumentation): >90 krävs
|
|
|
|
---
|
|
|
|
## Challenge-Response — det slumpmässiga testet
|
|
|
|
Vid varje scanning-session genererar systemet en unik challenge-sekvens **efter** att sessionen startar. Aldrig förberäknad.
|
|
|
|
Exempel på en session:
|
|
```
|
|
T+0s: "Visa hela elmätaren"
|
|
T+8s: "Gå ett steg bakåt" ← genererad vid T+6s
|
|
T+14s: "Zooma in på etiketten" ← genererad vid T+12s
|
|
T+21s: "Visa plomberingen" ← genererad vid T+19s
|
|
```
|
|
|
|
Instruktionerna genereras i realtid baserat på:
|
|
- Vad systemet ännu inte har verifierat (saknade evidence requirements)
|
|
- En slumpmässig rörelsekomponent (för liveness, inte för data)
|
|
|
|
**Varför det fungerar:**
|
|
En inspelning som gjordes igår kan inte svara på en challenge som genererades för 8 sekunder sedan. En skärm som visar en annan skärm saknar korrekt parallax. En stillbild rör sig inte när telefonen rör sig.
|
|
|
|
---
|
|
|
|
## Signalerna i detalj
|
|
|
|
| Signal | Vad den mäter | Svår att förfalska? |
|
|
|--------|--------------|---------------------|
|
|
| Gyrodata | Naturliga handhållna rörelser | Ja — kräver synkad servo |
|
|
| Accelerometer | Steg, vibrationer, tyngdkraft | Ja |
|
|
| Parallax | Djupförändring vid sidorörelse | Mycket — kräver 3D-modell |
|
|
| Fokusförändringar | Autofokus aktiverar vid avståndsbyte | Ja |
|
|
| Ljusskiftningar | Naturliga skuggor/reflexer i miljön | Delvis |
|
|
| GPS + tid | Plats och tidpunkt | Delvis (GPS-spoofing möjligt men detekterbart) |
|
|
| App Attest (iOS) | Enhetens integritet, ej jailbreakad | Hög |
|
|
| Play Integrity (Android) | Samma | Hög |
|
|
| Videoström-kontinuitet | Inga klipp, inga frame-hopp | Ja |
|
|
| Challenge-respons | Rätt rörelse vid rätt tidpunkt | Mycket hög |
|
|
|
|
---
|
|
|
|
## Evidenspaketet (uppdaterat)
|
|
|
|
Utöver frames innehåller paketet nu sensor-telemetri:
|
|
|
|
```json
|
|
{
|
|
"control_point": "electricity_meter",
|
|
"session_id": "sess_abc123",
|
|
"liveness_score": 97,
|
|
"liveness_signals": {
|
|
"gyro_natural": true,
|
|
"parallax_verified": true,
|
|
"focus_changes": 4,
|
|
"gps_match": true,
|
|
"app_attest": true,
|
|
"stream_continuous": true,
|
|
"challenge_responses": 3,
|
|
"challenge_pass_rate": 1.0
|
|
},
|
|
"evidence": [
|
|
{ "requirement_id": "e1", "frame": "frame_142.jpg", "confidence": 0.97 },
|
|
{ "requirement_id": "e2", "frame": "frame_198.jpg", "confidence": 0.94, "value": "SE-4821-9938-01" },
|
|
{ "requirement_id": "e3", "frame": "frame_265.jpg", "confidence": 0.91, "value": "04821.3" },
|
|
{ "requirement_id": "e4", "frame": "frame_302.jpg", "confidence": 0.88 }
|
|
],
|
|
"geo": { "lat": 59.334, "lng": 18.063, "accuracy_m": 4 },
|
|
"scan_duration_ms": 23400
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Vad detta innebär för marknaden
|
|
|
|
**Foto-verifiering** (konkurrenterna): bilder + metadata. Körbar på 2015 års teknik. Lätt att fuska.
|
|
|
|
**quiXzoom Verified Reality**: kryptografiskt attesterat evidenspaket med sensor-korrelation och challenge-response. Omöjligt att fabricera utan att vara på platsen med rätt enhet vid rätt tidpunkt.
|
|
|
|
Det öppnar marknader som kräver juridisk bevisning:
|
|
- Försäkringsärenden (bevisbörda)
|
|
- Infrastrukturkontroller (myndighetsrapportering)
|
|
- Fastighetsbesiktning (tvister)
|
|
- KYC / adressverifiering (bank/fintech)
|
|
|
|
För dessa köpare är "förtroende" inte ett mjukt värde — det är ett juridiskt krav.
|
|
|
|
---
|
|
|
|
## Arkitekturkonsekvenser
|
|
|
|
1. **Sensor-pipeline** måste vara native (React Native räcker inte för gyro-sampling i hög frekvens) → native iOS/Android modul
|
|
2. **Challenge-generator** måste vara server-side och stateless → kan inte förutsägas av klienten
|
|
3. **App Attest / Play Integrity** måste integreras från dag 1 — retroaktiv integration är svår
|
|
4. **Liveness Score-modellen** måste kalibreras per uppdragstyp — inte en global tröskel
|
|
5. **Audit trail** är nu ett rättsligt underlag, inte bara en logg → immutable storage, signerat
|
|
|
|
---
|
|
|
|
## Öppna frågor (uppdaterade)
|
|
|
|
1. **Liveness Score-tröskel per uppdragstyp** — vem sätter dem? Uppdragsgivaren, quiXzoom, eller automatisk kalibrering?
|
|
2. **Challenge-sekvens-längd** — hur många challenges per session utan att det känns irriterande?
|
|
3. **GPS-spoofing** — accepterar vi att det går att fuska med GPS om alla andra signaler är gröna?
|
|
4. **Offline-liveness** — App Attest kräver nät. Hur hanterar vi scanning i tunnlar/källare?
|
|
5. **Juridisk status** — behöver vi ett yttrande om beviskraft i svensk/EU-rätt för att sälja till försäkringsbolag?
|
|
|
|
---
|
|
|
|
*Bygger på: QUIXZOOM_SMART_SCAN.md, QUIXZOOM_AVO_MASTERPROMPT_V2.md*
|
|
*Nästa steg: Native iOS proof-of-concept för gyro-pipeline + challenge-response.*
|