en el trabajo, he implementado un cifrado de sobre básico al enviar mensajes a un cliente. Estoy usando AWS KMS y tengo una clave maestra allí. Obtengo una clave de datos, cifro el mensaje con AES-GCM y envío el mensaje con la clave de datos cifrados, IV, etiqueta, etc. El cliente llama a AWS KMS para descifrar la clave de datos para descifrar el mensaje. He implementado esto mirando los documentos de AWS. Estoy almacenando en caché la clave de datos por un tiempo para volver a utilizarla antes de generar una nueva.
Un colega, que es mejor en criptografía que yo, piensa que esto no es seguro debido al envío de la clave con el mensaje, que esto podría llevar a descubrir la clave maestra. Él recomienda ECDH que tiene una mejor distribución de claves, utilizando un secreto compartido con claves privadas / públicas para generar la clave AES. El problema con esto es que necesito almacenar un par de claves pública / privada en algún lugar, y ambos métodos necesitan acceso a un secreto (clave KMS o clave privada).
Estoy buscando otras opiniones sobre qué tan seguros son estos métodos diferentes. ¿Cuáles son las diferencias realmente en la vulnerabilidad?
Editar: Aclaración: La clave maestra es una clave específica creada solo para cifrar claves de datos para estos mensajes a un cliente específico, nada más. Documentos de AWS que utilicé: enlace