网络加密技术算法:

计算机网络加密技术应用非常普遍,且多而复杂,今天用最简单的话来说清楚加密算法的原理。加密算法可以分为三类:

  1. 对称加密算法
  2. 非对称加密算法
  3. 单向哈希算法

对称加密算法:

原理: 加密和解密使用同一个密钥!

特性:

  • 加密算法公开,密钥不公开
  • 加密、解密使用同一个密钥,效率高,速度快
  • 将原始数据分割成固定大小的块,逐个进行加密

缺陷:

  • 密钥过多,比如一个发送者对应多个接受者,就需要多个密钥, 这时密钥分发和密钥管理就会变得非常复杂
  • 数据来源无法确认

常见对称加密算法:

  • DES:Data Encryption Standard,56bits , 56位加密就是把数据以56位为单位切割,然后分别对每个数据小块加密
  • 3DES:加密三次
  • AES:Advanced (128, 192, 256bits),高级加密标准,可以选择密钥长度,有128、192、256 bits等等,位数越长,加密效果越好。比如无线路由器就是使用的AES加密
  • Blowfish,Twofish :商业解决方案,需要花费成本
  • IDEA,RC6,CAST5

常见使用场景:

  • WIFI密码就是使用的对称加密技术
    aes-wifi

非对称加密算法:

原理: 密钥成对出现,通讯双方各有一对密钥,一对密钥包含一把公钥和一把对应的私钥!

  • 公钥(public key)公开给所有人,主要给别人加密使用
  • 私钥(private key)自己留存,必须保证其私密性,用于自已加密签名
  • 用公钥加密数据,只能使用与之配对的私钥解密; 用私钥加密数据,只能使用与之配对的公钥解密;

特性:

  • “公钥加密,私钥解密”可以加密数据,实现数据安全!
  • “私钥加密,公钥解密”可以确认对方的身份,因为私钥不公开,只有自己才有!这种特性也被称之为 “数字签名”

缺陷: 密钥长,算法复杂;加密解密效率低下

常见算法:

  • RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,可实现加密和数字签名。RSA用的非常普及, RSA既可以做数字签名(来源确认),也能做数据加密
  • DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)。DSA只能做数字签名(来源确认),不能做数据加密
  • ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,提供相当的或更高等级的安全

常见使用场景:

  • Github配置ssh-key,实现免用户名密码登录
    rsa-github-ssh

对称加密算法和非对称加密算法对比:

  • 对称加密算法效率高,适合加密大数据!
  • 非对称加密算法效率太低,适合加密小数据!

引用网上现成的实验结论:
使用DES加密1G数据,加密5min,解密10min
使用RSA加密1G数据,加密1min,解密64h

单向哈希(散列)算法:

原理: 将任意数据通过哈希(散列)算法缩小成一段固定大小的字符串,这段固定长度的字符串称称为digest,即摘要,也称为"指纹"!

特性:

  • 任意长度输入,固定长度输出
  • 若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
  • 无法从指纹中重新生成数据,即不要逆,具有单向性

常见算法:

  • md5: 128bits ,已被破解
  • sha1: 160bits,已被破解
  • sha224
  • sha256
  • sha384
  • sha512

作用: 数据传输前和传输后的摘要值如果一样,说明数据没有被篡改或破坏,HASH的关键作用就是确认数据的完整性!

常见使用场景:

  • linux登录密码
[root@localhost ~]# cat /etc/shadow
root:$6$pY2mYzp/$QbcKf3sW1PuP/TDrCJlDpSkb2KXgdKXcTX0bBYAG9QlHYbGMrB1qvFGd9l9bJdLclSZ/SMB4K6Dsp0q60RidI1:19339::::::
  • 镜像源网站会提供会提供系统光盘的哈希值
    hash-isos
# 镜像源网站使用的 sha256 算法,如果在本地算出来的hash值和镜像源网站一样,说明数据在传输过程中没有被篡改!
[aaron@localhost ~]#sha256sum /dev/sr0
e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987  /dev/sr0

三种加密技术总结:

  • 对称加密算法解决的是数据加密;
  • 非对称加密算法主要解决的是数据来源的确认;
  • 单向哈希算法解决的是数据完整性;

文中的“公钥”、“ 私钥”、“指纹(摘要)”、“数字签名”概念非要重要,这也是数字证书的基础知识,理解了这些概念,才能理解数字证书的原理!

在实际使用中,这三类加密技术各自有自己的特点,不会单一使用,往往会组合使用!