TLS协议的主要目标是在两个通信应鼡之间提供私密性和数据完整性这个协议由两层组成:TLS记录协议和TLS握手协议。最低层是基于一些可靠传输协议(如TCP)的TLS记录协议TLS记录協议提供的连接安全有两个基本性质:
TLS记录协议被用于封装各种高层协议其中一种被封装的协议就是TLS握手协议,这种协议允许服务器和愙户端在应用层协议传输或接收第一个字节数据之前验证彼此的身份并协商一个加密算法和加密密钥TLS握手协议提供的连接安全有三个基夲性质:
TLS的一个优点是它是应用层协议无关的。高层协议可以透明地置于TLS协议之上然而,TLS标准不会指定协议怎样为TLS增加安全性关于怎样初始化TLS握手、怎样理解认证证书交换的相关决策,则留给运行于TLS之上的协议的设計者和实现者做判断
尽管如此, "面向server"的扩展将来可以在这个框架中提供. 这样的一个扩展(比如, 类型x的扩展)可能要求client首先发送一个类型x的扩展在ClientHello中, 并且extension_data为空以表示它支持扩展类型. 在这个例子中, client提供了理解扩展类型的能力, server基于client提供的内容与其进行通信.
当ClientHello或ServerHello中有多个不同类型的扩展存在时, 这些扩展可能会以任意顺序出现. 一个类型不能拥有超過一个扩展.
最后, 需要注意的是扩展可能在开始一个新会话和要求恢复一个会话是发送. 的确, 一个请求恢复会话的client通常不会知道server是否会接受这個请求, 因此它应该像它不打算回复会话时那样发送扩展.
通常, 每个扩展类型的规范需要描述扩展对全部握手流程和会话恢复的影响. 大多数当湔的TLS扩展仅当一个会话被初始化时才是相关联的: 当一个旧的会话被恢复时, server不会处理Client Hello中的扩展, 也不会将其包含在Server Hello中. 然而, 一些扩展可以在会话恢复时指定不同的行为.
在这个协议的新特性与现存特性之间会有一些敏感(以及不很敏感)的交互产生, 这可能会导致整体安全性的显著降低. 当設计新的扩展时应考虑下列事项:
- 一些情况下一个server没有就一个扩展协商一致是错误情况, 一些情况下则简单地拒绝支持特定特性. 通常,错误警报應该用于前者, server扩展中的一个域用于响应后者.
- 扩展应该尽可能在设计上阻止任何通过操纵握手消息来强制使用(或不使用)一个特殊特性进行的攻击. 无论这个特性是否被确认会导致安全问题, 这个原则都应该被遵循.
通常扩展域扩展域都会被包含在Finished消息的hash输入中, 但需要给予极大关注的昰在握手阶段扩展改变了发送消息的含义. 设计者和实现者应该注意的事实是, 握手被认证后, 活动的攻击者才能修改消息并插入, 移动或替换扩展.
- 使用扩展来改变TLS设计的主要方面在技术上是可能的; 例如密码族协商的设计. 这种做法并不被推荐; 更合适的做法是定义一个新版本的TLS -- 尤其是TLS握手算法有特定的保护方法以防御基于版本号的版本回退攻击, 版本回退攻击的可能性应该在任何主要的修改设计中都是一个有意义的考量.
這个扩展的语义某种程度上有些复杂, 因为密码族表明允许的签名算法而不是hash算法. 7.4.2和7.4.3节描述了合适的规则.
server必须发送一个Certificate,无论何时协商一致嘚密钥交换算法使用证书进 行认证(包括除DH_anon外本文中定义的所有密 钥交互算法) 这个消息一直是 紧随在ServerHello消息之后。
证书必须适用于已协商的密码族的密钥交互算法和任何已协商的扩展
这是一个证书序列(链)。发送者的证书必须在列表的第一个位置每个随后的证 书必須直接证明它前面的证书。 因为证书验证需要被独立发布的根密钥 确定了 根证书权威的自签名证书可以被在链中忽略, 如果远程终端已經拥有了它以便在 任何情况下来验证它
相同的消息类型和结果将用于client端对一个证书请求消息的响应. 需要注意的是一个client可能不发送证书, 如果它没有合适的证书来发送以响应server的认证请求.
注: PKCS #7不会被用做证书向量的格式因为PKCS #6扩展的证书没有被使用. 同样, PKCS #7定义了一个集合而非一个序列, 使得解析列表的任务变得更难完成.
如果client提供了一个"signature_algorithms"扩展, 则所有由server提供的证书必须由出现在这个扩展中的一个hash/签名算法对进行签名. 需要注意嘚是这意味着一个包含了一个签名算法密钥的证书应该被一个不同的签名算法签名(例如, RSA密钥被DSA密钥签名). 这个与TLS 1.1不同, 后者要求算法是相同的.
洳果server有多个证书, 它基于上述标准(此外其它的标准有:传输层端点, 本地配置和偏好等)选择其中一个.如果server只有一个证书, 它应该尝试使这个证书符匼这些标准.
正如密钥族指定了用于TLS协议的新的密钥交换方法, 它们也指定了证书格式和要求的编码的按键信息.
这个消息传递了密码信息以允許client就预主密钥进行交互: 一个client用于完成一个密钥交换的Diffie-Hellman公钥(结果就是预主密钥)或一个其它算法的公钥
server必须在选择密码族之前检查任何"signature_algorithms"扩展之外的候选密码族. 这在某种程度上并不优雅, 但却是一个折中方案, 用以最小化对原始密码族设计的修改.
此外, hash和签名算法必须与位于server的终端实体證书中的密钥相兼容. RSA密钥可以与任何允许的hash算法配合使用, 并服从任何证书的约束(如果有的话).
由于DSA签名不包含任何安全的表明hash算法类型的方式, 如果多个hash可以与任何密钥共同使用时会存在hash被替换的风险(译者注: 不理解). 当前, DSA[DSS]可以只与SAH-1一起使用. 将来修订版的DSS [DSS-3]可以预期允许DSA与使用其它的摘要算法一起使用, 正如摘要算法应对与每个密钥的大小进行配合的指导原则一样. 此外, 将来修订版的[PKIX]可以指定证书机制以表明哪些摘要算法將与DSA一起使用.
作为额外为TLS定义的包含新的密钥交换算法的密码族, server密钥交换消息会被发送, 当且仅当与密钥交互算法关联的证书类型没有提供足够的信息供client交换一个预主密钥.
server可以自行决定或者继续握手不验证client, 或者回复一个致命handshake_failure警报. 而且, 如果证书链某些方面不能接受(例如, 它没有被┅个知名的可信CA签名), server可以自行决定继续握手(考虑到client无认证)或发送一个致命警报.
这个消息必须被发送但必须为空.
如果RSA被用于密钥协商和认证, client會生成一个48字节的预主密钥,使用server证书中的公钥加密,然后以一个加密的预主密钥消息发送. 这个结构体是ClientKeyExchange消息的一个变量, 它本身并非一个消息.
紸意:PreMasterSecret中的版本号是由client在ClientHello.client_version中提供的, 并不是为这个连接协商的版本号. 这特性被用来防止回滚攻击. 不幸的是, 一些旧的实现使用了协商的版本, 因此檢查版本号会导致与这些不正确的clieng实现之间的互操作失败.
虽然没有已知的针对这个结构体的攻击, Klima et al. [KPR03]描述了一些理论上的攻击 因此推荐第┅种结构描述。
在任何情况下一个TLS Server一定不能产生一个警报,如果处理一个RSA加密的预密钥消息失败或版本号不是期望的。作为替代它必须以一个随机生成的预主密钥即系握手流程。出于定位问题的意图将失败的真正原因记录在日志中可能是有帮助的但必须注意避免泄露信息给攻击者(例如,计时日志文件或其它渠道)
这些字节对于RSA是冗余的因为EncryptedPreMasterSecret是ClientKeyExchange中仅有的数据,它的长度会明确地确定SSLv3规范对公钥加密数据的编码没有明确指定,因此很多SSLv3实现没有包含长度字节 -- 它们将RSA加密数据直接编码进ClientKeyExchange消息中
本规范要求EncryptedPreMasterSecret和长度字节一起正确地编碼。结果PDU会与很多SSLv3实现不兼容实现者从SSLv3升级时必须修改他们的实现以生成和接受正确的编码。希望兼容SSLv3和TLS的实现者必须使他们的实现的荇为依赖于版本号
实现注记:现在得知对TLS进行基于计时的攻击是可能的,至少当client和server在相同局域网中时是可行的相应地,使用静态RSA密钥嘚实现必须使用RSA混乱或其它抗计时攻击技术如[TIMING]所述。
这个消息用于对一个client的证书进行显式验证这个消息只能在一个client证书具有签名能力時才能发送(例如,所有除了包含固定Diffie-Hellman参数的证书)当发送时,它必须紧随着client密钥交换消息
hello开始到但不包括本消息,包含握手消息的類型和长度域这是到目前为止所有握手结构(如在7.4节中定义的那样)的关联。需要注意的是这要求两端要么缓存消息要么计算用所有鈳用的hash算法计算运行时hash值直到计算CertificateVerify的hash值为止。Server可以通过在CertificateRequest消息中提高一个受限的摘要算法及来最小化这种计算代价
由于DSA签名不包含任何咹全表明hash算法的方法,如果任意密钥使用多个hash的话会产生一个hash替代风险目前DSA[DSS]可以与SHA-1一起使用。将来版本的DSS[DSS-3]被希望允许与DSA一起使用其它的摘要算法
正如说明摘要算法应该使用的密钥大小的指导一样。此外将来版本的[PKIX]可以指定机制以允许证书表明哪些摘要算法能与DSA一起使鼡。
结束消息是第一个被刚刚协商的算法密钥和机密保护的消息。结束消息的接收者必须验证内容是正确的一旦一方已经发送了结束消息且接收并验证了对端发送的结束消息,它必须在连接上开始发送和接收应用数据
在TLS之前的版本中,verify_data一直是12字节长在当前的TLS版本中,她取决于密码族任何没有显式指定verify_data_length的密码族都有一个verify_data_length等于12.这包括了所有现有的密码族。需要注意的是这种表示的编码与之前的版本相哃将来密码族可能会指定其它长度但这个长度必须至少是12字节。
为了开始连接保护TLS记录协议要求指定一个算法族,一个主密钥和client及server端隨机数认证,加密和消息认证码算法由cipher_suite确定cipher_suite是由server选定并在ServerHello消息中表明出来。压缩算法在hello消息这协商出来随机数也在hello消息中交换。所囿这些都用于计算主密钥
主密钥的长度一直是48字节。预密钥的长度根据密钥交换算法而变
应用数据消息由记录层承载和分片、压缩、並基于当前连接状态进行加密。这些消息被记录层当做透明数据处理
在0-63(十进制)范围内(包含0和63)的将来的数值由标准行为[RFC2434]来指定。茬64-223(十进制)范围内(包含64和223)的数值由规范需求[RFC2434]来指定在224-255(十进制)范围内(包含224和255)的数值保留以备私用[RFC2434]。
本文档也使用了几个在[RFC4366]Φ原创的Registry IANA更新了这些参考稳定。这些Registry和它们的分配策略(照搬自[RFC4366])列在下面
本节描述了协议类型和常量。
一个密码套件定义了在TLS 1.2版本Φ支持的一个密码规范
TLS_NULL_WITH_NULL_NULL 是指定的且是一个TLS连接在通道中初次握手过程中的初始状态,但不能被协商它也不能提供比无安全的连接更多嘚保护。
下面的CipherSuite的定义要求server提供一个RSA证书用于密钥交换Server可以在证书请求消息中请求任何可签名的证书。
这里Diffie-Hellman参数由一个可签名的证书签洺来签名这个证书由CA签发。Server使用的签名算法由CipherSuite名称中的DHE组件后面的名称来指定Server能够从client请求任何可签名的证书用于验证client,它也可以请求┅个Diffie-Hellman证书任何由client提供的Diffie-Hellman证书必须使用由server描述的参数(组或生成者)。
下面的密码套件用于完全匿名的Diffie-Hellman通信其中的任何一方都没有验证。需要注意的是这种模式无法防御中间人攻击因此使用这种模式是受限使用的:这些密码套件不能被TLS 1.2的实现所使用,除非应用层指定要求使用匿名密钥交换(匿名密钥交换有时也是可接受的,例如:在没有验证建立的情况下支持投机的加密,
或TLS作为更复杂的安全协议的一蔀分来使用有其它手段来确保验证)
需要注意的是使用非匿名密钥交换且没有实际的密钥交换验证在实质上等同于匿名密钥交换,之前嘚告警同样适用当非匿名密钥交换总体上包含了比匿名密钥交换更高的计算和商业成本时, 且应用层允许匿名密钥交换,出于互操作的目嘚不禁用非匿名密钥交换
RFC 4492 [TLSECC]将椭圆曲线密码套件添加到TLS中。本文改变了在那个文档中使用的一下结构体本节详细说明要求RFC 4492和TLS 1.2的实现者做絀的改变。TLS 1.2的实现者但不实现RFC 4492的不需要阅读本节
本文添加了一个"signature_algorithm"域到数字签名的元素中以便标示出生成一个签名所用的签名和摘要算法。这个改变应用于数字签名也适用于ECDSA签名,因此允许ECDSA签名与除SHA1外的摘要算法一起使用提供这种用法可以兼容证书和[PKIX]的将来的修改所施加的任何限制.
正如7.4.2节和7.4.6节描述的那样, 对签发证书所用的签名算法的限制不再与密码套件(被server所使用的)或ClientCertificateType(被client所使用的)所限定。因此對RFC 4492的第2和第3节中所指定的对签发证书的签名算法的限制也同样解除。在本文中对终端实体证书中密钥的限制仍然不变。
CBC是一个模式 在這个模式中每个用一个密文块加密的明文块都首先与前一个密文块做异或运算(或者,对于第一个块与初始向量)。对于解密每个块都是先解密,然后再与之前的密文块(或向量)做异或运算
[DES]仍然是一个被广泛使用的对称加密算法虽然它限制被认为相当弱。DES是一个块加密算密钥是56位,块是8字节在TLS中,出于密钥生成的考虑DES被作为8字节(64位)密钥长度来对待,但它仍然只提供56位保护(每个密钥字节的朂低位用于设置这个密钥字节的奇偶校验)DES也可以以一种模式[3DES]操作,在这种模式下对每块数据用3个独立密钥进行三次加密;这会使用168位(對于TLS密钥生成方法是24字节)密钥并提供等同于112位的安全
TLS协议不能阻止很多常见的安全错误。这节会提供几个协助开发者的建议
TLS需要一个密码学上安全的伪随机数生成器(PRNG)。在设计和种子化PRNG时必须小心PRNG基于安全的hash操作,最显著的是SHA-1是可接受的,但不能提供比随机数生成器状态的大小更多的安全
为了估计所产生的种子材料的量,在每个种子的字节中添加了不可预测信息的位数例如,从一台兼容18.2HZ定时器的PC中获取的按键计时数据提供了1或2个安全位即使计数器数值的总大小是16位或更多。种子化一个128位的PRNG因此应该偠求大约100个这样的定时器数值
实现负责验证证书的完整性,且通常应该支持证书吊销证书应该一直被验证以确保它被一个可信的证书權威(CA)适当的签发。可信CA的选择和添加应该十分小心用户应该能够观察到有关证书和根CA的信息。
TLS支持一个密钥大小和安全等级的范围包括不提供安全或提供最少安全的等级。一个适当的实现可能不会支持很多密码套件例如,匿名Diffie-Hellman强烈不推荐因为它不能阻止中间人攻擊应用应该强制最小和最大密钥大小。例如包含了512位RSA密钥或签名的证书链不适用于高安全的应用。
实现的经验表面早期TLS特定部分的规范并不容易理解并成为了安全和互操作问题的一个来源。其中很多领域会已经在本文中澄清但本附录包含了一个大多数重要事情的短嘚列表,希望实现者特别关注
- 你是否能正确处理分片为多个TLS记录的握手消息(见6.2.1节)? 包括边缘实现(如:一个ClientHello被分为若干个小的分片)? 你會将握手消息分片超过最大分片大小限制吗特别是证书和证书请求握手消息能足够大到要求分片。
- 对于RSA加密的预主密钥你正确地发送囷验证了版本号了吗?当遇到一个错误时你是继续握手以避免Bleichenbacher攻击吗(见7.4.7.1)?
由于存在着很多版本的TLS(1.0, 1.1, 1.2, 和任何将来的版本)和SSL (2.0和3.0), 意味着需要協商所使用的具体协议版本号TLS协议提供了一个内置机制用于版本协商,这样就不会为其它协议组件引入版本选择的复杂性
1.2)。如果server不支歭这个版本它会回应一个包含旧版本号的ServerHello。如果client同意使用这个版本协商将会以适用于所协商协议的方式继续进行。
无论何时一个client已经嘚知一个server所这次和的最高协议版本(例如当恢复一个会话时),它都应当在原始协议中初始化这个连接
1.0新时会简单地关闭连接。同样┅些server会拒绝连接,如果ClientHello中包含任何TLS扩展的话与这些古怪的server进行互操作是一个复杂的话题,超出了本文的范围且可能会要求client尝试进行多佽连接。
希望与旧版本server进行协商的TLS client应当发送任意值{03,XX}做为记录层版本号典型的值可以是{03,00},是client支持的最低版本号也是ClientHello.client_version的值。没有单个值能保证与所有旧版本server进行互操作但这是一个复杂的话题,超出了本文的范围
server实现者提供了足够的细节; 真实的定义仍然假定是[SSL2]。
为了进行協商2.0 CLIENT-HELLO被理解为一个ClientHello携带一个空的压缩方法且没有扩展。需要注意的是这个消息必须直接在网线上发送并不会包裹在一个TLS记录中。为了計算Finished和CertificateVerify, msg_length域不会被认为是握手消息的一部分
当一个由TLS能力的server协商SSL 2.0时,它应该在解密ENCRYPTED-KEY-DATA后检查这8个填充字节是否是0x03如果不是,server应该为ENCRYPTED-KEY-DATA产生一个随机值然后继续握手(这会最终失败因为密钥不匹配)。需要注意的是将错误情况报告给client可能会是server易遭受[BLEI]中所描述的攻击
TLS协议被设计用来在一个不安全的通信通道上为一个client和一个server之间建立一个安全连接。本文设置了几个传统的假设包括攻击者拥有重要的计算资源,不能从协议之外的源获取机密信息攻击者被假定有能力捕捉,修改删除,重放和其它方式篡改消息並在通信通道上发送。本附录概述了TLS怎样被设计来抵御各种攻击
握手协议负责选择一个密码规范(译注:应该理解为密码参数)和产生┅个主密钥,它们一起构成了与一个安全会话相关联的主密码学参数握手协议也能选择拥有由可信证书权威签名的证书的认证方。
TLS支持彡种认证模式:双向认证对server认证不认证client,和全部不认证无论何时server被认证,通道就能够安全地应对中间人攻击但完全匿名的会话本质仩还是容易遭受这类攻击。匿名server不能认证client如果server被认证了,它的证书信息必须提供一个导向一个可接受的证书权威机构的有效证书链相姒地,已认证的client必须提供一个可接受的证书给server每一方都需要负责认证对方证书是有效的且没有过期或被吊销。
密钥交换过程的总体目标昰产生一个通信各方共知的预主密钥且不能为攻击者所知预主密钥将被用于产生主密钥(见8.1节)。主密钥用于产生Finished消息加密密钥,MAC密鑰(见7.4.9和6.3节)通过发送一个正确的Finished消息,各方就能由此证明他们知道正确的预主密钥
完全匿名的会话可以使用Diffie-Hellman密钥交换来建立。Server端公鑰参数包含在server密钥交换消息中client的包含在client密钥交换消息中。不知道私钥值的窃听者不能找到Diffie-Hellman的结果(例如预主密钥)。
警告:完全匿名連接只能提供对被动窃听的保护除非有一个独立的防篡改通道能验证Finished消息没有被一个攻击者替换,server认证在一个存在活跃的中间人攻击的環境中是需要的
使用RSA,密钥交换和sever认证可以合并公钥包含在server的证书中。需要注意的是作为妥协产物的server端静态RSA证书会导致所有在静态密鑰保护下的会话丧失机密性想要完美前向安全的TLS用户应使用DHE密码套件。通过频繁更改一方的私钥(和证书)可以限制私钥泄露产生的破壞
在认证了server的证书之后,client用server的公钥加密一个预主密钥通过成功解码预主密钥和产生了一个正确的Finished消息,server表明它知道与server证书匹配的私钥
当RSA被用于密钥交换时,client在证书认证消息(见7.4.8节)中被认证Client签名一个从前面的所有握手消息中提取的值。这些握手消息包括server证书它将簽名与server绑定;包括ServerHello.random,它将签名与当前握手过程绑定
当使用Diffie-Hellman密钥交换时,server可以提供一个包含固定Diffie-Hellman参数的证书或使用server密钥交换消息发送一個由DSA或RSA证书签名的临时Diffie-Hellman参数集合。临时参数在签名前会与hello.random值一起做hash以确保攻击者不会重放旧参数在这两种情况下,client能够验证证书或签名鉯确保参数属于server
Diffie-Hellman参数必须与server提供的相兼容以使密钥交换机制能够正常工作。
如果client有一个标准的DSA或RSA证书或clietn未经认证,它在client密钥交换消息Φ发送了一个临时参数集给server然后可以选择性使用一个证书验证消息认证自己。
如何相同的DH密钥对被用于多次握手或者由于client或server有一个包含一个固定DH密钥对的证书,或者由于server重用DH密钥都必须多加小心以阻止小子群攻击(small subgroup attacks)。实现上需要遵循[SUBGROUP]中的指导
小子群攻击多可以通過使用一个DHE密码套件并生成一个新的DH私钥(X)给每个握手来避免。如果徐州了一个合适的基(比如:2)g^X mod p可以被快速计算;因此,性能开銷被最小化了此外,每个会话使用一个新的密钥提供了完美前向安全实现上需要在使用DHE密码套件时为每个会话产生一个新的X。
由于TLS允許server提供任意的DH组client应该验证DH组的大小是满足本地策略定义的。Client也应该验证DH公开指数的大小是适当的[KEYSIZ]对于各种组大小的优点提供了有用的指导。Server可以选择通过提供一个知名组来协助client正如在[IKEALG]或[MODP]中定义的一样。这些能够通过简单比较来验证
由于TLS包含了对SSL版本2.0的重大改进,攻擊者可以尝试将TLS client和server回退到版本2.0这种攻击当(且仅当)TLS双方使用了SSL 2.0握手时才会发生。
#1块类型2消息填充并不优雅它却为版本3.0的server提供了一个檢测这种攻击的合理的安全方法。这个解决方案对于能够对密钥进行穷举攻击并在应用指定的等待门限过期之前用一个新的ENCRYPTED-KEY-DATA消息包含相同嘚密钥(但有正常的填充)进行替换的攻击者来说是不安全的改变PKCS填充中最低有效的8字节并不影响协议中使用的签名hash长度和RSA密钥长度的咹全性,因为这在本质上等同于将输入块大小增加了8字节
一个攻击者可能会试图影响握手交互以是的握手双方选择与正常选择不同的加密算法。
对于这种攻击一个攻击者必须动态地改变一个或多个握手消息。如果这样做了client和server将会对握手消息计算出不同的hash值。结果是通信双方将不会接受对端的Finished消息,这样攻击就会被发现
当一个连接通过恢复一个会话来建立时,新的ClientHello.random和ServerHello.random值会与会话的主密钥一起做hash在假定主密钥不能被破解且用于产生加密密钥和MAC密钥的安全hash操作的安全的条件下,连接应该是安全的并且有效地独立于之前的连接攻击者茬无法破解安全hash操作的条件下不能使用已知的加密密钥或MAC密钥破解主密钥。
会话不能被恢复除非client和server都同意如果任何一方怀疑会话可能被叺侵,或证书可能过期或被吊销它应当强制进行完全的握手。建议会话ID的生命期上限为24小时因为一个得到了一个主密钥的攻击者可能會冒充有弱点的通信方直到相应的会话ID过期。可能在相对不安全的环境中运行的应用不应当将会话ID写入到持久的存储中
输出数据在传输の前使用一个MAC值进行保护。为了阻止重放或修改攻击MAC值由MAC密钥,序列号消息长度,消息内容和2个固定字符串计算得来消息类型域是必要的以确保消息按预期被一个TLS记录层的client使用,不会被重定向为其它的消息序列号确保了试图删除或重排序消息将会被探测到。因为序列号是64位它不能溢出。来自一方的消息不能被插入到其它的输出中因为他们使用独立的MAC密钥。相似地server写和client写密钥也是独立的,这样鋶密钥只能被使用一次
如果一个攻击者破解了一个加密密钥,所有由它加密的信息都能被读取相似地,削弱一个MAC密钥会是的修改消息嘚攻击变得可能因为MAC也是被加密的,消息修改攻击通常需要破解加密算法而不只是MAC
注:MAC密钥可以比加密密钥长,这样即使加密密钥被破解消息仍然能够防止篡改。
[CBCATT]描述了一个对TLS的选择明文攻击这个攻击依赖于得知一个记录的向量(IV)。TLS以前的版本[TLS1.0]使用了之前记录中嘚CBC剩余数据作为IV而因此这种攻击能够发生本版本使用了一个显式IV以抵御这种攻击。
TLS使用对称加密和在协商的密码套件中定义的认证函数來确保所传输的应用数据的安全 目标是在网络中的活跃攻击者的而已行为下保护已传输数据的完整性和机密性。由此产生的结果是为了取得这个目标加密和认证函数应用于数据的顺序扮演了一个重要的角色[ENCAUTH]。
最健壮的是被称为加密然后认证的方法首先对数据进行加密嘫后对密文计算MAC。这种方法确保了使用任何加密和MAC函数对都能够获得完整性和机密性如果前者对选择明文攻击是安全的且MAC对于选择消息攻击是安全的。TLS使用了另一种方法称为认证然后加密,即先对明文计算MAC然后对明文和MAC的级联数据进行加密这种方法对于确定的加密函數和MAC函数的组合是安全的, 但不能保证在通常的情况下是安全的。特别是已经能够证明存在能够与任何安全MAC函数结合的完美的安全加密算(甚至在信息论意义上也是安全的),但却不能提供针对一个活跃攻击的99保密协议真相性目标因此,TLS采纳了新的密码套件和操作模式咜们需要在“认证然后加密”的模式下被分析以验证它们达成了规定的完整性和机密性的目标。
当前“认证然后加密”的方法的安全性茬一些重要的案例上已经得到了证明。其中一个案例是流密码它的原理是用一个伪随机数生成器产生一个与消息的长度加上MAC标记的长度嘚不可预测的填充,然后再与明文和MAC标签进行异或;另一个案例是使用CBC模式的一个安全块密码在这个案例中,如果能够做到一次将一个CBC加密传递给明文和MAC的级联每对新的明文和MAC使用独立的、不可预测的IV,就是安全的在TLS 1.1之前的版本,CBC模式的使用是很合理的除了以之前密文的最后一块的形式使用了一个可预测IV。这使得LTS对选择明文攻击是开放的本版本的协议对这些攻击免疫。关于加密模式安全性证明的精确细节, 见[ENCAUTH]
TLS易受大量的拒绝服务(DoS)攻击的影响。尤其是一个攻击者发起了大量的TCP连接能导致一个服务器消耗大量CPU用于RSA解密操作的情况然而,由于TLS通常在TCP上运行如果TCP协议栈使用了合适的TCP SYN随机化[SEQNUM]则攻击者很难隐藏其源头。
由于TLS运行在TCP之上它也容易遭受对个体连接的大量DoS攻击。特别是攻击者能伪造RST,因此能结束连接或伪造部分TLS记录,因此会导致连接停滞这些攻击通常不能由使用TCP的协议来防范,关惢这类攻击的实现者和用户可以使用IPsec AH [AH]或ESP [ESP]
由于TLS能够提供一个安全的连接,client和server的系统密钥和应用必须是安全的。此外实现上必须没有安铨错误。系统只能与最弱的密钥交换方法和所支持的认证算法一样强壮且只能使用值得信任的密码函数。使用短的公钥和匿名server应及其小惢在决定使用那个证书和证书权威时实现者和用户必须谨慎;一个不诚实的证书权威能进行极大的破坏。
最近有一件事传的很火,1999年世纪の交,入侵地球在喜马拉雅山登录,一直战到蒙古最终外星人战败。所有存活者均被消除记忆战斗者签署99保密协议真相性协议。总の各种各样的版本越编越玄乎,都快搞成科幻小说了不得不佩服网友的想象力,那么1999年究竟发生了哪些大事呢?
1999年3月24日以美国为艏的北约组织,以“消除人道灾难”为由对南联盟实施轰炸,持续78天5月8日,美国使用导弹袭击中国驻南斯拉夫大使馆造成多人伤亡。 1999年12月19日下午5时第127任澳督韦奇立在澳门总督府进行最后一次的降旗仪式,为政权移交仪式拉开序幕下午4时30分,在亿万观众的见证之下最后一任澳督韦奇立走出澳督府,迈出了居住了8年之久的澳督府站在斜向门口的位置等待仪式开始。17时在澳门警察乐队所奏响的葡國国歌声中,葡国国旗从楼顶的旗杆处降下 1999年12月20日零时,举世瞩目的中葡两国政府澳门政权交接仪式在澳门文化中心花园馆隆重举行。在《义勇军进行曲》乐曲声中中华人民共和国国旗和中华人民共和国澳门特别行政区区旗在这里庄严升起。从此澳门回到祖国的怀菢。3、世界末日事件以及千禧虫问题 法国预言家诺查丹玛斯说:在1999年12月31日上帝要惩罚人类将会造大灾难使人类灭亡。60亿人在忐忑不安Φ迎来了新世纪的第一天,太阳照常升起 在一 些计算机系统中,对于闰年的计算和识别出现问题不能把2000年识别为闰年,即在该计算机系统的日历中没有2000年2月29日这一天而是直接由2000年2月28日过渡到了2000年3月1 日。另一个是在一些比较老的计算机系统中在程序中使用了数字串99(或99/99等)来表示 文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4 月9日即1999年的第99天)来临时计算机系统在处理到内容Φ有日期的文件时,就会遇到99 或99/99等数字串从而将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱 甚至崩溃等故障 这也僦是所谓的千禧虫问题,看似不大其实不然如果不是无数程序员加班熬夜,在新世纪到来之前解决这一问题,那么可能所有电脑系统嘟会崩溃小到游戏存档,大到核弹发射都会乱套在此感谢历史上未留名的程序员们。在99年的多数事件中更多的是造谣,希望大家理性看待科学对待,不要无中生有传播谣言,谨记!谨记!! |
1999年地球发生外星人侵略浩劫,80後和90后誓死抵抗、付出了绝大牺牲后最终拯救了世界
战后,联合国决议:没有参与战斗的平民都被消除了记忆而部分参战人员则能保留记忆,但需要签订99保密协议真相协议不能向外界透露这场与外星人的战斗。
这就是火遍全网的“1999年地球保卫战”和“1999年99保密协议真相協议”的来源在这部《1999年星战编年史》中详细记录了1999年发生的事,原作者不详
1961年4月12日,加加林被苏联航天局送入太空成为历史上第┅个进入太空的地球人。
1969年7月20日阿姆斯特朗作为第一个踏足月球的地球人,不远处出现了不知名神秘物体几分钟暂停后,主权宣言“從此刻起这是美国的领土。”换成了和平宣誓“这是个人迈出的一小步却是人类迈出的一大步。”
对宇宙的探索仍在继续......
80年代在半囚马ω星球发现高等智慧生物。人类第一次发现超越人类智慧和科技水平的外太空生物。
80年代末半人马星系和太阳系订立互助友好盟约,囲同抵抗萨比星人及其同盟的威胁
1992年,萨比星人入侵半人马星系人类派兵驰援。4年后半人马星系陷落。
1994年萨比星人开始侵占人类嘚星球。
1997年末银河系防线全部丢失,人类全体回撤太阳系
1999年,萨比星人入侵人类最后的堡垒—地球
1999年2月,联合国发布s级预警地球保卫战开始。
1999年9月萨比星人入侵至中国大陆,在南方的萨比星人被中国城市管理联合军队击败打破了敌人不可战胜的神话;而入侵北方的萨比星人离奇的孱弱,一战即溃
1999年10月,萨比星人决定炸毁地球女娲舰队发现其意图,联合“伏羲”、“神农”舰队双方爆发了驚天动地的地球空中防御战。
1999年12月人类和萨比星人在月球展开最后决战。在最后时刻麒麟号舰长董新带着满腔怒火,率舰撞向敌人主艦奠定了这场战争的最终胜利!
1999年12月,联合国决定所有参战人员签订《1999全人类法反击作战99保密协议真相协议》,并承诺将永远不得对外透露此次战争中的任何事情消除非战斗人员记忆。
2000年1月1日第一批00后出生,地球迎来新纪元人类也迎来了光明和可爱的未来。
月球坑是当时人类抵抗外星人时留下的战争痕迹
“为什么要说出来,我只想做个隐名埋姓的英雄”
“混蛋,说好了保守这个秘密到死为什么要说出来?”
“当初大家不都是签了99保密协议真相协议了吗!哪个叛徒来投稿的”
在互联网上,这是一个永远也绕不过去的梗
在各类论坛、贴吧上,总能看到关于1999年地球保卫战、1999年99保密协议真相协议的内容
“1999年99保密协议真相协议”现世后被众多网友、自媒体疯传,引来很多不明真相网友的追问
“1999年99保密协议真相协议”是真是假?
今天探长来给大家解密下。
“1999年99保密协议真相协议”最开始出现茬一条微博上
2013年3月6日14点12分,微博博主“说给树洞”发表了一个1999年80后和90后大战外星人抵抗陨石最终拯救了地球和00后的网络段子。
微博中寫到:“00后的小弟弟小妹妹们你们真的以为80后90后没你们强吗你们本来不该出生的,是我们80后90后在1999年拯救了这个世界你们才得以出生甭查,网上可没有那天晚上我们大战外星人抵抗陨石的时候顺便抹去了所有人的记忆。孩子们啊为你们的出生而感激我们吧→_→”
微博博主“说给树洞”当时是一个开放式、收集网友投稿的公开账号。所以投稿人是谁现在也没法查到这条微博发布后,在不到两天的时间裏转发接近10万次,网友评论超过2万条
微博像病毒一般极短时间内在全网疯狂扩散。80后和90后的网友们看热闹不嫌事儿大各种“失忆”、“要挟”的回复,跟风玩梗成功让很多人以为99保密协议真相协议真的存在。
网络名人“和菜头”、“匪我思存”和“使徒子”等对此倳又进行了加工和扩充小说式地创作1999年集体拯救世界的悲壮故事。
就这样“1999战记创作体”迅速走红微博,开启全民创作模式
戏精上身的网友们纷纷发挥想象力,激情满满地创作自己的“1999年战记”追忆他们在1999年所经历的惨烈战斗。最后形成了一个充满爱恨情仇、硝烟戰火的宇宙科幻战争系列故事
有少女因大战到现在还没有嫁出去,最终成为了剩女的故事
有融合异世界魔幻、东方武侠和现代科幻等哆种元素的超时空大战。
还有充斥着悲伤回忆的战友情、爱情、基友情等等
@灼眼的夏亚_MORE:那一年,我戴着面具驾驶着红色有角的扎古,旁边是一台白色的RX-78吉翁与联邦第一次站到了一起,为了抵抗那些从异次元为毁灭地球人三观而来的刚大木
@和菜头:我永远也不会忘記1999年的3月6日。我眼睁睁看着阿里斯顿的战机在我身侧爆炸不会错的,我亲眼看见美菱的照片从气浪中飞出来从我的面罩前经过,她笑嘚很美
“1999战记创作体”不仅在文字故事领域流行。
2013年3月10号B站知名的UP主“N.ec鱼丸”上传一段视频恶搞,片名《决战1999》故事内容就是1999年,薩比星人入侵地球人类奋力抵抗拯救地球的故事。
到现在为止这段视频在B站上已经达到了近150万次的播放量。
“1999年99保密协议真相协议”甚至在国际上也引起不小的动静
据人民网报道,联合国官微在“说给树洞”发布微博的第二天也加入“爆料”:那一年,联合国任命叻首位外星大使负责接待外星人……这位外星人大使就是著名的科幻片影星、“和外星人打交道最多”的施瓦辛格。还附上了一段前联匼国秘书长潘基文的讲话视频
不过是发生在2010年12月15日的联合国记者晚宴上,而不是在1999年那是2010年记者会上固定的搞笑活动,放到“1999战记”嘚创作背景下反而恰到好处
看到这里,真相也基本清晰了
所谓的“1999战记”是假的。网上流传的那份1999年99保密协议真相协议也是伪编的蕗边上随便找个打印店都能印千儿八百份。
1999年99保密协议真相协议能成为很多人茶余饭后津津乐道的话题其实是因为这是很多普通人都接觸不到的事件,“失忆”、“99保密协议真相协议”的桥段增加了神秘感但它只是一个纯忽悠人的事件。
至于当初为什么会出现这样一则“1999年99保密协议真相协议”探长判断有两个原因:
1、纯粹的调侃和恶搞。
80后和90后一直以来被长辈们视为“道德毁掉的一代”、“垮掉的一玳”总有人批评他们思想堕落和离经叛道。在他们眼里80后90后成了“扶不起的阿斗”,连带着00后也是这么看待80后和90后的
所以不妨做个夶胆的猜测:这就是一个愤世嫉俗的80后或90后的一次反击,用这种方式调侃一下“自视甚高”的00后没想到竟引起了众多同龄人的共鸣。
80后聯手90后跟00后开了一个玩笑编了这么一个虚构的故事,造一个新鲜的段子随着网友的恶搞加工,逐渐变成一个网络热梗
2、关于世界末ㄖ的预言自古以来一直不少。
1999年是一个比较特殊的年份人类面临两个末日预言。
第一诺查丹玛斯在一本预言书中写道:“一九九九,七月;恐怖大王从天而降;蒙古大王重新出现;这期间战神以幸福的名义主宰世界。”
隐晦地表达出1999年7月“恐怖之王”将从天而降。“恐怖之王”的预测使得世界末日降临的阴影一度笼罩全世界
诺查丹玛斯是著名的法国预言家。有人说他曾预言了法国国王亨利二世的迉
预言来源于这句话:“年轻的狮子将在一场战斗中战胜年老的狮子,在战斗的战场上;他会透过金鸟笼刺穿他的眼睛两处伤口,然后怹就死于残酷的死亡”
由于亨利二世的死亡场景与上面的描述很类似,导致很多人都相信他的预言
但那一天是很平常的一天,末日的謠言被现实打破
诺查丹玛斯的预言常使用一些模糊不清的语言,容易被人们联想嫁接到某个真实发生的历史事件上更多是后人想像中嘚巧合。
第二1984年一个电脑贸易专栏发出警告:2000年1月1日将是世界末日,所说的就是“千年虫”问题
在一些计算机系统里,不能把2000年识别為闰年该计算机系统的日历中就没有2000年2月29日这一天,而是直接由2000年2月28日过渡到了2000年3月1日但最终,无数的程序员加班熬夜解决了计算機计时程序的“千年虫”问题。
所以“199999保密协议真相协议”其实是1999年末日预言的变本,外星人入侵地球最后80后和90后拼死拯救了地球。
“2012年末日谣言”的起源是玛雅人对末日的预言在末日尚未到来之前就引起了全社会的关注,甚至被不良商家利用以牟利
“1999年99保密协议嫃相协议”则是2013年后才流传网络的,发布者将1999末日预言当作了创作背景成功吸引了全民参与创作这个宇宙战争科幻故事。《1999星战编年史》如同小学生作文很容易就被看出是个假事件。
我们把“1999年99保密协议真相协议”当作一个笑话看看就好了这只是一个被玩坏了的梗。
“1999年战记创作体”是一种戏谑科幻战争文很多创作者都会在文章中加入一些带有明显漏洞的搞笑片段,隐晦地暗示这个故事的虚构性純粹是为了娱乐。
*部分图片来源于网络侵删