我想知道在TLS1.2中使用DHE_DSS密码套件时,用于DSS身份验证的公共服务器密钥g^x在哪里传递给客户端。准确地说:
DSS证书包含密码参数(p_1、q_1、g_1)。服务器(通过安装证书)和客户端通过证书消息知道这些值。
对于DHE算法,服务器选择密码参数(p_2,g_2,y_2 = g_2^s)。对于这些参数的DSS认证,服务器选择一个随机值x并应用DSA签名算法,并通过服务器密钥交换消息向客户端发送经过身份验证的数据。
为了验证接收到的数据,客户端需要服务器的DSS-公钥g_1^x,据我所知,从TLS 1.2规范(RFC5246)中可以看出,这个DSS公钥不是服务器密钥交换消息的一部分。所以:
问:客户如何获得g_1^x?
备注:在https://en.wikipedia.org/wiki/Digital_签名_算法中,“每个用户键”部分中的g_1^x为y= g^x。wiki页面中的消息m在这里由DHE参数(p_2、g_2、y_2)组成。
发布于 2017-11-08 17:59:49
从评论到结束,虽然坦率地说,我觉得这就像一个老装腔作势的人,“谁被埋在格兰特的坟墓里?”
中。
SSL/TLS将X.509证书用于静态公钥,或者确切地说是: SSL引用X.509v3,这是当时的CCITT最近发布的标准,后来成为ITU;TLS参考密钥PKIX的RFCs是X.509v3的子集(形式上是配置文件),目前由rfc5280领导的一系列RFCs定义。
X.509/PKIX证书包含有关主题的公钥的信息,该数据结构在第5280节4.1 4.1.1.2和4.1.2.7中定义为:
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }它通过指定算法本身和与算法相关的参数以及与算法相关的公钥在位字符串中的“包装”来支持多种算法。
SPKI (我称之为SPKI)是为几种算法详细指定的,包括节3279第2.3.2节中的DSA (在SSL/TLS加密套件和密钥交换名称中不精确地称为DSS )。“算法”部分包括DSA的OID (对象标识符)和通常由p、q、g作为ASN.1整数序列的参数--如果这些参数是从颁发者的CA证书‘继承’来的,则可以从证书中省略这些参数(我从未使用过)。“subjectPublicKey”部分简单地将y值(= g^x mod p)作为位字符串包装器中的ASN.1整数。
ServerKeyExchange消息中DHE值(p,g,y)上的DHE值(p,g,y)上的DSA签名(在与证书中的公钥相匹配的私钥下)使用一个“随机”值(不是x)来生成一对整数r,S在同一ServerKeyExchange消息中被传递(在ASN.1中)。(从技术上讲,k不必是随机的,只要它不对不同的数据重复,请参见rfc6979中的确定性选项。)
https://security.stackexchange.com/questions/172842
复制相似问题