网络与信息安全安全基础四内容摘要:

可以检查密钥交换和认证过程是否已经成功。 其中包括一个校验值,对所有以来的消息进行校验。  服务器同样发送 change_cipher_spec消息和 finished消息。  握手过程完成,客户和服务器可以交换应用层数据。 密钥交换算法  TLS记录协议需要: CipherSuite, master secret, and the client and server random values  在 hello消息中,交换随机数以及各种算法  对于各种密钥交换算法,从 pre_master_secret计算得到 master_secret, 然后从内存中删除,公式: master_secret = PRF(pre_master_secret, “master secret”, + )[0..47] * PRF(secret, label, seed)为伪随机函数  Master_secret总是 48字节长,而 pre_master_secret长度不定,取决于密钥交换算法  两类密钥交换算法:  RSA, 客户产生一个 48字节的 pre_master_secret, 然后通过服务器的公钥传递给服务器  DiffieHellman, 双方协商得到的密钥被用作pre_master_secret 重用一个 TLS会话  客户和服务器在交换hello消息中,客户要求重用已有的 TLS会话,服务器同意使用cache中的会话 * session id  跳过第二第三阶段,直接把 TLS会话中的参数传递给 TLS记录层 伪随机函数 PRF(secret, label, seed)  P_hash(secret, seed) = +HMAC_hash(secret, A(1) + seed) +HMAC_hash(secret, A(2) + seed) +HMAC_hash(secret, A(3) + seed) + ...  这里 A()定义如下: A(0) = seed A(i) = HMAC_hash(secret, A(i1))  伪随机函数 PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR P_SHA1(S2, label + seed)。 这里, S1和 S2为 secret的各一半,如果 secret为奇数个字节,则 S1和 S2共享一个字节 TLS/SSL安全性分析  针对一些常见的攻击手法  针对密钥算法的破解  取决于算法的强度,协商过程  利用明文模式的攻击  上层协议中常常有一些固定的模式可以参考,比如 协议中get字节串  构造字典 (密文 密钥对 ),查字典  TLS办法:用长密钥,使得不可能构造这样的字典  重放攻击  TLS中的 nonce有 32字节 (包含时间戳 ),可用于避免重放攻击  会话 ID标识了一个完整的会话,要重放部分会话需要知道私钥  中间人攻击  通过证书来认证对方  对于双方都是匿名的模式,中间人攻击也是成立的 历史上针对 SSL/TLS的攻击  PRNG  Millionmessage attack  其它 SSL: PRNG攻击  Netscape ,利用随机数发生器的弱点  先看随机数发生器 global variable seed。 RNG_CreateContext() (seconds, microseconds) = time of day。 /* Time elapsed since 1970 */ pid = process ID。 ppid = parent process ID。 a = mklcpr(microseconds)。 b = mklcpr(pid + seconds + (ppid 12))。 seed = MD5(a, b)。 mklcpr(x) /* not cryptographically significant。 shown for pleteness */ return ((0xDEECE66D * x + 0x2BBB62DC) 1)。 ( 待续) SSL: PRNG攻击 (续 )  种子关联: pid, ppid, seconds, microseconds  Seconds往往可以获得, microseconds未知  如果在目标机器上有账号,则 pid和 ppid可以获得  否则,可以寻找 pid和 ppid的。 对于大多数 UNIX平台, pid+(ppid 12)只有 27位 global variable challenge, secret_key。 RNG_GenerateRandomBytes() x = MD5(seed)。 seed = seed + 1。 return x。 create_key() RNG_CreateContext()。 tmp = RNG_GenerateRandomBytes()。 tmp = RNG_GenerateRandomBytes()。 challenge = RNG_GenerateRandomBytes()。 secret_key = RNG_GenerateRandomBytes()。 PRNG的启示  PRNG并不是 SSL协议本身的缺陷,而是实现上导致的缺陷  随机数对于安全协议或者安全系统的重要性  源码开放的另一层含义  关键的代码接受公众的审视 Reference: Ian Goldberg and David Wagner, “Randomness and the Netscape Browser”, January 1996 Dr. Dobb39。 s Journal SSL: Millionmessage attack  在 RSA算法作加密运算的时候,首先对明文消息进行编码,其格式为 0 2 random bytes 0 message  假设密文 C, 攻击者可以产生一系列整数 S并计算 C’ = C*(Se) mod n, 在解密的时候,每一个 C’对应于一个 M’。 大多数的 M’不会满足上面的格式,但是有 216的概率会产生这样的结果 (因为前两个字节是确定的 )。 攻击者可以找到一系列满足条件的 S, 然后推断出密文 C对应的明文 M。 这个过程大约需要 220个消息和应答。  攻击实施依赖于  需要一个可以提供解密准确性判断的服务器 ——称为。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。