Necesito proporcionar un servicio que actúe como una caja negra de cifrado / descifrado simétrico:
- la casilla obtiene una clave secreta
k
- los usuarios envían datos
d
y obtienen texto cifradoc = Encrypt(d,k)
- los usuarios envían texto cifrado
c
y obtienen datosd = Decrypt(c,k)
- la casilla debe cifrar / descifrar solo de / a un conjunto de usuarios autorizados
- los usuarios nunca deben obtener la clave
k
Tengo un pequeño problema para identificar lo que podrían ser agujeros en mi servicio. Según tengo entendido, necesito un cifrado que resista los siguientes ataques:
- Ataque de texto cifrado elegido
- Ataque de texto claro elegido
- Conoce el ataque de texto simple
En una vista técnica, el cifrado / descifrado se realiza mediante AES, que se cree que resiste dicho ataque. Con un HMAC, debería poder rechazar solicitudes provenientes de usuarios no autorizados.
¿Es cierto que;
- un usuario no podrá encontrar la clave a pesar del hecho de que puede cifrar / descifrar cualquier cantidad de datos (ya que AES es fuerte)
-
user1
puede cifrar datos,user2
puede obtenerlos (robar) y ahorauser2
puede descifrar los datos deuser1
usando el oráculo - ya que ofrezco un oráculo, tengo pocas preocupaciones con los ataques de tiempo y los ataques de relleno
¿Cuáles son los riesgos, ataques y agujeros que me faltan en este esquema?