Kütahya Sağlık Bilimleri Üniversitesi için QR + BLE çift yöntemli yoklama sistemi. Android ve iOS için yerel mobil istemciler.
KSBU Yoklama, Kütahya Sağlık Bilimleri Üniversitesi öğrencilerinin derslerde kâğıt yoklama defteri yerine, QR kod tarayarak veya sınıftaki BLE Beacon\'a yakınlık doğrulanarak yoklama vermesini sağlayan bir mobil sistemdir. İki yöntem birlikte çalışır: QR görsel doğrulama, BLE ise fiziksel yakınlık şartı sunar. Bu sayede "QR fotoğrafı paylaşma" ve "uzaktan yoklama" senaryolarının ikisi birden engellenir. Tüm akış kurumsal LDAP doğrulaması ve cihaz–kullanıcı kilitlemesi üzerine inşa edilmiştir.
QR ve BLE birbirini tamamlar — eğitmen ders yapısına göre birini, diğerini veya ikisini birden başlatabilir
Eğitmen ders başında ekrana/projeksiyona dinamik bir QR kod yansıtır. Öğrenci kamerayla bu kodu okutur; uygulama içerideki AES şifreli token'ı (IV + IP + timestamp) çözüp sunucuya iletir.
Sınıfa konumlanmış BLE Beacon'u (veya eğitmenin telefonu Peripheral modunda) Rolling ID ile sinyal yayar. Öğrenci telefonu Central modunda bu sinyali tarar; RSSI eşiği üstündeyse fiziksel yakınlık doğrulanır.
QR ve BLE neden GPS/NFC\'ye tercih edildi?
| Teknoloji | Mesafe | Kapalı Alan | Pil | Donanım | Suistimal Riski |
|---|---|---|---|---|---|
| QR Kod KULLANILIYOR | Görsel hat | İyi | Yok | Yok | Fotoğraf paylaşımı |
| BLE KULLANILIYOR | 5–30 m (RSSI) | Çok iyi | Çok düşük | Beacon | Engellenebilir (Rolling ID) |
| GPS | 5–50 m (açık alan) | Zayıf | Yüksek | Yok | Spoofing kolay |
| NFC | <10 cm | Mükemmel | Çok düşük | NFC okuyucu | Sıraya girme zorunlu |
Android ve iOS aynı endpoint\'leri tüketir; istemci tarafı eşdeğer kütüphanelerle uygulanır
Analizden çoklu platform + çift yöntem dağıtımına 7 aşama
KSBU yoklama süreçlerinin saha analizi yapıldı; mevcut imza/yoklama defteri sistemindeki suistimal noktaları belirlendi (öğrenci adına başkasının imza atması, geç gelinen derste retroaktif imza). Çözüm olarak çok katmanlı kriptografik mimari tasarlandı.
Kimlik doğrulama (tekhesap.ksbu.edu.tr/auth), oturum kontrolü (/checkSession, /createSession) ve yoklama kaydı (/saveQRData, /saveBleData) endpoint'leri ayağa kaldırıldı. AES/CBC ile QR token üretim mantığı ve BLE Rolling ID rotasyonu backend'de yönetiliyor.
Kotlin + Material Design ile Android uygulaması geliştirildi. LoginActivity (LDAP + SHA-1 + cihaz UUID kontrolü), CameraActivity (CameraX + ML Kit + AES çözüm + yoklama gönderimi). Retrofit/OkHttp + Coroutines ile asenkron ağ katmanı. APK kurum içi dağıtım kanalıyla yayınlandı.
Sınıflara fiziksel BLE Beacon'lar (iBeacon/Eddystone uyumlu) yerleştirilmesi planlanıyor. Eğitmen telefonunun Peripheral mod ile yayıncı olarak kullanılması alternatifi de değerlendirildi. Android tarafında BluetoothLeScanner ile Central tarama ve RSSI tabanlı mesafe filtreleme akışı geliştiriliyor.
Çift faktörlü cihaz kilidi + dinamik IV + sınıf ağı IP doğrulaması + Rolling Beacon ID katmanları aktif. SHA-1'den SHA-256'ya geçiş, secret key'in güvenli yapı zamanı enjeksiyonu, HTTPS pinning ve ProGuard/R8 minify aktivasyonu sırada.
SwiftUI + AVFoundation/Vision (QR) + CoreBluetooth/CoreLocation (BLE) tabanlı iOS uygulaması, Android sürümünün özellik paritesini hedefleyerek geliştirilecek. Aynı backend endpoint'leri kullanılacağı için sunucu tarafında değişiklik gerekmiyor. CryptoKit ile AES/CBC; Keychain üzerinden cihaz UUID kalıcılığı.
Android APK'sı kurum intranet portalında yayında. iOS sürümü TestFlight + Apple Business Manager üzerinden dağıtılacak. BLE Beacon donanımları kampüs IT ekibi tarafından kuruluyor; Beacon ID rotasyonu sunucu tarafında zamanlanmış görevle yönetiliyor.
Bir öğrencinin yoklama vermesi sırasında uygulamada yaşanan adımlar — 04a (QR) ve 04b (BLE) paralel kollar
Kullanıcı KSBU tekhesap kullanıcı adı ve parolasını girer. Parola istemci tarafında SHA-1 ile hash'lenir, sabit gizli anahtar (secretKey) eklenerek tekhesap.ksbu.edu.tr/auth POST endpoint'ine JSON olarak gönderilir. Sunucu LDAP doğrulaması yapar; başarılı olursa kullanıcı bilgilerini içeren UserResponse döner.
Cihaz kimliği (Android: Settings.Secure.ANDROID_ID, iOS: identifierForVendor) ile mail eşlemesi sunucuda kontrol edilir (/checkSession). Cihaz farklı kullanıcıya kayıtlıysa giriş reddedilir; yeni cihazsa /createSession ile oturum oluşturulur. Bu adım, "arkadaşımın telefonu ile yoklama verme" senaryosunu engeller.
Eğitmen, dersin yapısına göre QR yöntemini, BLE yöntemini veya her ikisini birden başlatır. Öğrenci uygulamasında her iki dinleyici (Camera + BLE Scanner) eş zamanlı aktiftir; hangisi ilk doğrulamayı tamamlarsa yoklama o yöntem üzerinden işlenir.
QR içeriği "IV:ciphertext" formatında hex stringtir. IV ve ciphertext ayrıştırılır, base16'dan byte array'e dönüştürülür. AES/CBC/PKCS5Padding modunda sabit anahtar ile çözüm yapılır; sonuç "IP:timestamp" stringi olarak elde edilir.
Öğrencinin cihazı sınıftaki Beacon'un yaydığı reklam paketini yakalar. Rolling ID (her N saniyede değişen tanımlayıcı) sunucuya gönderilerek doğrulanır; RSSI değeri eşik değerinin üstündeyse (örn. ≥ -75 dBm) öğrencinin sınıf içinde olduğu kabul edilir.
Çözülen IP+timestamp (QR) veya RSSI+Rolling ID (BLE) verisi /saveQRData veya /saveBleData endpoint'ine gönderilir. Sunucu veriyi doğrular: IP'nin sınıf ağında olup olmadığı, timestamp'in geçerli pencere içinde olup olmadığı, Beacon ID'sinin o derse atanıp atanmadığı. Yoklama kaydedilir; öğrenciye başarı bildirimi gösterilir.
Yoklama dolandırıcılığını engelleyen 8 katman
Kimlik doğrulama LDAP'a, oturum tutarlılığı cihaz UUID'sine bağlı. Bir öğrenci başkasının cihazıyla yoklama veremez; öğrencinin kendi telefonunda farklı bir hesapla giriş yapması engellenir.
QR kodlardaki yoklama tokeni "IV:ciphertext" formatında. Her QR ayrı IV ile şifrelendiği için aynı plaintext bile farklı ciphertext üretir; replay/clone saldırıları zorlaştırılır.
BLE Beacon'un yaydığı tanımlayıcı her N saniyede sunucu tarafından döndürülür. Öğrencinin önceden kaydettiği bir ID dakikalar sonra geçersizdir; "Beacon'u sniffleyip arkadaşa gönder" senaryosu engellenir.
Sinyal gücü eşik değerinin (örn. -75 dBm) altındaysa öğrencinin sınıf dışında olduğu kabul edilir. Çoklu Beacon kurulumunda sinyal triangulation ile sınıf sınırı netleştirilir.
AES çözümünden çıkan IP, dersin yapıldığı binanın WiFi ağ aralığı içinde olmak zorundadır. Sınıf dışından QR fotoğrafı paylaşılarak yapılan girişimler reddedilir.
QR token'ı içindeki zaman damgası ve BLE Rolling ID rotasyon süresi kısa pencerelerde (örn. 30 sn) geçerlidir. Sınıfta o anda gösterilen QR'ın ekran görüntüsü dakikalar sonra işe yaramaz.
Auth isteğine sabit gizli anahtar eklenir; client kodu reverse edilse de secret key sunucuda hash karşılaştırması yapılır. Secret olmadan auth endpoint'i 401 döner.
tekhesap.ksbu.edu.tr HTTPS üzerinden çalışır; Retrofit + OkHttp TLS bağlantısı kullanır. Kimlik bilgileri ve hash'lenmiş parola şifreli kanaldan iletilir.
KSBU tekhesap üzerinden kullanıcı adı ve parola ile kurumsal kimlik doğrulama.
Cihazın arka kamerasından gerçek zamanlı barcode/QR algılama; ekrandaki kodu otomatik tespit.
Sınıftaki Beacon veya eğitmenin telefonu sinyal yayar; öğrencinin cihazı RSSI ile fiziksel yakınlığı doğrular.
QR'lar AES/CBC + PKCS5 ile şifrelenmiştir; uygulama IV+ciphertext'i çözer. BLE payload'ları da Rolling ID ile döner.
Android ID / iOS identifierForVendor ile cihaz–kullanıcı eşlemesi; başka kişiye kayıtlı cihaz reddedilir.
Parola istemcide SHA-1 hash'lenir, isteğe sabit secret key eklenerek auth endpoint'ine gönderilir.
Yan menüde mail, fakülte, TC, ünvan, ad, soyad, sicil no, lokasyon ve mobil bilgileri görüntülenir.
Android: Material Design + DrawerLayout. iOS (planlanan): SwiftUI + SF Symbols, Apple HIG uyumlu.
KSBU Yoklama, Kütahya Sağlık Bilimleri Üniversitesi öğrenci ve personeline yönelik dahili bir uygulamadır. Mağaza üzerinden değil, kurum içi dağıtım kanallarıyla yayınlanır: