Si tratta di un metodo di firma digitale + crittografia sicuro?

2

Sto cercando di comprendere le firme digitali e il modo in cui RSA Encryption le supporta. E quale ordine eseguirli insieme a ciò che è specificamente crittografato.

Quindi diciamo che abbiamo Alice e Bob e un messaggio segreto M

Alice ha: la chiave pubblica di Bob (B_pk), la chiave segreta di Alice (A_sk), la chiave pubblica di Alice (A_pk)

Bob Has: la chiave pubblica di Bob (B_pk), la chiave segreta di Bobs (B_sk), la chiave pubblica di Alice (A_pk)

  1. Alice genera un hash SHA256 del messaggio M. SHA256 (M)
  2. Cripta l'hash risultante con la chiave segreta di Alice usando RSA. C1 = RSA (A_sk, SHA256 (M))

  3. Quindi crittografa M con la chiave pubblica di Bob. C2 = RSA (B_pk, M)

  4. Invia C1 a Bob

  5. Invia C2 a bob
  6. Bob ottiene C1, Decifra con la chiave pubblica di Alice risultante in SHA256 (M) _received
  7. Bob ottiene C2, Decifra con la sua chiave segreta, risultando in M_received
  8. Bob esegue quindi SHA256 (M_received) e controlla se SHA256 (M_received) == SHA256 (M) _received

Ci sono difetti in questo metodo? Riservatezza, integrità e autenticità sono protette?

Aggiornamento: Sono curioso di sapere quali sono le debolezze nel metodo sopra.

    
posta user2327195 01.12.2015 - 22:50
fonte

2 risposte

1

L'ordine è importante. Criptare il messaggio al destinatario quindi firmare il messaggio. Il destinatario può verificare la firma e quindi decrittografare.

L'altro modo (firma quindi cripta) significa che Bob (ricevente) può inviare a qualcun altro (il mittente) di Alice il messaggio firmato senza la sua conoscenza o accordo come se provenisse da qualcun altro (decodifica con la sua chiave, re crittografa con 3a chiave).

Facendo cifrare e firmare, è chiaro che Alice intendeva il messaggio per Bob.

L'idea è che nessun altro possa firmare il messaggio crittografato e nessun altro può decifrare il messaggio firmato.

Inoltre, se Bob ha bisogno di mostrare ciò che Alice ha firmato (il messaggio è un contratto), l'algoritmo di crittografia dovrebbe essere simmetrico come AES e Bob rivela la chiave. È la chiave simmetrica che Alice crittografa con la chiave pubblica di Bob. Quindi, ci sono due crittografie: simmetrica, asimmetrica e una firma.

    
risposta data 02.12.2015 - 00:37
fonte
1

Per prima cosa, includi un timestamp per ogni messaggio (usa il formato JSON per semplicità) insieme a qualsiasi altra informazione che vuoi controllare per scopi di sicurezza o identificazione. Quindi, crittografare l'hash di ciascun messaggio utilizzando la chiave privata. Aggiungi l'hash alla fine del messaggio. Say Alice invia il suo messaggio firmato a Bob. Bob prende l'hash crittografato e tenta di decodificarlo con la chiave pubblica di Alice. Se la decifrazione fallisce, il messaggio non può essere considerato attendibile. Inoltre, se l'hash decrittografato non corrisponde a un hash ricalcolato, non fidarti del file. Fidati solo se passano tutti i controlli.

Se si desidera crittografare l'intero messaggio, crittografarlo utilizzando un algoritmo di crittografia simmetrico utilizzando un CSPRNG generato come chiave. Quindi prendere il CSPRNG e crittografarlo utilizzando la chiave pubblica del destinatario. Includi CSPRNG crittografato con il messaggio crittografato da firmare. Dopo che il destinatario ha verificato la firma, possono semplicemente decrittografare la chiave di crittografia utilizzando la propria chiave privata e quindi decifrare il messaggio all'interno come bene. Ma assicurati di crittografare sempre prima di firmare. Best practice e tutti.

Vorrei anche sottolineare che più si utilizza una chiave privata per firmare qualcosa che ha il potenziale di essere compromesso, si aumenta il potenziale della chiave privata che viene compromessa altrettanto bene (a seconda del CSPRNG utilizzato internamente per crittografia). Quindi, se hai molte comunicazioni, ti consiglio di implementare uno schema HMAC e utilizzarlo quando possibile (al contrario di utilizzare esclusivamente firme digitali che utilizzano la crittografia asimmetrica). Se non per sicurezza forse almeno per efficienza.

    
risposta data 02.12.2015 - 00:53
fonte

Leggi altre domande sui tag