Soy un estudiante de maestría en informática que trabaja a tiempo parcial con mi propia compañía como consultor.
Mi último proyecto se basa en mi tesis de licenciatura que se encarga de todo, excepto la seguridad. La aplicación será auditada por una empresa mucho más grande que los que me contrataron y un requisito en la auditoría es la doble capa de seguridad en todos los canales.
La primera capa será, por supuesto, ssl / tls. En cuanto al segundo, he encontrado lo siguiente.
- Autenticación de acceso de compilación HTTP: para el intercambio de credenciales
- DHKE: para crear un secreto compartido que luego se usa para transportar una clave AES.
- RSA: para firmar digitalmente la respuesta del servidor para garantizar que no haya ningún hombre en el medio.
Mi primer pensamiento fue utilizar RSA para transportar la clave de manera segura. Pero pensé que podría reducir los gastos generales utilizando DHKE en su lugar. Corrígeme si me equivoco.
El protocolo funcionaría algo como esto:
Client-> (username + public information for DHKE) -> Server
Server-> (B from DHKE, salt for HTTP digest, AES key encrypted with DHKE secret) -> Client
(Whole message signed with server private key)
Client-> AES(Hashed information for HTTP digest) -> Server
Server-> AES(Session token) -> Client
Una vez iniciada la sesión, todos los mensajes se cifrarán con la clave AES. Probablemente estoy pensando demasiado y me faltan muchos detalles y agradecería enormemente algunos consejos.
Saludos cordiales Johan Risch