Questa pagina descrive come utilizzare la funzionalità Password defense di reCAPTCHA per rilevare le divulgazioni di password e le credenziali violate per impedire i takeover dell'account (ATO) e gli attacchi di credential stuffing. Con reCAPTCHA, puoi eseguire controlli regolari delle credenziali utente (password) nell'ambito di qualsiasi valutazione per assicurarti che non siano state divulgate o violate. Per eseguire queste valutazioni, Google utilizza la funzionalità Controllo password.
Prima di iniziare
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
Per utilizzare la funzionalità Password defense, è necessario che la fatturazione sia collegata e abilitata nel progetto. Puoi abilitare la fatturazione utilizzando una carta di credito o un ID di fatturazione del progetto Google Cloud esistente. Se hai bisogno di assistenza per la fatturazione, contatta l'assistenza per la fatturazione Cloud.
Verificare la presenza di credenziali violate e divulgate
Puoi verificare se un insieme di credenziali è stato compromesso utilizzando funzioni crittografiche o il container Docker.
Il container Docker è un client open source che implementa il calcolo multipartitico sicuro necessario per preservare la privacy degli utenti finali e cercare in modo sicuro le divulgazioni di password. Per maggiori informazioni, consulta il repository GitHub. Il container Docker astrae la complessità dell'implementazione degli algoritmi crittografici e semplifica il processo di installazione. Ti consente anche di ospitare l'app container nella tua infrastruttura.
Funzione crittografica
Per verificare se un insieme di credenziali è stato compromesso, utilizza Password defense quando crei valutazioni per azioni come accessi, modifiche delle password e reimpostazioni delle password.
Per verificare la presenza di divulgazioni di password e credenziali violate:
- Genera parametri di richiesta.
- Crea una valutazione per rilevare la divulgazione delle password.
- Verifica le credenziali divulgate da un'analisi.
- Interpreta il verdetto e intervieni.
Genera parametri di richiesta
Calcola i parametri di richiesta necessari utilizzando le funzioni crittografiche richieste dal protocollo di elevata privacy. reCAPTCHA fornisce librerie Java e TypeScript per aiutarti a generare questi campi:
Per creare verifiche di controllo delle password, crea un oggetto
PasswordCheckVerifier.PasswordCheckVerifier verifier = new PasswordCheckVerifier();Per avviare una verifica, chiama
PasswordCheckVerifier#createVerification. Questo metodo utilizza il nome utente e la password per calcolare i parametri per eseguire il controllo della password.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();Crea una valutazione utilizzando i parametri di verifica.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();Gli array di byte
lookupHashPrefixeencryptedUserCredentialsHashcontengono i parametri necessari per avviare unaAssessmentdi controllo della password.
Crea una valutazione per rilevare la divulgazione delle password
Utilizza il
projects.assessments.create
metodo.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT_ID: ID del tuo Google Cloud progetto
- LOOKUP_HASH_PREFIX: prefisso dell'hash SHA-256 del nome utente
- ENCRYPTED_USER_CREDENTIALS_HASH: hash Scrypt delle credenziali utente criptate
Metodo HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON della richiesta:
{
"private_password_leak_verification": {
"lookup_hash_prefix": "LOOKUP_HASH_PREFIX",
"encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH"
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/698047609967/assessments/fb22000000000000",
"score": 0,
"reasons": [],
"privatePasswordLeakVerification": {
"lookupHashPrefix": "zoxZwA==",
"encryptedUserCredentialsHash": "AyRihRcKaGLj/FA/r2uqQY/fzfTaDb/nEcIUMeD3Tygp",
"reencryptedUserCredentialsHash": "Aw65yEbLM39ww1ridDEfx5VhkWo11tzn/R1B88Qqwr/+"
"encryptedLeakMatchPrefixes": [
"n/n5fvPD6rmQPFyb4xk=", "IVQqzXsbZenaibID6OI=", ..., "INeMMndrfnlf6osCVvs=",
"MkIpxt2x4mtyBnRODu0=", "AqUyAUWzi+v7Kx03e6o="]
}
}
Verifica le credenziali divulgate da un'analisi
Dalla risposta di valutazione estrai i campi reEncryptedUserCredentials e encryptedLeakMatchPrefixes e passali all'oggetto di verifica per determinare se le credenziali sono state divulgate o meno.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Esempio di codice
Node.js (TypeScript)
Per scoprire come implementare il rilevamento della divulgazione di password utilizzando Node.js (TypeScript), consulta l'esempio di codice TypeScript su GitHub.
Java
Per eseguire l'autenticazione in Fraud Defense, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Container Docker
Per verificare se le credenziali sono state divulgate, invia in modo sicuro la coppia di credenziali nome utente e password al container utilizzando una connessione localhost o configurando HTTPS sul container. Il container cripta quindi queste credenziali prima di effettuare una richiesta API a reCAPTCHA e verifica il risultato ricriptato localmente.
Per inviare richieste al container Docker:
- Configura Docker.
- Prepara un ambiente per il container Docker.
- Crea ed esegui il container.
- Invia richieste HTTP al container.
- Interpreta il verdetto e intervieni.
Prepararsi a eseguire il container Docker
Scegli una strategia di autenticazione.
Il container supporta l'impostazione delle credenziali predefinite dell'applicazione o può accettare una chiave API per l'autenticazione.
Configura il container PLD in modo che venga eseguito con HTTPS o in modalità demo solo localhost.
Poiché il container accetta credenziali sensibili dell'utente finale (nomi utente e password), deve essere eseguito con HTTPS o in modalità demo solo localhost. Per indicazioni sulla configurazione di HTTPS, consulta il file README su GitHub.
I passaggi seguenti utilizzano l'autenticazione con chiave API ed eseguono il client in modalità demo solo localhost.
Crea ed esegui il container Docker
Clona il repository:
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLDCrea il container:
docker build . -t pld-localAvvia il container:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
Il container si avvia e inizia a gestire le richieste sulla porta 8080 di localhost.
Invia richieste localhost
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LEAKED_USERNAME: nome utente della coppia di credenziali divulgate.
- LEAKED_PASSWORD: password della coppia di credenziali divulgate.
Metodo HTTP e URL:
POST http://localhost:8080/createAssessment/
Corpo JSON della richiesta:
{
"username":"LEAKED_USERNAME",
"password":"LEAKED_PASSWORD"
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
e quindi esegui il comando seguente:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
e quindi esegui il comando seguente:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://localhost:8080/createAssessment/" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
{ "leakedStatus":"LEAKED" }
OR
{ "leakedStatus":"NO_STATUS" }
Interpreta il verdetto e intervieni
La risposta di valutazione mostra se le credenziali sono state divulgate e ti fornisce informazioni che puoi utilizzare per intraprendere le azioni appropriate per proteggere i tuoi utenti.
La tabella seguente elenca le azioni consigliate che puoi intraprendere quando viene rilevata una password divulgata:
| Password divulgata rilevata | Azioni per proteggere l'utente |
|---|---|
| Durante l'accesso |
|
| Durante la creazione dell'account o la reimpostazione della password |
|
Se non utilizzi già un provider MFA sul tuo sito, puoi utilizzare la funzionalità MFA di reCAPTCHA.
Passaggi successivi
- Scopri come utilizzare l'autenticazione a più fattori (MFA)
- Scopri come proteggere gli account utente utilizzando reCAPTCHA Account Defender