Devo fornire un servizio che funzioni come un blackbox di crittografia / decrittografia simmetrico:
- la casella ottiene una chiave segreta
k
- utenti inviano dati
d
e ottengono testo cifratoc = Encrypt(d,k)
- utenti inviano testo cifrato
c
e ottieni datid = Decrypt(c,k)
- la casella deve crittografare / decodificare solo da / a un gruppo autorizzato di utenti
- gli utenti non dovrebbero mai ottenere la chiave
k
Sto avendo un piccolo problema nell'individuare quali potrebbero essere buchi nel mio servizio. Per quanto ho capito, ho bisogno di crittografia che resista ai seguenti attacchi:
- Scelto l'attacco al testo cifrato
- Scelto attacco in chiaro
- Conoscenza dell'attacco del testo normale
Da un punto di vista tecnico, la crittografia / decrittografia viene eseguita usando AES, che si ritiene resista al suddetto attacco. Con un HMAC, dovrei poter rifiutare richieste provenienti da utenti non autorizzati.
È vero che;
- un utente non sarà in grado di trovare la chiave per il fatto che è in grado di crittografare / decodificare qualsiasi quantità di dati (poiché AES è strong)
-
user1
può crittografare i dati,user2
può ottenerli (rubare), e orauser2
può decifrare i dati diuser1
usando l'oracolo - dato che fornisco un oracolo, ho poche preoccupazioni sugli attacchi di sincronizzazione e sugli attacchi di riempimento
Quali sono i rischi, gli attacchi e le lacune che mi mancano in questo schema?