it-swarm-eu.dev

Perché non si dovrebbe usare la stessa chiave asimmetrica per la crittografia come per la firma?

In un risposta a una domanda su RSA e PGP, PulpSpy ha notato questo:

È possibile generare una coppia di chiavi RSA utilizzando GPG (sia per la crittografia che per la firma: non utilizzare la stessa chiave per entrambi).

Qual è il ragionamento alla base di questo?

Forse la mia comprensione della crittografia della chiave pubblica è errata, ma ho pensato che le operazioni fossero simili a questa:

  • Quando Bob vuole crittografare un messaggio ad Alice, usa la chiave pubblica di Alice per la crittografia. Alice quindi utilizza la sua chiave privata per decrittografare il messaggio.
  • Quando Alice vuole firmare digitalmente un messaggio a Bob, usa la sua chiave privata per firmarlo. Bob quindi utilizza la chiave pubblica di Alice per verificare la firma.

Perché è importante utilizzare chiavi diverse per la crittografia e la firma? Ciò non significherebbe anche che è necessario distribuire due chiavi pubbliche a tutti coloro con cui si desidera comunicare? Immagino che ciò possa facilmente portare a un po 'di confusione e uso improprio delle chiavi.

100
Iszi

È soprattutto che gli approcci e i tempi di gestione differiscono per l'uso delle chiavi di firma e crittografia.

Per non ripudio, non vuoi mai che qualcun altro ottenga il controllo della tua chiave di firma poiché potrebbe impersonarti. Ma il tuo posto di lavoro potrebbe voler depositare la tua chiave di crittografia in modo che altri che devono poter ottenere le informazioni che hai crittografato.

Potresti anche desiderare che una chiave di firma sia valida per lungo tempo in modo che le persone in tutto il mondo possano controllare le firme del passato, ma con una chiave di crittografia, spesso vuoi capovolgerla prima ed essere in grado di revocare quelle vecchie senza molte seccature.

69
nealmcb

È potenzialmente insicuro utilizzare la stessa coppia di chiavi sia per la firma che per la crittografia. Ciò potrebbe abilitare gli attacchi, a seconda del particolare schema a chiave pubblica che si utilizza. Questo tipo di utilizzo non è progettato per il sistema, quindi l'utilizzo del sistema in un modo in cui non è stato progettato "annulla la garanzia".

Non farlo Chiede problemi.

34
D.W.

Ci sono alcuni motivi per cui non dovremmo usare la stessa chiave per la crittografia e la firma.

  1. Dobbiamo eseguire il backup della nostra chiave segreta per i dati crittografati. Successivamente vogliamo decrittografare alcuni vecchi messaggi crittografati, ma non è necessario eseguire il backup della nostra chiave segreta per la firma. Se l'attaccante trova la chiave, possiamo dire alla nostra CA di revocarla e ottenere una nuova chiave segreta per la firma senza necessità di backup.

  2. Ancora più importante: Se utilizziamo la stessa chiave per la crittografia e la firma, l'utente malintenzionato può utilizzarlo per decrittografare il nostro messaggio crittografato. Questo è ciò che farebbe:

    L'attaccante deve scegliere un numero casuale r, dove

    r deve avere GDC(N, r) = 1,
    E N è il numero utilizzato per creare la chiave privata e pubblica (N = pq)

    Quindi l'attaccante sceglie un nuovo messaggio (m′) E lo invia per la firma al mittente:

    m′ = m^e.r^e (qui (e,n) È la chiave pubblica)

    Quando il mittente firma m′ Otteniamo

    m′^d ≡ (m^e.r^e)^d ≡ m.r (mod N)

    Ora l'attaccante deve solo "dividerlo" per r per ottenere m (il messaggio segreto).

12
Am1rr3zA

Motivi per l'utilizzo di chiavi separate per la firma e la crittografia:

  1. Utile nell'organizzazione dove la chiave di crittografia deve essere supportata o mantenuta in deposito al fine di decrittografare i dati quando un dipendente/utente dell'organizzazione non è più disponibile. A differenza della chiave di crittografia, la chiave di firma non deve mai essere utilizzata da nessun altro oltre al dipendente/utente e non deve e non deve essere tenuta in deposito a garanzia.
  2. Consente di avere tempi di scadenza diversi per la firma di una chiave di crittografia.
  3. Dato che la matematica sottostante è la stessa per la crittografia e la firma, solo al contrario, se un attaccante può convincere/ingannare un detentore di chiavi a firmare un messaggio crittografato non formattato usando la stessa chiave, l'attaccante ottiene l'originale.

Riferimenti

  1. https://www.entrust.com/what-is-pki/

  2. https://www.gnupg.org/gph/en/manual/c235.html

  3. http://www.di-mgt.com.au/rsa_alg.html

7
moo

Per me, i motivi principali sono legati alla gestione delle chiavi, piuttosto che alla sicurezza crittografica in sé.

Per la crittografia asimmetrica, in particolare il periodo durante il quale si desidera che una chiave pubblica sia valida può dipendere fortemente dall'uso previsto di tale chiave. Ad esempio, si consideri un sistema in cui un componente deve autenticarsi rispetto ad altri componenti. Inoltre, quel componente deve anche creare regolarmente una firma su alcuni dati. In teoria, una singola chiave privata potrebbe essere utilizzata per entrambi gli scopi. Tuttavia, supponiamo che l'autorità di certificazione PKI per motivi di sicurezza voglia limitare il periodo durante il quale l'autenticazione riuscita può aver luogo sulla base di un singolo certificato a due anni. Allo stesso tempo, le leggi sulla conservazione dei dati potrebbero richiedere che i dati vengano conservati per cinque anni e che la firma su tali dati debba essere verificabile per l'intero periodo. L'unico modo (valido) per risolvere questo problema è fornire al componente due chiavi private: una per l'autenticazione e una per la firma. Il certificato della prima chiave scadrà dopo due anni, il certificato per la firma scadrà dopo cinque anni.

Ragionamenti simili possono essere applicati alla crittografia simmetrica: se si utilizzano chiavi diverse per scopi diversi, è possibile decidere su tutte le domande relative alla gestione delle chiavi (ad es. La frequenza del roll-over della chiave master, il periodo di backup delle chiavi, ecc.) In base sui requisiti di un unico scopo. Se si utilizza una sola chiave (principale) per più scopi, è possibile che si verifichino requisiti contrastanti.

5
David Bakker

La crittografia RSA si basa su una funzione Trapdoor, vale a dire una coppia di funzioni. Li chiamerò D e E. Le funzioni sono progettate in modo che D(E(x)) = x e E(D(x)) = x (per qualsiasi x). In altre parole, D e E sono inverse. Ciò che lo rende una funzione Trapdoor è che se si dispone di una chiave pubblica, è possibile calcolare solo E (praticamente). Se si dispone di una chiave privata, è possibile calcolare sia D che E.

Il modo in cui funziona la crittografia è abbastanza ovvio da quella descrizione. Se Bob vuole inviare ad Alice un messaggio crittografato, calcola ciphertext := E(plaintext). Quindi Bob invia ciphertext ad Alice. Alice calcola D(ciphertext), che è D(E(plaintext)), che è solo plaintext.

Ora parliamo di come funziona la firma. Se Alice vuole firmare message, calcola signature := D(message). Quindi invia message e signature a Bob. Bob quindi calcola validation := E(signature). Poiché signature è D(message), quindi validation = E(D(message)) = message.

In altre parole: per firmare un messaggio, ti comporti come se lo stessi decifrando, e questa è la tua firma. Per verificare la tua firma, le persone possono crittografare la firma e assicurarsi di recuperare il messaggio originale.

Lo ripeto: la firma è la stessa operazione della decrittazione.

Questa è la preoccupazione fondamentale sulla separazione delle chiavi di firma e crittografia. Se qualcuno riesce a farti firmare qualcosa, ti ha appena fatto decifrare.

Supponiamo che tu stia dirigendo una notaio. Se qualcuno ti dà $ 10 e un messaggio (ad esempio, testi delle canzoni), allora firmerai quel messaggio e te lo rispedirai. Se qualcuno in seguito copia i testi delle tue canzoni, puoi produrre la firma della nota società di fiducia per dimostrare che hai scritto quelle parole.

Supponiamo ora che Eva abbia intercettato un messaggio crittografato con la tua notaio. Come può sovvertire la crittografia? Ti manda lo stesso messaggio per la notarile! Ora esegui l'operazione di firma (che, ricorda, è la stessa dell'operazione di decrittazione) e le restituisci il risultato. Ora ha il messaggio decifrato.

In pratica, i protocolli hanno dei passaggi che rendono questo attacco più difficile. Ad esempio, PGP (con questo intendo il protocollo; gpg è l'implementazione più comune qui) non firma il messaggio originale; firma un hash del messaggio. Ma le prove di sicurezza sono le migliori in situazioni semplici. Non vuoi che le tue prove sulla sicurezza di RSA dipendano dalla funzione hash. (Ad esempio, molte persone hanno usato MD5 come hash preferito per molto tempo, ma oggi MD5 è considerato piuttosto rotto.) Da solo, la sicurezza di RSA dipende dall'idea che non firmerai messaggi arbitrari con una chiave utilizzata per la crittografia. Mantenere tale requisito in atto è il modo migliore per garantire la sicurezza di PGP. (Ricordo che questo è il monito ripetuto più frequentemente sulla crittografia asimmetrica nel libro di Bruce Scheier Crittografia applicata .)

Ora parliamo di un'altra domanda che hai posto: "Questo non significherebbe anche che devi distribuire due chiavi pubbliche a tutti coloro con cui desideri comunicare?"

Una "chiave" significa una cosa per gli utenti e una cosa diversa dalle implementazioni crittografiche. Devi solo comunicare una "chiave" a livello di utente, sebbene ciò possa contenere molte chiavi pubbliche RSA.

PGP ha un concetto di sottochiavi. La mia chiave principale è una chiave di sola firma. Ho una sottochiave di crittografia separata. Quella sottochiave è firmata dalla mia chiave principale. Se importi la mia chiave PGP dai server di chiavi o la scarichi dal mio sito Web, otterrai la mia chiave principale e tutte le mie sottochiavi. Anche se potresti aver firmato solo la mia chiave principale, la mia chiave principale ha firmato la mia sottochiave di crittografia, quindi sai che appartiene anche a me. Ciò significa che scaricando la mia chiave PGP (che comprende molte chiavi pubbliche RSA), ora hai tutto il necessario per verificare le mie firme e crittografare i messaggi per me.

Con le sottochiavi, la gestione delle chiavi è più complessa dal punto di vista crittografico (è necessario eseguire un ulteriore passaggio di verifica delle chiavi), ma non dal punto di vista pratico (la mia chiave PGP include la mia chiave principale e tutte le mie sottochiavi). La complessità aggiuntiva è nascosta nell'implementazione e non è esposta all'utente.

2
Piquan