Sorun Tanımı
Çevrimiçi platformlarda otomatik saldırılar giderek artmaktadır. Bu saldırılar arasında en yaygın olanları:
- Kimlik bilgisi doldurma (Credential Stuffing): Saldırganların çalınmış kullanıcı adı ve parola kombinasyonlarını farklı platformlarda denemesi.
- Toplu hesap oluşturma: Botlar aracılığıyla binlerce sahte hesap oluşturulması.
- Otomatik form doldurma: Web formlarının makine öğrenimiyle otomatik olarak doldurulması.
Mevcut reCAPTCHA sistemleri (örneğin, resim seçme tabanlı CAPTCHA'lar) zamanla botlar tarafından aşılabilir hale gelmiştir. Bu durum, güvenlik açıklarına ve kullanıcı deneyiminin bozulmasına yol açmaktadır. Google, bu sorunlara çözüm olarak el hareketi tabanlı reCAPTCHA sistemini geliştirmektedir.
Çözüm: Kamera Tabanlı El Hareketi reCAPTCHA
Yeni reCAPTCHA sistemi, kullanıcıların web kameraları önünde belirli el hareketlerini gerçekleştirmelerini gerektirmektedir. Bu sistem, aşağıdaki adımlardan oluşmaktadır:
-
Kullanıcı Arayüzüne Erişim:
Kullanıcı, reCAPTCHA doğrulama sayfasında bir el simgesi ve hareket talimatı görür. Örneğin, "Elinizi kameraya doğru uzatın ve parmaklarınızı açıp kapatın" gibi.
-
Elin Konumlandırılması ve Hareketin Tanımlanması:
Kullanıcı, talimatlara uygun şekilde elini kameraya doğru uzatır ve belirtilen hareketi gerçekleştirir. Sistem, makine öğrenimi tabanlı bir model kullanarak elin 21 farklı koordinatını analiz eder. Bu koordinatlar şunları içerir:
- Parmak eklemleri
- Elin geometrisi (el genişliği, uzunluğu vb.)
- Elin kameraya olan uzaklığı
Model, elin gerçek zamanlı hareketini ve koordinatlarını karşılaştırarak canlı bir kullanıcının varlığını doğrular.
-
Canlılık Kontrolü ve Doğrulama:
Sistem, hareketin süresini, hızını ve koordinat değişimlerini analiz eder. Örneğin, bir botun hareketi taklit etmesi neredeyse imkansızdır, çünkü:
- İnsan hareketleri doğal bir gecikme ve değişkenlik içerir.
- Botlar genellikle sabit ve tahmin edilebilir hareketler gerçekleştirir.
Eğer sistem, hareketin doğal ve gerçek bir kullanıcıya ait olduğuna kanaat getirirse, kullanıcıyı doğrular. Aksi takdirde, kullanıcıya alternatif doğrulama yöntemleri sunulabilir (örneğin, klasik reCAPTCHA).
-
Arka Planda Makine Öğrenimi Modeli:
Sistem, TensorFlow ve MediaPipe gibi açık kaynaklı kütüphaneleri kullanarak el hareketlerini analiz eder. Model, kullanıcıların gerçek hareketlerini ve bot hareketlerini ayırt etmek üzere eğitilmiştir. Bu model, sürekli olarak güncellenerek yeni saldırı yöntemlerine karşı dirençli hale getirilmektedir.
Kullanılan Teknolojiler ve Altyapı
El hareketi tabanlı reCAPTCHA sisteminin temel bileşenleri şunlardır:
1. Web Kamerası Entegrasyonu
<video id="camera" autoplay muted></video>
<canvas id="canvas"></canvas>
// JavaScript ile kamera erişimi ve görüntü yakalama
const camera = document.getElementById('camera');
const canvas = document.getElementById('canvas');
const context = canvas.getContext('2d');
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
camera.srcObject = stream;
})
.catch(error => {
console.error('Kamera erişimi sağlanamadı:', error);
});
⚠️ Uyarı: Kamera erişimi için kullanıcıdan izin alınmalıdır. Bu izin, tarayıcının güvenlik politikaları nedeniyle gereklidir. Kullanıcılar, tarayıcı ayarlarından kamerayı devre dışı bırakabilir veya izinleri iptal edebilir.
2. El Tespiti ve Koordinat Analizi
Google, bu sistem için MediaPipe Hands adlı bir kütüphane kullanmaktadır. MediaPipe Hands, elin 21 koordinatını gerçek zamanlı olarak tespit eder ve analiz eder. Bu koordinatlar, aşağıdaki gibi bir JSON formatında elde edilebilir:
{
"landmarks": [
{"x": 0.45, "y": 0.32, "z": 0.12}, // Başparmak eklemi
{"x": 0.48, "y": 0.35, "z": 0.10}, // İşaret parmağı eklemi
// ... 19 adet daha koordinat
]
}
Bu koordinatlar, makine öğrenimi modeline girdi olarak verilir. Model, koordinatların zaman içindeki değişimini analiz ederek kullanıcının gerçek bir insan olup olmadığını belirler.
3. Makine Öğrenimi Modeli
Model, TensorFlow.js kullanılarak tarayıcıda çalıştırılır. Modelin eğitimi için aşağıdaki adımlar izlenir:
- Veri Toplama: Gerçek kullanıcıların ve botların el hareketlerinden oluşan bir veri seti oluşturulur.
- Model Eğitimi: TensorFlow.js kullanılarak bir sinir ağı modeli eğitilir. Model, el hareketlerinin doğallığını ve koordinat değişimlerini analiz eder.
- Model Dağıtımı: Eğitilen model, tarayıcıda çalıştırılmak üzere optimize edilir ve reCAPTCHA sistemine entegre edilir.
Uygulama Adımları ve Entegrasyon
El hareketi tabanlı reCAPTCHA'yı bir web uygulamasına entegre etmek için aşağıdaki adımlar izlenmelidir:
-
Google reCAPTCHA API'sini Etkinleştirme:
Google reCAPTCHA API'sinin en son sürümünü kullanmak için aşağıdaki adımları izleyin:
<script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY" data-callback="onRecaptchaSuccess"></div>Google reCAPTCHA yönetici panelinden site anahtarınızı alın ve yukarıdaki koda ekleyin.
-
El Hareketi Doğrulama Modülünü Ekleme:
El hareketi doğrulama modülünü eklemek için aşağıdaki JavaScript kodunu kullanabilirsiniz:
// MediaPipe Hands kütüphanesini yükleme import { Hands, HAND_CONNECTIONS } from '@mediapipe/hands'; const hands = new Hands({ locateFile: (file) => { return `https://cdn.jsdelivr.net/npm/@mediapipe/hands/${file}`; } }); hands.setOptions({ maxNumHands: 1, modelComplexity: 1, minDetectionConfidence: 0.5, minTrackingConfidence: 0.5 }); // El hareketini analiz etme function onResults(results) { if (results.multiHandLandmarks) { const landmarks = results.multiHandLandmarks[0]; // Koordinatları analiz etme ve reCAPTCHA doğrulama sürecini başlatma verifyHandGesture(landmarks); } } hands.onResults(onResults); -
Doğrulama Sürecini Tamamlama:
El hareketi doğrulandıktan sonra, reCAPTCHA'nın geri kalan doğrulama sürecini tamamlayın. Bu, genellikle bir API çağrısı ile Google sunucularına doğrulama talebi göndermek anlamına gelir:
function verifyHandGesture(landmarks) { fetch('/verify-hand-gesture', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ landmarks: landmarks, timestamp: Date.now() }) }) .then(response => response.json()) .then(data => { if (data.success) { // Doğrulama başarılı grecaptcha.execute(); } else { // Alternatif doğrulama yöntemini göster showAlternativeRecaptcha(); } }); }
Avantajlar ve Sınırlamalar
Avantajlar
- Gelişmiş Güvenlik: El hareketi tabanlı doğrulama, botlar tarafından aşılması zor bir engel oluşturur. Makine öğrenimi modeli, gerçek kullanıcıların doğal hareketlerini bot hareketlerinden ayırt eder.
- Kullanıcı Deneyimi: Kullanıcılar, resim seçme gibi geleneksel CAPTCHA'lara kıyasla daha sezgisel ve kullanıcı dostu bir doğrulama süreci yaşarlar.
- Esneklik: Sistem, farklı el hareketlerini destekleyebilir ve kullanıcıya özel doğrulama yöntemleri sunabilir.
- Gerçek Zamanlı Doğrulama: Doğrulama süreci, kullanıcının hareketini gerçek zamanlı olarak analiz eder ve hemen sonuç verir.
Sınırlamalar ve Riskler
- Kamera Gereksinimi: Kullanıcının bir web kamerasına sahip olması gerekmektedir. Kamera olmayan cihazlarda (örneğin, bazı mobil cihazlar) sistem çalışmayacaktır.
- Gizlilik Endişeleri: Kamera erişimi, kullanıcıların gizlilik endişelerine yol açabilir. Bu nedenle, sistemin kullanıcıdan açık onay alması ve verilerin güvenli bir şekilde saklanması gerekmektedir.
- Performans Etkisi: El hareketi analizi, tarayıcıda yoğun hesaplama gerektirebilir. Bu, performansı olumsuz etkileyebilir, özellikle eski cihazlarda.
- Botların Gelişimi: Botlar zamanla bu sistemleri aşmak için yeni yöntemler geliştirebilir. Bu nedenle, modelin sürekli olarak güncellenmesi gerekmektedir.
💡 İpucu: El hareketi tabanlı reCAPTCHA'yı uygulamadan önce, kullanıcıların cihazlarında kamera erişimi ve performans gereksinimlerini test edin. Kullanıcı geri bildirimlerini dikkate alın ve sistemin kullanıcı dostu olduğundan emin olun.
Sonuç
Google'ın el hareketi tabanlı reCAPTCHA sistemi, otomatik saldırılara karşı yenilikçi bir çözüm sunmaktadır. Bu sistem, makine öğrenimi ve gerçek zamanlı analiz kullanarak kullanıcıların canlı varlığını doğrulamayı hedeflemektedir. Kullanıcı dostu arayüzü ve gelişmiş güvenlik özellikleriyle, çevrimiçi platformların güvenliğini artırmaya yönelik önemli bir adım olarak değerlendirilmektedir.
Ancak, sistemin başarısı, kullanıcı gizliliğine saygı gösterilmesi, performans optimizasyonu ve sürekli model güncellemelerine bağlıdır. Gelecekte, bu tür sistemlerin daha da yaygınlaşması ve gelişmesi beklenmektedir.



