"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS

Den globale COVID-19-pandemi har fremskyndet behovet for at verificere og integrere brugere online på tværs af flere brancher, såsom finansielle tjenesteydelser, forsikring og sundhedspleje. Når det kommer til brugeroplevelse, er det afgørende at levere en friktionsfri transaktion og samtidig opretholde en høj standard for identitetsbekræftelse. Spørgsmålet er, hvordan du verificerer rigtige mennesker i den digitale verden?

Amazon-anerkendelse giver forudtrænede ansigtsgenkendelse og analysefunktioner til identitetsbekræftelse til dine onlineapplikationer, såsom bank, fordele, e-handel og meget mere.

I dette indlæg præsenterer vi "ID + Selfie" identitetsbekræftelsesdesignmønsteret og prøvekode du kan bruge til at oprette dit eget REST-slutpunkt for identitetsbekræftelse. Dette er et almindeligt designmønster, som du kan inkorporere i eksisterende eller nye løsninger, der kræver ansigtsbaseret identitetsbekræftelse. Brugeren fremviser en form for identifikation som et kørekort eller pas. Brugeren tager derefter en real-time selfie med applikationen. Vi sammenligner derefter ansigtet fra dokumentet med real-time selfie taget på deres enhed.

Amazon Rekognition CompareFaces API

Kernen i "ID + Selfie"-designmønsteret er sammenligningen af ​​ansigtet i selfien med ansigtet på identifikationsdokumentet. Til dette bruger vi Amazon Rekognition CompareFaces API. API'en sammenligner et ansigt i kildeinputbilledet med et eller flere ansigter, der er registreret i målinputbilledet. I det følgende eksempel sammenligner vi et prøvekørekort (til venstre) med en selfie (til højre).

Kilde mål
"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Følgende er et eksempel på API-koden:

response = client.compare_faces(SimilarityThreshold=80,
                              SourceImage={'Bytes': s_bytes},
                              TargetImage={'Bytes': t_bytes})

for faceMatch in response['FaceMatches']:
    position = faceMatch['Face']['BoundingBox']
    similarity = str(faceMatch['Similarity'])

Flere værdier returneres i Sammenlign Faces API-svar. Vi fokuserer på Similarity værdi returneret ind FaceMatches for at validere, at selfien matcher det angivne id.

Forståelse af nøglejusteringsparametre

SimilarityThreshold er indstillet til 80 % som standard og vil kun returnere resultater med en lighedsscore større end eller lig med 80 %. Juster værdien ved at angive SimilarityThreshold parameter.

QualityFilter er en inputparameter til at bortfiltrere registrerede ansigter, der ikke opfylder en påkrævet kvalitetslinje. Kvalitetslinjen er baseret på en række almindelige use cases. Brug QualityFilter for at indstille kvalitetslinjen ved at angive LOW, MEDIUM eller HIGH. Hvis du ikke vil filtrere ansigter af dårlig kvalitet, skal du angive NONE. Standardværdien er NONE.

Løsningsoversigt

Du kan oprette en "ID + Selfie" API til verifikation af digital identitet ved at implementere følgende komponenter:

  • En REST API med en POST-metode, der giver os mulighed for at sende selfie og identifikationsnyttelast og returnerer et svar, i dette tilfælde lighedsscoren
  • En funktion til at modtage nyttelasten, konvertere billederne til det rigtige format og kalde Amazon Rekognition compare_faces API.

Vi implementerer Amazon API Gateway for REST API-funktionalitet og AWS Lambda for funktionen.

Følgende diagram illustrerer løsningsarkitekturen og arbejdsgangen.

"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Arbejdsgangen indeholder følgende trin:

  1. Brugeren uploader det nødvendige identifikationsdokument og en selfie.
  2. Klienten indsender identifikationsdokumentet og selfie til REST-slutpunktet.
  3. REST-endepunktet returnerer en lighedsscore til klienten.
  4. En evaluering foretages gennem forretningslogik i din ansøgning. For eksempel, hvis lighedsscoren er under 80 %, består den ikke i det digitale identitetstjek; ellers består den den digitale identitetskontrol.
  5. Klienten sender status til brugeren.

Lambda kode

Lambda-funktionen konverterer den indgående nyttelast fra base64 til byte for hvert billede og sender derefter kilden (selfie) og målet (identifikation) til Amazon Rekognition compare_faces API og returnerer lighedsscoren modtaget i selve API-svaret. Se følgende kode:

import boto3
import sys
import json
import base64


def lambda_handler(event, context):

  client = boto3.client('rekognition')

  payload_dict = json.loads(json.loads(event['body']))
  selfie = payload_dict['selfie']
  dl = payload_dict['dl']

  # convert text to base64
  s_base64 = dl.encode('utf-8')
  t_base64 = selfie.encode('utf-8')
  #convert base64 to bytes
  s_bytes = base64.b64decode(s_base64)
  t_bytes = base64.b64decode(t_base64)
  response = client.compare_faces(SimilarityThreshold=80,
                                SourceImage={'Bytes': s_bytes},
                                TargetImage={'Bytes': t_bytes})

  for faceMatch in response['FaceMatches']:
      position = faceMatch['Face']['BoundingBox']
      similarity = str(faceMatch['Similarity'])

  return {

    'statusCode': response['ResponseMetadata']['HTTPStatusCode'],

    'body': similarity

  }

Implementer projektet

Dette projekt er tilgængeligt for implementering AWS prøver med AWS Cloud Development Kit (AWS CDK). Du kan klone depotet og bruge følgende AWS CDK-proces til at implementere til din AWS-konto.

  1. Konfigurer en bruger, der har tilladelser til programmæssigt at implementere løsningsressourcerne gennem AWS CDK.
  2. Indstil AWS kommandolinjegrænseflade (AWS CLI). For instruktioner, se Konfiguration af AWS CLI.
  3. Hvis det er første gang, du bruger AWS CDK, skal du udfylde de forudsætninger, der er angivet i Arbejder med AWS CDK i Python.
  4. Klon GitHub repository.
  5. Skab det virtuelle miljø. Kommandoen du bruger afhænger af dit OS:
    1. Hvis du bruger Windows, skal du køre følgende kommando i dit terminalvindue fra kilden til det klonede lager:
      ..venvScriptsactivate

    2. Hvis du bruger Mac eller Linux, skal du køre følgende kommando i dit terminalvindue fra kilden til det klonede lager:
      .venv/bin/activate

  6. Efter aktivering af det virtuelle miljø skal du installere appens standardafhængigheder:
    python -m pip install -r requirements.txt

  7. Nu hvor miljøet er sat op, og kravene er opfyldt, kan vi udstede AWS CDK-implementeringskommandoen for at implementere dette projekt til AWS:
    CDK Deploy

Foretag API-kald

Vi skal sende nyttelasten i base64-format til REST-endepunktet. Vi bruger en Python-fil til at foretage API-kaldet, som giver os mulighed for at åbne kilde- og målfilerne, konvertere dem til base64 og sende nyttelasten til API-gatewayen. Denne kode er tilgængelig i depotet.

Bemærk at SOURCE , TARGET filplaceringer vil være på dit lokale filsystem, og URL'en er API Gateway URL'en, der blev genereret under oprettelsen af ​​projektet.

import requests
from base64 import b64encode
from json import dumps

TARGET = '.png'
SOURCE = .png'
URL = "https://.execute-api..amazonaws.com//ips"
ENCODING = 'utf-8'
JSON_NAME = 'output.json'

# first: reading the binary stuff
with open(SOURCE, 'rb') as source_file:
    s_byte_content = source_file.read()
with open(TARGET, 'rb') as target_file:
    t_byte_content = target_file.read()

# second: base64 encode read data
s_base64_bytes = b64encode(s_byte_content)
t_base64_bytes = b64encode(t_byte_content)

# third: decode these bytes to text
s_base64_string = s_base64_bytes.decode(ENCODING)
t_base64_string = t_base64_bytes.decode(ENCODING)

# make raw data for json
raw_data = {
    " dl ": s_base64_string,
    " selfie ": t_base64_string
}

# now: encoding the data to json
json_data = dumps(raw_data, indent=2)

response = requests.post(url=URL, json=json_data)
response.raise_for_status()

print("Status Code", response.status_code)
print("Body ", response.json())

Ryd op

Vi brugte AWS CDK til at bygge dette projekt, så vi kan åbne vores projekt lokalt og udstede følgende AWS CDK-kommando for at rydde op i ressourcerne:

CDK Destroy

Konklusion

Der har du det, "ID + Selfie" designmønsteret med en simpel API, som du kan integrere med din applikation for at udføre digital identitetsbekræftelse. I det næste indlæg i vores serie udvider vi dette mønster yderligere ved at udtrække tekst fra identifikationsdokumentet og søge i en samling ansigter for at forhindre duplikering.

Hvis du vil vide mere, skal du tjekke Amazon Rekognition Developer Guide på at opdage og analysere ansigter.


Om forfatterne

"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS PlatoBlockchain Data Intelligence. Lodret søgning. Ai. Mike Ames er Principal Applied AI/ML Solutions Architect hos AWS. Han hjælper virksomheder med at bruge maskinlæring og AI-tjenester til at bekæmpe svindel, spild og misbrug. I hans fritid kan du finde ham på mountainbike, kickboksning eller spille guitar i et 90'er metalband.

"ID + Selfie" - Forbedring af digital identitetsbekræftelse ved hjælp af AWS PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Noah Donaldson er en løsningsarkitekt hos AWS, der støtter føderale finansielle organisationer. Han er begejstret for AI/ML-teknologi, der kan reducere manuelle processer, forbedre kundeoplevelser og hjælpe med at løse interessante problemer. Uden for arbejdet nyder han at tilbringe tid på isen med sin søn, der spiller hockey, på jagt med sin ældste datter og skyde bøjler med sin yngste datter.

Tidsstempel:

Mere fra AWS maskinindlæring