בדף הזה מוסבר איך להשתמש בתכונה 'הגנה על סיסמאות' של Fraud Defense כדי לזהות דליפות של סיסמאות ופרטי כניסה שנפרצו, ולמנוע השתלטות על חשבונות (ATO) והתקפות של הכנסת פרטי כניסה (credential stuffing). באמצעות Fraud Defense, אתם יכולים לבצע ביקורות קבועות על פרטי הכניסה (סיסמאות) של המשתמשים כחלק מכל הערכה, כדי לוודא שהם לא נחשפו או נפרצו. כדי לבצע את ההערכות האלה, Google משתמשת בתכונה בדיקת הסיסמאות.
לפני שמתחילים
מוודאים שהחיוב מופעל בפרויקט Google Cloud .
כדי להשתמש בתכונה 'הגנה על הסיסמה', Fraud Defense דורש לקשר את החיוב ולהפעיל אותו בפרויקט. אפשר להפעיל את החיוב באמצעות כרטיס אשראי או מזהה חיוב קיים של פרויקט Google Cloud . אם אתם זקוקים לעזרה בנושא חיוב, אתם יכולים לפנות אל צוות התמיכה של חיוב ב-Cloud.
בדיקה של פרטי כניסה שנפרצו או הודלפו
אתם יכולים לבדוק אם קבוצת פרטי כניסה נפרצה באמצעות פונקציות קריפטוגרפיות או באמצעות קובץ Docker.
קונטיינר ה-Docker הוא לקוח בקוד פתוח שמטמיע את החישוב רב-משתתפים המאובטח שנדרש כדי לשמור על פרטיות המשתמשים ולחפש דליפות סיסמאות בצורה מאובטחת. מידע נוסף זמין במאגר GitHub. קונטיינר ה-Docker מפשט את המורכבות של הטמעת האלגוריתמים הקריפטוגרפיים, ומקל על תהליך ההתקנה. הוא גם מאפשר לארח את אפליקציית הקונטיינר בתשתית שלכם.
פונקציה קריפטוגרפית
כדי לבדוק אם קבוצת פרטי כניסה נפרצה, משתמשים בהגנה על סיסמאות כשיוצרים הערכות לפעולות כמו כניסות, שינויים בסיסמאות ואיפוס סיסמאות.
כדי לבדוק אם יש סיסמאות שנחשפו ופרטי כניסה שנפרצו, פועלים לפי השלבים הבאים:
- יצירת פרמטרים של בקשות.
- יצירת הערכה לזיהוי דליפות סיסמאות
- אימות פרטי כניסה שנחשפו בדליפה מתוך הערכה
- הסבר על פסק הדין ופעולות אפשריות
יצירת פרמטרים של בקשה
חישוב פרמטרים נדרשים לבקשה באמצעות הפונקציות הקריפטוגרפיות שנדרשות על ידי פרוטוקול הפרטיות הגבוהה. ההגנה על הסיסמה מספקת ספריות Java ו-TypeScript כדי לעזור ביצירת השדות האלה:
כדי ליצור אימותים של בדיקת סיסמאות, צריך ליצור אובייקט
PasswordCheckVerifier.PasswordCheckVerifier verifier = new PasswordCheckVerifier();כדי להתחיל אימות, מתקשרים למספר
PasswordCheckVerifier#createVerification. בשיטה הזו נעשה שימוש בשם המשתמש ובסיסמה כדי לחשב את הפרמטרים לביצוע בדיקת הסיסמה.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();יוצרים הערכה באמצעות פרמטרים של אימות.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();מערכי הבייטים
lookupHashPrefixו-encryptedUserCredentialsHashמכילים את הפרמטרים שנדרשים כדי להפעיל בדיקת סיסמאותAssessment.
יצירת הערכה לזיהוי דליפות סיסמאות
משתמשים בשיטה
projects.assessments.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- LOOKUP_HASH_PREFIX: הקידומת של הגיבוב SHA-256 של שם המשתמש
- ENCRYPTED_USER_CREDENTIALS_HASH: גיבוב Scrypt של פרטי כניסה מוצפנים של משתמש
ה-method של ה-HTTP וכתובת ה-URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
גוף בקשת JSON:
{
"private_password_leak_verification": {
"lookup_hash_prefix": "LOOKUP_HASH_PREFIX",
"encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
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
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"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="]
}
}
אימות פרטי כניסה שנחשפו בהערכה
מתוך התשובה של ההערכה, שולפים את השדות reEncryptedUserCredentials ו-encryptedLeakMatchPrefixes ומעבירים אותם לאובייקט של הכלי לאימות כדי לקבוע אם פרטי הכניסה הודלפו או לא.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
דוגמת קוד
Node.js (TypeScript)
כדי ללמוד איך להטמיע הגנה על סיסמאות באמצעות Node.js (TypeScript), אפשר לעיין בדוגמת הקוד של TypeScript ב-GitHub.
Java
כדי לבצע אימות ב-Fraud Defense, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
מאגר Docker
כדי לבדוק אם פרטי הכניסה דלפו, שולחים את שם המשתמש ואת הסיסמה בצורה מאובטחת למאגר באמצעות חיבור localhost או על ידי הגדרת HTTPS במאגר. לאחר מכן, הקונטיינר מצפין את פרטי הכניסה האלה לפני שהוא שולח בקשת API, ומוודא שהתוצאה המוצפנת מחדש נכונה באופן מקומי.
כדי לשלוח בקשות למאגר Docker, מבצעים את השלבים הבאים:
- הגדרת Docker
- הכנת סביבה לקונטיינר Docker.
- יצירה והפעלה של הקונטיינר.
- שליחת בקשות HTTP למאגר התגים.
- הסבר על פסק הדין ופעולות אפשריות
הכנות להרצת קונטיינר Docker
בוחרים שיטת אימות.
הקונטיינר תומך בהגדרת Application Default Credentials או יכול לקבל מפתח API לצורך אימות.
מגדירים את מאגר התגים של PLD כך שיפעל עם HTTPS או במצב הדגמה של localhost בלבד.
מכיוון שהקונטיינר מקבל פרטי כניסה רגישים של משתמשי קצה (שמות משתמש וסיסמאות), צריך להריץ אותו באמצעות HTTPS או במצב הדגמה של localhost בלבד. הוראות להגדרת HTTPS זמינות בקובץ README ב-GitHub.
בשלבים הבאים נעשה שימוש באימות באמצעות מפתח API, והלקוח מופעל במצב הדגמה רק ב-localhost.
פיתוח והפעלה של קונטיינר Docker
משכפלים את המאגר:
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLDבונים את מאגר התגים:
docker build . -t pld-localמפעילים את הקונטיינר:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
מאגר התגים מופעל ומתחיל לטפל בבקשות ביציאה 8080 של localhost.
שליחת בקשות ל-localhost
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LEAKED_USERNAME: שם המשתמש של זוג פרטי הכניסה שנחשפו.
- LEAKED_PASSWORD: הסיסמה של זוג פרטי הכניסה שדלפו.
ה-method של ה-HTTP וכתובת ה-URL:
POST http://localhost:8080/createAssessment/
גוף בקשת JSON:
{
"username":"LEAKED_USERNAME",
"password":"LEAKED_PASSWORD"
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$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אתם אמורים לקבל תגובת JSON שדומה לזו:
{ "leakedStatus":"LEAKED" }
OR
{ "leakedStatus":"NO_STATUS" }
פירוש של פסק הדין וביצוע פעולות
בתגובה להערכה מוצג אם פרטי הכניסה הודלפו, ומוצג מידע שאפשר להשתמש בו כדי לנקוט פעולות מתאימות להגנה על המשתמשים.
בטבלה הבאה מפורטות הפעולות המומלצות שאפשר לבצע כשמזוהה סיסמה שנחשפה:
| זוהתה סיסמה שדלפה | פעולות להגנה על המשתמש |
|---|---|
| במהלך הכניסה לחשבון |
|
| במהלך יצירת החשבון או איפוס הסיסמה |
|
אם אתם לא משתמשים כבר באתר שלכם בספק MFA, אתם יכולים להשתמש ביכולת ה-MFA של Fraud Defense.
המאמרים הבאים
- איך משתמשים באימות רב-שלבי (MFA)
- מידע ולמידה על איך להגן על חשבונות משתמשים באמצעות Fraud Defense הגנה על החשבון