A defesa de senha no Google Cloud Fraud Defense permite detectar credenciais vazadas e violadas para ajudar a proteger seus aplicativos contra ataques de sequestro de conta (ATO, na sigla em inglês) e ataques de preenchimento de credenciais. Como parte de qualquer avaliação, é possível auditar as credenciais do usuário em relação a violações de dados conhecidas usando a tecnologia Check-up de senha do Google.
Antes de começar
Verifique se o faturamento está ativado para o projeto do Google Cloud .
O Fraud Defense exige que o faturamento esteja vinculado e ativado no projeto para usar o recurso de Defesa de senha. É possível ativar o faturamento usando um cartão de crédito ou um ID de faturamento de projeto do Google Cloud atual. Se precisar de ajuda com o faturamento, entre em contato com o suporte do Cloud Billing.
Verificar se há credenciais violadas e vazadas
É possível verificar se um conjunto de credenciais foi comprometido usando funções criptográficas ou o contêiner do Docker.
O contêiner do Docker é um cliente de código aberto que implementa a computação multipartidária segura necessária para preservar a privacidade do usuário final e realizar pesquisa rápida de vazamentos de senha com segurança. Para mais informações, consulte o repositório do GitHub. O contêiner do Docker abstrai a complexidade da implementação dos algoritmos criptográficos e simplifica o processo de instalação. Ele também permite hospedar o app de contêiner na sua infraestrutura.
Função criptográfica
Para verificar se um conjunto de credenciais foi comprometido, use a Defesa de senha ao criar avaliações para ações como logins, alterações de senha e redefinições de senha.
Para verificar se há vazamentos de senhas e credenciais violadas, siga estas etapas:
- Gerar parâmetros de solicitação de geração.
- Crie uma avaliação para detectar vazamentos de senhas.
- Verificar credenciais vazadas de uma avaliação.
- Interpretar o veredicto e entrar em ação.
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. A defesa de senha oferece bibliotecas Java e TypeScript para ajudar a gerar esses campos:
Para criar verificações 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 realizar 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
lookupHashPrefixeencryptedUserCredentialsHashcontêm os parâmetros necessários para iniciar uma verificação de senhaAssessment.
Crie uma avaliação para detectar vazamentos de senhas
Use o método projects.assessments.create.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud .
- LOOKUP_HASH_PREFIX: prefixo do hash SHA-256 do nome de usuário
- ENCRYPTED_USER_CREDENTIALS_HASH: hash Scrypt de credenciais de usuário criptografadas
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 abaixo:
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 abaixo:
$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 da avaliação, extraia os campos
reEncryptedUserCredentials e encryptedLeakMatchPrefixes e transmita-os ao
objeto verificador para determinar se as credenciais foram vazadas ou não.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Exemplo de código
Node.js (TypeScript)
Para saber como implementar a Defesa de senha usando o Node.js (TypeScript), consulte o exemplo de código TypeScript no GitHub.
Java
Para autenticar no Fraud Defense, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Contêiner do Docker
Para verificar se as credenciais vazaram, envie com segurança o par de credenciais de nome de usuário e senha para o contêiner usando uma conexão localhost ou configurando o HTTPS no contêiner. Em seguida, o contêiner criptografa essas credenciais antes de fazer uma solicitação de API e verifica o resultado criptografado novamente de forma local.
Para enviar solicitações ao contêiner do Docker, siga estas etapas:
- Configure o Docker.
- Prepare um ambiente para o contêiner do Docker.
- Crie e execute o contêiner.
- Enviar solicitações HTTP para o contêiner.
- Interpretar o veredicto e entrar em ação.
Preparar para executar o contêiner do Docker
Escolha uma estratégia de autenticação.
O contêiner é compatível com a configuração do Application Default Credentials ou pode aceitar uma chave de API para autenticação.
Configure o contêiner do PLD para ser executado com HTTPS ou em um modo de demonstração somente para localhost.
Como o contêiner aceita credenciais confidenciais do usuário final (nomes de usuário e senhas), ele precisa ser executado com HTTPS ou em um modo de demonstração somente para localhost. Para orientações sobre a configuração de HTTPS, consulte o README no GitHub.
As etapas a seguir usam a autenticação de chave de API e executam o cliente no modo de demonstração somente para localhost.
Criar e executar o contêiner do Docker
Clone o repositório:
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLDCrie o contêiner:
docker build . -t pld-localInicie o contêiner:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
O contêiner é iniciado e começa a atender solicitações na porta 8080 do localhost.
Enviar solicitações do Localhost
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LEAKED_USERNAME: nome de usuário do par de credenciais vazadas.
- LEAKED_PASSWORD: senha do par de credenciais vazadas.
Método HTTP e URL:
POST http://localhost:8080/createAssessment/
Corpo JSON da solicitação:
{
"username":"LEAKED_USERNAME",
"password":"LEAKED_PASSWORD"
}
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 "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://localhost:8080/createAssessment/" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
{ "leakedStatus":"LEAKED" }
OR
{ "leakedStatus":"NO_STATUS" }
Interpretar o veredicto e entrar em ação
A resposta da avaliação mostra se as credenciais foram vazadas e fornece informações que você pode usar para tomar as medidas adequadas para proteger seus usuários.
A tabela a seguir lista as ações recomendadas que você pode realizar quando uma senha vazada é detectada:
| Senha vazada detectada | Ações para proteger o usuário |
|---|---|
| Durante o processo de login |
|
| Durante a criação da conta ou a redefinição de senha |
|
Se você ainda não usa um provedor de MFA no seu site, use o recurso de MFA do Fraud Defense.
A seguir
- Aprenda mais sobre como usar a autenticação multifator (MFA).
- Saiba como proteger contas de usuário usando a defesa de conta do Fraud Defense