3

我正在使用 Botan 创建公共/私有 ECDSA 密钥对。生成的公钥(即使在使用此代码的不同机器上)非常相似......我认为太相似了,无法考虑安全。这是两次运行的示例:

-----BEGIN PUBLIC KEY-----  
MIIBEzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA////////////////
/////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5m
fvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0
SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFB
AgEBAyIAAneDBKm4ubKbv0hxgzhkh0oAI8WKFTs1Hz/Qqyl6qxzD  
-----END PUBLIC KEY-----

-----BEGIN PUBLIC KEY-----  
MIIBEzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA////////////////
/////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5m
fvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0
SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFB
AgEBAyIAAtQr5BPT04pk/Ror6uIGRqEKeB8dwIteR8p/r+Nl7hql  
-----END PUBLIC KEY-----

我正在使用 X509 编码对公钥进行编码。这是生成 ECDSA 密钥的代码:

LibraryInitializer init;
AutoSeeded_RNG rng;
EC_Group ecGroup("secp256k1");
ECDSA_PrivateKey key(rng, ecGroup);

为什么我要生成如此相似的公钥?如果多个用户要使用此代码生成自己的密钥,我是否正确地假设这不是“安全的”?


更新:下面的答案似乎是正确的。我向 XCA 的创建者 Christian Hohnstaedt 发送了电子邮件,以进一步探讨 XCA 如何生成此公钥以及它是什么。他回答说是EC_POINT,是通过命令获取的

openssl ec -pubin -noout -text

插入 X509 PEM 编码的公钥确实揭示了不同的公共 EC 点。应该注意(对于像我这样的其他新手)答案中的公共 EC 点对另一方本身没有好处 - 另一方需要知道正在使用哪个 EC 组,这就是为什么 X509 PEM 编码是比仅仅一个 EC 点更有帮助。

4

1 回答 1

3

这些的实际公钥是:

02:77:83:04:A9:B8:B9:B2:9B:BF:48:71:83:38:64:87
4A:00:23:C5:8A:15:3B:35:1F:3F:D0:AB:29:7A:AB:1C
C3 

02:D4:2B:E4:13:D3:D3:8A:64:FD:1A:2B:EA:E2:06:46
A1:0A:78:1F:1D:C0:8B:5E:47:CA:7F:AF:E3:65:EE:1A
A5

这些并不相同,因此没有明显的理由担心这方面。相同的数据是密钥元数据和编码 bumf(对于相同的格式密钥,您希望它们是相同的)。

通过导入 xca (linux) 获得的值。有更好的工具来检查 DER 编码的数据,但我找不到任何容易的工具。

于 2013-01-07T22:45:02.167 回答