ECDSA和ECDH来自不同的标准(分别为ANSI
X9.62和X9.63),并在不同的上下文中使用。X9.63显式重用X9.62中的元素,包括公共密钥的标准表示(例如,在X.509证书中)。因此,ECDSA和ECDH密钥对在很大程度上可以互换。但是,给定的实现是否将允许这种交换是一个悬而未决的问题。历史上,(EC)DSA和(EC)DH来自不同的世界。
但是请注意,用法上下文非常不同。密码学比椭圆曲线的计算要多得多。必须考虑“关键生命周期”。简而言之,您不想使用相同的过程来管理密钥协商密钥和签名密钥。例如,如果您丢失了密钥协议密钥(您的狗吃了您的智能卡-
别笑,这确实发生了),那么您将无法再解密相对于该密钥加密的数据(例如,发送给您的加密电子邮件,以及以加密格式存储)。从业务的角度来看,密钥的丢失也可能是雇员的丢失(雇员被解雇,被公共汽车撞倒,退休或其他原因)。因此,必须经常托管加密密钥(包括密钥协商密钥)(例如,私人密钥的副本将被打印并存储在保险箱中)。另一方面,签名密钥的丢失意味着没有数据丢失。先前签发的签名仍然可以被验证;从这种损失中恢复就像创建一个新的密钥对一样简单。但是,代管系统的存在往往会自动剥离可能附加在其上的任何合法价值的签名。
另外,在更一般的基础上,我强烈建议不要在两种不同的算法中使用相同的私钥:还没有充分研究算法之间的交互(仅研究一种算法已经很辛苦了)。例如,如果有人开始向您的基于ECDH的协议提供从ECDSA签名中提取的曲线点(您使用相同的私钥计算),该怎么办?
因此,您实际上不应为ECDH和ECDSA重用同一密钥。



