我正在使用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 Point的帮助。
最佳答案
这些中的实际公钥为:
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编码的数据,但是我很难找到任何工具。