Zum Hauptinhalt springen

Übersicht

Warnungen im Liveness-Bericht kennzeichnen jede Bedingung, die Didit während der Durchführung der Liveness-Prüfung festgestellt hat. Sie werden im warnings[]-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:
  1. Der risk-Code — eine feste Kennung, die Sie in Ihrem Code abgleichen können (die unten aufgeführten Codes).
  2. Der log_type — einer der Werte information, warning oder error. Risiken mit automatischer Ablehnung weisen immer error auf. 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 er error, wenn der Wert den Ablehnungsschwellenwert erreicht oder unterschreitet, und warning, wenn er nur den Überprüfungsschwellenwert erreicht oder unterschreitet.
  3. Die Auswirkung auf die Entscheidung — dasselbe Routing bestimmt den status des Liveness-Berichts: Eine Überprüfungsaktion versetzt ihn in In Review, eine Ablehnungsaktion (oder jedes Risiko mit automatischer Ablehnung) in Declined, und Keine Aktion belässt ihn unverändert.
Einige Risiken werden nur ausgegeben, wenn die Liveness-Methode 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 mit log_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.
Eine virtuelle Kamera wird anhand ihres Gerätenamens identifiziert; eine Kamera, die das Betriebssystem unter einem gewöhnlichen Namen anzeigt, wird daher auf diese Weise nicht erkannt. In einem Android-Emulator wird die neu zugeordnete Kamera wie jede integrierte Kamera bezeichnet, weshalb der Fall der emulierten Hardware stattdessen über 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_number und personal_number kö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.
Wenn die Namen im selben Schriftsystem vorliegen, wenn sich der Identifikator oder der Ausstellungsstaat unterscheidet oder fehlt oder wenn sich die Geburtsdaten widersprechen, wird die Warnung dennoch wie oben beschrieben ausgegeben.

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 diese short_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_DETECTED und LOW_LIVENESS_SCORE schließen sich gegenseitig aus – die Score-Prüfung wird nur ausgeführt, wenn ein Gesicht gefunden wurde. LOW_LIVENESS_SCORE greift gegen den face_liveness_score_decline_threshold der Anfrage (Standardwert 30) und enthält immer log_type: "error".
  • POSSIBLE_FACE_IN_BLOCKLIST wird als Ablehnung (log_type: "error") statt als Prüfung behandelt.
  • MULTIPLE_FACES_DETECTED enthält log_type: "warning", während die Risiken für doppelte Gesichter informativ bleiben. Nur Warnungen der Stufe error setzen den status der Standalone-Antwort auf Declined.
  • Standalone-Warnungseinträge enthalten feature, aber keine node_id.

Beispiele

Automatisches Ablehnen bei erkanntem Angriff

Konfigurierbare Warnungen bei einer passiven Erfassung

Dupliziertes Gesicht mit Payload

Hier ist die Aktion für duplizierte Gesichter auf Überprüfung eingestellt, sodass die Warnung 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

Dieses Beispiel zeigt die Replay-Nachweise aus einer Aufnahme, die drei Kopien einer bewegten Sequenz enthält. 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

Zuletzt geändert am 7. November 2026