← KSBU Yoklama

KSBU Yoklama

Kütahya Sağlık Bilimleri Üniversitesi için QR + BLE çift yöntemli yoklama sistemi. Android ve iOS için yerel mobil istemciler.

QR KodBLE BeaconAndroid · YayındaiOS · Geliştiriliyor
QR
Şifreli Token
BLE
Yakınlık
LDAP
Giriş
UUID
Cihaz Kilidi

Proje Hakkında

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.

İki Yöntem · Tek Sistem

QR ve BLE birbirini tamamlar — eğitmen ders yapısına göre birini, diğerini veya ikisini birden başlatabilir

QR Kod Yöntemi

Yayında

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.

Avantajlar
  • Ek donanım gerektirmez
  • Görsel olarak doğrulanabilir
  • Şifreleme anahtarı sunucuda tutulur
Dikkat Edilen Noktalar
  • QR fotoğrafı paylaşılabilir → kısa süreli token + sınıf IP doğrulaması ile engellenir
  • Karanlık sınıfta okuma zorlaşır
  • Sıraya girme — herkes aynı anda tarayamaz

BLE Yakınlık Yöntemi

Geliştiriliyor

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.

Avantajlar
  • Fiziksel yakınlık zorunluluğu — uzaktan yoklama mümkün değil
  • Otomatik / pasif — öğrenci hiçbir şey yapmasa bile algılanır
  • Düşük güç tüketimi (BLE), arka planda çalışır
  • GPS'in başarısız olduğu kapalı alanlarda iyi çalışır
Dikkat Edilen Noktalar
  • Sınıf başına Beacon donanımı veya eğitmen cihazı gerekir
  • RSSI duvarlardan etkilenebilir → birden fazla Beacon ile çapraz doğrulama
  • Bluetooth açık olma zorunluluğu

Yöntem Karşılaştırması

QR ve BLE neden GPS/NFC\'ye tercih edildi?

TeknolojiMesafeKapalı AlanPilDonanımSuistimal Riski
QR Kod KULLANILIYORGörsel hatİyiYokYokFotoğraf paylaşımı
BLE KULLANILIYOR5–30 m (RSSI)Çok iyiÇok düşükBeaconEngellenebilir (Rolling ID)
GPS 5–50 m (açık alan)ZayıfYüksekYokSpoofing kolay
NFC <10 cmMükemmelÇok düşükNFC okuyucuSıraya girme zorunlu

İki Platform · Tek Backend

Android ve iOS aynı endpoint\'leri tüketir; istemci tarafı eşdeğer kütüphanelerle uygulanır

Android

Yayında
Android 7.0+ (API 24)
DilKotlin
Kamera (QR)CameraX + Google ML Kit Barcode Scanning
BLEandroid.bluetooth.le (BluetoothLeScanner) · Nordic BLE Library
Retrofit 2.9 + OkHttp 4.9 + Gson
EşzamanlılıkKotlin Coroutines
Şifrelemejavax.crypto (AES/CBC/PKCS5) + MessageDigest (SHA-1)
UIMaterial Design + DrawerLayout + ConstraintLayout
Cihaz IDSettings.Secure.ANDROID_ID

iOS

Geliştirme Aşamasında
iOS 15.0+ (planlanan)
DilSwift 5
Kamera (QR)AVFoundation + Vision (VNDetectBarcodesRequest)
BLECoreBluetooth (CBCentralManager) · CoreLocation (iBeacon ranging)
URLSession + async/await + Codable
EşzamanlılıkSwift Concurrency (async/await + Task)
ŞifrelemeCryptoKit + CommonCrypto (AES/CBC/PKCS7) + Insecure.SHA1
UISwiftUI + NavigationStack + SF Symbols
Cihaz IDUIDevice.identifierForVendor

Geliştirme Aşamaları

Analizden çoklu platform + çift yöntem dağıtımına 7 aşama

01

İhtiyaç Analizi & Tasarım

Tamamlandı

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ı.

02

Backend Servisleri

Tamamlandı

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.

03

Android — QR Yöntemi (MVP)

Yayında

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ı.

04

BLE Beacon Pilotu

Devam Ediyor

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.

05

Güvenlik Sertleştirme

Devam Ediyor

Ç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.

06

iOS İstemci

Planlandı

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ığı.

07

Dağıtım & Bakım

Sürekli

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.

Yoklama Akışı — Adım Adım

Bir öğrencinin yoklama vermesi sırasında uygulamada yaşanan adımlar — 04a (QR) ve 04b (BLE) paralel kollar

01

Kimlik Doğrulama (Tek Sefer)

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.

02

Cihaz Doğrulama

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.

03

Yoklama Yöntemi (QR veya BLE)

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.

04a

QR Yolu — Kriptografik Çözüm

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.

04b

BLE Yolu — RSSI + Rolling ID

Öğ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.

05

Yoklama Kaydı

Çö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.

Güvenlik Mimarisi

Yoklama dolandırıcılığını engelleyen 8 katman

Çift Faktörlü Cihaz Kilidi

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.

AES/CBC + Dinamik IV (QR)

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.

Rolling Beacon ID (BLE)

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.

RSSI Mesafe Filtresi (BLE)

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.

IP Tabanlı Sınıf Doğrulama (QR)

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.

Zaman Damgası Penceresi

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.

Server-Side Secret Key

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.

TLS Üzerinden Auth

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.

Özellikler

LDAP/SSO Girişi

KSBU tekhesap üzerinden kullanıcı adı ve parola ile kurumsal kimlik doğrulama.

QR Kod Tarama

Cihazın arka kamerasından gerçek zamanlı barcode/QR algılama; ekrandaki kodu otomatik tespit.

BLE Yakınlık Doğrulaması

Sınıftaki Beacon veya eğitmenin telefonu sinyal yayar; öğrencinin cihazı RSSI ile fiziksel yakınlığı doğrular.

AES/CBC Şifre Çözme

QR'lar AES/CBC + PKCS5 ile şifrelenmiştir; uygulama IV+ciphertext'i çözer. BLE payload'ları da Rolling ID ile döner.

Cihaz Kilitleme

Android ID / iOS identifierForVendor ile cihaz–kullanıcı eşlemesi; başka kişiye kayıtlı cihaz reddedilir.

SHA-1 + Gizli Anahtar

Parola istemcide SHA-1 hash'lenir, isteğe sabit secret key eklenerek auth endpoint'ine gönderilir.

Kullanıcı Profili

Yan menüde mail, fakülte, TC, ünvan, ad, soyad, sicil no, lokasyon ve mobil bilgileri görüntülenir.

Native UI

Android: Material Design + DrawerLayout. iOS (planlanan): SwiftUI + SF Symbols, Apple HIG uyumlu.

Kurum İçi Uygulama

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:

Android
Kurum portalından APK indirme
iOS (planlanan)
TestFlight + Apple Business Manager