我正在使用Botan創建公共/私人ECDSA密鑰對。生成的公鑰(即使在使用此代碼的不同機器上)也非常相似......太類似,不認爲我會認爲安全。以下是兩次運行的示例:爲什麼這些Botan公鑰如此相似?
-----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);
爲什麼我要生成這樣的公鑰?如果多個用戶使用此代碼生成自己的密鑰,我是否認爲這不是「安全」?
UPDATE: 下面的答案似乎是正確的。我向XCA的創始人Christian Hohnstaedt發送電子郵件,進一步探討XCA如何生成此公鑰以及它是什麼。他回答說,這是EC_POINT,並通過使用命令
openssl ec -pubin -noout -text
在X509 PEM編碼的公共密鑰的確堵漏揭示不同的公共EC點獲得。應該指出的是(對於像我這樣的其他新手來說)答案中的公共EC點對其他方自己沒有好處 - 另一方需要知道正在使用哪個EC組,這就是爲什麼X509 PEM編碼是比EC點更有幫助。
我刪除了C++標記,因爲這不是C++問題。 –
我懷疑大部分的關鍵是由組描述組成。它們有44個字符不同,與Base64編碼的256位私鑰相匹配。 – CodesInChaos
如果大多數密鑰都是組描述,那麼這是否更有可能以兩個具有相同密鑰的用戶結束?這是否會使EC密鑰的公鑰空間小於RSA密鑰空間,因爲EC需要一個組,而RSA只是需要一些因素? – sorrell