[CISRG]口令跟Master Key完全没关系吗?+兼问大企业是如何保护我们的口令安全的?

1 view
Skip to first unread message

吴道远

unread,
May 18, 2010, 12:36:28 AM5/18/10
to cisrg...@googlegroups.com
这里的Password就是指口令,即用户输入的密码。

就SSL通信方式而言,口令跟Master Key到底有啥关系呢?Master Key的生成到底需不需要有口令的参与呢?

根据这篇文章(HTTPS连接最初的若干毫秒),SSL传输中的Master Key是这样生成的:(服务端和客户端分别各自生成)

master_secret = PRF(pre_master_secret, "master secret", ClientHello.random + ServerHello.random)

其中:
1) pre_master_secret是客户端随机生成,并通过密钥共享告诉服务端的。
2) ClientHello.random,ServerHello.random在Client Hello和Server Hello过程中,客户端和服务端都知道了。

我好奇的是,这个"master secret"到底是什么东东?还是那篇文章(HTTPS连接最初的若干毫秒),它说,“master secret”用的是一个字符串的ASCII值(例如:“6d 61 73 74 65 72 ...”)

我最初的感觉,"master secret"跟口令或许有啥关系的。但是,立马又被我否定了。因为即使没有登录验证的web通信,也是可以用SSL的,显然这些过程是没有用户口令的。那么,这个"master secret"到底是什么呢?

不管怎么说,我觉得口令跟Master Key是完全没关系的!不知,我这样的理解对否?

----------------------第二个问题----------------------------

像Google这样的大企业,它如何保证用户的口令安全呢?

整个场景叙述一下(按照我的理解):用户在gmail注册时,客户端将用户的口令Hash后,通过建立的SSL传输通道,将口令的Hash值(或者在传输前,已经加密了,但是密钥分配又是问题,不太可取!)保存到Google的服务器上。可是,Google应该不会假设黑客无法取得口令的Hash值。一旦黑客取得口令的Hash值,通过彩虹表之类的就很容易能还原出用户的口令明文。

所以,这种方式跟直接保存用户的口令明文,效果是差不多的。我想,Google应该不会采取这样低的保护措施。那么,Google到底是怎么做的呢?

再或者:Google用私钥对所有的口令的Hash值加密保存。每次要认证用户时,就对客户端传来的口令的Hash值做同样的加密运算,然后再匹配。

但总觉得不会这么简单!有相关经验的同学能说说吗?有美妙的方法不?

--
您收到此邮件是因为您订阅了 Google 网上论坛的“CISRG Group”论坛。
要向此网上论坛发帖,请发送电子邮件至 cisrg...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 cisrg-group...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/cisrg-group?hl=zh-CN 访问此网上论坛。

Bruce(7all) Song

unread,
May 18, 2010, 1:04:02 AM5/18/10
to cisrg...@googlegroups.com
SSL加密是浏览器与WEB服务器之间实现的数据加密标准,本质上来看,与你的
HTML代码(WEB应用程序)没有任何的关联。
SSL的原理及实现没有太多需要讨论的地方,网上有很多资料可供参考,
如:http://zh.wikipedia.org/zh/%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%89%E5%85%A8
我对你问题的理解是,你的误区是把WEB应用程序与浏览器混淆了,输入口令、密码是WEB
应用程序在WEB服务器的相应解析模块所做的事情,如:ASP.NET的应用会由IIS的相应模块
来解析ASP.NET程序;JavaEE的应用会由Tomcat来解析Java程序。SSL实现也属于WEB服务器的一个模块,当对某个网站配置了SSL加密支持后,浏览器在检测到HTTPS的协议时,会调用浏览器的SSL模块与WEB服务器进行通信。

一般的对WEB应用中的用户口令的加密方法是你说的第二种,即:注册时保存密码HASH值,登录时验证密码HASH值是否匹配,使用MD5或者相应的变异算法是普遍的解决方案。至于你说的彩虹表破解问题,的确存在被攻陷的可能,但密码破解还是需要较高的运算速度;虽然原则上来密码都可以破解,但一旦超过了某个期限,即使破解了密码也没有了实际用途。
Google的具体解决方案就不知道了;)

--
Bruce Song
岂能尽如人意,但求无愧我心。

吴道远

unread,
May 18, 2010, 4:44:08 AM5/18/10
to cisrg...@googlegroups.com
2010/5/18 Bruce(7all) Song <cis...@gmail.com>


我对你问题的理解是,你的误区是把WEB应用程序与浏览器混淆了,输入口令、密码是WEB
应用程序在WEB服务器的相应解析模块所做的事情,


感谢7all大哥让我的脑子清晰了。之前把问题想复杂了,我现在的认识是:

SSL就是为上层提供安全服务嘛(不管是HTTP还是FTP之类的) ,master_secret的生成是这种服务实现的一个环节。

而口令则是上层(即应用层)对用户进行认证的一环节,可以说是web应用自身的安全措施。这是,服务器对用户(跟浏览器没关系了)的认证!

因为一般用户没有证书,而服务器有证书。所以在TLS层,客户端(实施者为浏览器,间接体现了用户)对服务器的证书进行认证,来验证服务器的真假。这是个单项认证!证书是这个层次安全性的关键。当然,它也有加密的功能,依赖于master key,以及由master key生成的会话密钥。

而在应用层,服务端通过用户的口令在认证用户的真假,这个是应用层上的认证,同时也是个单项认证。口令则是这个层次安全性的关键。

当然,也可以直接在TLS层实现双向认证,如果用户也有证书的话。

发现,还真体现了这句话:“在不同的层次,解决不同的安全问题,上层能够享受下层的安全服务。”

吴道远

unread,
May 18, 2010, 4:50:14 AM5/18/10
to cisrg...@googlegroups.com
既然TLS层是为应用层提供服务的,它的master_secret生成就肯定不会调用上层的口令。

因为从分层的角度来说,只有上层调用下层的服务,哪有下层利用上层这种道理的哈~

哈哈,终于想通了:)

2010/5/18 吴道远 <clz...@gmail.com>

Bruce(7all) Song

unread,
May 18, 2010, 5:01:57 AM5/18/10
to cisrg...@googlegroups.com
恭喜恭喜,哈

--
Bruce Song
岂能尽如人意,但求无愧我心。

Reply all
Reply to author
Forward
0 new messages