现代密码

现代密码根据密钥的方式可以分为对称密码和非对称密码,这两类密码是现代密码的支柱,现代密码又可以根据加密的方式分为流密码和分组密码。流密码,分组密码在CTF中通常是以对称密码的方式进行而RSA、ECC、格密码通常是以非对称密码的方式进行。

流密码

流密码一般逐字节或者逐比特处理信息。一般来说

  • 流密码的密钥长度会与明文的长度相同。
  • 流密码的密钥派生自一个较短的密钥,派生算法通常为一个伪随机数生成算法。

需要注意的是,流加密目前来说都是对称加密。

伪随机数生成算法生成的序列的随机性越强,明文中的统计特征被覆盖的更好。

流密码加解密非常简单,在已知明文的情况下,可以非常容易地获取密钥流。

流密码的关键在于设计好的伪随机数生成器。一般来说,伪随机数生成器的基本构造模块为反馈移位寄存器。当然,也有一些特殊设计的流密码,比如 RC4。^1^

分组密码

分组密码又叫块加密。所谓块加密就是每次加密一块明文,常见的加密算法有

  • IDEA 加密
  • DES 加密
  • AES 加密

块加密也是对称加密。

其实,我们也可以把块加密理解一种特殊的替代密码,但是其每次替代的是一大块。而正是由于一大块,明文空间巨大,而且对于不同的密钥,我们无法做一个表进行对应相应的密文,因此必须得有 复杂 的加解密算法来加解密明密文。

而与此同时,明文往往可能很长也可能很短,因此在块加密时往往需要两个辅助

  • padding,即 padding 到指定分组长度
  • 分组加密模式,即明文分组加密的方式。

基本策略

在分组密码设计时,充分使用了Shannon提出的两大策略:混淆和扩散两大策略

混淆,Confusion,将密文与密钥之间的统计关系变得尽可能复杂,使得攻击者即使获取了密文的一些统计特性,也无法推测密钥。

扩散,Diffusion,使得明文中的每一位影响密文中的许多位。

非对称密码

在非对称密码中,加密者与解密者所使用的密钥并不一样,典型的有 RSA 加密,背包加密,椭圆曲线加密。

非对称密码通常也被称为公钥密码

Diffie和Hellman在1976年的论文《密码学的新方向》中提出了全新的密码思想,即一个密码体制中的加密密钥和解密密钥是保密的,且由公开的加密密钥难以推测出保密的解密密钥。这种密码体制称为公开密钥密码体制,也称为公钥密码体制。

公钥密码体制的算法很多,所有的公钥密码算法都是基于某个困难的数学问题而产生的,其中,最受CTF青睐的就是RSA了。


目前现代密码在CTF比赛出现比较频繁,现在CTF中主要考察的就是现代密码学的知识应用,和数学公式的理解。进行相应的密码学题目的求解。

参考

  1. Introduction - CTF Wiki (ycdxsb.cn)