התכונה "הגנה על הסיסמה" ב-Google Cloud Fraud Defense מאפשרת לזהות פרטי כניסה שדלפו או נחשפו, כדי להגן על האפליקציות מפני מתקפות של השתלטות על חשבונות (ATO) ודחיסת פרטי כניסה. כחלק מההערכה, אתם יכולים לבדוק את פרטי הכניסה של המשתמשים מול פרצות באבטחת מידע ידועות באמצעות טכנולוגיית בדיקת הסיסמאות של 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.
יצירת הערכה לזיהוי דליפות של סיסמאות
משתמשים ב-method projects.assessments.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- LOOKUP_HASH_PREFIX: תחילית של תחילית הגיבוב (hash) מסוג 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 או במצב הדגמה של מארח מקומי בלבד.
מכיוון שהקונטיינר מקבל פרטי כניסה רגישים של משתמשי קצה (שמות משתמשים וסיסמאות), צריך להריץ אותו באמצעות HTTPS או במצב הדגמה של מארח מקומי בלבד. להנחיות לגבי הגדרת 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