La fonctionnalité Password defense de Google Cloud Fraud Defense vous permet de détecter les identifiants divulgués et piratés afin de protéger vos applications contre les attaques de prise de contrôle de compte et de bourrage d'identifiants. Dans le cadre de toute évaluation, vous pouvez auditer les identifiants utilisateur par rapport aux violations de données connues à l'aide de la technologie Check-up Mots de passe de Google.
Avant de commencer
Préparer votre environnement pour Google Cloud Fraud Defense
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Fraud Defense nécessite que la facturation soit associée et activée sur le projet pour utiliser la fonctionnalité Password Defense. 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 les identifiants piratés et divulgués
Vous pouvez vérifier si un ensemble d'identifiants a été compromis à l'aide de fonctions cryptographiques ou du conteneur Docker.
Le conteneur Docker est un client Open Source qui implémente le calcul multipartite sécurisé nécessaire pour préserver la confidentialité des utilisateurs finaux et rechercher de manière sécurisée les fuites de mots de passe. Pour en savoir plus, consultez le dépôt GitHub. Le conteneur Docker élimine la complexité de la mise en œuvre 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 Password defense lorsque vous créez des évaluations pour des actions telles que les connexions, les modifications de mot de passe et les réinitialisations du mot de passe.
Pour vérifier si des mots de passe ont été divulgués et si des identifiants ont été piratés, procédez comme suit :
- Générer des paramètres de requête
- Créer une évaluation pour détecter les fuites de mots de passe
- Vérifier les identifiants divulgués à partir d'une évaluation
- Interpréter le verdict et prendre des mesures
Générer les paramètres de requête
Calculez les paramètres de requête nécessaires à l'aide des fonctions cryptographiques requises par le protocole de haute confidentialité. Password defense fournit des bibliothèques Java et TypeScript pour vous aider à générer ces champs :
Pour créer des vérifications de mots de passe, créez un objet
PasswordCheckVerifier.PasswordCheckVerifier verifier = new PasswordCheckVerifier();Pour lancer une 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 une évaluation à l'aide des paramètres de validation.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();Les tableaux d'octets
lookupHashPrefixetencryptedUserCredentialsHashcontiennent 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
Exécutez la méthode projects.assessments.create.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOOKUP_HASH_PREFIX : préfixe du hachage SHA-256 du nom d'utilisateur
- ENCRYPTED_USER_CREDENTIALS_HASH : hachage scrypt des 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 à partir d'une évaluation
À partir de la réponse de l'évaluation, extrayez les champs reEncryptedUserCredentials et encryptedLeakMatchPrefixes, puis transmettez-les à l'objet de vérification 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
Node.js (TypeScript)
Pour savoir comment implémenter Password defense à l'aide de Node.js (TypeScript), consultez l'exemple de code TypeScript sur GitHub.
Java
Pour vous authentifier auprès de Fraud Defense, 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 fuité, 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'effectuer une requête API, puis vérifie le résultat rechiffré localement.
Pour envoyer des requêtes au conteneur Docker, procédez comme suit :
- Configurez Docker.
- Préparer un environnement pour le conteneur Docker
- Créez et exécutez le conteneur.
- Envoyer des requêtes HTTP au conteneur
- Interpréter le verdict et prendre des mesures
Se préparer à exécuter le conteneur Docker
Choisissez une stratégie d'authentification.
Le conteneur permet de définir les identifiants par défaut de l'application ou peut accepter une clé API pour l'authentification.
Configurez le conteneur PLD pour qu'il s'exécute avec HTTPS ou en mode de démonstration localhost uniquement.
Étant donné que le conteneur accepte les identifiants sensibles des utilisateurs finaux (noms d'utilisateur et mots de passe), il doit être exécuté avec HTTPS ou en mode de 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 en 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-PLDCréez le conteneur :
docker build . -t pld-localDé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 à diffuser les requêtes sur le port 8080 de localhost.
Envoyer des requêtes Localhost
Avant d'utiliser les données de requête, 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és.
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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "leakedStatus":"LEAKED" }
OR
{ "leakedStatus":"NO_STATUS" }
Interpréter le verdict et prendre des mesures
La réponse à 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 répertorie les actions recommandées que vous pouvez effectuer lorsqu'un mot de passe divulgué est détecté :
| Mot de passe volé détecté | Actions pour protéger votre utilisateur |
|---|---|
| Lors de la connexion |
|
| Lors de la création du compte ou de la réinitialisation du mot de passe |
|
Si vous n'utilisez pas déjà un fournisseur MFA sur votre site, vous pouvez utiliser la fonctionnalité MFA de Fraud Defense.
Étapes suivantes
- Découvrez comment utiliser l'authentification multifacteur (MFA).
- Découvrez comment protéger les comptes utilisateur à l'aide de la fonctionnalité Account Defense de Fraud Defense.