Las preguntas fueron:
Cada vez mas comunes para comunicaciones web y mobile, utilizando RSA+AES y asi agregar una capa de seguridad para la privacidad de datos (e.e)
siempre mantengamos la premisa que todo lo que esta del lado del cliente es manipulable y este tambien es el caso.
El cifrado se produce en mayor parte desde el lado del cliente (eyy por que debo llevarme la carga del CPU?), se obtiene una llave precompartida (Public RSA), posteriormente el cliente genera una llave aleatoria de X bytes (investiguen su caso) y aqui viene lo hibrido... esta llave se utiliza para cifrar con AES-XXX (cbc, gcm, loquesea) el contenido que se enviara al servidor.
Y como lo interpreta el servidor si no tiene la llave?!
Para que el servidor pueda descifrar el contenido, el cliente envia por medio de una cabecera u otro parametro POST, la llave de descifrado (genius!), pero esta llave que es la que se genero aleatoriamente, va cifrada... :O con que?- con la llave Public RSA, de esta manera solo el servidor puede descifrar el contenido utilizando su llave privada y de esta forma obtener la llave para descifrar el contenido AES.
referencias:
https://gist.github.com/rjz/15baffeab434b8125ca4d783f4116d81
https://pycryptodome.readthedocs.io/en/latest/src/cipher/aes.html
https://www.sohamkamani.com/nodejs/rsa-encryption/
ofrezco algunos comentarios en el codigo para fijarse en que cambiar dependiendo de los escenarios, psss, cada developer le pondra distintos parametros al cifrado
y por ultimo una pequena implementacion para usar en su proxy (burp, mitm, zap?)
Comments
There are currently no comments
New Comment