Nesta página, descrevemos como usar o recurso de detecção de vazamento de senha do reCAPTCHA Enterprise para identificar vazamentos e credenciais violadas, evitando invasões de contas (ATOs, na sigla em inglês) e ataques de preenchimento de credenciais. Com o reCAPTCHA Enterprise, é possível realizar auditorias regulares das credenciais do usuário (senhas) como parte de qualquer avaliação para garantir que não foram vazadas ou violadas. Para realizar essas avaliações, o Google usa o recurso Check-up de senha.
Antes de começar
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
O reCAPTCHA Enterprise exige que o faturamento seja vinculado e ativado no projeto para usar o recurso de detecção de vazamento de senhas. É possível ativar o faturamento usando um cartão de crédito ou um ID de faturamento de um projeto do Google Cloud. Se precisar de ajuda com o faturamento, entre em contato com o suporte do Cloud Billing.
Verifique se há credenciais violadas ou vazadas
Para verificar se um conjunto de credenciais foi comprometido, use a detecção de vazamento de senhas ao criar avaliações para ações como logins, mudanças e redefinições de senha.
Para verificar se há vazamentos de senha e credenciais violadas, siga estas etapas:
- Gere parâmetros de solicitação.
- Crie uma avaliação para detectar vazamentos de senhas.
- Verificar credenciais vazadas de uma avaliação
- Interpretar o veredito e realizar ações
Gerar parâmetros de solicitação
Calcule os parâmetros de solicitação necessários usando as funções criptográficas exigidas pelo protocolo de alta privacidade. O reCAPTCHA Enterprise fornece bibliotecas Java e TypeScript para ajudar a gerar estes campos:
Para criar verificações de verificação de senha, crie um objeto
PasswordCheckVerifier
.PasswordCheckVerifier verifier = new PasswordCheckVerifier();
Para iniciar uma verificação, chame
PasswordCheckVerifier#createVerification
. Esse método usa o nome de usuário e a senha para calcular os parâmetros para executar a verificação de senha.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();
Crie uma avaliação usando os parâmetros de verificação.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();
As matrizes de bytes
lookupHashPrefix
eencryptedUserCredentialsHash
contêm os parâmetros necessários para iniciar uma verificação de senhaAssessment
.
Criar uma avaliação para detectar vazamentos de senhas
Use o
método
projects.assessments.create
.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- LOOKUP_HASH_PREFIX: prefixo do prefixo de hash SHA-256 do nome de usuário
- ENCRYPTED_USER_CREDENTIALS_HASH: hash Scrypt das credenciais do usuário criptografado
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON da solicitação:
{ "private_password_leak_verification": { "lookup_hash_prefix": "LOOKUP_HASH_PREFIX", "encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a esta:
{ "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="] } }
Verificar credenciais vazadas de uma avaliação
Na resposta de avaliação, extraia os campos
reEncryptedUserCredentials
e encryptedLeakMatchPrefixes
e os transmita ao
objeto do verificador para determinar se as credenciais estão vazadas ou não.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Interpretar o veredito e realizar ações
A resposta da avaliação mostra se as credenciais vazaram e fornece informações que você pode usar para tomar as medidas apropriadas para proteger os usuários.
A tabela a seguir lista as ações recomendadas que podem ser realizadas quando uma senha vazada é detectada:
Senha vazada detectada | Ações para proteger o usuário |
---|---|
Durante o login |
|
Durante a criação da conta ou redefinição de senha |
|
Se você ainda não usa um provedor de MFA no seu site, use o recurso de MFA do reCAPTCHA Enterprise.
Exemplo de código
Java
Para autenticar no reCAPTCHA Enterprise, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js (TypeScript)
Para autenticar no reCAPTCHA Enterprise, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
A seguir
- Saiba como usar a autenticação multifator (MFA).
- Saiba como proteger as contas dos usuários usando o defensor da conta do reCAPTCHA Enterprise