这一章是算法类型和模式,因为上星期项目要部署架构,所以地铁的时间都用在养精蓄锐,后面几个密码模型看得很浅,只知道大概,因为深究会花费太多精力,而且没兴趣,就先略过了。

概念

  • 分组密码(block cipher):分组加密,软件比较适合
  • 序列密码(stream cipher):一位加密,硬件比较适合
  • 密码模式(mode)
  • 密码安全考虑事项:
    1. 明文的模式应当隐藏
    2. 输入的密文应当随机
    3. 通过向密文中引入错误来对明文进行控制很困难
    4. 可以用同一个密钥加密多个信息
    5. 效率 密文和明文的大小应该相同
    6. 容错
  • 电子密码本模式(Electronic Code Book, ECB)
  • 格式化开头(sterortyped beginning)
  • 格式化结尾(stereotyped ending)
  • 填充(pedding)
  • 密文挪用(ciphertext stealing)
  • 分组重放
  • 分组链接(chaining)
  • 反馈(feedback)
  • 密码分组链接(Cipher Block Chaining,CBC)

    1. 64位的分组,32GB会重复模式(生日悖论)
  • 初始化向量(Initialization Vector,IV)
  • 错误扩散(error extension)
  • 前馈(feedforward)
  • 自恢复(self-recovering)--CBC自恢复
  • 序列密码算法
  • 密钥序列发生器(keystream generator)
  • 自同步序列密码(self-synchronizing stream cipher)
  • 密文自动密钥(Cipher Text Auto Key, CTAK)
  • 密文反馈模式(Cipher-FeedBack,CFB)
  • 同步序列密码(synchronous stream cipher)
  • 密钥自动密钥(Key Auto-Key, KAK)
  • 周期性的(periodic)
  • 插入攻击(insertion attack)
  • 输出反馈模式(Output-Feedback,OFB)

从这里开始就是略看了,前面细看的也忘得差不多了。。

  • 内部反馈(internal feedback)
  • 计数器模式(counter mode)
  • 计数器模式中的序列密码
  • 分组链接模式(Block Chaining,BC)
  • 扩散密码分组链接模式(Propagating Cipher Block Chaining, PCBC)
  • 带检验和的密码分组链接(Cipher Block Chaining with Checksum,CBCC)
  • 带非线性函数的输出反馈(Output Feed-Back with a Nonlinear Function,OFBNLF)
  • 其他模式
    1. 明文分组链接(Plaintext Block Chain-irg,PBC)与CBC类似
    2. 明文反馈(Plaintext Feed-Back,PFB)与CFB
    3. 明文差分密文分组链接(Cipher Block Chaining of Plaintext Difference,CBCPD)
  • 选择密码模式
    1. 如果关心的主要是简单和速度,ECB是最快最简单的分组密码模式,当然也最弱。
    2. 加密随机数据如密钥,可以用ECB
    3. 一般的明文用CBC、CFB、OFB等
    4. 一般来说,加密文件最好的是CBC,不会出现同步错误,特别是基于软件的时候
    5. OFB适用于加密字符序列,且需要预处理的时候,常用在不能容忍错误扩散的高速同步系统
    6. 除了所谓“神奇”模式外,ECB、CBC、CFB和OFB四种模式之一几乎能够满足任何应用需要,这些模式既不过分复杂,也不会减少系统的安全性。没有什么神奇模式具有好的错误扩散特性或错误恢复能力,且增加了复杂性
  • 交错(interleave):没看懂,大概是并行加密,然后并行解密,相当于把一大块数据按顺序分组,mod n相同的用同一个初始向量加密,然后解密端也如此进行,以提高效率。
  • 分组密码与序列密码

    1. 分组密码是对一个大的明文数据块(分组)进行固定变换的操作
    2. 序列密码是对单个明文位的随时间变换的操作
    3. 在现实世界中,分组密码更加通用,而序列密码更多用于数学分析
    4. 由于某些原因,大多数序列密码分析和设计的理论著作在欧洲完成什么原因呢??
    5. 对于数字通信信道的硬件加密来说,序列密码能发挥其长处,而对于软件来说,分组加密至少是数据总线的宽度
  • 分组密码模式一览表

模式比较 电子密码本模式(Electronic Code Book, ECB) 密码分组链接(Cipher Block Chaining,CBC) 密文反馈模式(Cipher-FeedBack,CFB) 输出反馈模式(Output-Feedback,OFB)
安全性 -明文模式不能被隐藏 +明文模式通过与前一个密文分组相异或被隐藏 +同左 +同左
安全性 -分组密码的输入不随机,与明文一样 +通过与前一个密文分组异或,分组密码的输入随机 +同左 +同左
安全性 +一个密钥加密多个消息 +同左 +用不同的IV,一个密玥加密多个消息 +同左
安全性 -明文容易被篡改;分组可被删除、再现或互换 +/-篡改明文稍难;分组可以从消息头和消息尾删除,第一分组位可被更换,并且允许某些控制的改变 +/-同左 -明文容易被篡改,任何对密文的改变都会直接影响明文
效率 +速度与分组密码相同 +同左 +同左 +同左
效率 -由于填充,密文比明文长一个分组 -不考虑IV,密文比明文长一个分组 -不考虑IV,密文与明文同大小 -同左
效率 -不能进行预处理 -同左 -在分组出现之前做些预处理是可能的,前面的密文分组可以被加密 +消息出现前做预处理是可能的
效率 +处理过程并行进行 +/-加密不是并行的;解密是并行的且有随机存取特性 +/-同左 -/+OFB处理过程不是并行的;计数器处理是并行的
容错性 -一个密文错误会影响整个明文分组 -一个密文错误会影响整个明文分组以及下一个分组的相应位(扩散) -同左 +一个密文错误仅影响明文的相应位
容错性 -同步错误不可恢复 -同左 +同步错误可以恢复,1位CFB能够恢复1位的添加或丢失 -同步错误不可恢复

问题

  • 为什么序列密码的著作都在欧洲完成??其数学比较厉害?
  • 四个加密模式的具体过程忘了,需要时再看看。