证书相关知识
加密算法
对称密钥加密
加/解密一般使用同一个密钥或者可互相推算的密钥,通常称之为”Session Key”,计算速度较快.
常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。
非对称密钥加密
加/解密使用不同的密钥,通常有两个密钥,成为”公钥”和”私钥”,需要配对使用.公钥加密的数据只有私钥可以解开,私钥加密的数据只有公钥才能解开.一般公钥是公开的,可被人知道,私钥需要妥善保存.计算速度慢.
常见的公钥加密算法有:RSA、ElGamal、背包算法、Rabin(RSA的特例)等。
使用最广泛的是RSA算法。
摘要算法
散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。好的散列函数在输入域中很少出现散列冲突。
常见摘要算法: MD5、SHA1、SHA256、SHA512
特点:
- 摘要信息压缩了输入信息
- 摘要结果不可逆
- 源信息被修改则摘要结果改变(雪崩效应)
- 一般来说,摘要结果不同,说明输入信息不同
常用来保证数据的完整性
数字证书
是一种用于电脑的身份识别机制,一般由权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放,也成为CA证书
比较常见的还有国际权威的数字证书认证机构,比如 GlobalSign、VeriSign、GeoTrust、Comodo, 一般收取高额费用。
也有免费的数字证书认证机构,比如CAcert和 StartSSL。
所以自签证书是个掩耳盗铃的事情
证书颁发过程
用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息(根证书私钥签名)。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布,数字证书各不相同,每种证书可提供不同级别的可信度。
证书内容
- 证书颁发机构的名称
- 证书本身的数字签名
- 证书持有者公钥
- 证书签名用到的Hash算法
证书有效性验证
浏览器默认都会内置CA根证书,其中根证书包含了CA的公钥
证书的签发是一级一级往下签发,还有一个CRL列表(吊销列表)
- 证书颁发的机构是伪造的:浏览器不认识,直接认为是危险证书
- 证书颁发的机构是确实存在的,于是根据CA名,找到对应内置的CA根证书、CA的公钥。用CA的公钥,对伪造的证书的摘要进行解密,发现解不了,认为是危险证书。
- 对于篡改的证书,使用CA的公钥对数字签名进行解密得到摘要A,然后再根据签名的Hash算法计算出证书的摘要B,对比A与B,若相等则正常,若不相等则是被篡改过的。
- 证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。
1、2点是对伪造证书进行的,3是对于篡改后的证书验证,4是对于过期失效的验证。
HTTPs
HTTPS和HTTP的区别
- HTTP默认使用80端口,HTTPS默认使用443端口
- HTTPS协议需要CA证书
- HTTP是超文本传输协议,信息是明文传输;HTTPsS则是具有安全性的SSL/TLS加密传输协议
- HTTP和HTTPS使用的是完全不同的连接方式
- HTTP的连接很简单,是无状态的
- HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全
- HTTP协议相对简单,所以传输速度较HTTPS快,但是现在差别已经不是很大.
- HTTPS部署相对复杂
SSL 与 TLS
SSL(Secure Socket Layer)安全套接字层
SSL为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取,当前为3.0版本。
SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
TLS (Transport Layer Security,传输层安全协议)
用于两个应用程序之间提供保密性和数据完整性。
TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
SSL/TLS协议作用:
- 认证用户和服务器,确保数据发送到正确的客户机和服务器;
- 加密数据以防止数据中途被窃取;
- 维护数据的完整性,确保数据在传输过程中不被改变。
TLS比SSL的优势
- 对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。
- 增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
- 改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。
- 一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。
- 特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。
https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
session的恢复
session ID
session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的”对话密钥”,而不必重新生成一把。
session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话
session ticket
客户端发送一个服务器在上一次对话中发送过来的session ticket。这个session ticket是加密的,只有服务器才能解密,其中包括本次对话的主要信息,比如对话密钥和加密方法。当服务器收到session ticket以后,解密后就不必重新生成对话密钥了。
目前只有Firefox和Chrome浏览器支持。
可信时间戳
可信时间戳是由权威可信时间戳服务中心签发的一个能证明数据电文(电子文件)在一个时间点是已经存在的、完整的、可验证的,具备法律效力的电子凭证,可信时间戳主要用于电子文件防篡改和事后抵赖,确定电子文件产生的准确时间。
PKI
The PKI role that assures valid and correct registration is called a registration authority (RA). An RA is responsible for accepting requests for digital certificates and authenticating the entity making the request.In a Microsoft PKI, a registration authority is usually called a subordinate CA. An entity must be uniquely identifiable within each CA domain on the basis of information about that entity. A third-party validation authority (VA) can provide this entity information on behalf of the CA.
概念:
- CA 数字证书认证机构(Certificate Authority)
- RA 审核注册管理机构(Registration Authority)
- VA 有效性认证机构(Validation Authority )
PKI是“Public Key Infrastructure”的缩写,意为“公钥基础设施”。简单地说,PKI技术就是利用公钥理论和技术建立的提供信息安全服务的基础设施。公钥体制是目前应用最广泛的一种加密体制,在这一体制中,加密密钥与解密密钥各不相同,发送信息的人利用接收者的公钥发送加密信息,接收者再利用自己专有的私钥进行解密。这种方式既保证了信息的机密性,又能保证信息具有不可抵赖性。目前,公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。PKI可以作为支持认证、完整性、机密性和不可否认性的技术基础,从技术上解决网上身份认证、信息完整性和抗抵赖等安全问题,为网络应用提供可靠的安全保障。
参考文献: