Padding RSA / ECB / PKCS1: encriptación de una clave de sesión JavaScript

2

¿Cómo hacer el modo ECB cuando se trata de RSA? No lo entiendo El documento de autenticación Aadhar ( enlace página 33) dice que tenemos que usar RSA / ECB / PKCS1Padding pero I No encuentro ninguna referencia al modo cuando se trata de RSA.

  • Generamos una clave de sesión AES-256 en el servidor y la enviamos al cliente. (Olvidamos la clave de sesión)
  • El cliente encripta su bloque de datos con simulación AES / ECB / PKCS7Padding (usando cryptojs)
  • El cliente cifra su clave de sesión con una clave pública Aadhar de 2048 bits usando un algoritmo asimétrico (RSA / ECB / PKCS1Padding)
  • El cliente también calcula el HMAC del bloque de datos
  • El cliente nos envía los tres campos, el servidor completa otros datos y los envía al servidor Aadhar

Por lo tanto, necesitamos hacer RSA / ECB / PKCS1Padding en el cliente web en Javascript. CryptoJS no admite RSA, por lo que puede utilizar cualquier otra biblioteca

Si alguien puede decirme si el ejemplo de la biblioteca de Forge

var encrypted = publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5');

usa el BCE o no. Hay referencias a RSA / ECB / OAEPWithSHA-256AndMGF1Padding pero necesito PKCS # 1 padding

¿Puedes sugerirme alguna otra biblioteca o decirme el código correcto en Forge?

Si puedo hacer esto en PHP en el lado del servidor, también puedo enviar la clave de sesión y la clave de sesión cifrada al cliente y luego olvidar la clave de sesión.

No entiendo mucha criptografía, pero entiendo los términos de alguna manera.

    
pregunta Megh Parikh 04.06.2015 - 14:18
fuente

1 respuesta

1

El BCE ni siquiera tiene sentido en el contexto de RSA. Es un modo de operación para cifrados simétricos como AES. Más información:

enlace

PKCS1Padding, sin embargo, se aplica a RSA. Y tienes razón, eso probablemente significa RSAES-PKCS1-V1_5 . Para el lado de PHP puede usar phpseclib. por ejemplo.

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('...'); // public key

$plaintext = '...';

$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt($plaintext);

$rsa->loadKey('...'); // private key
echo $rsa->decrypt($ciphertext);
?>

URL: enlace

    
respondido por el archdiemand 04.06.2015 - 17:08
fuente

Lea otras preguntas en las etiquetas