以下命令将生成一个RSA-PSS私钥:
openssl genpkey -algorithm rsa-pss -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 -out CA.priKey下面是我刚生成的一个示例:
下面是asn1parse输出:
0:d=0 hl=4 l=1213 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=2 l= 11 cons: SEQUENCE
9:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss
20:d=1 hl=4 l=1193 prim: OCTET STRING相反,此命令将生成一个常规RSA私钥:
下面是我刚生成的一个示例:
下面是asn1parse输出:
0:d=0 hl=4 l=1213 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=2 l= 13 cons: SEQUENCE
9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
20:d=2 hl=2 l= 0 prim: NULL
22:d=1 hl=4 l=1191 prim: OCTET STRING为什么RSA-PSS私钥有自己的格式?概率签名方案 (PSS)影响签名的方式。至少根据PKCS#1 v2.2的说法。钥匙是一样的。它们都使用相同的阴极射线管参数以及其他不使用的东西。那么,为什么在这个上下文中有两个不同的OID呢?这有什么区别吗?还是这只是OpenSSL的愚蠢?还有其他OpenSSL可能用来表示RSA私钥的OID吗?
发布于 2019-05-09 03:34:38
如果您为不同的算法重用相同的关键材料,则不依赖于任何一种算法的安全性,而是同时依赖于这两种算法组合的安全性。
对于一个特别令人震惊的例子,如果您对RSASSA-PKCS1-v1_5和HMAC- the 256使用相同的RSA公钥,结果可能是娱乐性。
虽然我们对RSASSA的安全性有很高的信心,但假设RSA问题很难解决,并且对RSASSA-PKCS1-v1_5的安全性有合理的信心,因为几十年来没有人在这方面取得进展,但两者结合使用同样的关键材料可能会带来灾难性的后果。
这些标记背后的理论是,将这些元数据与密钥相关联可能有助于减少在不同的密码系统中意外地重用相同的密钥材料的危险。
发布于 2019-05-09 03:28:10
OpenSSL不是哑的,键有不同的OID是有原因的,但它与键数据无关--它是关键元数据。元数据描述密钥。具体来说,上面的ASN.1类型是PrivateKeyInfo,区别是在AlgorithmIdentifier中。从组织的角度来看,您必须跟踪指定用于不同用途的两个RSA私钥,这些ASN.1差异增加了价值。
例如,当您为您的签名证书创建一个CSR时(这是它唯一的整数用法--这可以由X.509 V3扩展密钥使用或扩展密钥使用进一步强制执行),您将知道如何在rsassaPss的OID中使用该密钥。
发布于 2019-05-09 03:10:12
对于私钥,使用密钥进行编码可能重要,也可能不重要,但对于公钥,特别是在CSR或cert中,算法标识符是可见的,可能很重要。OpenSSL生成一个包含从私钥(包括AlgId )中自动提取的公钥的CSR,该公钥通常被复制到公钥中的AlgId可能很重要的证书中。
例如,TLS 1.3使用不同的签名算法(又名方案)码用于RSASSA签名取决于它们使用的证书是AlgId 1.2.840.113549.1.1还是id-RSASSA-PSS1.2.840.113549.1.10。
https://crypto.stackexchange.com/questions/70413
复制相似问题