Tengo una pregunta amplia sobre la seguridad en Internet, pero si tienen algún consejo de implementación o incluso observaciones más amplias, también serán muy apreciadas.
El requisito que tengo es realizar alguna firma del lado FE. Requieren que la aplicación FE firme algunos datos antes de enviarlos a BE, donde la firma se validará con una clave pública.
Para realizar la firma, FE recibirá una clave privada de una Autoridad Certificadora... ... el formato de la clave será PKCS#1 PEM formato de texto utilizando RSA como algoritmo criptográfico y SHA256 como algoritmo hash.
Mi problema es: ¿cómo importo la clave privada con JS sin que un usuario pueda rastrearla/recuperarla, incluso un usuario que usa devtools, profundiza en el código, establece puntos de interrupción y demás?
O, en términos más directos: ¿cómo se importa una clave privada provista generada externamente con Javascript sin revelar la clave privada a ningún usuario mal intencionado?
Estudié un poco la Web Crypto API y también consideré usar JSEncrypt para:
Pero en ambos casos, para obtener mi clave privada para luego hacer la firma, parece existir el riesgo de que un usuario vea el PEM y encuentre una forma de usarlo él mismo.
¿Algún consejo? ¿Algún consejo de experto que puedas compartir? ¿Utilizaría una biblioteca específica o Web Crypto API para la tarea?
Gracias, Arun.