首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TLS DSA签名输入

TLS DSA签名输入
EN

Security用户
提问于 2016-06-14 16:33:46
回答 1查看 271关注 0票数 2

每个TLS1.0实现都必须支持TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA密码套件的使用。此密码套件规定服务器必须发送具有以下结构的ServerKeyExchange消息:

代码语言:javascript
复制
struct {
    opaque dh_p<1..2^16-1>;
    opaque dh_g<1..2^16-1>;
    opaque dh_Ys<1..2^16-1>;
} ServerDHParams;

select (SignatureAlgorithm)
{   ....... omitted ........
    case dsa:
        digitally-signed struct {
            opaque sha_hash[20];
        };
} Signature;

sha_hash值由SHA(ClientHello.random + ServerHello.random + ServerParams)计算,然后将计算出来的散列给DSA算法以生成签名(依次以DER编码)。我的问题是,在这种情况下,DSA的输入是如何产生的?根据维基百科的数据,DSA需要以下参数:

  • N:Q长度
  • L:P长度
  • Q:n位素数
  • P:L位原模,使得p-1是q的倍数。
  • G:乘法阶模p为q的数
  • X:秘密密钥,其中0 < x < q
  • Y:公钥y=g^x mod p

公钥(或任何其他值)是否与服务器发送的X.509证书中包含的值相同?或者所有的值都是专门为DSA签名生成的?

还有:我在某个地方读到,N和L一定是1024/160。这是TLS协议的要求,还是其他值在TLS上下文中是有效的?

EN

回答 1

Security用户

回答已采纳

发布于 2016-06-23 11:28:07

我会把这个问题记下来。如果有人正在寻找这个问题的答案:

p,q,g参数包含在DSA证书中(在DSS字段中),以及公共dsa密钥(在SubjectPublicKeyInfo字段中)--从技术上讲,这是服务器公钥。这些参数以及秘密密钥(私有)包含在openssl -genkey 1024 -out dsakey.pem生成的文件中。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/127026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档