Übersicht
Warnungen im Liveness-Bericht kennzeichnen jede Bedingung, die Didit während der Durchführung der Liveness-Prüfung festgestellt hat. Sie werden imwarnings[]-Array jedes Eintrags in liveness_checks[] ausgegeben (siehe Liveness-Bericht), wobei feature auf "LIVENESS" gesetzt ist. Jeder Eintrag folgt dem gemeinsamen Aufbau des Warnungsobjekts: feature, risk, additional_data, log_type, short_description, long_description, node_id.
Jede Warnung hat drei Ebenen:
- Der
risk-Code — eine feste Kennung, die Sie in Ihrem Code abgleichen können (die unten aufgeführten Codes). - Der
log_type— einer der Werteinformation,warningodererror. Risiken mit automatischer Ablehnung weisen immererrorauf. Bei konfigurierbaren Risiken wird er von der konfigurierten Aktion abgeleitet: Keine Aktion →information, Überprüfung →warning, Ablehnen →error. Bei schwellenwertbasierten Risiken (LOW_LIVENESS_SCORE,LOW_FACE_QUALITY) lautet ererror, wenn der Wert den Ablehnungsschwellenwert erreicht oder unterschreitet, undwarning, wenn er nur den Überprüfungsschwellenwert erreicht oder unterschreitet. - Die Auswirkung auf die Entscheidung — dasselbe Routing bestimmt den
statusdes Liveness-Berichts: Eine Überprüfungsaktion versetzt ihn inIn Review, eine Ablehnungsaktion (oder jedes Risiko mit automatischer Ablehnung) inDeclined, und Keine Aktion belässt ihn unverändert.
PASSIVE ist (Prüfungen auf mehrere Gesichter, Bildqualität und Gesichtshelligkeit). Die folgenden Tabellen führen alle Liveness-Risikocodes und deren Schweregrade auf — weitere Liveness-Risikocodes existieren nicht.
Bedingungen für automatische Ablehnung
Die folgenden Risiken versetzen den Liveness-Bericht (und die Sitzung) immer mitlog_type: "error" in den Status Declined:
Wenn
NO_FACE_DETECTED ausgelöst wird, wird LOW_LIVENESS_SCORE unterdrückt (es ist kein Gesicht vorhanden, für das ein Score berechnet werden könnte).
Konfigurierbare Verifizierungseinstellungen
In der Didit-Konsole sind Liveness-Risiken unter den folgenden Workflow-Einstellungen gruppiert:Erzeugte Warnungen
Kern-Liveness
Integrität des Erfassungskanals
Signale für Injection-Angriffe, die vom Client zum Erfassungszeitpunkt gemeldet werden. Im Gegensatz zu Präsentationsangriffen (ein Artefakt, das vor eine echte Kamera gehalten wird) beschreiben diese, dass der Kamera-Feed selbst ersetzt oder abgefangen wurde. Jedes Signal ist pro Workflow konfigurierbar und standardmäßig auf keine Aktion gesetzt, sodass die Aktivierung der Funktion keine Entscheidungen ändert, bis Sie dies explizit festlegen.Browser stellen keinem Anbieter eine Attestierung der Kameraquelle auf Betriebssystemebene zur Verfügung, sodass diese Signale im Web eher erhärtende Hinweise als ein Beweis sind. Im Web bedeutet das Ergebnis
null nicht ermittelt (Gerätebezeichnungen sind nicht verfügbar, bis die Kameraberechtigung erteilt wurde) und löst niemals ein Risiko aus.FRAME_INJECTION_SUSPECTED gemeldet wird: Er wird anhand der Geräteumgebung erkannt – dem Rendering-Stack und dem im User-Agent gemeldeten Gerätemodell – und nicht anhand des Kameranamens. Befunde, die aus der Geräteumgebung stammen, enthalten additional_data.reason: "emulated_capture_device", was sie von der eigenen Frame-Analyse des Liveness-Modells unterscheidet.
Die Erkennung des Geräts über einen Browser ist ein Indiz, keine Attestierung, und ein entschlossener Angreifer kann dies manipulieren. Die nativen mobilen SDKs melden stärkere Integritätssignale auf Betriebssystemebene, die ein Browser nicht sehen kann (Emulator, gerootetes oder gejailbreaktes Gerät, Laufzeit-Hooking, angehängter Debugger), jeweils mit einer eigenen konfigurierbaren Aktion unter Geräte- und Laufzeitintegrität. Diese Signale erhöhen den Aufwand für den Angreifer erheblich, beweisen für sich allein jedoch nicht, dass eine Aufnahme von einem echten Gerät stammt. Geräteintegritätssignale sind unabhängig von der Liveness-Methode, sodass sie mit Passive, 3D Flash oder 3D Action & Flash kombiniert werden können.
Forensische Plausibilitätsprüfung der Aufzeichnung
LIVENESS_VIDEO_ANOMALY wird serverseitig auf der gespeicherten Liveness-Aufzeichnung berechnet, unabhängig vom Liveness-Modell. Es erkennt eine sich bewegende Sequenz, die sich über mehrere Zyklen hinweg wiederholt, was auf einen Video-Loop hinweist.
Legen Sie die Aktion auf Ihrem Liveness- oder Altersschätzungsknoten fest:
NO_ACTION zeichnet einen Informationsbefund auf, REVIEW kann eine bereits entschiedene Verifizierung zu In Prüfung eskalieren, und DECLINE kann sie zu Abgelehnt eskalieren. Die Prüfung läuft asynchron ab, sodass eine Eskalation nach dem ersten Ergebnis eintreffen kann. Eine schwerwiegendere bestehende Entscheidung wird nicht herabgestuft, und manuelle Prüfungsentscheidungen bleiben erhalten.
Befunde der Version 2 enthalten forensics_version: 2, repeated_sequence-Nachweise und repeated_moving_sequence in anomaly_reasons. Zustellungsmessungen wie unique_frame_ratio, static_pair_ratio, decoded_fps_ratio und max_frame_gap_seconds bleiben diagnostische Werte; sie können für sich allein kein Replay belegen. Ältere Befunde beschreiben die damals verwendete Version des Detektors und werden nicht rückwirkend neu klassifiziert.
Dies ist ein konservatives zusätzliches Signal, keine vollständige Erkennung von synthetischen Medien oder eingeschleustem Video. Eine Aufzeichnung ohne Auffälligkeiten ist kein Beweis für Liveness. Kurze oder uneindeutige Aufnahmen sowie Aufnahmen ohne verwertbare Replay-Nachweise bleiben von dieser Prüfung unmarkiert. Fehlende oder unlesbare Aufzeichnungen erzeugen keinen Befund aus dieser Prüfung; andere Verifizierungsprüfungen gelten weiterhin.
Sitzungsübergreifender Gesichtsabgleich
Bei Übereinstimmungen mit importierten Gesichtern oder Listeneinträgen (die keine Sitzung haben) sind die Werte
*_session_id, *_session_number und api_service in additional_data jeweils null.
Gesichter desselben Benutzers (gleiche vendor_data oder derselbe Vendor-Benutzer, falls verfügbar) werden von der gesamten Indexsuche ausgeschlossen – sowohl von der Duplikaterkennung als auch vom Sperrlisten-Screening. Die Rangfolge bei Übereinstimmungen lautet: Sperrliste exakt → Positivliste exakt → Duplikat exakt → Sperrliste möglich → Positivliste möglich → Duplikat möglich – pro Bericht wird nur einer dieser sechs sich gegenseitig ausschließenden Codes ausgegeben. DUPLICATED_FACE_NAME_MISMATCH gehört nicht zu dieser Vorranggruppe: Es handelt sich um einen zusätzlichen Code, der zusätzlich zu DUPLICATED_FACE ausgegeben wird, wenn auch die Identitätsprüfung fehlschlägt, und niemals an dessen Stelle. additional_data.name_match_score enthält niemals die verglichenen Namen – nur IDs und einen Übereinstimmungswert, sodass keine personenbezogenen Daten (PII) in der Payload der Warnung landen.
Ein Name, der auf jedem Dokument in einem anderen Schriftsystem geschrieben ist (beispielsweise hebräisch auf dem einen und lateinisch auf dem anderen), kann den Schwellenwert unterschreiten, selbst wenn beide Sitzungen derselben Person gehören. In diesem einen Fall wird DUPLICATED_FACE_NAME_MISMATCH nicht ausgegeben, wenn sich die Ausweisdokumente beider Sitzungen in allen folgenden Punkten gegenseitig bestätigen:
- Beide Dokumente weisen denselben Ausstellungsstaat auf.
- Ein Identifikator stimmt zwischen beiden Dokumenten exakt überein.
document_numberundpersonal_numberkönnen gleichwertig verwendet werden, da dieselbe nationale Kennnummer je nach Dokumenttyp in jedem der beiden Felder stehen kann. - Sofern beide Dokumente ein Geburtsdatum enthalten, handelt es sich um dasselbe Datum.
Qualität der passiven Liveness-Erkennung (nur bei method = "PASSIVE")
LOW_FACE_LUMINANCE und HIGH_FACE_LUMINANCE schließen sich gegenseitig aus – die Helligkeit liegt entweder unter dem Minimum oder über dem Maximum, niemals beides.
Altersschätzung (adaptive Workflows und AGE_ESTIMATION-Knoten)
Exakte Beschreibungsstrings
Die API gibt für jedes Risiko exakt dieseshort_description- und long_description-Zeichenfolgen zurück:
Standalone-API für passive Liveness
Die Standalone-Liveness-API greift auf dieselben Risiko-Codes zurück, weist jedoch einige Verhaltensunterschiede auf:NO_FACE_DETECTEDundLOW_LIVENESS_SCOREschließen sich gegenseitig aus – die Score-Prüfung wird nur ausgeführt, wenn ein Gesicht gefunden wurde.LOW_LIVENESS_SCOREgreift gegen denface_liveness_score_decline_thresholdder Anfrage (Standardwert 30) und enthält immerlog_type: "error".POSSIBLE_FACE_IN_BLOCKLISTwird als Ablehnung (log_type: "error") statt als Prüfung behandelt.MULTIPLE_FACES_DETECTEDenthältlog_type: "warning", während die Risiken für doppelte Gesichter informativ bleiben. Nur Warnungen der Stufeerrorsetzen denstatusder Standalone-Antwort aufDeclined.- Standalone-Warnungseinträge enthalten
feature, aber keinenode_id.
Beispiele
Automatisches Ablehnen bei erkanntem Angriff
Konfigurierbare Warnungen bei einer passiven Erfassung
Dupliziertes Gesicht mit Payload
log_type: "warning" enthält und der Status des Liveness-Berichts In Review lautet. Mit dem Standardwert (Keine Aktion) würde sie stattdessen log_type: "information" enthalten. api_service ist null, da das übereinstimmende Gesicht aus einer Workflow-Sitzung und nicht aus einem eigenständigen API-Aufruf stammt.
Dupliziertes Gesicht unter einem anderen Namen
DUPLICATED_FACE verbleibt bei seiner eigenen konfigurierten Aktion (hier: Keine Aktion – log_type: "information"), während DUPLICATED_FACE_NAME_MISMATCH seine eigene Aktion trägt, standardmäßig Überprüfung (log_type: "warning"). Der Status des Liveness-Berichts richtet sich nach dem schwerwiegenderen der beiden: hier In Review, obwohl die einfache Einstellung für duplizierte Gesichter allein dies nicht markiert hätte.
Plausibilitätsanomalie der Aufnahme mit ihren Messwerten
log_type ist information, da die konfigurierte Aktion NO_ACTION lautet. Die Diagnostik zur Frame-Zustellung, die in diesem Beispiel aus Gründen der Übersichtlichkeit weggelassen wurde, löst den Befund nicht aus.
Warnungstypen
Jedem Risiko wird basierend auf der Konfiguration Ihrer Anwendung ein Schweregrad zugewiesen. Die drei Schweregrade sind:Verwandte Themen
- Liveness-Bericht – vollständiges Berichtsschema und Statusangaben.
- Warnungen beim Gesichtsabgleich – zugehörige Warnungen beim 1:1-Gesichtsabgleich.
- Webhooks –
session.status.updatedübermittelt die Warnungen, sobald der Liveness-Schritt abgeschlossen ist. - Datenmodelle – Liveness-Prüfung – kanonisches Schema mit allen Feldern.
- Datenmodelle – Warnungsobjekt – die Struktur jedes Eintrags in
warnings[].