Cette page explique comment utiliser la fonctionnalité de détection de fuite de mots de passe de reCAPTCHA pour détecter les fuites de mots de passe et les identifiants volés afin d'empêcher les piratages de compte et les attaques de type "credential stuffing". Avec reCAPTCHA, vous pouvez effectuer des audits réguliers sur les identifiants utilisateur (mots de passe) dans le cadre d'une évaluation afin de vous assurer qu'ils n'ont pas été compromis ou divulgués. Pour effectuer ces évaluations, Google utilise la fonctionnalité Check-up Mots de passe.
Avant de commencer
Make sure that billing is enabled for your Google Cloud project.
reCAPTCHA nécessite l'association et l'activation de la facturation sur le projet pour utiliser la fonctionnalité de détection de fuite de mots de passe. Vous pouvez activer la facturation à l'aide d'une carte de crédit ou d'un ID de compte de facturation Google Cloud existant. Si vous avez besoin d'aide concernant la facturation, contactez l'assistance Cloud Billing.
Rechercher des identifiants piratés et divulgués
Vous pouvez vérifier si un ensemble d'identifiants a été compromis à l'aide de fonctions cryptographiques ou à l'aide du conteneur Docker.
Le conteneur Docker est un client Open Source qui met en œuvre calcul multipartite sécurisé nécessaires pour préserver la confidentialité des utilisateurs finaux et rechercher en toute sécurité les fuites de mots de passe. Pour en savoir plus, consultez le dépôt GitHub. Le conteneur Docker abstrait la complexité de l'implémentation des algorithmes cryptographiques et simplifie le processus d'installation. Il vous permet également d'héberger l'application de conteneur dans votre infrastructure.
Fonction cryptographique
Pour vérifier si un ensemble d'identifiants a été compromis, utilisez la détection de fuite de mots de passe lors de la création d'évaluations pour des actions telles que les connexions, les modifications de mots de passe de mots de passe.
Pour vérifier l'absence de fuite de mots de passe et d'identifiants piratés, procédez comme suit:
- Générez des paramètres de requête.
- Créez une évaluation pour détecter les fuites de mots de passe.
- Vérifier les identifiants divulgués lors d'une évaluation
- Interprétez le verdict et prenez les mesures nécessaires.
Générer des paramètres de requête
Calculez les paramètres de requête nécessaires à l'aide des fonctions cryptographiques requises par le protocole haute confidentialité. reCAPTCHA fournit des bibliothèques Java et TypeScript pour vous aider à générer ces champs :
Pour mettre en place des validations par vérification des mots de passe, créez un
PasswordCheckVerifier
.PasswordCheckVerifier verifier = new PasswordCheckVerifier();
Pour lancer la validation, appelez
PasswordCheckVerifier#createVerification
. Cette méthode utilise le nom d'utilisateur et le mot de passe pour calculer les paramètres permettant d'effectuer la vérification du mot de passe.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();
Créez un évaluation à l'aide des paramètres de vérification.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();
Les tableaux d'octets
lookupHashPrefix
etencryptedUserCredentialsHash
contiennent les paramètres requis pour lancer une vérification de mot de passeAssessment
.
Créer une évaluation pour détecter les fuites de mots de passe
Utilisez la méthode projects.assessments.create
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOOKUP_HASH_PREFIX: préfixe du préfixe de hachage SHA-256 du nom d'utilisateur
- ENCRYPTED_USER_CREDENTIALS_HASH: identifiants utilisateur chiffrés
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corps JSON de la requête :
{ "private_password_leak_verification": { "lookup_hash_prefix": "LOOKUP_HASH_PREFIX", "encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH" } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
{ "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="] } }
Vérifier les identifiants divulgués lors d'une évaluation
Dans la réponse d'évaluation, extrayez les champs reEncryptedUserCredentials
et encryptedLeakMatchPrefixes
, puis transmettez-les à l'objet de validation pour déterminer si les identifiants ont été divulgués ou non.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Exemple de code
Pour découvrir comment implémenter la détection des fuites de mots de passe à l'aide de TypeScript, consultez l'exemple de code TypeScript sur GitHub.
L'exemple de code suivant montre comment implémenter la détection de fuite de mots de passe en avec Java:
Java
Pour vous authentifier auprès de reCAPTCHA, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Conteneur Docker
Pour vérifier si des identifiants ont été divulgués, envoyez de manière sécurisée la paire d'identifiants nom d'utilisateur et mot de passe au conteneur à l'aide d'une connexion localhost ou en configurant HTTPS sur le conteneur. Le conteneur chiffre ensuite ces identifiants avant d'envoyer une requête API à reCAPTCHA, puis vérifie le résultat chiffré à nouveau localement.
Pour envoyer des requêtes au conteneur Docker, procédez comme suit:
- Configurez Docker.
- Préparez un environnement pour le conteneur Docker.
- Créez et exécutez le conteneur.
- Envoyez des requêtes HTTP au conteneur.
- Interprétez le résultat et prenez les mesures nécessaires.
Préparer l'exécution du conteneur Docker
Choisissez une stratégie d'authentification.
Le conteneur permet de définir des identifiants par défaut de l'application ou d'accepter une clé API pour l'authentification.
Configurez le conteneur PLD pour qu'il s'exécute avec HTTPS ou dans une démonstration sur localhost uniquement .
Étant donné que le conteneur accepte des identifiants d'utilisateur final sensibles (noms d'utilisateur et mots de passe), il doit être exécuté avec HTTPS ou en mode démonstration localhost uniquement. Pour obtenir des conseils sur la configuration HTTPS, consultez le fichier README sur GitHub.
Les étapes suivantes utilisent l'authentification par clé API et exécutent le client dans mode de démonstration localhost uniquement.
Créer et exécuter le conteneur Docker
Clonez le dépôt :
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLD
Créez le conteneur :
docker build . -t pld-local
Démarrez le conteneur :
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
Le conteneur démarre et commence à répondre aux requêtes sur le port 8080 de localhost.
Envoyer des requêtes Localhost
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LEAKED_USERNAME : nom d'utilisateur de la paire d'identifiants divulgués.
- LEAKED_PASSWORD: mot de passe de la paire d'identifiants divulguée.
Méthode HTTP et URL :
POST http://localhost:8080/createAssessment/
Corps JSON de la requête :
{ "username":"LEAKED_USERNAME", "password":"LEAKED_PASSWORD" }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://localhost:8080/createAssessment/" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "leakedStatus":"LEAKED" } OR { "leakedStatus":"NO_STATUS" }
Interpréter le résultat et prendre des mesures
La réponse de l'évaluation indique si les identifiants ont été divulgués et vous fournit des informations que vous pouvez utiliser pour prendre les mesures appropriées afin de protéger vos utilisateurs.
Le tableau suivant liste les actions recommandées que vous pouvez effectuer lorsqu'un mot de passe divulgué est détecté :
Mot de passe volé détecté | Mesures de protection des utilisateurs |
---|---|
Lors de la connexion |
|
Lors de la création d'un compte ou de la réinitialisation du mot de passe |
|
Si vous n'utilisez pas encore de fournisseur MFA sur votre site, vous pouvez utiliser la fonctionnalité MFA de reCAPTCHA.
Étape suivante
- Découvrez comment utiliser l'authentification multifacteur (MFA).
- Découvrez comment protéger les comptes utilisateur avec reCAPTCHA Account Defender