|
SSL原理解密 甲——〉乙:prove it 乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私钥 在这个协议下,任何人都能够成为"乙"。所有你所要的只是公钥和私钥。你发送给甲说你就是乙,这样你的公钥就代替了乙的密码。然后,你发送用你的私钥加密的消息,证明你的身份。甲却不能发觉你并不是乙。 为了解决这个问题,标准组织已经发明了证书。一个证书有以下的内容: * 证书的发行者姓名 * 发行证书的组织 * 标题的公钥 * 邮戳 证书使用发行者的私钥加密。每一个人都知道证书发行者的公钥(这样,每个证书的发行者拥有一个证书)。证书是一个把公钥与姓名绑定的协议。通过使用证书技术,每一个人都可以检查乙的证书,判断是否被假冒。假设乙控制好他的私钥,并且他确实是得到证书的乙,就万事大吉了。 这些是修订后的协议: 甲——〉乙:你好 乙——〉甲:嗨,我是乙,乙的校验 甲——〉乙:prove it 乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私钥 现在当甲收到乙的第一个消息,他能检查证书,签名(如上所述,使用信息段和公钥解密),然后检查标题(乙的姓名),确定是乙。他就能相信公钥就是乙的公钥和要求乙证明自己的身份。乙通过上面的过程,制作一个信息段,用一个签名版本答复甲。可以校验乙的信息段通过使用从证书上得到的公钥并检查结果。 如果一个黑客,叫H 甲——〉H:你好 H——〉不能建立一个令甲相信的从乙的消息。 交换密码(secret) 一旦甲已经验证乙后,他可以发送给乙一个只有乙可以解密、阅读的消息: 甲——〉乙:{secret}乙的公钥 唯一找到密码的方法只有使用乙的私钥解码上述的信息。交换密码是另一个有效使用密码加密的方法。即使在甲和乙之间的通讯被侦听,只有乙才能得到密码。 使用密码作为另一个secret-key增强了网络的安全性,但是这次这是一个对称的加密算法(例如DES、RC4、IDE甲)。因为甲在发送给乙之前产生了密码,所以甲知道密码。乙知道密码因为乙有私钥,能够解密甲的信息。但他们都知道密码,他们都能够初始化一个对称密码算法,而且开始发送加密后的信息。这儿是修定后的协议: 甲——〉乙:你好 乙——〉甲:嗨,我是乙,乙的校验 甲——〉乙:prove it 乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私钥 甲——〉乙:ok 乙,here is a secret {secret}乙的公钥 乙——〉甲:{some message}secret-key 黑客窃听
|