Come posso crittografare qualcosa fornito dall'utente senza il rischio che la chiave venga esposta?

0

Quindi, diciamo che ho un servizio teorico. L'utente ha del testo che desidera crittografare. Lo passano a me e io lo cripto. Quindi, solo io dovrei essere in grado di decrittografarlo in seguito. Un altro kicker, deve usare una chiave comune. La chiave può cambiare occasionalmente, ma non essere specifica dell'utente o qualcosa del genere.

Che cosa posso fare per evitare che le persone analizzino i risultati crittografati del testo conosciuto per trovare la chiave? So che ci sono cose come gli attacchi di estensione della lunghezza. Quale algoritmo di crittografia sarebbe più sicuro?

    
posta Earlz 25.02.2013 - 05:35
fonte

2 risposte

2

Se un algoritmo di crittografia è suscettibile a noti attacchi di testo normale, allora è abbastanza gravemente rotto. C'è un motivo per cui non si utilizza uno schema di crittografia a chiave pubblica / privata? Quindi l'utente potrebbe effettivamente crittografarlo prima della trasmissione e si sarebbe comunque l'unico in grado di decrittografarlo. Più idealmente, vorresti davvero averli scegliere una chiave, criptare i dati (simmetricamente) con la chiave, criptare la chiave con la tua chiave pubblica, inviare i dati crittografati e la chiave crittografata a te, quindi se hai bisogno di usare un chiave comune, è possibile decrittografare i dati e ricodificarli con la propria chiave. Questo ti darebbe protezione mentre il file è in transito. (In alternativa, se si tratta di un servizio Web, semplicemente l'utilizzo di SSL per il trasferimento farà la stessa cosa.)

C'è una ragione particolare per cui devi usare la stessa chiave per ogni utente? Questo è un grande punto di insicurezza poiché si traduce in un singolo punto di errore.

    
risposta data 25.02.2013 - 15:22
fonte
2

In primo luogo, gli attacchi di estensione della lunghezza si applicano alle funzioni di hash, non agli algoritmi di crittografia. Non devi preoccuparti di loro qui.

Per rispondere alla tua domanda, gli algoritmi di crittografia standard (come CBC) sono protetti contro gli attacchi con testo in chiaro, quindi in realtà sono progettati per essere sicuri in questo tipo di scenario --- il la capacità di crittografare i testi in chiaro di sua scelta con una chiave sconosciuta non fornisce a un utente malintenzionato informazioni utili su quella chiave (o su altri testi cifrati).

Se esiste la possibilità che un utente malintenzionato possa manomettere i testi cifrati (ad esempio, li stai inviando tramite un canale non autenticato o archiviandoli in archivi non attendibili), allora dovresti seguire il consiglio di CodesinChaos e anche esaminare l'uso crittografia autenticata. Cerca GCM o HMAC.

Hai detto che saresti disposto ad accettare questa risposta se avessi spostato da un commento, ma ti inviterei a dare un'occhiata da vicino anche alla risposta di AJ Henderson. I requisiti insoliti di questo servizio teorico vagamente definito mi lasciano un po 'diffidente nel fare raccomandazioni specifiche, ma se il suo suggerimento è pratico, probabilmente è la strada da percorrere.

    
risposta data 25.02.2013 - 22:32
fonte

Leggi altre domande sui tag