信息安全
信息安全的三要素
信息安全中需要解决的三个问题:
- 保密性(Confidentiality):信息在传输是不被泄露
- 完整性(Integrity):信息在传输时不被篡改伪造
- 有效性(Availability):信息的来源是合法可信的
这三点统称CIA Triad
公钥密码解决保密性问题,数字签名解决完整性和有效性问题
密码学
1. 对称加密
采用单个秘钥对明文进行加密的方法,同时该秘钥也是密文解密的钥匙。 所谓对称就是采用这种方式,密文与明文之间可以相互推导出来。
常见的对称加密算法有:
-
DES:
- 已破解,不再安全,基本没有企业在用了
- 是对称加密算法的基石,具有学习研究价值
- 秘钥长度56(JDK)、56/64(BC)
-
DESede(3DES):
- 早于AES出现用于代替DES
- 计算秘钥时间太长,加密效率不高,基本也不用
- 秘钥长度112/168(JDK)、 128/192(BC)
-
AES:
- 最常用的对称加密算法
- 秘钥建立时间短、灵敏性好、内存需求低
- 实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位字节数组)
- 秘钥长度为128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)
- 填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有
-
IDEA:
- 常用的电子邮件加密算法
- 工作模式只有ECB
- 秘钥长度128位
-
PEB:
- 综合了消息摘要算法和对称加密算法,最常见的是PBEWithMD5AndDES
- 工作模式只有CBC(已丧失安全性,不推荐使用),所以PBE也不推荐使用了
对称加密特点
优势:
1. 加解密时速度快、效率高
2. 使用长秘钥时难以破解
不足:
1. 算法公开,秘钥被盗则意味着裸奔
2. 秘钥的网络传输往往是不安全的,极易被抓获
3. 发收新双方往往需要管理许多对称秘钥,管理成本很高。
基于以上原因,非对称加密上场了。
2. 非对称加密
汲取对称加密教训,非对称加密有两个秘钥,人们称之为公钥(public)和私钥(private),所以又叫公私钥加密。基本定位是公钥加密,私钥解密。公钥在网络上传输,私钥保存在自己手里。这样即使公钥和密文被截也破解不了。 所谓非对称即同一秘钥只能单向推导
常见的非对称加密算法有:
- RSA:广泛应用于电子商业,安全可靠 到目前为止还没有任何可靠的攻击RSA算法的方式。只要其钥匙长度足够长,便无法破解
- DSA: 是基于整数的有限域离散对数难题的,其安全性和RSA相比差不多。(DSA是Schnorr和ElGamal签名算法的变种,具有Elgamal的特征)
- Elgamal: 该算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散数学这一难题
- ECC(椭圆曲线加密算法): 安全性高 计算量小 占存储空间小 带宽要求低。 ECC各方面性能都大于等于RSA,有取代RSA的趋势
- D-H:
- Rabin:
- 背包算法:
非对称加密使消息在网络中传输更为安全,但非对称加解密算法速度很慢,且会随着明文(密文)的长度越发的慢,因此网络传输中有这么一种方案被广泛使用:
明文使用对称加密加密后,其秘钥使用非对称加密再次加密,网络传输中传输该密文和加密后的秘钥。这样只有知道非对称加密的私钥才可以解出对称加密后的秘钥,进而解出密文。该方案既保证了加解密的速度又保证了对称加密秘钥的安全,可谓一举两得。
另一个问题随即而来:我怎么知道这份加密数据是你发来的而不是敌人来捣乱假传消息的(或者半路被劫后伪造的)???-----看下面数字签名
非对称加密的应用
看个例子:
- (1)Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为