Halaman ini menjelaskan cara menggunakan fitur Pertahanan sandi reCAPTCHA untuk mendeteksi kebocoran sandi dan kredensial yang dilanggar untuk mencegah pengambilalihan akun (ATO) dan serangan credential stuffing. Dengan reCAPTCHA, Anda dapat melakukan audit rutin terhadap kredensial pengguna (sandi) sebagai bagian dari penilaian apa pun untuk memastikan bahwa kredensial tersebut tidak 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 memerlukan penagihan untuk ditautkan dan diaktifkan di project agar dapat menggunakan fitur Perlindungan 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 sekumpulan kredensial telah disusupi dengan menggunakan fungsi kriptografi atau menggunakan container Docker.
Container Docker adalah klien open source yang menerapkan komputasi multipihak yang aman yang diperlukan untuk menjaga privasi pengguna akhir dan mencari kebocoran sandi dengan aman. Untuk mengetahui informasi selengkapnya, lihat Repo GitHub. Penampung Docker mengabstraksi kompleksitas penerapan algoritma kriptografi dan menyederhanakan proses penginstalan. Anda juga dapat menghosting aplikasi container di infrastruktur Anda.
Fungsi kriptografi
Untuk memeriksa apakah sekumpulan kredensial telah dibobol, gunakan Pertahanan 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.
- Buat penilaian untuk mendeteksi kebocoran sandi.
- Verifikasi kredensial yang bocor dari penilaian.
- Menafsirkan putusan dan mengambil tindakan.
Membuat parameter permintaan
Hitung parameter permintaan yang diperlukan menggunakan fungsi kriptografi 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: Google Cloud project ID 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
Node.js (TypeScript)
Untuk mempelajari cara menerapkan deteksi kebocoran sandi menggunakan Node.js (TypeScript), lihat contoh kode TypeScript di GitHub.
Java
Untuk melakukan autentikasi ke reCAPTCHA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Container Docker
Untuk memeriksa apakah kredensial bocor, kirimkan pasangan kredensial nama pengguna dan sandi ke penampung dengan aman menggunakan koneksi localhost atau dengan menyiapkan HTTPS di penampung. Kemudian, penampung mengenkripsi kredensial ini sebelum membuat Permintaan API ke reCAPTCHA, dan memverifikasi hasil yang dienkripsi ulang secara lokal.
Untuk mengirim permintaan ke container Docker, selesaikan langkah-langkah berikut:
- Siapkan Docker.
- Siapkan lingkungan untuk container Docker.
- Buat dan jalankan container.
- Kirim permintaan HTTP ke penampung.
- Menafsirkan putusan dan mengambil tindakan.
Bersiap untuk menjalankan container Docker
Pilih strategi autentikasi.
Penampung mendukung penetapan Kredensial Default Aplikasi atau dapat menerima Kunci API untuk autentikasi.
Konfigurasi penampung PLD agar berjalan dengan HTTPS atau dalam mode demo khusus localhost.
Karena 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.
Membangun dan menjalankan container Docker
Meng-cloning repository
git clone github.com/GoogleCloudPlatform/reCAPTCHA-PLD
Buat container:
docker build . -t pld-local
Mulai container:
docker run --network host \ -e RECAPTCHA_PROJECT_ID=PROJECT_ID \ -e GOOGLE_CLOUD_API_KEY=API_KEY \ pld-local
Container dimulai dan mulai melayani permintaan di port 8080 localhost.
Mengirim Permintaan Localhost
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LEAKED_USERNAME: nama pengguna dari pasangan kredensial yang bocor.
- LEAKED_PASSWORD: sandi dari 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 putusan dan mengambil tindakan
Respons penilaian menunjukkan apakah kredensial bocor dan memberi Anda informasi yang dapat digunakan untuk mengambil tindakan yang sesuai guna melindungi pengguna Anda.
Tabel berikut mencantumkan tindakan yang direkomendasikan yang dapat Anda lakukan saat sandi yang bocor terdeteksi:
Sandi bocor terdeteksi | Tindakan untuk melindungi pengguna Anda |
---|---|
Saat login |
|
Selama pembuatan akun atau reset sandi |
|
Jika Anda belum menggunakan penyedia MFA di situs, Anda dapat menggunakan kemampuan MFA reCAPTCHA.
Langkah berikutnya
- Pelajari cara menggunakan autentikasi multi-faktor (MFA)
- Pelajari cara melindungi akun pengguna dengan menggunakan Account Defender reCAPTCHA