Sto cercando di creare un'app che verrà utilizzata per tracciare la presenza degli utenti in una posizione, utilizzando l'hotspot Wi-Fi della posizione. Lo scopo è sapere quale utente era nel luogo per quanto tempo. Lo scenario è il seguente:
(tutte le richieste-risposte avvengono su un canale crittografato)
- Gli amministratori di posizione creano un account per l'utente. Gli amministratori forniscono la password per questo account all'utente. L'utente effettua l'accesso utilizzando questa password.
- Dopo l'accesso, l'app riceve una chiave di sessione.
- L'utente arriva nel luogo. Il dispositivo mobile si collega automaticamente alla rete Wi-Fi.
- L'app controlla il SSID della rete corrente. Se il SSID è "WiFi della posizione", l'app invia una sfida al router crittografando un numero casuale con una chiave pubblica, la cui coppia privata è di proprietà del router.
- Il router decrittografa la sfida e risponde, che segnala all'app che si trova effettivamente nella rete della posizione.
- L'app invia la chiave di sessione al router. Il router associa l'indirizzo IP a questa chiave di sessione.
- Ogni minuto, il router invia al server le chiavi di sessione associate agli indirizzi IP dei dispositivi che sono attualmente sulla rete, insieme a un timestamp.
- Alla fine della giornata, utilizzando i dati inviati dal router, quale utente si trovava nel luogo per quanto tempo è stato calcolato.
Non sono sicuro che ci sia un difetto di progettazione in questo approccio. Questo sistema può essere ingannato? Ci sono dei buchi che dovrei correggere?
Vorrei sapere se:
- Gli utenti possono ingannare il sistema rendendolo più lungo o più breve di quello attuale.
- Le identità associate agli indirizzi IP possono essere falsificate.