RSA / ECB / PKCS1Padding: crittografia di una chiave di sessione JavaScript

2

Come si fa la modalità ECB quando si ha a che fare con RSA? Non lo capisco Il documento di autenticazione Aadhar ( link pagina 33) dice che dobbiamo usare RSA / ECB / PKCS1Padding ma io Non sto trovando alcun riferimento alla modalità quando si tratta di RSA.

  • Generiamo una chiave di sessione AES-256 sul server e inviamo al client. (Dimentichiamo la chiave di sessione)
  • Il client crittografa il suo blocco dati con AES / ECB / PKCS7Padding simmetrico (usando cryptojs)
  • Il client crittografa la sua chiave di sessione con la chiave pubblica Aadhar a 2048 bit utilizzando l'algoritmo asimmetrico (RSA / ECB / PKCS1Padding)
  • Il client calcola anche HMAC del blocco dati
  • Il Cliente ci invia i tre campi, il server riempie altri dati e li invia al server Aadhar

Quindi dobbiamo fare RSA / ECB / PKCS1Padding nel client web in Javascript. CryptoJS non supporta RSA quindi puoi usare qualsiasi altra libreria

Se qualcuno può dirmi se l'esempio della libreria Forge

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

usa la BCE o no. Ci sono riferimenti a RSA / ECB / OAEPWithSHA-256AndMGF1Padding, ma ho bisogno di PKCS # 1 padding

Puoi suggerirmi qualche altra libreria o dirmi il codice corretto in Forge?

Se posso farlo in PHP dal lato server, posso anche inviare la chiave di sessione e la chiave di sessione crittografata al client e poi dimenticare la chiave di sessione.

Non capisco molto la crittografia, ma capisco un po 'i termini.

    
posta Megh Parikh 04.06.2015 - 14:18
fonte

1 risposta

1

La BCE non ha nemmeno senso nel contesto di RSA. È una modalità operativa per cifrari simmetrici come AES. Maggiori informazioni:

link

PKCS1Padding, tuttavia, si applica a RSA. E hai ragione - probabilmente significa RSAES-PKCS1-V1_5 . Per il lato PHP puoi usare phpseclib. ad es.

<?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: link

    
risposta data 04.06.2015 - 17:08
fonte

Leggi altre domande sui tag