Auf dieser Seite wird beschrieben, wie Sie mit der Funktion „Password Defense“ von reCAPTCHA Passwortlecks und gehackte Anmeldedaten erkennen können, um 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.
Hinweis
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Für reCAPTCHA muss die Abrechnung mit dem Projekt verknüpft und für dieses aktiviert sein, damit die Funktion „Password Defense“ verwendet werden kann. Sie können die Abrechnung entweder mithilfe einer Kreditkarte oder anhand einer vorhandenen Google Cloud Abrechnungs-ID für das Projekt aktivieren. Wenn Sie Hilfe bei der Abrechnung benötigen, wenden Sie sich an den Cloud Billing-Support.
Auf gehackte und durchgesickerte Anmeldedaten prüfen
Sie können prüfen, ob ein Satz Anmeldedaten manipuliert wurde, indem Sie kryptografische Funktionen oder den Docker-Container verwenden.
Der Docker-Container ist ein Open-Source-Client, der die Multi-Party Computation implementiert, die erforderlich ist, um die Privatsphäre von Endnutzern zu schützen 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 Password Defense, wenn Sie Bewertungen für Aktionen wie Anmeldungen, Passwortänderungen und Passwortzurücksetzungen erstellen.
So prüfen Sie auf Passwortlecks und gehackte Anmeldedaten:
- Generieren Sie Anfrageparameter.
- Erstellen Sie eine Bewertung zum Erkennen von gehackten Passwörtern.
- Überprüfen Sie in der Bewertung erkannte gehackte Anmeldedaten.
- Interpretieren Sie das Urteil und ergreifen Sie Maßnahmen.
Anfrageparameter generieren
Berechnen Sie die erforderlichen Anfrageparameter mit den kryptografischen Funktionen, die für das Protokoll mit hohem Datenschutz erforderlich sind. reCAPTCHA bietet Java- und TypeScript-Bibliotheken, die Sie beim Generieren dieser Felder unterstützen:
Erstellen Sie ein
PasswordCheckVerifier-Objekt, um Passwortprüfungen zu erstellen.PasswordCheckVerifier verifier = new PasswordCheckVerifier();Rufen Sie
PasswordCheckVerifier#createVerificationauf, um eine Überprüfung zu starten. Mit dieser Methode werden der Nutzername und das Passwort verwendet, um die Parameter für die Passwortprüfung zu berechnen.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();Erstellen Sie mit den Überprüfungsparametern eine Bewertung.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();Die Byte-Arrays
lookupHashPrefixundencryptedUserCredentialsHashenthalten die Parameter, die zum Starten einer PasswortprüfungAssessmenterforderlich sind.
Bewertung zum Erkennen von gehackten Passwörtern erstellen
Verwenden Sie die
projects.assessments.create
Methode.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud Projekt-ID.
- LOOKUP_HASH_PREFIX: Präfix des SHA-256-Hash-Präfixes des Nutzernamens.
- ENCRYPTED_USER_CREDENTIALS_HASH: Mit Scrypt verschlüsselter Hash der Anmeldedaten des Nutzers.
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 Bewertungsantwort die Felder reEncryptedUserCredentials und encryptedLeakMatchPrefixes und übergeben Sie sie an das Verifiziererobjekt, um zu ermitteln, ob die Anmeldedaten durchgesickert sind.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Codebeispiel
Node.js (TypeScript)
Informationen zum Implementieren der Erkennung von Passwortlecks mit Node.js (TypeScript) finden Sie im TypeScript-Codebeispiel auf GitHub.
Java
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Fraud Defense zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Docker-Container
Wenn Sie prüfen möchten, ob Anmeldedaten durchgesickert sind, senden Sie das Paar aus Nutzername und Passwort sicher über eine Localhost-Verbindung oder durch Einrichten von HTTPS im Container an den Container. 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:
- Richten Sie Docker ein.
- Bereiten Sie eine Umgebung für den Docker-Container vor.
- Erstellen und führen Sie den Container aus.
- Senden Sie HTTP-Anfragen an den Container.
- Interpretieren Sie das Urteil und ergreifen Sie Maßnahmen.
Vorbereiten der Ausführung des Docker-Containers
Wählen Sie eine Authentifizierungsstrategie aus.
Der Container unterstützt das Festlegen von Standardanmeldedaten für Anwendungen oder kann einen API-Schlüssel zur Authentifizierung akzeptieren.
Konfigurieren Sie den PLD-Container für die Ausführung mit HTTPS oder im Demo-Modus nur für Localhost.
Da der Container vertrauliche Anmeldedaten von Endnutzern (Nutzernamen und Passwörter) 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.
In den folgenden Schritten wird die API-Schlüsselauthentifizierung verwendet und der Client wird im Demo-Modus nur für Localhost ausgeführt.
Docker-Container erstellen und ausführen
Klonen Sie das Repository:
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLDErstellen Sie den Container:
docker build . -t pld-localStarten 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 von Localhost zu verarbeiten.
Localhost-Anfragen senden
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LEAKED_USERNAME: Nutzername des durchgesickerten Anmeldedatenpaars.
- LEAKED_PASSWORD: Passwort des durchgesickerten 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 ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "leakedStatus":"LEAKED" }
OR
{ "leakedStatus":"NO_STATUS" }
Urteil interpretieren und Maßnahmen ergreifen
Die Bewertungsantwort zeigt, ob die Anmeldedaten durchgesickert sind, und liefert Ihnen 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 durchgesickertes Passwort erkannt wird:
| Durchgesickertes Passwort erkannt | Maßnahmen zum Schutz Ihres Nutzers |
|---|---|
| Bei der Anmeldung |
|
| Bei der Kontoerstellung oder Passwortzurücksetzung |
|
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