With .NET Framework 4.7 the Elliptic Curve Cryptography (ECC) was greatly enhanced:
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.
I'm a .NET Developer who want use ECC with a HSM, thereby some questions emerge.
Assumption
- It is not allowed to use the same instance of an EC for signing and encryption
(I read this statement a few times, I'm a developer, not an crypto specialist, so sadly the expertise to understand this in its completeness is missing)
Problem
- Alice want to send Bob a signed and encrypted message
- Alice has Bobs
Public Signature Key
(brainpoolP320r1) - Bob has Alices
Public Signature Key
(brainpoolP320r1) - Alice creates a
'throw-away' Key
just for encryption but derive a shared secret with BobsPublic Signature Key
Is this not a forbidden reuse of keys? - Alice signed the data with the
Signature Key
before with the transmitting it
Question
- Is the derivation of a shared secret between a EC for signing and a
'throw-away' Key
a violation of the assumption not to use a key for signing and encryption? - How is it possible to add plausible deniability? (regarding identifying sender and recipient)
Update
With the feedback you provided, I would use this message format to archive plausible deniability and authentication.