Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Scenario:
- Ho il controllo di un server e del codice che gira su un app client, l'attacker puo' far eseguire il client sulla sua macchina senza poterlo modificare e puo' accedere al server per un periodo di tempo limitato (giorni)
- Il server riceve dei dati, li signa con una chiave privata e li ritorna al client.
- Il client ha la corrispondente chiave pubblica, un id identificativo, la data corrente, un numero random (cryptographically strong se la entropy pool ha abbastanza dati, senno' merda prevedibile :( ).
- Invia tutto al server, che gli ritorna i dati e una signature signata con la chiave privata di cui sopra. Se il client convalida la signature i dati sono assunti come veri (quindi sappiamo che la data e' corretta con un margine di errore di x secondi) e il client e' autenticato.
- Come puo' l'attacker fare in modo di staccare la macchina da internet e far credere al client che il server abbia validato la sua richiesta?
- Mi viene in mente un solo modo: esaurisci la entropy pool, il client genera un numero casuale che puoi prevedere e ripeti il trick ad ogni esecuzione del client cosi' da fixare il numero random.
- Ora che il numero random e' fixato falsifichi la data del sistema cosi' che esegui il programma sempre alla stessa data.
- Ora client generera' sempre la stessa richiesta al server, posso fare una chiamata una volta al server, cachare la richiesta e fare un finto server che ritorna sempre la stessa risposta giusta.
- - Vi vengono in mente altri attacchi?
- - Come posso generare davvero un numero random senza accedere a un server esterno, considerando il fatto che l'attaccante potrebbe simulare un server esterno e aggirarmi?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement