密码学算法及应用(二)

来源:互联网 发布:王子文身高知乎 编辑:程序博客网 时间:2024/05/14 18:35

密码学六元组

  • -明文
  • -密文
  • -加密算法
  • -解密算法
  • -加密秘钥
  • -解密秘钥

    其中加密算法和解密算法一般都是公开的,只有公开的算法才能被验证是安全的。不要试图开发自己的保密加密算法,一旦算法泄露,加密体系就崩溃了。所以加密时要选用公开的算法。

    机密性完全依赖于秘钥的安全性,秘钥泄露了,就无安全可言了,密文可以被截获,加解密算法都是公开的,对于破译者来说,算法不是秘密,关键是拿到密码本。

加密算法的分类

  • 对称加密(传统加密算法) -- 加解密秘钥相同
  • 非对称加密(公钥加密算法)--加解密秘钥不同

JAVA

JDK对密码学算法的支持基本都位于下面两个包中
  • -- javax.security
  • -- javax.crypto
java怎样使用上述算法请百度

对称加密算法

  • DES (Data Encryption Standard)
  • 3DES (Triple DES)
  • AES (Advanced Encryption Standard)
    3DES是DES和AES之间的一个过渡

对称算法特点

  • 加解密过程是互逆的
  • 加减密算法使用置换和移位

algorithm

keylength

security

speed

DES

56

可被穷举破解

3DES

112168

较高

AES

128192256

暂时还未被破解

秘钥长度越长,穷举破解的难度就越大
安全性是相对而言的,随着计算机性能的提升和云计算的发展,安全算法的破解也会成为可能

AES
秘钥长度:128、192、256 (JDK默认只能使用128,如需使用更长的秘钥,需要从Oracle官网下载对应扩展包)

对称加密的最新标准
安全性高(暂时没有被破解)、加密效率高
推荐使用
AES扩展包


非对称加密算法(公钥加密算法)

常用算法
  • RSA
  • DH
  • EIGamal
加减密算法使用的是函数运算,更为复杂,只介绍比较常用的RSA和DH。

公钥密码体系
每个人都有两个秘钥:PublicKey,PrivateKey
公钥公开给别人用,私钥自己保管好不可泄露
用途
通信加密:公钥加密,私钥解密
数字签名:私钥加密,公钥解密
通信模型


为什么需要公钥密码体系
在互联网环境下,对称秘钥的配送需要安全保证
非对称密钥还可以做数字签名


优缺点
优点:解决了秘钥配送的安全问题
缺点:运算复杂,加密效率低


RSA算法

  • 由MIT的3位学者提出,取每个人姓氏的第一个字母为算法命名
  • 秘钥长度:512-65536(JDK默认是1024)
  • 算法的本质:两个大素数的乘积分解问题
  • 目前是不可破解的


DH算法

  • DH是一种秘钥交换算法
  • 用于通信双方生成相同的对称密码
具体过程如下



                  

                             


两类算法的关系

相互补充,而不是后者取代前者

algorithm

keyexchange

encryptionspeed

AES

不安全

RSA

安全

使用非对称算法来交换秘钥(甲乙双方产生相同对称秘钥)

使用对称算法加密数据

二者结合使用即安全又高效 比如:HTTPS


0 0