协议安全机制
身份验证机制
客户端必须保证SSL服务器是真实的,以免重要信息被非法窃取。SSL利用数字签名来验证通信双方的身份。
数字签名可以通过非对称密钥算法实现。由于通过私钥加密后的数据只能利用对应的公钥进行解密,因此根据解密是否成功,就可以判断发送者的身份,如同发送者对数据进行了“签名”。例如,Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密,如果解密结果与固定信息相同,那么就能够确认信息的发送者为Alice,这个过程就称为数字签名。
使用数字签名验证身份时,需要确保被验证者的公钥是真实的,否则,非法用户可能会冒充被验证者与验证者通信。通过数字证书来发布用户的公钥,可以保证公钥的真实性。
数字证书(简称证书)是一个包含用户的公钥及其身份信息的文件,证明了用户与公钥的关联。数字证书由CA(Certificate Authority,证书机构)签发,CA签发证书的同时会提供证书机构文件,证明CA的身份也保证所颁发证书的真实性。
验证SSL服务器/SSL客户端的身份时,SSL服务器/SSL客户端需要将从CA获取的证书发送给对端,对端利用证书机构文件判断该证书的真实性。如果该证书确实属于SSL服务器/SSL客户端,则对端利用该证书中的公钥验证SSL服务器/SSL客户端的身份。
数据传输的机密性
网络上传输的数据很容易被非法用户窃取,SSL采用在通信双方之间建立加密通道的方法保证数据传输的机密性。
所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方;接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证数据传输的机密性。
- 非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据只能用相应的私钥(或公钥)才能解密。非对称密钥算法一般用于对较少的信息进行加密。
- 对称密钥算法:数据加密和解密时使用相同的密钥。对称密钥算法具有计算速度快的优点,通常用于对大量信息进行加密(如对所有报文加密)。
SSL利用非对称密钥算法RSA(Rivest Shamir and Adleman)加密客户端随机生成的密钥premaster secret,两端根据premaster secret生成对称密钥算法使用的密钥,然后利用对称密钥算法对传输数据进行加密。