ECC Come scambiare dati firmati e crittografati

2

Con .NET Framework 4.7 l'Elliptic Curve Cryptography (ECC) è stato notevolmente migliorato:

The .NET Framework 4.7 has enhanced the functionality available with Elliptic Curve Cryptography (ECC). ImportParameters(ECParameters) methods were added to the ECDsa and ECDiffieHellman classes to allow for an object to represent an already-established key. An ExportParameters(bool) method was also added for exporting the key using explicit curve parameters.

The .NET Framework 4.7 also adds support for additional curves (including the Brainpool curve suite), and has added predefined definitions for ease-of-creation via the new ECDsa.Create(ECCurve) and ECDiffieHellman.Create(ECCurve) factory methods.

Sono uno sviluppatore .NET che desidera utilizzare ECC con un HSM, quindi emergono alcune domande.

Assunzione

  1. Non è consentito utilizzare la stessa istanza di un EC per la firma e la crittografia
    (Ho letto questa affermazione alcune volte, sono uno sviluppatore, non uno specialista di crittografia, quindi purtroppo manca l'esperienza per comprenderlo nella sua completezza)

Problema

  1. Alice desidera inviare a Bob un messaggio firmato e crittografato
  2. Alice ha Bob Public Signature Key (brainpoolP320r1)
  3. Bob ha Alices Public Signature Key (brainpoolP320r1)
  4. Alice crea un 'throw-away' Key solo per la crittografia ma ricava un segreto condiviso con Bobs Public Signature Key Non è un riutilizzo proibito delle chiavi?
  5. Alice ha firmato i dati con Signature Key prima con la trasmissione

Domanda

  1. La derivazione di un segreto condiviso tra un EC per la firma e un 'throw-away' Key una violazione dell'assunzione di non utilizzare una chiave per la firma e la crittografia?
  2. Come è possibile aggiungere negabilità plausibile ? (riguardo all'identificazione di mittente e destinatario)

Aggiornamento

Con il feedback che hai fornito, userei questo formato di messaggio per archiviare la negabilità e l'autenticazione plausibili.

    
posta dh_cgn 09.04.2017 - 20:57
fonte

2 risposte

2

Per garantire che solo Bob possa leggere il messaggio, il messaggio deve essere crittografato utilizzando la chiave pubblica di Bob. Per provare che Alice ha inviato il messaggio, deve essere firmato con la chiave privata di Alice.

vale a dire. se si utilizza la crittografia nel contesto di un messaggio tra due parti, l'uso di chiavi separate per la crittografia e la firma è una necessità.

Se l'ordine è annullato e il messaggio prima è crittografato, la firma viene anche crittografata e nascosta a tutti tranne Bob.

    
risposta data 09.04.2017 - 22:36
fonte
2

Questo sembra un compito a casa, quindi darò solo alcuni suggerimenti:

Per quanto riguarda la dichiarazione It is not allowed to use the same EC for signing and encryption : le curve ellittiche hanno parametri quindi ce ne sono molte. Tuttavia, richiedere l'uso di curve diverse non ha senso.

Riguardo a 1 .: dipende da come si firma e si cripta esattamente. Probabilmente va bene. Si utilizza solo la chiave di firma per ricavare un segreto comune. Questo di solito può essere fatto in modo sicuro.

Riguardo a 2 .: si consideri che si desidera che le firme autenticano i messaggi all'altra parte ma si desidera anche una negabilità plausibile. Questo dovrebbe darti un suggerimento.

    
risposta data 09.04.2017 - 23:43
fonte

Leggi altre domande sui tag