Mi chiedo se qualcuno potrebbe dare una seconda opinione se il seguente è sicuro o meno.
Ho un sistema che consiste in un dispositivo mobile, un server FTP e un PC. Il dispositivo mobile deve caricare dati sensibili sul server FTP affinché un PC possa scaricarlo ... Dopo il download, i dati sul server FTP vengono cancellati.
Il PC si trova in una rete sicura e può avere i dati sensibili come testo normale. I dati devono essere crittografati con AES-256. Poiché lo scambio di chiavi con le chiavi simmetriche è un problema, vorrei crittografare la chiave simmetrica con la chiave asimmetrica.
Protocollo che pensavo di usare:
1) Il PC genererebbe una coppia di chiavi asimmetriche (chiave pubblica e privata, RSA-2048 o migliore).
2) Utilizzare la chiave privata per creare una firma della chiave pubblica.
3) Carica la chiave pubblica e la sua firma sul server FTP.
4) Il dispositivo mobile scarica la chiave pubblica e la sua firma.
5) Il dispositivo mobile utilizza la chiave pubblica per verificare la firma.
6) Se la firma è verificata, siamo sicuri che la chiave pubblica appartiene alla chiave privata nel PC (e non a un potenziale aggressore).
7) Il dispositivo mobile genera una chiave AES-256 simmetrica (segreta).
8) Il dispositivo mobile esegue la crittografia sensibile con la chiave simmetrica e quindi carica i dati crittografati sul server FTP.
9) Il dispositivo mobile crittografa la chiave simmetrica con la chiave pubblica e la carica sul server FTP.
10) Il dispositivo mobile genera MAC utilizzando la chiave simmetrica crittografata come messaggio e chiave pubblica come chiave MAC, quindi carica il server MAC in FTP. (Questa parte è necessaria?)
11) Il PC scarica quanto segue: dati crittografati, chiave simmetrica crittografata AES-256, MAC della chiave simmetrica crittografata. (Il PC cancella anche i dati sul server FTP dopo il download)
12) Il PC calcola il MAC della chiave simmetrica crittografata scaricata e la confronta con il MAC scaricato. Se entrambi i MAC scaricati e quelli generati dal PC corrispondono, possiamo concludere che la chiave simmetrica crittografata è autentica.
13) Il PC decrittografa la chiave simmetrica crittografata con la chiave privata asimmetrica.
14) Il PC decrittografa i dati sensibili con il tasto simmetrico AES-256.
15) Fatto!
Le chiavi asimmetriche devono essere cambiate per un certo periodo, non superiore a 2 anni. Le chiavi simmetriche sono basate su "sessione", cioè una nuova chiave viene generata per ogni set di dati.