1.3 密码技术发展
密码由来已久,其发展经历了古典密码、机械密码、现代密码三个阶段。在这一过程中,密码技术在保密与破译、窃密与反窃密的激烈博弈中不断演变,理论发展最终使得密码学成为科学。当前,广泛多样的应用需求和日趋激烈的攻防对抗,正在推动密码技术快速发展。
1.3.1 密码技术创新
信息系统的应用需求和攻击威胁一直是推动密码技术进步的两个主要动力。在过去的几十年中,电子计算机的出现终结了机械密码,互联网的出现催生了公钥密码学的诞生,这两项信息技术极大推动了密码技术的发展,使得密码学从古典密码和机械密码进化到了现代密码。
1.古典密码
古典密码是密码学的源头。这一时期的密码是一种艺术,还算不上是一门学科。密码学家常常是凭借直觉和信念来进行密码设计和分析,而不是推理证明。古典密码的两个主要体制是代换密码和置换密码。代换密码采用一个代换表,将一段明文变换成一段密文,这个代换表就是密钥。如果代换表只有一个,则代换过程被称为单表代换。如果代换表多于一个,则代换过程被称为多表代换。置换密码是一种特殊的代换密码,置换密码变换过程不改变明文字母,只改变它们的位置。
单表代换密码的一个典型代表是仿射密码。仿射密码的加密变换可以表示为Ek(i)=(ik1+k0)mod N,其中密钥k=(k1,k0),N为明文字表大小,i为明文,k1与N互素。当k0=0时的变换称为乘法密码;当k1=1时的变换称为加法密码。
“恺撒密码”是一种典型的加法密码,这种密码曾经被罗马帝国的恺撒大帝频繁用于战争通信,因此称为“恺撒密码”。下面举例描述一下恺撒密码。假定密钥k=(1,11),明文消息为“i am nine”,N=26。密钥k=(1,11)确定了密码代换表中明文字母“a”将被替换成“l”,字母“b”将被替换成“m”,依此类推。整个代换过程描述如表1-1所示。对于英文字母表,恺撒密码的密钥取值范围只有25(不包括k0为0的情形),即只能构造出25种不同的明密文代换表。因此,恺撒密码很容易被穷举破译。
表1-1 恺撒密码加密代换过程
为了进一步提高密码强度,在单表代换的基础上,又进一步提出了多表代换。多表代换密码是以多个代换表依次对明文消息的字母进行代换的加密方法。多表代换密码的典型代表是维吉尼亚密码,它是以16世纪法国外交官Blaise de Vigenère的名字命名的。
维吉尼亚密码是一种以位移代换为基础的周期代换密码,其中代换表的数目为d,d个代换表由d个字母序列确定的密钥决定。我们在前面例子的基础上,再以表格的形式解释维吉尼亚密码的代换过程,具体加密代换过程如表1-2所示。明文信息为“i am nine i feel very good”,代换表数目d=6,密钥k=cipher,密钥对应的整数序列为k=(2,8,15,7,4,17)。将密钥整数序列与明文序列周期性的模26“相加”,即可得到密文整数序列,进而可以变换成密文。
恺撒密码和维吉尼亚密码都是以单个字母为代换对象的。如果每次对多于1个字母进行代换就是多字母代换,多字母代换更加有利于隐藏字母的自然频度,从而更有利于抵抗统计分析。
置换密码的典型代表是栅栏密码。栅栏密码出现于1861年至1865年的美国南北战争时期。其加密原理是:明文按列写入,密文按行输出。加密过程可以使用一个置换也可以使用多个置换。与代换密码相比,置换密码可以打破消息中的某些固定结构模式,这个优点被融入到现代密码算法的设计中。
表1-2 维吉尼亚密码加密代换过程
古典密码在对抗密码分析方面有较大不足。密码分析学的主要目标是研究加密消息的破译或消息的伪造。密码系统安全的一个必要条件是密钥空间足够大,能够有效地应对穷举密钥搜索攻击,但密钥空间足够大不是密码系统安全的充分条件。古典密码在统计特性方面存在安全缺陷。在单表代换下,字母的频度、重复字母模式、字母结合方式等统计特性,除了字母符号发生了改变外,都没有发生改变,这些统计特性可以用于密码破译。多表代换下,明文的统计特性通过多个表的平均作用被隐蔽起来,但是用重合指数法等分析方法可以很容易地确定维吉尼亚密码密钥长度,再用攻击单表代换的方法确定密钥字。已有事实证明,用唯密文攻击法(攻击者只拥有一个或者多个用同一个密钥加密的密文)分析单表和多表代换密码是可行的,因此,以上古典密码都是不安全的。
2.机械密码
密码编码学与密码分析学,作为密码学的两个分支,两者相互促进,使得密码技术不断发展演进。密码系统变得越来越复杂,手工作业方式难以满足复杂密码运算的要求。密码研究者设计出了一些机械和电动设备,自动实现了加密和解密计算,这一阶段的密码称为机械密码。
机械密码的典型代表是恩尼格玛密码机。恩尼格玛密码机由德国人亚瑟·谢尔比乌斯和理查德·里特发明,20世纪20年代开始用于商业,后来被一些国家的军队与政府进行改造并使用,最著名的是掀起第二次世界大战的德国。
恩尼格玛密码机由多组转子组成,每组转子刻有1到26个数字,对应26个字母。转子的转动方向、相互位置以及连线板的连线状态使得整个密码机构成了复杂的多表代换密码系统。恩尼格玛密码机的密码变换组合异常复杂,一台只有三个转子(慢转子、中转子和快转子)的恩尼格玛密码机可以构成数量巨大的不同代换组合。三个转子的转动方向组成了26×25×26=16900种可能;三个转子不同的相对位置构成了6种可能性;连线板使得三个转子两两交换6对字母,则可形成100391791500种组合。因此,一台只有三个转子的恩尼格玛密码机总共可以有16900×6×100391791500种组合,即大约1亿亿种不同的密码变换组合。这样庞大的可能性超出了当时的计算能力,换言之,靠采用“人海战术”进行“暴力破解”逐一试验可能性,几乎是不可能实现的。而电报收发双方,则只要按照约定的转子方向、位置和连线板的连线状况(相当于密钥),就可以非常轻松、简单地进行通信。这就是恩尼格玛密码机的加密和解密原理。
从1926年开始,英国、波兰及法国等国家的情报机构就开始对恩尼格玛密码机进行分析,但对其军用型号的研究一直未取得实质性突破。直到1941年英国海军捕获德国潜艇U-110,拿到德国海军使用的恩尼格玛密码机和密码本后,通过对大量明文与密文的统计分析,密码破译才有了转机。恩尼格玛密码机是一种多表代换密码系统,虽然多表代换密码是由若干个单表组成的,但是由于恩尼格玛密码机精巧的转轮设计,单表数目庞大而且在加密过程不断变化,导致简单的频率分析方法失效。经过波兰、英国等多个国家密码分析人员的艰苦努力,恩尼格玛密码机的破译方法不断得到改进。计算机科学之父艾伦·图灵,作为英国密码破译的核心人物,甚至制造了专用设备对破译算法进行加速,最终实现了对恩尼格玛密码机的实时破译。
英国国王乔治六世称赞此事件是整个第二次世界大战海战中的重要事件。在战争结束以后,英国并没有对破译恩尼格玛密码机一事大加宣扬。直到1974年,曾经参与破译工作的人员出版了《超级机密》一书,才使外界对恩尼格玛密码机的破译工作有所了解。
3.现代密码
“信息论之父”香农关于保密通信理论的发表和美国数据加密标准DES的公布,以及公钥密码思想的提出,标志着现代密码时期的开启和密码技术的蓬勃发展。
20世纪40年代末,香农连续发表了两篇著名论文——《保密系统的通信理论》和《通信的数学理论》,精辟阐明了关于密码系统的设计、分析和评价的科学思想。文章正式提出评价密码系统的五条标准,即保密度、密钥量、加密操作的复杂性、误差传播和消息扩展。
基于香农提出的理想密码模型“一次一密”理论,最安全的密码是1比特密钥保护1比特明文,然而现实中真正的无限长随机密钥难以找到。密码学家们设计出实际可用的序列密码,其主要设计思想就是“用短的种子密钥生成周期很长的随机密钥序列”,也就是说,输入较少比特的初始密钥,借助数学公式产生周期很长的密钥,再用这些密钥和明文逐比特进行异或得到密文,近似地可以看作“一次一密”。
20世纪70年代初,IBM公司密码学者Horst Feistel开始设计一种分组密码算法,到1977年设计完成。他设计的算法密钥长度为56比特,对应的密钥量为2的56次方,不低于恩尼格玛密码机的密钥量,而且操作远比恩尼格玛密码机简单快捷,明密文统计规律更随机。这项研究成果被整理成美国数据加密标准DES算法。在随后近20年中,DES算法一直是世界范围内许多金融机构进行安全电子商务使用的标准算法。但随着计算机硬件的发展及计算能力的提升,1998年7月,电子前线基金会(EFF)使用一台25万美元的计算机在56小时内破译了DES算法,1998年12月美国正式决定不再使用DES算法。
1997年1月,美国国家标准与技术研究院(NIST)发布公告征集高级加密标准AES算法,用于取代DES算法作为美国新的联邦信息处理标准。1997年9月,AES算法候选提名最终要求公布,基本要求是分组密码,分组长度128比特,密钥长度支持128比特、192比特和256比特,这样使得密钥量更大,即使使用目前最快的计算机,也没有办法进行穷举搜索。由比利时密码学家设计的Rijndael算法最终从公开征集中胜出,成为AES算法。AES算法采用宽轨道策略设计,结构新颖,基于的数学结构是有限域GF(28),到目前为止已经历时20年,能够抵抗差分分析、线性分析、代数攻击等分析方法。
随着互联网的飞速发展及广泛应用,密码技术不再只用于军事领域,政治、经济等领域的网络与信息系统安全问题越来越受到人们的重视,作为核心技术的密码算法研究也不断深入,密码技术开始渗透到人们的日常生活中。只具有加密保护功能的密码算法已不能满足人们越来越多的效率和安全需求。例如,n个用户进行网络通信,两两之间需要一个密钥,那么共需n(n-1)/2对密钥。随着用户数量增加,每个用户需要的密钥量也会增加,这给密钥记忆或存储带来很大麻烦,因此需要使用具有密钥协商功能的密码算法,同时,为了避免通信双方被欺骗或骚扰,还需要使用具有安全认证功能的密码算法。
1976年,Diffie和Hellman发表题为《密码学的新方向》(New Directions in Cryptography)的著名文章,他们首次证明了在发送端和接收端无密钥传输的保密通信是可能的,从而开创了密码学的新纪元。这篇论文引入了公钥密码学的革命性概念,并提供了一种密钥协商的创造性方法,其安全性基于离散对数求解的困难性。虽然在当时两位作者并没有提供公钥加密方案的实例,但他们的思路非常清楚——加密密钥公开、解密密钥保密,网络通信中n个用户只需要n对密钥,因此在密码学领域引起了广泛的兴趣和研究。
1977年,Rivest、Shamir和Adleman三人提出了第一个比较完善和实用的公钥加密算法和签名方案,这就是著名的RSA算法。RSA算法设计基于的数学难题是大整数因子分解问题,即将两个素数相乘是件很容易的事情,但要找到一个这样的乘积大整数的素因子却非常困难,因此可以将乘积公开作为密钥。1985年另一个强大而实用的公钥方案被公布,称作ElGamal算法,它的安全性基于离散对数问题,在密码协议中有大量应用。同时,基于椭圆曲线上离散对数问题的椭圆曲线公钥密码算法也于1985年提出。之后基于其他数学难题的公钥密码算法也陆续登场,它们仅在计算方面具有安全性,而不是无条件安全。
进入21世纪,随着计算机运行速度的极大提高,RSA算法的安全性受到了严重威胁:2003年,RSA-576被成功分解;2005年,RSA-640被成功分解;2009年,RSA-768被成功分解。随着分解整数能力的增强,RSA算法中作为大素数乘积的公钥现在需要2048比特的长度才能保证其安全性。形势更加严峻的是,量子计算机的发展可能将大整数因子分解变成易如反掌的事。
现代密码学中还有一类重要的密码算法类型是密码杂凑算法。杂凑算法将任意长度的消息压缩成某一固定长度的消息摘要,可用于数字签名、完整性保护、安全认证、口令保护等。我国在杂凑算法方面做出了突出贡献。2004年王小云教授在国际密码学年会——美密会上宣布利用模差分分析方法成功找到了MD4和MD5等算法的碰撞,之后不久,SHA-1算法也被同样的分析方法破解。MD5算法、SHA-1算法相继出现安全问题,引发了美国NIST对现有杂凑算法标准SHA-2的担忧。2007年,NIST宣布公开征集新一代的密码杂凑算法。经过层层遴选,2012年10月,NIST宣布Keccak算法成为新的杂凑算法标准,即SHA-3算法。
1.3.2 我国商用密码发展历程
1999年,《商用密码管理条例》发布,经过二十余年的发展,我国商用密码在信息安全领域的应用从无到有,从初创到规范管理乃至成为国家安全保障体系中的关键部分,取得了丰硕的成果。
2006年1月,国家密码管理局公布了无线局域网产品适用的SMS4算法,后更名为SM4算法。2012年,SM4算法发布为密码行业标准,2016年发布为国家标准。2018年11月,SM4算法获批纳入ISO/IEC标准正文,进入最终国际标准草案阶段。
2011年,我国自主设计的序列密码算法ZUC,与美国AES、欧洲SNOW 3G共同成为了4G移动通信密码算法国际标准。这是我国商用密码算法首次走出国门参与国际标准竞争,并取得重大突破。目前,我国正推动256比特版本的ZUC算法进入5G通信安全标准。
2010年,国家密码管理局公布了密码杂凑算法SM3。SM3算法采用了16步全异或操作、消息双字介入、加速雪崩效应的P置换等多种设计技术,能够有效避免高概率的局部碰撞,有效抵抗强碰撞性的差分分析、弱碰撞性的线性分析和比特追踪等密码分析方法。2012年,SM3算法发布为密码行业标准,2016年发布为国家标准,并于2018年10月成为ISO/IEC国际标准。
我国学者对椭圆曲线密码的研究从20世纪80年代开始,现已取得不少成果。2010年,国家密码管理局公布了SM2椭圆曲线公钥密码算法。2012年,SM2算法发布为密码行业标准,2016年发布为国家标准。在标识密码方面,2016年,国家密码管理局发布了SM9标识密码算法密码行业标准。2017年11月,在第55次ISO/IEC联合技术委员会信息安全技术分委员会(SC27)德国柏林会议上,含有我国SM2与SM9数字签名算法的ISO/IEC14888-3/AMD1《带附录的数字签名第3部分:基于离散对数的机制—补篇1》获得一致通过,成为ISO/IEC国际标准,并在2018年11月以正文形式发布。
ZUC、SM2、SM3、SM4、SM9等一系列商用密码算法构成了我国完整的密码算法体系,特别是,部分密码算法被采纳为国际标准,为促进国际密码学发展、丰富产业选择和保障应用安全提供了中国方案。
1.3.3 密码技术发展趋势
当前,信息技术正处于快速发展和变革之中,云计算、物联网、大数据、互联网金融、数字货币、量子通信、量子计算、生物计算等新技术和新应用层出不穷,给密码技术带来了新的机遇和挑战。抗量子攻击密码、量子密钥分发、抗密钥攻击密码、同态密码、轻量级密码等新技术不断产生,并逐步走向成熟和标准化。
1.抗量子攻击
现代密码算法,尤其是公钥密码算法设计的一个基本前提是各类数学困难问题假设。目前,人们无法从计算复杂度理论的角度证明这些问题的求解是困难的,但也无法在经典的计算复杂性理论中找到有效的多项式算法。然而,新型计算模式(如量子计算和生物计算)的出现对这些问题的困难性形成了新的挑战,其中最重要的是量子计算中的Shor算法和Grover算法对密码算法安全性带来的影响。Shor算法可以在多项式时间内求解大整数因子分解和离散对数问题,给经典的RSA和ElGamal算法带来了致命影响。而Grover算法实现了穷举算法的平方级的提升,即可以将AES-128的破解复杂度从2128降低到264。目前,量子计算机的设计理论已经经过验证,其出现只取决于技术的进步。由于目前主流的公钥密码算法都是基于大整数因子分解或离散对数问题,研制可以抵抗量子攻击的公钥密码算法(即后量子密码算法)已经成为当务之急。为此,美国于2016年年底启动了后量子密码算法的征集工作。目前尚未找到有效量子攻击方法(即可以抵抗量子攻击)的公钥密码体制有:基于格的密码、基于多变量的密码、基于编码的密码和基于杂凑函数的密码。
1)基于格的密码
作为一个数学概念,格的研究可以追溯到17世纪的拉格朗日和高斯等著名数学家。格最早应用到密码学是作为一个分析工具出现的,即利用LLL格基约化算法来分析Knapsack、RSA、NTRU等密码算法。1996年Ajtai开启了将格作为一种设计工具来设计密码算法的研究方向,其研究结果展示了基于格的密码的巨大优势,即密码算法的安全性可以归结为困难问题的最大困难性。Ajtai的工作只给出了单向函数的设计,此后相继出现了公钥加密、数字签名、密钥交换等基于格的密码算法。但这些密码算法的密钥尺寸巨大,无法满足现实应用的需求。
基于格的密码算法的研究在2005年取得了突破性进展,Regev提出了基于带错误学习(Learning With Errors,LWE)问题的公钥加密算法,并将其归约到了格上的基础困难问题。基于LWE问题设计的公钥密码算法不但在密钥尺寸和密文尺寸上得到了极大改善,而且还保持了归约到格上最大困难问题的优势。之后,经过一系列改进,基于LWE的公钥加密算法的参数得到了进一步优化。
目前,基于格的密码已经成为最引人注意的后量子密码算法之一。谷歌公司已经在其浏览器Chrome中测试基于Ring-LWE问题的抗量子密钥交换算法,这正是典型的基于格的密码算法之一。微软公司也公开了其开发的基于Ring-LWE问题的密钥交换算法的源代码,并分析了其经典安全性和量子安全性。
2)基于多变量的密码
基于多变量的公钥密码系统的安全性建立在求解有限域上随机产生的非线性多变量多项式方程组的困难性之上。一般情况下,基于多变量的公钥密码系统的公钥是由两个仿射变换和一个中心映射复合而成的,其私钥为两个随机生成的仿射变换。基于多变量的公钥密码系统的优点在于其运算都是在较小的有限域上实现,因此效率较高。其缺点是密钥量较大,而且随着变量个数的增加及多项式次数的增加,密钥量增长较快。目前,公认的高效且安全的基于多变量的公钥密码体制不多,且主要用于签名,但是在密码分析方面产生了较多较好的研究成果,并可以应用于分析对称密钥密码系统。
3)基于编码的密码
基于编码的公钥密码的安全性依赖于随机线性码译码的困难性,而该问题是一个数学困难问题。与多变量公钥密码类似,基于编码的公钥密码的密钥量也较大,因此,未能像基于大整数因子分解和离散对数的公钥密码那样广泛使用。大多数基于编码的公钥密码使用Goppa码,导致密码体制和密钥长度太大而使得效率很低。人们尝试用诸如Reed-Muller码、广义Reed-Solomon码、卷积码等其他纠错码来替换Goppa码,但很多都被攻破了。
4)基于杂凑函数的密码
从设计的角度观察,只要有单向函数就可以设计数字签名算法,因此可以基于杂凑函数来设计数字签名算法,而不需要依赖于任何困难假设。算法的私钥是一组杂凑函数的输入值,公钥为杂凑函数的输出值,签名为使用消息选择的私钥的一个子集。拿到签名、公钥和消息之后,计算杂凑函数值就可以验证签名的有效性。第一个基于散列函数的一次性签名算法由计算机安全专家Lamport在1979年提出,之后被密码学家Merkle扩展为多签名算法。这类方案的安全性仅仅依赖于杂凑函数的单向性,比较容易分析。其不足之处在于可以签名的次数在密钥生成时已经确定,并且需要记录已经签名的次数,给应用带来不便。
在Lamport算法提出之后的40年间,基于杂凑函数的数字签名算法在效率方面得到了持续改进,目前最新的改进型XMSS(eXtended Merkle Signature Scheme)已经在IETF中进行了标准化工作,形成了RFC 8391。鉴于此类方案在安全性分析方面的优势,NIST在其后量子研究报告中表示将着重考虑基于杂凑函数的数字签名方案。在NIST公布的候选提案中,SPHINCS+和Gravity-Sphincs都基于XMSS设计。
2.量子密钥分发
除量子计算外,另一个与量子有关的重要概念是量子通信。量子通信是以量子(通常为光子)为载体的通信技术,与传统的基于宏观物理量的通信技术相比,微观粒子对环境的敏感性使得任何对通信线路的窃听都会对光子的状态产生影响,因此接收端可以检测到通信线路上的任何窃听行为。基于这一性质,量子通信可以为通信双方建立安全的会话密钥,即量子密钥分发(QKD)。
量子通信提供了一种新的方式来实现密钥共享,其安全性依赖于物理原理而不是传统的数学和计算复杂性理论,能够从理论上确保通信的绝对安全。但是,当前并没有实现机密信息量子态传输的实用化技术和产品。在很多文献和报道中,“量子通信”和“量子密码通信”等名词,通常指的是量子密钥分发以及基于量子密钥分发的加密通信,真正的“量子通信”目前仍处于基础研究阶段,离实际应用还相当遥远。那种鼓吹“量子通信绝对安全”的论调是不负责任的,也是错误的。在实际应用中,量子密钥分发需要通过“量子信道+经典信道”来完成:量子信道传递量子信息,经典信道传递密钥分发设备之间交互的数据和信令。通信双方协商得到的是一串相同的随机数,通信中不传输密文。目前国内基于量子密钥分发的加密通信过程是:通信双方得到量子密钥(通过量子密钥分发得到的密钥)后,再采用成熟的对称加密算法(如SM4)对通信数据进行加密和解密。这种通信实质上是使用了量子密钥的经典加密通信。
由于量子力学物理原理不需要依赖任何前提假设,从理论上讲,量子密钥分发可以完美的保证会话密钥的保密性。然而,量子密钥分发的具体实现设备很难保证理想的量子特性,这些实现设备距离理想环境的偏差使得实际的量子密钥分发系统无法达到完美的安全目标。此外,量子密钥分发仅能保证会话密钥安全建立,并无法提供身份鉴别功能。量子密钥分发仍然需要通过经典密码技术来鉴别通信双方的身份,才能完整地实现保密通信。
因此,量子通信并不是现代密码技术的代替品,而是对现代密码学体系的一种有益补充。例如,量子密钥分发提供了一种新的途径来完成密钥共享。基于量子力学的物理原理构建完善的现代密码学体系是密码学领域的重要研究方向之一。从长远发展来看,量子力学理论在信息领域的应用(包括量子计算、量子通信等)对信息的表达、传输、处理等的全方位变革将对现代密码学带来革命性影响。
3.抵抗密钥攻击
现代密码学中的密码算法设计工作在假定密钥和随机数保密的情况下考虑算法的安全性,即将密码算法抽象为一个黑盒子,攻击者无法获得密钥和随机数的任何信息,只能通过设定的接口与密码算法进行交互。然而,随着移动便携终端设备的流行,攻击者可能通过侧信道、后门等诸多手段获取私钥和随机数等信息,或者对私钥进行篡改。因此,设计能够容忍密钥和随机数不完美保密的密码算法是密码技术的一个新的发展趋势。
1)密钥泄露容忍
密钥泄露容忍(Key Leakage Resilience)主要研究如何在密钥泄露的情况下保证密码方案的安全性。密钥泄露容忍的研究动机主要来自于针对密码系统的侧信道攻击,即攻击者通过密码系统的功耗、电磁辐射、运行时间等信息获取密码系统的内部状态,对密码系统进行攻击。侧信道攻击是一种经典而重要的攻击方式,几乎伴随着密码系统的产生而出现,并且随着密码系统的实现方式更新而演化。针对密钥泄露容忍的防护一直是密码系统的研究重点之一,主要采取针对性的防御措施,如电磁屏蔽。针对密钥泄露容忍的形式化研究开始于Micali和Reyzin,相对于之前的黑盒模型,作者提出了“物理可观测”模型(Physically Observable Model),即考虑攻击者可以获得计算过程中泄露的信息。基于这一安全模型已经出现了大量研究结果,以及相关的改进模型。然而,密钥泄露容忍只能作为一种辅助手段来对抗密钥泄露攻击,而无法从根本上保护密码算法的安全性,因为当密钥泄露殆尽的时候任何密码算法都无法保证安全性。
2)白盒密码
在很多应用环境中,密码算法实现所在的运行环境相对开放(如密码算法是由安装在手机安卓操作系统上的App实现的),攻击者可能完全控制运行环境以及密码算法实现本身,这意味着攻击者可以在执行期间,通过分析二进制代码及其运行的内存区域来提取密钥。白盒密码理论研究的问题就是如何使用密码混淆技术将密钥和密码算法融合在一起,使得攻击者即便实施了上述的“白盒”攻击,也无法提取出密钥,从而降低开放环境下密码算法实现的密钥泄露风险。
4.密文计算
随着云计算、大数据等应用的出现,信息的安全需求已经从信道扩展到了终端,从传输扩展到了存储和处理。在云计算和云存储中,用户将数据的计算任务或存储任务外包给云服务器,而又不想让服务器获得自己的数据。这一需求从功能上对密码算法提出了新的要求,即密码算法需要支持密文状态下的同态操作使得云服务器可以在密文状态下对数据进行计算和处理,同时需要支持密文状态的检索操作;此外还需要支持远程的访问控制管理和完整性验证。
加密算法的基础要求是保证数据的保密性,例如,分组密码算法会将输入的明文数据变换为混乱的比特串。这一变换过程在实现保密性保护的同时,损坏了明文数据的数学结构。公钥密码出现之后,由于公钥密码算法是基于数学困难问题设计的,这就使得算法的加密过程保持了明文数据的数学结构,从而使得密文具备了同态运算的功能,例如,RSA算法具备乘法同态的功能。基于这一观察,Rivest、Adleman和Dertouzos提出了全同态加密的思想,即通过直接操作密文来实现针对明文的任意操作。基于这一思想,用户可以将数据的操作外包给第三方来执行,同时又可以保持用户数据的保密性。
全同态加密算法需要同时支持加法和乘法的同态操作才能完成对任意可有效计算函数的同态操作。支持单一的加法或乘法运算的加密算法的设计相对容易,例如,经典的RSA和ElGamal系列方案能支持乘法操作,Paillier类方案能支持加法操作;然而,同时满足与加法、乘法两种运算的可交换,对于经典的设计思想,这在原理上几乎是不可能的。这一问题直到2009年才得以解决,美国的密码学家Gentry提出了基于理想格上的困难问题设计全同态加密的思想,并给出了具体的密码方案。Gentry思想的核心是通过引入噪声使得加密算法同时满足加法、乘法的可交换。经过持续的改进和完善,全同态加密算法的效率有了大幅进步,当同态运算所需的乘法数量较少时,算法的效率已经接近实用化。然而,目前全同态加密算法设计还不成熟,效率还有待提升,在安全性证明方面还有一些公开问题需要解决。
5.极限性能
随着信息技术应用环境的多样化,各种应用环境对密码算法的性能需求出现了分化,即同一个密码算法无法满足各种应用环境在时延、吞吐率、功耗、成本等方面的要求。这些新的应用不要求密码算法满足所有的安全性和所有的性能指标,却对某些具体的性能指标有着苛刻的要求。例如,依靠电池供电的弱终端对功耗要求严格,互联网金融环境中的峰值交易处理对密码算法的吞吐率有很高要求,工控网中对密码算法的时延有严格要求,射频识别(RFID)等应用中对密码算法的硬件实现成本有较高要求。在这一趋势下,如何对时延、吞吐率、功耗、成本等因素进行取舍,设计满足应用环境对极端需求的密码算法成为一个重要问题。
1)轻量级对称密码算法设计
近年来,RFID技术已经变成生活中的一种主流应用,开始大量应用于生产自动化、门禁、身份鉴别及货物跟踪等领域。此类情形需要加密算法来提供可靠的信息传递,同时要求算法可以在受限的环境中高效实现。传统对称密码算法不再适用此类环境,因此,轻量级分组密码算法的设计成为近几年分组密码设计理论的研究重点。轻量级对称密码算法是指适用于计算能力、能量供应、存储空间和通信带宽等资源受限的设备的对称密码算法。近几年,国际上推出的轻量级分组密码几乎都是专门设计的,如PRINCE、SIMON和SPECK等。由于轻量级分组密码是在资源受限的环境下使用的,其最初的设计理念会考虑硬件实现代价。而近几年的一些应用需求,又对轻量级分组密码提出了新的设计指标,如低延迟、低功耗、易于掩码等;除了硬件性能,对于8位处理器上的软件实现性能也有要求。此外,由于特殊的应用需求,轻量级分组密码的分组长度不仅有64比特的版本,还出现了32比特、48比特、80比特和96比特的特殊版本。因此,满足各种特殊应用需求的轻量级分组密码设计将是未来分组密码设计的重点。轻量级密码算法填补了传统密码算法的一些空白,并没有替代传统密码算法的趋势,它的研究设计将影响对传统密码算法的设计与分析。2018年5月,美国NIST正式启动了轻量级密码算法标准的研制工作。
2)轻量级公钥密码算法设计
随着物联网的发展,现实应用对轻量级密码算法的需求已经不仅仅局限于对称密码算法,海量弱终端的信息保护也同样需要公钥密码算法来提供更丰富的功能。然而,传统公钥密码算法的运算负载是弱终端无法承受的。格密码的出现为设计轻量级公钥密码算法提供了新思路。由于噪声向量的引入,基于格的密码算法不再依靠大周期来对抗各类攻击,因此可以使用十几比特甚至字节级的模数进行运算。这些小模数的线性运算极大降低了计算复杂性,使得公钥密码算法可以部署在物联网的海量弱终端上。然而,目前基于格的密码算法的密文和密钥尺寸远大于经典公钥密码算法,这是需要解决的主要问题之一。