Generación de par de claves RSA con Javascript

4

Necesito generar un par de claves RSA con Javascript. Este par de claves se utilizará para cifrar un blob de datos de una sola vez (20-100kb) y luego se descartará. Estos datos se pueden reducir a un par de cientos de kb o menos si solo cifro los datos que necesitan ser seguros y no otros recursos, como archivos de imagen para la aplicación.

¿Debo escribir mi propia implementación o hay alguna biblioteca en la que pueda confiar para que sea estable y segura?

    
pregunta Casebash 26.07.2011 - 04:57
fuente

3 respuestas

3

Puede consultar el paquete GWT Crypto . Es un puerto de algunas de las cosas BouncyCastle en GWT, por lo que deberías poder tomar la salida compilada y masajear un poco para que puedas Puedes llamarlo desde tu Javascript actual. Actualmente es compatible con la generación de par de claves RSA y el cifrado / descifrado, así como AES y DES. Aunque creo que eso es todo.

Yo personalmente no he usado esta biblioteca, pero desde que fue portada desde BC debería ser más seguro que escribir su propia implementación. Dicho esto, no sé de dónde proceden su implementación de SecureRandom. Es posible que deba ver si es realmente una implementación criptográfica segura o no. Eché un vistazo rápido y solo están haciendo algo con SHA y los bytes de inicialización, pero no sé si eso califica o no.

Una última cosa. He encontrado que el uso de RSA para cifrar grandes cantidades de datos es bastante lento. ¿Quizás desee utilizar una solución híbrida de algún tipo en la que cifre una clave AES256 utilizando el par de claves RSA y luego utilice AES para cifrar los datos? Podría ser más rápido ...

    
respondido por el senecaso 26.07.2011 - 06:47
fuente
0

Revise el proyecto jsencrypt . Si utiliza nodejs, recomiendo el módulo node-rsa .

    
respondido por el xpepermint 09.09.2014 - 23:41
fuente
0

Realmente debes evitar hacer criptografía en javascript. La breve razón es porque no puedes confiar en un programa javascript. La respuesta larga se puede encontrar aquí:

Incluso si su aplicación web está escrita para ser segura contra ataques XSS, CSRF, etc., javascript se ejecuta en una máquina virtual sin prueba de seguridad. El compilador JIT de JavaScript puede introducir accesos directos en el código y, por lo tanto, hacer que sea vulnerable a los ataques de tiempo.

Si necesita cifrar la transmisión de datos, debe usar TLS. Si necesita cifrar los datos almacenados, debe usar un buen algoritmo simétrico (como AES 256 en modo GCM).

Si desea una mejor respuesta, le sugiero que nos diga por qué cree que necesita RSA. ¿Qué problema quieres resolver con él? Tal vez RSA (en javascript o no) no sea la mejor solución (ni siquiera una buena).

    
respondido por el Anonymous Coward 10.09.2014 - 16:04
fuente

Lea otras preguntas en las etiquetas