网络安全面临的问题有 窃听、篡改、仿冒。这三种攻击方式,分别会破坏消息的私密性、完整性和通信双方的互信。
一 单向加密 哈希 HASH 散列 严格意义上不算一种加密算法
MD5(Message Digest algorithm 5): 消息摘要算法
SHA(Secure Hash Algorithm): 安全散列算法
HMAC(Hash Message Authentication Code): 散列消息鉴别码 给定一个密钥,对明文进行密钥拼接, 并且做 ” 两次散列 ”,得到 32 位结果。
CRC(Cyclical Redundancy Check): 循环冗余码校验
MD5 加密的特点:
MD5Hash 算法的特点:
1:输入任意长度的信息,经过摘要处理,输出为 32 位字符(128 位)的信息.(数字指纹)
2:不同输入产生不同的结果,(唯一性)
3:根据 128 位的输出结果不可能反推出输入的信息(不可逆)
不可逆运算
对不同的数据加密的结果是定长的 32 位字符(不管文件多大都一样)
对相同的数据加密,得到的结果是一样的(也就是复制)。
抗修改性 : 信息“指纹”,对原数据进行任何改动, 哪怕只修改一个字节, 所得到的 MD5 值都有很大区别.
弱抗碰撞 : 已知原数据和其 MD5 值, 想找到一个具有相同 MD5 值的数据 (即伪造数据) 是非常困难的.
强抗碰撞: 想找到两个不同数据, 使他们具有相同的 MD5 值, 是非常困难的
MD5 应用:
一致性验证:MD5 将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的 MD5 信息摘要,就像每个人都有自己独一无二的指纹,MD5 对任何文件产生一个独一无二的数字指纹。
SHA
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于 2^64 位的消息,SHA1 会产生一个 160 位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当让除了 SHA1 还有 SHA256 以及 SHA512 等。
SHA1 有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
MD5 和 SHA 的比较
因为二者均由 MD4 导出,SHA-1 和 MD5 彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
对强行攻击的安全性
最显著和最重要的区别是 SHA-1 摘要比 MD5 摘要长 32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对 MD5 是 2^128 数量级的操作,而对 SHA-1 则是 2^160 数量级的操作。这样,SHA-1 对强行攻击有更大的强度。
对密码分析的安全性
由于 MD5 的设计,易受密码分析的攻击,SHA-1 显得不易受这样的攻击。
速度
在相同的硬件上,SHA-1 的运行速度比 MD5 慢。
二、对称加密
优点:
算法公开,计算量小,加密速度快,加密效率高
缺点:
双方使用相同的钥匙,交换密钥时安全性得不到保证
- DES(Data Encryption Standard):数据加密标准(现在用的比较少,因为它的加密强度不够,能够暴力破解)
- 3DES:原理和 DES 几乎是一样的,只是使用 3 个密钥,对相同的数据执行三次加密,增强加密强度。(缺点:要维护 3 个密钥,大大增加了维护成本)
- AES(Advanced Encryption Standard):高级加密标准,目前美国国家安全局使用的,苹果的钥匙串访问采用的就 AES 加密。是现在公认的最安全的加密方式,是对称密钥加密中最流行的算法。可以使用 128、192 和 256 位密钥,
AES 属于块加密(Block Cipher),块加密中有 CBC、ECB、CTR、OFB、CFB 等几种工作模式。常用的为 CBC 和 ECB 模式,
ECB 模式
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。
CBC 模式
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。
需要注意的是 CBC 模式需要传一个 16 位的向量值,不传的话,默认为空,空的话就属于 ECB 模式。
三、非对称加密
RSA(设计者的名字命名 -Ron Rivest, AdiShamir、Leonard Adleman)
DSA(Digital Signature Algorithm): 数字签名
ECC 椭圆曲线密码术
为了保证传输的公钥安全,通常需要 CA(Certification Authority) 证书认证使通信双方能够互信
简介:
- 对称加密算法又称现代加密算法。
- 非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
- 非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey) 1024 位、2048 位或者更长
- 公开密钥和私有密钥是一对
如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
特点:
算法强度复杂,安全性依赖于算法与密钥。
加密解密速度慢。
与对称加密算法的对比:
对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。
非对称加密有两种密钥,其中一个是公开的。
RSA 应用场景:
由于 RSA 算法的加密解密速度要比对称算法速度慢很多,在实际应用中,通常采取
数据本身的加密和解密使用对称加密算法 (AES)。
用 RSA 算法加密并传输对称算法所需的密钥。
总结
1 在数据传输过程中通常需要用 RSA 来建立互信链接, 接收方把生成的公钥(Public key) 发送给发送方, 发送方把密钥 (d) 和数字签名的密钥 (m) 通过公钥 (Public key) 加密后发送给接收方,接收方通过私钥 (Private key) 解密获取密钥(d) 和数字签名的密钥(m)
2 发送方用 AES 加密,通过密钥 (d) 对明文进行加密,得到密文 (CT),同时用数字签名的密钥(m) 对明文进行数字签名,得到 32 位的信息摘要 (IS), 然后把密文(CT) 和信息摘要 (IS) 发送给接收方。
3 接受方收到密文 (CT) 和信息摘要 (IS) 后,用密钥 (d) 对密文进行解密得到明文,然后用数字签名的密钥 (m) 对明文从新签名,把得到的结果与信息摘要 (IS) 进行比对,如果一致则数据完整可信,否则数据被不可信,从新链接