《白帽子讲WEB安全》学习笔记之第11章 加密算法与随机数-阿里云开发者社区

开发者社区> 安全> 正文

《白帽子讲WEB安全》学习笔记之第11章 加密算法与随机数

简介:

第11章 加密算法与随机数

11.1 概述

攻击密码系统的方法

密码分析者攻击密码系统的方法主要有以下三种:

1)穷举攻击

    所谓穷举攻击是指密码分析者采用依次试遍所有可能的密钥对所获密文进行解密,直至得到正确的明文.

2)统计分析攻击

    所谓统计分析攻击就是指密码分析者通过分析密文和明文的统计规律来破译密码。

3)数学分析攻击

所谓数学分析攻击是指密码分析者针对加解密算法的数学基础和某些密码学特性,通过数学求解的方法来破译密码。

 

破译密码的类型

1唯密文攻击Ciphertext-only attack

已知:

   C1EP1 )C2EKP2 )……CiEK(Pi)

推导出:

   P1P2……PiK或者找出一个算法从Ci1EK(Pi1 )推出Pi1

 

2已知明文攻击Know-plaintext attack

已知:

 P1C1EP1 )P2 C2EK(P2 ) …… PiCiEKPi

推导出:

      密钥k,或从Ci1EK(Pi1 )推出Pi1

 

3选择明文攻击Chosen-plaintext attack

已知:

 P1C1EP1 )P2 C2EK(P2 ) …… PiCiEKPi,其中P1P2…… Pi是由密码分析者选择的。

推导出:

     密钥k,或从Ci1EK(Pi1 )推出Pi1

 

4自适应选择明文攻击Adaptive-chosen-plaintext attack

5选择密文攻击Chosen-ciphertext attack

6选择密钥攻击Chosen-key attack

7软磨硬泡攻击 

11.6 密钥管理

密钥的保密性比算法的保密性重要多了。密钥最好是动态的,会定期更新。

11.7 伪随机数问题

Java中使用java.util.Random是不安全的,因为其是使用系统时间的作为种子生成的伪随机数。在种子相同的情况下,其生成的随机数的顺序都是相同的。

java.security.SecureRandom是安全随机数,可以在项目中使用。

加密算法的最佳实践:

q  不要使用ECB模式

q  不要使用流密码

q  使用HMAC-SHA1代替MD5(甚至代替SHA1

q  不要使用相同的key做不同的事

q  saltsIV需要随机产生

q  不要自己实现加密算法,尽量使用稳定的加密库

q  不要依赖于系统的保密性

 


本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1859557


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章