加密算法和非对称加密的简单学习
- 前言
- 对称加密算法
- DES
- 特点:
- 为什么不使用:
- 3DES(Triple DES 或者 DESede)
- 特点:
- 使用场景:
- 为什么不用:
- AES(Advanced Encryption Standard)
- 特点:
- 使用场景:
- 为什么不用:
- PBE(Password-Based Encryption)
- 特点:
- 使用场景:
- 为什么不使用:
- 非对称加密算法
- DH
- 特点 :
- 使用场景:
- 为什么弃用:
- RSA
- 特点
- 使用场景
- EIGamal
- 特点:
- 场景
- 数字签名(待更新....)
- bug 记录
- 问题
- 简述
- 问题解决
- 总结
- 对称加密
- 非对称加密
前言
工作中发现安全很是关键,涉及到一些加密算法,故特地简单学一下,该文件为简单的学习笔记,
对称加密算法
初等的加密算法,常见的对称加密算法有:
- DES
- 3DES
- AES
- PBE
- IDEA
DES
具体流程:
特点:
- 加密解密速度快。密钥长度短,可能会被破解。
- DES的密钥长度只有56位,有利于攻击者使用穷举法试图破解密钥。
为什么不使用:
现在已经不再使用,被更加安全的加密算法所取代,如AES。
3DES(Triple DES 或者 DESede)
特点:
- 采用了DES算法的多轮加密方式,进一步提高了加密的安全性。
- 密钥长度变长,破解难度增加,安全性提高。
- 能够兼容DES系统,替代单轮DES,提高安全性。
使用场景:
- 适用于需要高度安全性的场景,例如银行、金融机构等。
- 适用于需要向多个受信任的实体发送信息时,每个实体都有自己的加密密钥,使用3重DES可以保证这些信息得到足够的安全保护。
为什么不用:
然而,随着计算机处理能力的飞速提高,3重DES对抗攻击的能力已经不足以保证安全。由于3重DES运算速度比单DES慢一倍以上,加/解密效率低下也成为了一个问题。因此,现在一般不再建议使用3重DES,
取而代之的是更加安全快速的AES(高级加密标准)算法,密钥长度从128-256位可选,是目前最广泛使用的加密算法之一。
AES(Advanced Encryption Standard)
AES是目前最流行的加密算法之一,至今尚未被破解
特点:
- 高度安全性:AES使用高度安全的加密算法,可避免黑客攻击和数据泄漏。
- 处理速度快:AES加/解密速度快,计算速度快,是更加高效的加密方式。
- 安全性强:AES能够支持128位、192位和256位密钥长度,可以为不同的应用提供不同的安全级别。
使用场景:
- 保护重要数据:AES可用于对敏感信息进行加密保护,如银行账户、个人信息和医疗记录。
- 保护网络传输安全:AES可用于保护通过网络传输的敏感数据,如电子邮件、文件传输和数据库传输等。
- 保护通信安全:AES可用于加密通信,如移动电话通话或视频会议中的语音或视频数据。
为什么不用:
- 从侧信道攻击和行为分析的角度看,AES漏洞可能会让攻击者访问密钥而不是加密文本。
- 相对于硬件加密,软件AES实现速度相对较慢,因此在特定场景下,如信息量非常大时,可能需要寻求其他安全方案。
PBE(Password-Based Encryption)
即基于密码的加密
特点:
可以使用用户输入的密码作为密钥来加密和解密数据。 具体来说,PBE在加密数据之前会根据用户输入的密码生成一个密钥,
在解密时再根据同样的密码重新生成密钥,从而实现加密和解密操作。
使用场景:
-
需要根据用户的密码来对数据进行加密和解密的场景。
-
将加密后的数据保存到数据库中,只有在用户输入正确的密码后才能解密和使用的场景。
-
所有需要加密和解密的场景,例如加密和解密文件、保护敏感信息等。
为什么不使用:
需要非常高强度以及更加安全的加密过程中。PBE的加密过程是基于密码的,因此其安全性取决于密码的强度。如果密码强度较弱,
黑客可以通过暴力破解来获得密钥,从而可以解密数据。此外,PBE相对于其他加密算法来说,其加密速度较慢。
对数据在传输和存储过程中进行加密保护的场景,但在更加高强度和更加安全的场景中则不太适用。
非对称加密算法
高等的加密算法, 双保险(即公钥、私钥)
- DH(Diffie-Hellman) 密钥交换算法
- RSA——基于因子分解(应用范围最广的非对称)
- ElGamal——基于离散对数
- ECC(Elliptical curve Cryptography)——椭圆曲线加密
DH
- 发送方生成密钥对,并将公钥发送给接收方。
- 接收方收到发送方的公钥后,根据该公钥生成自己的密钥对,并将公钥发送回发送方。
- 发送方收到接收方的公钥后,再根据接收方的公钥生成自己的密钥。
- 双方生成的密钥相同,用于对称密钥加密,通信加密。
特点 :
- 安全:由于DH算法采用了离散对数问题,很难被破解,因此安全性较高。
- 无需预共享密钥:DH算法不需要预先存在共享密钥,可以在协商密钥时动态生成,因此具有很好的灵活性。
- 高效:DH算法的计算开销较小,可在较短的时间内完成密钥协商。
使用场景:
主要用于需要保障通信安全的场景,比如网上银行、固话与手机通信等。它可以有效地避免密钥被偷窥、窃听等安全问题。
典型的DH算法使用例子是TLS协议,该协议广泛应用于互联网浏览器和Web服务器之间,确保用户的隐私信息在传输过程中得到安全保护。
为什么弃用:
无法解决中间人攻击问题,即攻击者可以伪装成与通信双方进行通信,从而窃取密钥,导致通信数据泄露。
除此之外,DH算法也存在一些种族歧视问题,被认为不能完全保证公正性。
RSA
特点
- 非对称性:RSA算法使用一对密钥(公钥与私钥)进行加解密。公钥可以公开,任何人都可以获得,而私钥只有密钥持有人才能知道。因此,RSA算法具有非对称性,即加密和解密使用不同的密钥。
- 安全性:RSA算法基于数论中某些难解的问题,如质数分解,因此被认为是一种安全可靠的加密算法。
- 可签名性:除了可以用于加解密,RSA算法还可以用于数字签名。数字签名在保证通信过程中信息不被篡改,起到防抵赖的作用。
使用场景
- 加密通信:RSA算法可用于数据加密,保证通信过程中信息不被窃听、修改。
- 数字签名:RSA算法可用于生成数字签名,保证信息的完整性、真实性和抗抵赖性。
- 身份认证:RSA算法可用于身份认证,确认对方的身份和合法性。当然,在实际应用场景中,通常需要配合其他加密算法和协议来实现更加安全的通信。
EIGamal
特点:
- 非对称性:ElGamal算法使用一对密钥(公钥与私钥)进行加解密。公钥可以公开,任何人都可以获得,而私钥只有密钥持有人才能知道。因此,ElGamal算法具有非对称性,即加密和解密使用不同的密钥。
- 安全性:ElGamal算法基于数论中某些难解的问题,如离散对数问题,因此被认为是一种安全可靠的加密算法。
- 可扩展性:ElGamal算法可扩展到多方秘密共享和群组加密等应用场景。
场景
- 加密通信:ElGamal算法可用于数据加密,保证通信过程中信息不被窃听、修改。
- 数字签名:ElGamal算法可用于生成数字签名,保证信息的完整性、真实性和抗抵赖性。
- 秘密共享:ElGamal算法可用于实现多方秘密共享,如在分布式系统中实现机密信息共享。
- 群组加密:ElGamal算法可扩展到群组加密中,实现多方通信的安全保障
需要注意的是,ElGamal算法在加解密速度和密钥长度等方面与RSA算法有所不同,具体应用场景需要考虑算法特点和应用需求。
数字签名(待更新…)
bug 记录
问题
简述
java.security.invalidkeyexception: illegal key size or default parameters
问题解决
java环境安装的时候自带的安全策略的密钥长度受限了,因为美国对软件出口的限制。需要去oracle官方网站下载
JDK6 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6
JDK7 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
JDK8 JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download
替换这两个文件即可。
总结
对称加密
对称加密又称为共享密钥加密,它是一种加密方法,使用同一个密钥进行加密和解密。因此,密钥在加密和解密过程中都是相同的。对称加密算法执行快速,但存在密钥分发问题,就是如果敌手截取了密钥,那么其实一切就一点不安全了。对称加密算法的常见算法有DES、3DES和AES。
非对称加密
非对称加密又称为公开密钥加密,它是一种加密方法,使用公钥和私钥进行加密和解密。公钥是公开的,任何人都可以获取,它用于加密数据;而私钥是保密的,只有密钥的所有者可以获取它,它用于解密数据。非对称加密算法执行缓慢,但不需要密钥分发,所以更为安全。非对称加密算法的常见算法有RSA、ECC和DSA。非对称加密算法还广泛用于数字签名、密钥协商和身份验证等场景。
对称加密的优点是执行速度快,缺点是存在密钥分发问题,不适用于公开环境。非对称加密的优点是不需要进行密钥分发,更加安全,但执行速度较慢。两者在实际应用中常常结合使用,以克服各自的缺点。