Domanda

Ho lavorato su un sistema che utilizza la crittografia asimmetrica in un gran numero di file. Attualmente sto usando RSA con chiavi 4096 bit per cifrare una chiave AES a 256 bit generata in modo casuale per ogni file, ma le prestazioni sono un po 'carente, come un'operazione necessaria è quella di eseguire la scansione attraverso tutti i file (numero stimato quando il sistema è in l'uso è di circa 10.000) e identificare quelli che possono essere decifrati utilizzando una chiave privata specifica. Mentre non mi aspetto che questa operazione sia istantanea, sta prendendo troppo tempo al momento (~ 2 file elaborati al secondo). Ho considerato riducendo la lunghezza della chiave, ma anche tenendo giù a 2048 bit non fornisce il livello di prestazioni che bisogno. 512 bit sarebbe solo di taglio, ma come tali chiavi possono ora essere incrinato banalmente che è fuori questione.

Qualcuno può punto nella direzione di un sistema che è più veloce, ma di forza crittografica simile a me? Si avrebbe bisogno di essere implementato tramite un provider Java JCA (per esempio qualcosa come BouncyCastle) al fine di plug-in per la mia applicazione esistente ordinatamente. So gonfiabili supporti castello El Gamal, ma non riesco a trovare alcun dettaglio su quanto sia forte questo algoritmo è, o se è anche probabile che sia più veloce di qualsiasi RSA. Ho anche sentito parlare di sistemi di curva ellittica che hanno bisogno solo relativamente brevi tasti (384 bit o simili), ma non sanno dove trovare un'implementazione di uno di questi.

È stato utile?

Soluzione

Per la vostra domanda come richiesto, provare Diffie-Hellman su curve ellittiche, conosciuto anche come "ECDH". La stima della sicurezza è un po 'difficile una volta che abbiamo a che fare con dimensioni che non può essere violata con le attuali tecnologie, dal momento che questo dipende da come abbiamo scommesso sulle future evoluzioni tecnologiche. Eppure si può dire che ECDH sulla curva P-256 fornisce "128 bit" di sicurezza, un livello che è simile a quello che si otterrebbe dal 2048 bit RSA. Tale livello è ampiamente sufficiente per tutti gli usi attuali, o, più propriamente detto, se P-256 non è abbastanza per voi allora il vostro problema ha esigenze molto particolari e la forza di crittografia è probabile che sia l'ultima delle vostre preoccupazioni.

Sul mio PC (un 2,4 Ghz Intel Core2, modalità a 64 bit, con Linux), reclami OpenSSL per crunch da circa 900 casi ECDH al secondo, utilizzando un singolo core.

Modifica per la stima della chiave di sicurezza, a seconda della lunghezza, per diversi algoritmi, vedi questo sito .

Altri suggerimenti

Perché non si calcola un hash crittografico forte di ogni tasto, e quindi memorizzare che in chiaro con ogni nome di file? Quindi, data una chiave che è necessario far corrispondere contro tutti i file, si può semplicemente hashing la chiave e cercarlo nella tabella.

Mi piacerebbe andare per un approccio che richiede meno operazioni RSA. SSL / TLS, anche se utilizzano RSA ecc per la crittografia AES, ecc chiavi, non utilizzare AES per i dati, semplicemente perché si tratta di un'operazione computazionalmente costoso sufficientemente grandi dimensioni delle chiavi per la sicurezza di essere fatto su una per pacchetto, o nel tuo caso , per ogni singolo file.

Un altro sistema a chiave pubblica è: http://en.wikipedia.org/wiki/ElGamal_encryption. Sicurezza-saggio credo che deve essere ancora rotto, ma avrebbe personalmente messo la mia fiducia in RSA per ora. Non so se ci sono algoritmi di crittografia curva ellittica attualmente disponibili -. Vale a dire che so che sono oggetto di ricerca, ma di capire che potrebbe non essere pronto per l'uso in produzione e ho sentito che ci sono stati problemi di brevetto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top