Halaman ini menjelaskan cara menggunakan fitur deteksi kebocoran sandi reCAPTCHA untuk mendeteksi kebocoran sandi dan kredensial yang diretas guna mencegah pengambilalihan akun (ATO) dan serangan credential stuffing. Dengan reCAPTCHA, Anda dapat melakukan audit reguler terhadap kredensial pengguna (sandi) sebagai bagian dari penilaian apa pun untuk memastikan bahwa kredensial tersebut belum bocor atau dilanggar. Untuk melakukan penilaian ini, Google menggunakan fitur Pemeriksaan Sandi.
Sebelum memulai
Make sure that billing is enabled for your Google Cloud project.
reCAPTCHA mewajibkan penagihan ditautkan dan diaktifkan di project untuk menggunakan fitur deteksi kebocoran sandi. Anda dapat mengaktifkan penagihan menggunakan kartu kredit atau ID penagihan project Google Cloud yang ada. Jika Anda memerlukan bantuan terkait penagihan, hubungi dukungan Penagihan Cloud.
Memeriksa kredensial yang diretas dan bocor
Anda dapat memeriksa apakah kumpulan kredensial telah disusupi dengan menggunakan fungsi kriptografis atau menggunakan penampung Docker.
Penampung Docker adalah klien open source yang mengimplementasikan komputasi multi-pihak yang aman yang diperlukan untuk menjaga privasi pengguna akhir dan mencari kebocoran sandi dengan aman. Untuk mengetahui informasi selengkapnya, lihat Repo GitHub. Penampung Docker membuat abstraksi kompleksitas penerapan algoritma kriptografis dan menyederhanakan proses penginstalan. Layanan ini juga memungkinkan Anda menghosting aplikasi penampung di infrastruktur Anda.
Fungsi kriptografis
Untuk memeriksa apakah kumpulan kredensial telah disusupi, gunakan deteksi kebocoran sandi saat membuat penilaian untuk tindakan seperti login, perubahan sandi, dan reset sandi.
Untuk memeriksa kebocoran sandi dan kredensial yang dilanggar, selesaikan langkah-langkah berikut:
- Buat parameter permintaan.
- Membuat penilaian untuk mendeteksi kebocoran sandi.
- Memverifikasi kredensial yang bocor dari penilaian.
- Menafsirkan verdict dan mengambil tindakan.
Membuat parameter permintaan
Hitung parameter permintaan yang diperlukan menggunakan fungsi kriptografis yang diperlukan oleh protokol privasi tinggi. reCAPTCHA menyediakan library Java dan TypeScript untuk membantu membuat kolom ini:
Untuk membuat verifikasi pemeriksaan sandi, buat objek
PasswordCheckVerifier
.PasswordCheckVerifier verifier = new PasswordCheckVerifier();
Untuk memulai verifikasi, panggil
PasswordCheckVerifier#createVerification
. Metode ini menggunakan nama pengguna dan sandi untuk menghitung parameter guna melakukan pemeriksaan sandi.PasswordCheckVerification verification = verifier.createVerification("username", "password").get();
Buat penilaian menggunakan parameter verifikasi.
byte[] lookupHashPrefix = verification.getLookupHashPrefix(); byte[] encryptedUserCredentialsHash = verification.getEncryptedUserCredentialsHash();
Array byte
lookupHashPrefix
danencryptedUserCredentialsHash
berisi parameter yang diperlukan untuk memulai pemeriksaan sandiAssessment
.
Membuat penilaian untuk mendeteksi kebocoran sandi
Gunakan
metode
projects.assessments.create
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID Google Cloud Anda
- LOOKUP_HASH_PREFIX: awalan hash SHA-256 nama pengguna
- ENCRYPTED_USER_CREDENTIALS_HASH: hash Scrypt kredensial pengguna terenkripsi
Metode HTTP dan URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Isi JSON permintaan:
{ "private_password_leak_verification": { "lookup_hash_prefix": "LOOKUP_HASH_PREFIX", "encrypted_user_credentials_hash": "ENCRYPTED_USER_CREDENTIALS_HASH" } }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
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
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$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
Anda akan melihat respons JSON seperti berikut:
{ "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="] } }
Memverifikasi kredensial yang bocor dari penilaian
Dari respons penilaian, ekstrak kolom
reEncryptedUserCredentials
dan encryptedLeakMatchPrefixes
, lalu teruskan ke
objek verifier untuk menentukan apakah kredensial bocor atau tidak.
PasswordCheckResult result = verifier.verify(verification,
result.getReEncryptedUserCredentials(),
result.getEncryptedLeakMatchPrefixes()
).get();
System.out.println("Credentials leaked: " + result.areCredentialsLeaked());
Contoh kode
Untuk mempelajari cara menerapkan deteksi kebocoran sandi menggunakan TypeScript, lihat contoh kode TypeScript di GitHub.
Contoh kode berikut menunjukkan cara menerapkan deteksi kebocoran sandi dengan menggunakan Java:
Java
Untuk melakukan autentikasi ke reCAPTCHA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Penampung Docker
Untuk memeriksa apakah kredensial bocor, kirimkan pasangan kredensial nama pengguna dan sandi dengan aman ke penampung menggunakan koneksi localhost atau dengan menyiapkan HTTPS di penampung. Penampung kemudian mengenkripsi kredensial ini sebelum membuat Permintaan API ke reCAPTCHA, dan memverifikasi hasil yang dienkripsi ulang secara lokal.
Untuk mengirim permintaan ke penampung Docker, selesaikan langkah-langkah berikut:
- Siapkan Docker.
- Menyiapkan lingkungan untuk penampung Docker.
- Buat dan jalankan penampung.
- Kirim permintaan HTTP ke penampung.
- Menafsirkan verdict dan mengambil tindakan.
Bersiap untuk menjalankan container Docker
Pilih strategi autentikasi.
Penampung mendukung penetapan Kredensial Default Aplikasi atau dapat menerima Kunci API untuk autentikasi.
Konfigurasikan penampung PLD untuk berjalan dengan HTTPS atau dalam mode demo khusus localhost.
Karena penampung menerima kredensial pengguna akhir yang sensitif (nama pengguna dan sandi), penampung harus dijalankan dengan HTTPS atau dalam mode demo khusus localhost. Untuk panduan konfigurasi HTTPS, lihat README di GitHub.
Langkah-langkah berikut menggunakan autentikasi kunci API dan menjalankan klien dalam mode demo khusus localhost.
Mem-build dan menjalankan container Docker
Meng-cloning repository
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLD
Buat container:
docker build . -t pld-local
Mulai penampung:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
Penampung dimulai dan mulai menayangkan permintaan di port 8080 localhost.
Mengirim Permintaan Localhost
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LEAKED_USERNAME: nama pengguna pasangan kredensial yang bocor.
- LEAKED_PASSWORD: sandi pasangan kredensial yang bocor.
Metode HTTP dan URL:
POST http://localhost:8080/createAssessment/
Isi JSON permintaan:
{ "username":"LEAKED_USERNAME", "password":"LEAKED_PASSWORD" }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
lalu jalankan perintah berikut:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://localhost:8080/createAssessment/"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
lalu jalankan perintah berikut:
$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
Anda akan melihat respons JSON seperti berikut:
{ "leakedStatus":"LEAKED" } OR { "leakedStatus":"NO_STATUS" }
Menafsirkan verdict dan mengambil tindakan
Respons penilaian menunjukkan apakah kredensial bocor dan memberi Anda informasi yang dapat digunakan untuk mengambil tindakan yang sesuai guna melindungi pengguna.
Tabel berikut mencantumkan tindakan yang direkomendasikan yang dapat Anda lakukan saat sebuah sandi yang bocor terdeteksi:
Sandi bocor terdeteksi | Tindakan untuk melindungi pengguna Anda |
---|---|
Selama login |
|
Selama pembuatan akun atau reset sandi |
|
Jika belum menggunakan penyedia MFA di situs, Anda dapat menggunakan kemampuan MFA reCAPTCHA.
Langkah selanjutnya
- Pelajari cara menggunakan autentikasi multi-faktor (MFA)
- Pelajari cara melindungi akun pengguna menggunakan Account Defender reCAPTCHA