Ho bisogno di crittografare e inviare file di aggiornamento dell'ordine di 100K da un server, tramite un'app mobile, a dispositivi embedded wireless a bassa potenza (32 bit). I trasferimenti di file saranno rari. Le comunicazioni da dispositivo mobile a dispositivo sono lente (BLE) e possono contenere 16 byte di dati per messaggio. Il dispositivo ha una memoria aggiuntiva limitata oltre i 100K, pertanto è necessario che la decrittografia sia presente. Lo spazio del codice è anche abbastanza limitato sul dispositivo.
Il server e i dispositivi possono avere segreti comuni e il dispositivo può creare una sequenza di funzioni che non si ripetono dopo un ciclo di spegnimento. I file includono già CRC32 per la convalida dell'integrità dei dati.
Il seguente è un approccio valido?
Ogni dispositivo ha la sua chiave, il server ha una tabella di chiavi del dispositivo Il dispositivo invia il proprio id e nonce al server. Il file è crittografato con l'autenticazione nel suo complesso sul server. Il file crittografato viene inviato all'app mobile, suddivisa in blocchi da 16 byte, inviata al dispositivo. Il dispositivo riassembla il file crittografato, decrittografa e controlla l'autenticità.
Sarebbe salsa20 + umac essere una buona scelta per la crittografia / autenticazione?