OPENSSL研究,Client Key Exchange的疑问

wyly 2009-03-03 02:02:45
按照原理是:客户端生成随机 pre master secret,用服务器送过来的公钥加密,然后
用 Client Key Exchange发给服务器。

跟踪openssl,过程发现一个问题:

下面是ssl的ssl3_send_client_key_exchange函数的一个节选:

/* Fix buf for TLS and beyond */
if (s->version > SSL3_VERSION)
p+=2;
//pre master cecret 存在变量tmp_buf里
//把pre master secret 加密结果,存在缓冲区p里
//问题:这个p再也没有用过,并且网络抓包发现的数据和这个p里的数据完全无关
//而理论上应该把p里的数据发出去的
n=RSA_public_encrypt(sizeof tmp_buf, tmp_buf,p,rsa,RSA_PKCS1_PADDING);
#ifdef PKCS1_CHECK
if (s->options & SSL_OP_PKCS1_CHECK_1) p[1]++;
if (s->options & SSL_OP_PKCS1_CHECK_2) tmp_buf[0]=0x70;
#endif
if (n <= 0)
{
SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_BAD_RSA_ENCRYPT);
goto err;
}

/* Fix buf for TLS and beyond */
if (s->version > SSL3_VERSION)
{
s2n(n,q);
n+=2;
}

s->session->master_key_length=
s->method->ssl3_enc->generate_master_secret(s,
s->session->master_key,
tmp_buf,sizeof tmp_buf);
OPENSSL_cleanse(tmp_buf,sizeof tmp_buf);
...全文
582 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,453

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧