# Derive a shared secret between different curves

1. Is it possible to derive a shared secret between different curves?
An explanation would be nice.

2. How can I decide which curve I should use in my software?
Highest amount of bits has in my case the brainpoolP320r1 curve, but on this site https://safecurves.cr.yp.to/ the brainpool curves are rated as not safe. The German Federal Office for Information Security recommend amongst others the brainpoolP320r1.

These curves can I use with my HSM (hardware security module):

• secp192r1 (aka prime192v1)
• secp256r1 (aka prime256v1)
• brainpoolP192r1
• brainpoolP224r1
• brainpoolP256r1
• brainpoolP320r1
• secp192k1
• secp256k1 (the Bitcoin curve)

If I want to perform signing and generating a shared secret, should I always use different instances of a curve? Because if not, I would perform different actions one the sone instance. Which is bad?

• 1. In general: Probably not. 2. Just scroll down on that website and read why they consider some curves not safe. All the information is there already. Also note, that there are two brainpool curves listed. With different criteria in the detailed section. Those results are true for exactly those curves. It is a stretch to generalize it to other brainpool curves without going into the details. – tylo Dec 7 '16 at 11:56