Generazione di coppie di chiavi RSA con Javascript

4

Ho bisogno di generare una coppia di chiavi RSA con Javascript. Questa coppia di chiavi verrà utilizzata per crittografare un singolo blob di dati (20-100kb), quindi scartati. Questi dati possono essere ridotti a un paio di centinaia di kb o meno se criptolo solo i dati che devono essere protetti e non altre risorse come i file di immagine per l'applicazione.

Dovrei scrivere la mia implementazione o ci sono delle librerie di cui posso fidarmi per essere sia stabili che sicure?

    
posta Casebash 26.07.2011 - 04:57
fonte

3 risposte

3

Puoi dare un'occhiata al pacchetto GWT Crypto . È una porta di alcuni dei BouncyCastle contenuti in GWT, quindi dovresti essere in grado di prendere l'output compilato e massaggiarlo un po 'così tu puoi chiamarlo dal tuo attuale Javascript. Attualmente supporta generazione di chiavi USB RSA e crittografia / decrittografia, oltre a AES e DES. Penso che sia per questo però.

Personalmente non ho usato questa libreria, ma dal momento che è stata trasferita da BC, dovrebbe essere più sicura della scrittura della propria implementazione. Detto questo, non so da dove hanno tratto la loro implementazione SecureRandom da. Potrebbe essere necessario controllare se effettivamente è un'implementazione crittograficamente sicura o meno. Ho dato una rapida occhiata e stanno facendo qualcosa con SHA e i byte seme, ma non so se si qualifica o meno.

Un'ultima cosa. Ho trovato utilizzando RSA per crittografare grandi quantità di dati per essere abbastanza lento. Forse potresti voler utilizzare una soluzione ibrida di qualche tipo in cui crittografare una chiave AES256 utilizzando la coppia di chiavi RSA e quindi utilizzare AES per crittografare i dati? Potrebbe essere più veloce ...

    
risposta data 26.07.2011 - 06:47
fonte
0

Controlla il progetto jsencrypt . Se si utilizza nodejs, consiglio il modulo node-rsa .

    
risposta data 09.09.2014 - 23:41
fonte
0

Dovresti davvero evitare di fare crittografia in javascript. Il breve motivo è perché non ti puoi fidare di un programma javascript. La lunga risposta può essere trovata qui:

Anche se l'applicazione web è scritta per essere protetta contro gli attacchi XSS, CSRF, ecc., javascript viene eseguito su una macchina virtuale senza prove di sicurezza. Il compilatore JIT javascript potrebbe introdurre scorciatoie nel codice e renderlo quindi vulnerabile agli attacchi temporali.

Se è necessario crittografare la trasmissione dei dati, è necessario utilizzare TLS. Se hai bisogno di crittografare i dati memorizzati, dovresti usare un buon algoritmo simmetrico (come AES 256 in modalità GCM).

Se vuoi una risposta migliore, ti suggerisco di dirci perché pensi di aver bisogno di RSA. Che problema vuoi risolvere con questo? Forse RSA (in javascript o no) non è la soluzione migliore (o nemmeno una buona soluzione).

    
risposta data 10.09.2014 - 16:04
fonte

Leggi altre domande sui tag