密码学的分类

密码学的分类

密码学起源于古代,发展于现代,随时间推移,密码学不断完善,拥有众多分支,可以从时间上,保密内容,密码体制等方面进行划分.

分类的划分

按时间划分

  • 古典密码:以字符为基本加密单元
  • 现代密码:以信息块为加密单元

按保密内容的算法划分

  • 受限(Restricted)算法:算法的保密性基于保持算法的秘密,一般不赞成使用这种算法,除非用于军事一类的应用,算法由专业机构开发,验证,确保其算法的安全性,这是古典密码学的主要特征.
  • 基于密钥(Key-Based)算法:算法的保密性基于对密钥的保密.这是基于柯克霍夫原则设计的算法,算法的公开有助于算法安全性的验证,算法的漏洞得以及时修正,避免算法的设计者在算法上留下后门等.这是现代密码学的主要特征.

按密码体制划分

  • 对称密码体制:也称为单钥密码体制或私钥密码体制.指该密码体制中的加密密钥与解密密钥相同.
  • 非对称密码体制:也称为双钥密码体制或者公钥密码体制.指该密码体制的加密密钥与解密密钥不同,密钥分公钥与私钥,公钥对外开放,私钥对外保密.

备注:与上述密码体制对应的算法有对称密码算法和非对称密码算法.

  • 对称密码算法:也称为单钥密码算法或私钥密码算法,指对应于对称密码体制的加密,解密算法,常见的有DES,AES.
  • 非对称密码算法:也称为双钥密码算法或公钥密码算法,指对于非对称密码体制的加密,解密算法,常见的算法有RSA,DSA,常用于数字签名,身份认证.

非对称加密对于对称加密算法有着更高的安全性,却同时有着不可回避的加密解密耗时时长.

按明文的处理方法划分

  • 分组密码(Block Cipher):指加密时,将明文划分成固定长度的组,用同一个密钥和算法对每一块加密,输出也是固定长度的密码,分组加密多用于网络.
  • 流密码(Stream Cipher):也称为序列密码,指加密时每次加密一位或一个字节的明文.手机平台对应用使用的系统资源有着极为苛刻的要求,流密码对于系统资源要求极低.RC4是相当有名的流密码算法.

备注:手工加密阶段和机械加密阶段,流密码曾是当时的主流.现代密码学研究的主要关注点时分组密码和流密码及其应用,在对称密码体制中,大部分加密算法属于分组密码.

分类

古典密码

古典密码起始于古代终止于19世纪末,是现代密码学的基础.古典密码受限于当时的环境,以语言学为基础对文字进行字符变化(对字符加密),以达到信息加密的目的.古典密码加密算法最常用,最核心的两种加密技巧是位移和替代,这同样是对称加密算法最常用的方法.

  • 位移密码(Transposition Cipher):错位密码,将字符重新排序,例如”123456” 变成 “321654”.
  • 替代密码(Substitution Cipher):也称置换密码,将明文中的一组字符替代为其他的字符,形成密文,例如”hello” 变成 “ifmmp”(每个字母使用下一个字母替代).著名的凯撒密码就应用了替代法.

在古典加密时期,替代密码发展迅速,拥有众多分支,又分为以下几种:

  • 单表替代密码:也称为简单替代密码,明文的一个字符用相应的一个密文字符代替.加密过程是从明文字母表到密文字母表的一一映射.主要包括位移(shift)密码,乘数(multiplicative)密码,仿射(affine)密码,多项式(Polynomial)密码,密钥短语(Key Word)密码.
  • 同音替代密码:也称多名替代密码.与单表替代系统相似,唯一不同的是单个字符明文可以映射成密文的几个字符之一.
  • 多表替代密码(Polyalphabetic Substitution Cipher):明文中的字符映射到密文空间还依赖与它在上下文中的位置,由多个简单的替代密码构成.例如,可能有五个被使用的不同的简单替代密码,单独的一个字符用来改变明文的每个字符的位置.弗吉尼亚密码,博福特密码,滚动密钥密码,弗纳姆密码,转子机密码均为多表替代密码.第二次世界大战中,德军用的转子加密机Enigma,正是多表替代密码应用的典范.
  • 多字母替代密码(Polygram Substitution Cipher):明文中的字符被成组加密,例如’ABA’可能对应于’RTQ’.希尔密码,Playfair密码均为多字母替代密码.第一次世界大战中英国人就采用这种密码.

备注: 不管是位移密码还是替代密码,终究脱离不了人类的语言.针对该特点,通过对密文进行语义分析使得古典密码在破译上有章可循.例如凯撒密码是单表替代密码,要破解凯撒密码,只要以语言学为基础,找出使用频度最高的字符,例如’’和e’,用ascii码表示就是32和101,差值69,如果明文中两个出现最高的字符的ascii码相差69,那么对应加密后密文中相应出现频度最高的字符的ascii相差也一定是69,很显然,通过这样的分析方法,只要找出密文中与之对应的字符,计算偏移量(密钥),就可以破解密文,这就是著名的频度分析法.

对称密码体制

对称密码体制并不是现代密码学的新生事物,它是古典密码学的进一步延续.古典密码学常用的两种技巧替代和位移,仍然是对称加密体制中最重要的加密技巧.

对称密码体制要求加密和解密使用同一个密钥,解密时加密的逆运算,由于双方需要共享同一个密钥,这就要求双方必须在通信前商定该密钥,并妥善保存该密钥,该密钥称为秘密密钥,秘密密钥的存在使得对称加密体制开放性变差.

对称密码体制分为两种:一种是对明文的单个位(或字节)进行运算,称为流密码,也称为序列密码;另一种是把明文信息划分为不同的组(块)结构,分别对每个组(或块)进行加密和解密,称为分组密码.

流密码

流密码是军事,外交等机要部门中应用最广泛的对称密码体制,同时,它也是手机上应用平台最常用的加密手段.流密码实现较为简单,加密时将明文按字符(或字节)逐位进行加密,解密时将密文按字符(字节)逐位解密.加密和解密都是简单的位运算.明文加密后,生成的密文几乎和明文保持相同的长度.

流密码分为同步流密码和自同步流密码

同步流密码

信息发送方与接收方在传递信息时,同步进行加密和解密操作,明文与密文一一对应.密文如果在传播过程中被篡改,删除或插入,可导致同步失效,以致密文解密失败,必须重新同步来实现解析,恢复密文.在密文传输过程中,如果某个位发生改变,那么该位的变化只影响该位的恢复,对后续密文位不受影响,这是同步流密码的一个重要特点.但是,根据该特性主动攻击者可以有选择地对密文字符进行改动,并准确知道这些改动对明文的影响.因此,同步流密码具有同步性,无错误传递及主动攻击性三种特性.同步流密码适用于为音频和视频数据提供版权保护.

自同步流密码

与同步流密码相比,自同步流密码是一种有记忆变换的密码.每一个密钥与已产生的固定数量的密文位有关,密钥由已生成的密文决定.在密文传输过程中,如果一个密文位发生改变,那么该位的变化会影响到后续有限位(如n位)的密文位的正确解密.所以自同步流密码具有错误传递现象,但是在接受n位正确密文字符后,密码会自身实现重新同步.基于这一特点,如果主动攻击者对密文做了修改,接收方仍然不能检测出密文的完整性.与同步流密码相比,自同步流密码的密码分析更加困难,安全性更高.因此自同步流具有自同步性,错误传递有限性,主动攻击性及明文统计扩散四种特征.

流密码实现简单,便于硬件计算,加密与解密处理速度快,错误传播率低等优点.但是,流密码对错误的产生不够敏感,这是流密码的缺点.流密码通常配合其他技术验证消息的完整性.流密码涉及大量的理论知识,受限于应用场景(目前主要运用与军事和外交等机要部门),许多研究成果并未完全公开.目前使用较多的流密码是自同步流密码.流密码的常用算法有RC4和SEAL.

流密码的安全强度依赖于密钥流生成器所产生的密钥流序列的特征,关键在与密钥生成器的设计以及消息收发两端密钥流产生的同步技术.

分组密码

分组密码多应用于网络加密,是对称密码体制中发展最为完善的密码体制.分组密码对固定长度的一组明文进行加密,这一固定长度称为分组长度.分组长度是分组密码的一个参数,它与算法的安全性成正比,其取值范围取决于实际应用的环境.

为保证分组算法的安全性,分组长度越长越好,分组长度越长,则密码分析越困难;为保证分组密码的实用性,分组长度越短越好,分组长度越短,则越便于操作和运算.分组长度的设定需要权衡分组算法的安全性与实用性,一般设置为56.随着密码学的发展,分组长度只有56位的分组密码已不能确保算法的安全性,目前,分组密码多选择128位作为算法的分组长度.

分组密码的加密过程是对一个分组长度为n位的明文进行加密操作,相应地产生一个n位的密文分组,由此可见不同的n位密文共有2^n个,考虑到加密算法的可逆性,每一个不同的n位明文都应该产生一个唯一的密文分组,加密过程对于的变换称为可逆变换或非奇异变换.所以,分组密码从本质上来说是定义了一种从分组的明文到相应密文的可逆变换.

分组密码是现代密码学的重要组成部分,具有代表的分组加密算法有DES,AES.

分组密码设计原则

分组密码的设计原则包括安全性和实现性两个方面.前者主要研究如何设计安全算法,分组长度和密钥长度;后者主要讨论如何提供算法的执行速度.

  1. 针对于安全的一般设计原则

安全性原则,也称为不可破译原则,它包含理论上不可破译和实际上不可破译两重含义.香农认为:在理想密码系统中,密文的所有统计特性都与所使用的密钥独立.关于实用密码的两个一般原则是香农提出的混乱原则和扩散原则.

  • 扩散(Diffusion)原则:人们所设计的密码应使得密钥的每一位数字影响到密文的多位数字,以防止对密钥进行逐段破译,而且明文的每一位数字也影响密文的多位数字以便隐藏明文数字的统计性.
  • 混乱(Confusion)原则:人们所设计的密码应使得密钥和明文之间的信赖关系相当复杂以至于这种信赖对密码分析者来说是无法利用的.
    衡量密码体制的安全性,主要提现在以下几个方面:
  • 密码体制的破译所需要的时间和费用超过了现有的资源和能力.
  • 密码体制的破译所需要的时间超过了该体制保护的信息的有效时间.
  • 密码体制的破译所需要的费用超过了该体制所保护信息的价值.
  1. 针对实现的设计原则
    分组密码可以用软件和硬件来实现.硬件实现的优点是可获得高效率,而软件实现的优点是灵活性高,代价低.
  • 软件设计原则:使用子块和简单的运算,密码运算在子块上进行,要求子块的长度能自然地适应软件编程,如8,16,32位等.应避免按位置换,在子块所进行的密码运算尽量采用易于软件实现的运算.最好是使用处理器的基本运算,如加法,乘法,移位.
  • 硬件设计原则:加密和解密的相似性,即加密和解密的过程的不同应局限于密钥使用方式上,以便采用同样的器件来实现加密和解密,以节省费用和体积.尽量采用标准组件结构,以便适应于在超大规模集成电路中实现.
分组密码的工作模式

我们以DES算法工作模式为例,DES算法根据其加密算法所定义的明文分组长度(56位),将数据分为若干56位的加密区块,再以区块为单位,分别进行加密处理.如果最后剩下不足一个区块的大小,我们称之为短块,短块的处理方法有填充法,流密码加密法,密文挪用技术.

1980年12月,DES算法工作模式被美国联邦信息处理标准组织(FIPS)标准化.加密算法应用的复杂性,有的强调效率,有的强调安全,有的强调容错性.根据数据加密时每个加密区块间的关联方式来区别,可以分为四种工作模式:电子密码本模式(Electronic Code Book,ECB),密文链接模式(Cipher Book Chaining,CBC),密文反馈模式(Cipher Feed Back,CFB),输出反馈模式(Output Feed Back,OFB),AES标准除了推荐上述四种工作模式外,还推荐一种新的工作模式:计数器模式(Counter,CTR).这些工作模式可适用于各种分组密码算法.

  • 电子密码本模式(ECB)

电子密码本模式,它是最基本,最简单的工作模式.每次加密均产生独立的密文分组,每组的加密结果不会对其他分组产生影响,相同的明文加密后对应产生相同的密文,无初始化向量(也称为加密向量).可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本都有一项对应它的密文,这也是该模式名称的由来.

优点:易于理解且简单易行;便于实现并行操作;没有误差传播;

缺点:不能隐藏明文的模式,如果明文重复,对应的密文也会重复,密文内容很容易被替换,重排,剔除,重放,对明文进行主动攻击的可能性较高.

用途:适合加密密钥,随机数等短数据.例如安全传递DES密钥,ECB模式是最合适的.

  • 密文链接模式(CBC)
    密文链接模式,它是目前应用最广泛的工作模式.明文加密前先需先与前面的密文进行异或(XOR)运算然后再加密,因此只要选择不同的初始向量,相同的明文加密后产生不同的密文.

优点: 密文链接模式加密后的密文上下文关联,即使明文中出现重复的信息也不会产生相同的明文;密文内容如果被替换,重排,删除,重放或者网络传输过程中发生错误,后续密文即被破坏,无法完成解密还原;对明文的主动攻击性较低.

缺点: 不利于并行计算,目前没有已知的并行运算算法;误差传递,如果在加密过程中发生错误,则错误将被无限放大,导致加密失败;需要初始化向量.

用途: 可加密任意长度消息;适用于计算产生检测数据完整性的消息认证码MAC

  • 密文反馈模式(CFB)
    密文反馈模式,它类似于自同步流密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器.它的有点是可以按字节逐个进行加密解密,也可以按n位字节处理.CFB是上下文关联的,明文的一个错误会影响后面的密文(错误扩散).CFB需要一个初始化向量,加密后与第一个分组进行异或运算产生第一组密文;然后对第一组密文进行加密后在与第二组进行异或运算取得第二组密文,以此类推,直到加密完成.
    优点: 隐藏了明文的模式,每一个分组的加密结果必受其前面所有分组内容的影响,即使出现多次相同的明文,均产生不同的密文;分组密码转化为流模式,可产生密钥流;可以及时加密传送小于分组的数据

缺点: 与CBC类似.不利于并行计算,目前没有已知的并行运算算法;存在误差传播,一个单元的损坏影响多个单元;需要初始化向量.

用途: 因错误传播无解,可用于检查发现明文密文的篡改.

  • 输出反馈模式(OFB)
    输出反馈模式,它将分组密码作为同步流密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题.该模式产生与明文异或运算的密钥流,从而产生密文,这一点与CFB相似,唯一不同的差异是与明文分组进行异或的输入那部分是反复加密后得到的.
    优点: 隐藏明文的模式;分组密码转化为流模式;无误差传递问题;可以及时加密传送小于分组的数据.

缺点: 不利于并行计算;对明文的主动攻击是可能的,安全性较CFB差.

用途: 适用于加密冗余性较大的数据,比如语言和图像数据.

  • 计数器模式(CTR)
    计数器模式,它的特点是将计数器从初始值开始计数所得到的值发送给分组密码算法.随着计数器的增加,分组密码算法输出连续的分组来构成一个位串,该位串被用来与分组明文进行异或操作.计数器模式是用来提取分组密码的最大能效以实现保密性.在AES的实际应用中,经常会选择CBC和CTR模式,但更多的是选择CTR模式.
    优点: 可并行计算;安全性至少和CBC一样好;加密和解密仅涉及密码算法的加密

缺点: 没有错误传播,因此不易确保数据完整性.

用途: 适用于各种加密.

非对称密码体制

1976年,密码学专家diffie和hellman在<<密码学的新方向>>一文中提出公开密钥体制的思想,开创了现代密码学的新领域,非对称密码体制的篇章由此揭开.

非对称密码体制与对称密码体制相对;其主要区别是:非对称密码体制的加密密钥与解密密钥不相同,分为两个密钥,一个公开,一个保密.公开的密钥称为公钥,保密的密钥称为私钥.因此,非对称密码体制也称为公钥密码体制.非对称密码体制使得发送者与接受者无密钥传输的保密通信成为可能,弥补了对称密码体制的缺陷.

非对称密码体制的主要优点是可以适应开发性的使用环境,密钥管理问题相对简单,可以方便,安全地实现数字签名和验证.RSA是非对称密码体制的典范,它不仅可以完成一般的数据保密操作,同时它也支持数字签名与验证.

非对称密码算法的安全性完全依赖于基于计算复杂度上的难题,通常来自于数论.例如RSA源于整数因子分解问题;DSA数字签名算法,源于离散对数问题;ECC椭圆曲线加密算法,源于离散对数问题.由于这些数学难题的实现涉及底层模数乘法或指数运算,相对于分组密码需要使用更多的计算,为了弥补这一缺陷,非对称密码系统通常是复合式的:用高效率的对称密码算法对信息进行加密解密处理;用非对称密钥加密对称密码系统所使用的密钥.通过这种复合方式增进效率.