SSL与TLS
信息来源:互联网
1.2 因特网威胁模型
1.2.1 第一件事就是定义威胁模型(thread model)。它描述了攻击者可望拥有的资源以及可望采用的攻击。几乎每一种安全系统都受制于某种威胁。因此在定义安全威胁时,关心的不止是定义所担心的各种攻击,还要定义我们不准备关心的攻击。使得保障的安全的代价切合实际,物有所值。采用的安全措施应当以实现它们的花费不超过预期的风险为准。
1.2.2 判断不出可接受风险,也就设计不出可接受的系统。
1.2.3 风险计算的部份工作就是评估攻击者实施指定攻击所花费的努力,而每阻止一种攻击类型通常都会增加开销。没有任何一种安全系统可以阻挡任何攻击。安全模型的功能就是让设计者判断哪些攻击值得阻止。
1.2.4 准确估计所必须的安全需要对攻击者能力的准确估算。如果一种原先以为不切实际的攻击现在被发现实施起来很简单,那么就会存在一个暴露安全缺陷的窗口,需调整自身的安全模型和实现以弥补相应的缺陷。
1.3 角色
通信双方分别称作Alice and Bob ,它是沿用RSA论文[Rivest1979]中的名字,攻击者还是被称为攻击者(the attacker)。
1.4 安全目标
通信安全由许多不同的但却又相互关联的特性构成。最为有用的划分是将其分成以下三个主要类别:
1、保密性(confidentiality)
2、信息完整性(message integrity)
3、端点认证(endpoint authentication)
1.5 必要的装备
密码学(Cryptology)是一种设计各种用以提供安全的算法的理论。
密码术(Cryptography)研究使用这些算法来保证系统和协议的安全。
加密(Encryption)算法。其思想是简单的,它接收一些数据(称为明文),并在密钥(key)的控制下将其转换成密文(ciphertext)。它被视为纯粹提供保密性。好的加密算法完全应当由可能的密钥数量决定其安全与否。算法的安全应当只依赖于密钥的保密,算法的保密不应当是安全性的必要条件。
由于发送者和接收者使用同一密钥(这个密钥必须保密),所以也称之为秘密密钥加密(secret key cryptography),与公用密钥加密(public key cryptography)形成对照。
最为流行的加密算法包括数据加密标准(DES)[NIST1993a],Triple-DES(三重DES)
[ANSI1985],RC2[Rivest1998]和RC4。
消息摘要
消息摘要(Message Digest)是一种函数,它接收一个任意长度消息为输入,并产生一个表示消息特征的定长字符串。它的最重要属性就是不可逆性(irreversibility)。给字摘要什,要想计算出它所对应的消息应当是极其困难的。第二个重要属性就是要想产生具有相同的两条消息M and M'应当是困难的。该属性被称为抗冲突性(collision resistance)。实际上,任何抵御冲突发生的消息摘要的强度只有摘要值的一半,因些一个128位的摘要值避免发生冲突的强度只有64位,也就是说需要大约2的64次方次操作才会产生一次冲突。因此,在选择摘要值长度时的限定常常是抵御冲突的强度,而不是抵御可逆性的强度。
消息摘要的首要用途是用于计算数字签名(digital signature)和信息验证码(MAC)。
使用最广泛的消息摘要算法为消息摘要5(MD5)[Rivest1992]和安全散列算法1(SHA-1)
[NIST1994a]。
MAC(message authentication codes信息验证码)
假设Alice与Bob共享一个密钥,Alice 想给 Bob发送一条消息,而Bob将会知道它是Alice发送的,如果她加密的话,只需将他们共享的密钥用做加密密钥即可。但是,这种方法并不能提供任何消息未被篡改的真正保证。只能保证消息来自Alice。我们需要一种新的工具。
这就是MAC。它类似于摘要算法,但它在计算的时候还要采用一个密钥,因此MAC同进依赖于所使用的密钥以及要计算其MAC的信息。
尽管存在许多基于各种摘要算法来构造MAC的尝试,但是因特网安全团体似乎就一种称为
HMAC[Krawczyk1997]的构造方法达成一致。这种方法描述了如何基于满足某种合理假定摘要来创建具有可证明的安全特性的MAC,SSLv3中使用的中一种HMAC的变种,真正的HMAC在TLS中使用。
密钥管理问题
Alice拿到我们的消息,使用共享密钥对信息进行加密,添加一个也是基于该密钥构造的MAC并将其发送给Bob。Bob收到消息,知道发送这条消息的只有Alice,因为只有Alice才具有创建消息上的MAC时所需的密钥。而且能确认信息没有被篡改。
这种共享密钥的方式存在问题,存在很多的密钥,使用不方便。而且更重要的是需进行密钥交换,由于以电子方式交换密钥是很不安全,所以你实际上必须与每一个与之通信的人会面。
这为通过因特网购买商品设置了障碍。
KDC(密钥分发中心)
针对密钥管理问题最流行的解决方案就是公共密钥加密(public key cryptography,PKC)。将在下一节讲述,不过也存在一种只使用目前为止所讨论的工具来解决密钥管理问题的措施。
基本思想是利用受信任的第三方,我们委托它对与我们通信的各方进行认证。这种第三方通常是由网络上一种安全主机来实现的,这台机器被称为密钥分发中心KDC。每个需要保密通信安全的个人都与KDC共享一个密钥。当Alice 与 Bob通信时。她就给KDC发送消息,
该消息以其与KDC共享的密钥加以保护,请求与Bob通信。KDC产生一个新的用于Alice 与Bob之间进行通信的加密密钥,再将其放在一条称为许可证(ticket)的消息中返回。
一条许可证消息由两条消息组成。一条给Alice,其中带有新密钥。另一条给Bob,其中也包括新密钥,通信时用Bob的密钥加密。Alice将许可证中Bob的那部份转交给Bob,现在两者共享密钥。这种基础版由Needham 和 Schroeder[Needham 1978]发明。但是部署最为广
泛的变种称为Kerberos。在MIT及其它地方大量应用于认证与加密。
公共密钥加密
在一篇名为“密码术新动向”[Diffie1976]的论文中,Whitfield Diffie and Martin Hellman提出了现在称之为公用密钥加密的方案,基本思想是设计一种在加密和解密时使用不同密钥的函数。你公共自已的加密密钥(公钥),但解密密角(私钥)要保密。由于公用与私用密钥不
同,公用密钥加密也叫非对称加密,而共享密钥加密有时称为对称加密)。
PKC在针对问题的认证部份也有一套解决方案。你的私钥可用来创建数字签名。它与MAC的关系如同公共密钥加密与秘密密钥加密之间的关系一样。你使用私钥对消息进行签名,而接收方用你的公钥来验证你的签名。数据字签名有一项MAC所不具备的重要属性,不可抵赖性(nonrepudiation)。发送和接收双方都可以产生MAC,但只有数字签名者才能够产生签名。这样,接收者就可以证明发送方对消息进行了签名而送方无法抵赖。
证书
公钥密钥加密也存在密钥管理的问题,公钥要如何交换?如果以电子方式交换,就会存在安全问题,攻击者能在公钥传递过程中篡改。中间人攻击(man-in-the-middle attack)就是其中一种攻击方式。如果物理方式印刷出来,则很不方便。解决方案是通过称之为证书授予权的第三方(certificate authority,CA)。CA发布以其私用密钥签名的目录。在实际应用中,CA不是对目录进行签名,而是对包含密钥属主及其公用密钥的单一信息进行签名。这些信息称为证书(Certificate)。证书的主要标准为X.509[ITU1988a]。rfc是rfc2459。CA的公用密钥以物理方式发布。不过CA并不多而且不经常变换密钥,因此这在实际应用中是不成问题的。
证书的基本结构:
1、证书包含颁发者名称(issuer name),也就是证书签名者的名。
2、主体名称(subject name),证书所担保的密钥的持有者。
3、主体公钥(subject public key),即密钥本身。
4、一组控制信息。诸如有效期限,序列号以及对整个数据对像的签名。
涉及证书的公钥解决方案仍然要包含受第三方,即CA。但修正的PDC的主要问题,由于同一个证书可以用来向任何人证明其公钥,所以CA没有必要为了让双方通信而始终处于联机状态。同时因为CA无法存取任何人的私钥,所以也不能读取任何信息。
DN标识名
证书中的主体名称及颁发者名称为x.500标识名(Distinguished Name,DN)[ITU1988b]。标识名的目的是为每个网络实体提供一个惟一的名字。为了达到这个目的,DN具有一种分层的结构,一个DN由一系列RDN(relative distinguished name,相对标识名)构成,RDN又由
一系列属性-值断言(attribute-value assertion,AVA)构成 。例如:C=CHINA O=COMPANY OU=TIGERHEAD CN=IT。
扩展
证书包含一组标准值,但可扩展,其中最重要的扩展为:
1、 subjectAltName,包含这个用户的其它名称。可能是其它DN,dNSName(dns hostname) and
2、 emailAddress。
2、keyUsgae,包含了该密钥可接受用途的屏蔽位,这些用途包括签名,加密等。
3、 extendedKeyUsage,允许包含一组任意对象标识(oid)的列表。这个列表具体描述该密钥的
4、 用途。
证书的撤消
利用证书撤消列表(Certificate Reveocation List,CRL)。
ASN.1,BER AND DER
ASN.1是抽象语法记法1,其基本思想是为描述数据结构而创建的一种允许通过机器来产生数据编码解码器的系统。它可以将数据格式描述为结构化类型的语言。这非常类似于C中的struct和java中的类。与我们有关的ASN.1编码规则为BER(Basic Encoding Rules)基
本编码规则和DER(Distinguished Encoding Rules)辩识编码规则。DER是BER的子集。
OID(object identifiers,对象标识符)。它是分配给任何种类对象的全局惟一的字节字符串,如算法,密钥用途等。OID空间是邦联性的----ISO将OID空间的各区段分配给各种不同的实体,这些实体还可以进一步针对其它实体对空间进行划分。
1.6 组合起来使用
所有通信安全技术都是根据加密,摘要计算,公用密钥加密和数字签名中的一种来构造。这些技术常被称为安全原语(security primitive),组合使用这些原语可以构造出更为复杂的结构。
组合公用密钥加密和对共享密钥加密的方法提供了对消息的快速加密,同时又具有基于证书的密钥管理的好处。
组合使用信息摘要和数字签名提供了消息完整性和发送方认证而不必共享密钥。