בדף הזה מוסבר איך להשתמש בתכונה 'הגנה על סיסמאות' של Fraud Defense כדי לזהות דליפות של סיסמאות ופרטי כניסה שנפרצו, וכך למנוע השתלטות על חשבונות (ATO) והתקפות של מילוי פרטי כניסה. בעזרת התכונה '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