Auf dieser Seite wird beschrieben, wie Sie das Feature „Passwortschutz“ von reCAPTCHA verwenden, um Passwortlecks und gehackte Anmeldedaten zu erkennen und so Kontoübernahmen (Account Takeovers, ATOs) und Credential Stuffing-Angriffe zu verhindern. Mit reCAPTCHA können Sie im Rahmen jeder Bewertung regelmäßig Audits von Nutzeranmeldedaten (Passwörtern) ausführen, um sicherzustellen, dass sie nicht manipuliert oder gehackt wurden. Zur Durchführung dieser Bewertungen verwendet Google die Passwortcheck-Funktion.
Hinweise
Make sure that billing is enabled for your Google Cloud project.
Für die Verwendung der Funktion „Passwortschutz“ muss die Abrechnung mit dem Projekt verknüpft und für das Projekt aktiviert sein. Sie können die Abrechnung entweder mithilfe einer Kreditkarte oder anhand einer vorhandenen Abrechnungs-ID im Google Cloud -Projekt aktivieren. Wenn Sie Hilfe bei der Abrechnung benötigen, wenden Sie sich an den Cloud Billing-Support.
Auf gehackte und geleakte Anmeldedaten prüfen
Sie können prüfen, ob Anmeldedaten manipuliert wurden, indem Sie kryptografische Funktionen oder den Docker-Container verwenden.
Der Docker-Container ist ein Open-Source-Client, der die sichere Gruppen-Datenverarbeitung implementiert, die erforderlich ist, um den Datenschutz der Endnutzer zu wahren und sicher nach Passwortlecks zu suchen. Weitere Informationen finden Sie im GitHub-Repository. Der Docker-Container abstrahiert die Komplexität der Implementierung der kryptografischen Algorithmen und vereinfacht den Installationsprozess. Außerdem können Sie die Container-App in Ihrer Infrastruktur hosten.
Kryptografische Funktion
Wenn Sie prüfen möchten, ob ein Satz Anmeldedaten manipuliert wurde, verwenden Sie die Passwortschutzfunktion, wenn Sie Bewertungen für Aktionen wie Anmeldungen, Passwortänderungen und Passwortzurücksetzungen erstellen.
So prüfen Sie, ob Passwörter und Anmeldedaten offengelegt wurden:
- Anfrageparameter generieren:
- Bewertung zum Erkennen von gehackten Passwörtern erstellen
- In einer Bewertung erkannte gehackte Anmeldedaten überprüfen
- Urteil interpretieren und Maßnahmen ergreifen
Anfrageparameter generieren
Berechnen Sie die erforderlichen Anfrageparameter mit den kryptografischen Funktionen, die für das Protokoll mit hohem Datenschutz erforderlich sind. reCAPTCHA stellt Java- und TypeScript-Bibliotheken bereit, um das Generieren dieser Felder zu erleichtern:
Zum Erstellen von Passwortcheck-Bestätigungen erstellen Sie ein
PasswordCheckVerifier
-Objekt.PasswordCheckVerifier verifier = new PasswordCheckVerifier();
Rufen Sie
PasswordCheckVerifier#createVerification
an, um die Bestätigung zu starten. Mit dieser Methode werden anhand des Nutzernamens und des Passworts die Parameter für die Passwortprüfung berechnet.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();
Erstellen Sie eine Bewertung mit den Bestätigungsparametern.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();
Die Byte-Arrays
lookupHashPrefix
undencryptedUserCredentialsHash
enthalten die Parameter, die zum Initiieren einer PasswortprüfungAssessment
erforderlich sind.
Bewertung zum Erkennen von gehackten Passwörtern erstellen
Verwenden Sie die Methode projects.assessments.create
.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOOKUP_HASH_PREFIX: Präfix des SHA-256-Hashs des Nutzernamens
- ENCRYPTED_USER_CREDENTIALS_HASH: Scrypt-Hash der verschlüsselten Nutzeranmeldedaten
HTTP-Methode und URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
JSON-Text der Anfrage:
{ "private_password_leak_verification": { "lookup_hash_prefix": "LOOKUP_HASH_PREFIX", "encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH" } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
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
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$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
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "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="] } }
In Bewertung erkannte gehackte Anmeldedaten überprüfen
Extrahieren Sie aus der Antwort der Prüfung die Felder reEncryptedUserCredentials
und encryptedLeakMatchPrefixes
und übergeben Sie sie an das Prüferobjekt, um festzustellen, ob die Anmeldedaten offengelegt wurden oder nicht.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Codebeispiel
Node.js (TypeScript)
Informationen zur Implementierung der Erkennung von Passwortlecks mit Node.js (TypeScript) finden Sie im TypeScript-Codebeispiel auf GitHub.
Java
Richten Sie zur Authentifizierung bei reCAPTCHA die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Docker-Container
Wenn Sie prüfen möchten, ob Anmeldedaten offengelegt wurden, senden Sie das Nutzername- und Passwort-Paar sicher an den Container. Verwenden Sie dazu eine Localhost-Verbindung oder richten Sie HTTPS für den Container ein. Der Container verschlüsselt diese Anmeldedaten dann, bevor er eine API-Anfrage an reCAPTCHA sendet, und überprüft das neu verschlüsselte Ergebnis lokal.
So senden Sie Anfragen an den Docker-Container:
- Docker einrichten
- Umgebung für den Docker-Container vorbereiten
- Container erstellen und ausführen
- HTTP-Anfragen an den Container senden
- Urteil interpretieren und Maßnahmen ergreifen
Ausführung des Docker-Containers vorbereiten
Wählen Sie eine Authentifizierungsstrategie aus.
Der Container unterstützt das Festlegen von Standardanmeldedaten für Anwendungen oder kann einen API-Schlüssel> für die Authentifizierung akzeptieren.
Konfigurieren Sie den PLD-Container so, dass er mit HTTPS oder im Demo-Modus nur für localhost ausgeführt wird.
Da der Container vertrauliche Anmeldedaten von Endnutzern (Nutzername und Passwort) akzeptiert, muss er entweder mit HTTPS oder im Demo-Modus nur für localhost ausgeführt werden. Eine Anleitung zur HTTPS-Konfiguration finden Sie in der README-Datei auf GitHub.
Bei den folgenden Schritten wird die API-Schlüsselauthentifizierung verwendet und der Client wird im Demo-Modus „Nur localhost“ ausgeführt.
Docker-Container erstellen und ausführen
Klonen Sie das Repository:
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLD
Erstellen Sie den Container:
docker build . -t pld-local
Starten Sie den Container:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
Der Container wird gestartet und beginnt, Anfragen auf Port 8080 des Localhost zu bearbeiten.
Localhost-Anfragen senden
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LEAKED_USERNAME: Nutzername des Paars aus offengelegten Anmeldedaten.
- LEAKED_PASSWORD: Das Passwort des offengelegten Anmeldedatenpaars.
HTTP-Methode und URL:
POST http://localhost:8080/createAssessment/
JSON-Text der Anfrage:
{ "username":"LEAKED_USERNAME", "password":"LEAKED_PASSWORD" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$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
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "leakedStatus":"LEAKED" } OR { "leakedStatus":"NO_STATUS" }
Urteil interpretieren und Maßnahmen ergreifen
Die Antwort auf die Bewertung gibt an, ob die Anmeldedaten offengelegt wurden, und enthält Informationen, mit denen Sie geeignete Maßnahmen zum Schutz Ihrer Nutzer ergreifen können.
In der folgenden Tabelle sind die empfohlenen Maßnahmen aufgeführt, die Sie ergreifen können, wenn ein geleaktes Passwort erkannt wird:
Gehacktes Passwort erkannt | Maßnahmen zum Schutz Ihrer Nutzer |
---|---|
Bei der Anmeldung |
|
Bei der Kontoerstellung oder beim Zurücksetzen des Passworts |
|
Wenn Sie auf Ihrer Website noch keinen MFA-Anbieter verwenden, können Sie die MFA-Funktion von reCAPTCHA nutzen.
Nächste Schritte
- Informationen zur Verwendung der Multi-Faktor-Authentifizierung (MFA)
- Informationen zum Schutz von Nutzerkonten mit reCAPTCHA Account Defender