静态Diffie-Hellman (密码套件中有DH的名字,但没有DHE或DH_anon )要求服务器拥有一个包含DH公钥的证书。
当使用静态DH密钥交换时,服务器提供包含由证书颁发机构(CA)签名的固定Diffie-Hellman参数的证书(本例中不使用ServerKeyExchange消息)。
静态DH密码套件示例:
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DH_DSS_WITH_AES_128_CBC_SHA
TLS_DH_RSA_WITH_AES_128_CBC_SHA
TLS_DH_DSS_WITH_AES_256_CBC_SHA256
TLS_DH_RSA_WITH_AES_256_CBC_SHA256从Diffie-Hellman密钥交换,Alice和Bob公开同意使用模数p = 23和基g=5(它是本原根模23),其中p是素数,g是本原根模p。我的问题是。
证书p和g中是否提供了固定的Diffie-Hellman参数?
发布于 2019-06-25 09:00:38
这已在RFC 3279中(重新)定义:“Internet X.509公钥基础设施证书和证书吊销列表(CRL)配置文件的算法和标识符”。对于DH而言,第2.3.3节:“Diffie-Hellman密钥交换密钥”适用于:
下面是ASN.1模块(它是从X9.42复制的,所以这至少是一个副本的副本):
DomainParameters ::=序列{
p INTEGER, -- odd prime, p=jq +1
g INTEGER, -- generator, g
q INTEGER, -- factor of p-1
j INTEGER OPTIONAL, -- subgroup factor
validationParms ValidationParms OPTIONAL }ValidationParms ::=序列{
seed BIT STRING,
pgenCounter INTEGER }因此,它至少是p、g和q,但是协因子q通常设置为1。这个集合是为OID 1.2.840.10046.2.1 ("dhpublicnumber")定义的。
但是,当我使用openssl命令行尝试这一点时,我只得到了两个参数,p和g。事实证明,openssl正在使用PKCS#3代替:
DHParameter ::=序列{
prime INTEGER, -- p
base INTEGER, -- g
privateValueLength INTEGER OPTIONAL }它已为OID 1.2.840.113549.1.3.1 ("dhKeyAgreement")定义。
所以是的,p和g当然在里面,其中的参数集取决于OID,它定义了公钥的密钥类型,以及实现它的组织的选择。对于很少被使用的东西来说,这是很多选择。
https://crypto.stackexchange.com/questions/71557
复制相似问题