La crittografia dei dati con una chiave privata è pericolosa?

6

Ho esaminato il codice per varie app interne che gestiscono la trasmissione sicura di dati con sistemi esterni. Questi seguono il seguente processo:

  • RSA crittografare i dati con la chiave pubblica di terze parti
  • RSA cripta di nuovo usando la nostra chiave privata
  • Trasmetti dati
  • decrittografi di terze parti utilizzando la nostra chiave pubblica
  • decrittografi di terze parti di nuovo utilizzando la propria chiave privata

In questo sistema generiamo nuove chiavi private / pubbliche per ogni terza parte e tutte le chiavi pubbliche sono distribuite in modo sicuro e quindi mantenute private.

Non capisco perché dovremmo crittografare i dati utilizzando la nostra chiave privata. Sospetto che l'intento del progettista fosse quello di consentire la verifica che i dati provenissero da noi e che la stessa persona non fosse a conoscenza della firma dei messaggi per implementarla. Sfortunatamente, quella persona non è più in giro per essere chiesta.

Sono felice che i nostri dati siano accettabilmente sicuri perché vengono crittografati con la chiave di terze parti, ma la crittografia della chiave privata sembra sufficientemente non standard da farmi sentire un po 'di disagio. C'è qualcosa di cui dovrei preoccuparmi?

    
posta 16.02.2012 - 21:38
fonte

3 risposte

7

È sembra che il codice che stai guardando prende un po 'troppo alla lettera la prima descrizione di come funzionano le firme di RSA.

Quando RSA è stato descritto per la prima volta, si trattava di un sistema di crittografia asimmetrico: il mittente crittografa i dati con la chiave pubblica del destinatario e l'operazione di base è un esponenziazione modulare che prende come input un numero modulo n (< em> n è il modulo, una parte della chiave pubblica) e restituisce un modulo modulo n . Poi qualcuno ha detto: hey, se invertiamo il processo e decifriamo alcuni dati di input (con una chiave privata, necessariamente), allora otteniamo una firma poiché chiunque può eseguire il reverse operazione (criptare con la chiave pubblica), che conta come verifica della firma.

Questa è una descrizione semplicistica delle firme RSA, e in realtà non funziona, perché trascura l'effetto di padding , che è necessario per la sicurezza (vedi PKCS#1 per il modo giusto di fare crittografia e firme RSA). Ma l'idea che le firme siano crittografia all'indietro (o "crittografare con la chiave privata") è sfortunatamente diffusa e porta a decine di soluzioni fatte in casa che sono tutte, invariabilmente, deboli in qualche modo (ma non necessariamente in una ovvio modo). È probabile che tu osservi una tale soluzione fatta in casa.

    
risposta data 19.09.2012 - 02:17
fonte
6

È almeno una cattiva pratica e probabilmente pericoloso. Consiglio vivamente di cambiare lo schema che usi.

Non devi crittografare il contenuto con la tua chiave privata. Dovresti firmarlo con la tua chiave privata. Mentre la firma e la crittografia con la chiave privata sono operazioni simili quando si utilizza RSA, dovrebbero essere considerati separati. In particolare, la firma funziona su un hash, non sul contenuto effettivo.

A seconda di come viene implementato esattamente il tuo sistema attuale, potrebbe essere possibile che una terza parte ti induca a decifrare i dati ricevuti da terze parti.

Potrebbe anche essere possibile ingannarti a firmare qualcosa che non volevi firmare in quel modo. Ma senza i dettagli dello schema che usi, non posso dirlo con certezza.

    
risposta data 16.02.2012 - 21:41
fonte
0

Gli algoritmi PKI generalmente usano chiavi più lunghe e quindi sono più dispendiosi dal punto di vista computazionale. Questa è una delle ragioni per cui SSL / TLS utilizza PKI per configurare il flusso, ma poi utilizzare un codice a chiave condivisa con una chiave più corta.

Se è rischioso crittografare il testo di qualcun altro con la tua chiave dipende dal codice utilizzato. Alcuni codici sono vulnerabili agli attacchi a testo normale scelti . Semplice RSA è uno di questi. PKCS # 1 non lo è.

Ma come dici tu, se tutto ciò di cui hai bisogno è l'autenticazione, puoi semplicemente firmarlo (pensavo che richieda anche la tua chiave privata).

    
risposta data 16.02.2012 - 21:45
fonte

Leggi altre domande sui tag