《图解密码技术》笔记(一)

技术概要

密码技术概要图

密码技术概要图

术语

  • 伪随机生成器:是一种能够模拟生产随机数列的算法,承担着密钥生成的重要职责。如果生成随机数的算法不好,窃听者就能推测出密钥,从而带来通信机密性下降的风险。

  • 数字签名:是一种能够保证完整性,提供认证,并防止否认的密码技术。

  • 对称密码: 在加密和解密,使用同一个密钥的方式。

  • 公钥密码/非对称密码: 是指在加密和解密时使用不同密钥的方式。

  • 单向散列函数/哈希值/密码校验/消息摘要:所保证的并不是机密性,而是完整性.

密码与信息安全常识

任何密码总有一天都会被破解

密码只是信息安全的一部分

不要使用保密的密码算法

  • 密码算法的秘密,早晚会公诸于世!一旦密码,算法,详细信息被披露,依靠对算法本身进行保密,来确保机密信息的,密码系统也就土崩瓦解了。
  • 开发高强度的密码算法是非常困难的。现在世界上公认的被认为强度较高的密码算法,几乎都是通过密码破译者长期还是破解未果而终活下来的。
  • 试图通过对密码算法本身进行保密,来确保安全性的行为,一般称之为隐蔽性安全性,这种行为是危险且愚蠢的。

使用低强度的密码比不进行任何加密更危险

  • 容易让用户通过“密码”这个词,获得一种错误的安全感,进而导致用户在处理一些机密信息的时候麻痹大意。

对称密码

通过XOR(异或)就可以实现高强度的密码

  • 将明文A用密钥B进行加密,得到密文(A XOR B)
  • 将密文(A XOR B)用密钥B进行加密,得到明文A
  • 形象图参考如下:
    xor图
  • 参考链接:XOR 加密简介

DES,三重DES

  • DES(Data Encryption Standard),即数据加密标准,是1977年美国联邦信息处理标准中所采用的一种对称密码。一直以来被美国以及其他国家的政府和银行等广泛使用,但是随着计算机的进步,现在的DES已经能够被暴力破解,强度大不如前了,现在我们不应该再使用DES了

  • 现在DES已经可以在现实的时间内被暴力破解,三重DES出于这个目的被开发出来的,但是处理速度不高,而且在安全性方面也逐渐显现出一些问题,也不推荐使用。

    AES

  • 美国国家标准技术研究所 用 高级加密标准(Advanced Encryption Standard: AES),用以取代DES。 最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael算法。

  • AES加密算法的详细介绍与实现: AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。

    • 加密流程图:
      AES加密流程图

小结

  • 然而用对称密码进行通信时,还会出现密钥的配送问题,及如何将密码安全的发送给接收者。为了解决密码配送问题,我们需要用公钥密码技术。
  • 使用一种密钥空间巨大,且在算法上没有弱点的对称密码,就可以通过密文来确保明文的机密性,巨大的密钥空间能够抵御暴力破解,算法上没有弱点可以抵御其他类型的攻击。

分组密码的模式

  • 分组密码:是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组(block);一个分组的比特数就称为分组长度(block lenght)
    • AES的分组长度可以从128比特,192比特和256比特进行选择,当选择128比特的分组长度时,AES一次加密128比特的明文,并生成128比特的密文。
  • 分组密码模式:分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为分组密码的模式(mode)。
    分组密码模式图1
    分组密码模式图2
  • 分组密码有很多种模式,如果模式选择不恰当,就无法保证机密性。ECB模式中,明文中的一些规律就可以通过密文被识别出来。
  • 安全性最差的模式是ECB模式,推荐使用CTR模式。

公钥密码

  • 公钥密码(piblic-key cryptography)中,密钥分为加密密钥和解密密钥两种。加密密钥称为公钥,解密密钥称为私钥(private key)。公钥和私钥是一一对应的,一对公钥和一对私钥统称为密钥对(key pair)。

  • 对称密钥存在配送问题:
    密钥配送问题

  • 使用公钥密码 解决了配送问题 (但存在公钥认证问题):
    公钥密码发送消息

RAS

ras

  • RSA算法基于一个十分简单的数学难题:RSA使用因式分解的原理,两个大质数相乘很容易,但大数分解质因子很难.即:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

ECC(椭圆曲线密码)

  • 通过将椭圆上的特点点进行特殊的乘法运算来实现,它的特点是所需的密钥长度比RSA短.

小结

  • 使用公钥密码能解决密钥配送的问题,现代计算机和互联网所使用的密码技术都得益于公钥密码。
  • 公钥密码是基于数学上的困难的问题来保证机密性。可见,对称密码和公钥密码是两种根本不同的思路。
  • 公钥密码解决了密钥配送问题,但针对公钥密码能够进行中间人攻击。
  • 密钥的价值等价于明文的价值
  • 密钥生成:生成密钥的最好方法是使用随机数,因为密钥需要具备不易被她人推测的性质。密码学用途的伪随机数生成器必须是专门针对密码学用途而设计的。
  • 密码配送:使用公钥密码外,还有一种是Diffie-Hellman 密钥交换。

高深的密码学+复杂的区块链,其实也可以通俗易懂:

  • RSA又慢又不安全,所以比特币和以太坊都不采用,而是使用了更安全的椭圆曲线算法。
  • ECC来做非对称加密基础算法。ECC算法用很短的密钥就能达到RSA2048的安全强度,而且计算速度有数量级的提高,所以目前应用很普遍,国密中的SM2就是基于ECC算法的。
  • 强烈不建议使用RSA,原因如下:
    • 容易被破解:RSA-768可以在3个小时内破解,1024在理论上100小时内也可以破解。所以使用RSA,长度起步要2048。但是数学家彼得·舒尔研究了一个针对整数分解问题的量子算法 (舒尔算法),理论上破解2048的RSA在100秒之内(好在量子机还未投入使用)。
      • 密钥长度加到2048可以提升安全,但是计算过慢。

混合密码系统

  • 公钥密码的处理远远低于对称密码
  • 公钥密码难以抵挡中间人攻击

  • 混合密码系统: 结合对称密码,公钥密码和伪随机生成器这三种密码技术,创造出了一种兼具对称密码和公钥密码优点的密码方式。混合密码系统解决了公钥密码速度过慢的问题,并通过公钥密码解决了对称密码的密钥配送问题。密码软件PGP、以及网络上密码通信所使用的SSL/TLS都运用了混合密码系统。

    加密流程:

    加密流程

    • 伪随机数生成器被用于产生会话密钥。
    • 用对称密码加密消息,用公钥密码加密会话秘钥。即:会话秘钥是对称密码的密钥,同时也是公钥密码的明文。

      解密流程:

    • 解密流程

小结

  • 混合密码系统中运用了对称密码和公钥密码两种密码方式,无论其中任何一方的密钥过短都可能遭到集中攻击,考虑到长期运用的情况,公钥密码的强度应该要高于对称密码,因为对称密码的会话密钥被破译只会影响本次通信内容,而公钥密码一旦被破译,所有相同公钥加密的通信内容就都能被破译了。
如果觉得我写的帮助到您,请随意打赏,是我最大的肯定和动力
分享