国产密码算法软件引擎的安全挑战_第1页
国产密码算法软件引擎的安全挑战_第2页
国产密码算法软件引擎的安全挑战_第3页
国产密码算法软件引擎的安全挑战_第4页
国产密码算法软件引擎的安全挑战_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国产商用密码技术的应用推广密码技术是网络空间安全的重要基础,在计算机和网络系统中发挥了不可替代的安全作用。推广国产密码技术、应用商用密码算法,是建设我国网络空间安全基础设施的必要措施之一。全面推广国产密码技术、深入应用商用密码算法,有如下三方面工作需要完成:(1)密码算法标准化。目前我国已经制定并公开发布了完整的密码算法体系:分组密码算法SM4、流密码算法ZUC、杂凑算法SM3、公钥密码算法SM2(包括加解密、数字签名和密钥协商)和标识密码算法SM9。而且,其中部分密码算法已经成为国际标准。(2)制定配套的密码应用标准。在数字证书、通信协议、应用接口等方面,形成配套标准,实现商用密码应用标准体系。(3)形成多元化的密码产品生态。各种不同形式的硬件、固件和软件密码产品,满足应用系统的不同需求;尤其是软件密码产品,更具有技术灵活性、实施部署更容易,在成本上也更具优势。在商用密码算法和密码应用标准方面,我国已经发展多年。然而,在密码产品多元化方面,一方面由于历史原因,我国商用密码长久以来只支持合规的硬件产品,近年来合格软件密码产品已经开放、但是软件密码产品发展仍然较弱;另一方面也由于软件密码产品面临着更大的技术挑战,尤其是密钥安全,所以在软件密码产品(或者称为软件密码引擎、密码算法软件模块)方面,还有更多的技术难题需要克服。国产密码算法软件引擎的安全挑战从密码学基本原理出发,密码算法公开,密码产品最重要的、最需要保护的数据就是密钥以及各种敏感参数。按照GM/T0028《密码模块安全技术要求》和GM/T0039《密码模块安全检测要求》,密码模块尤其需要确保关键安全参数和敏感参数的安全,其中最重要的参数就是密钥。密码算法的密钥以及各种敏感参数(例如,IV和Nonce等),通常都是由随机数产生获取;另一方面,确定性随机数发生器也通常是带有密钥的密码功能模块;二者相互联系、密不可分。相比于硬件形式的常见密码算法实现(例如,密码机、密码卡、USB令牌等),密码软件引擎面临着更大的安全挑战。首先,密码算法软件引擎通常运行在常规的计算机系统或移动智能终端上,这一类设备不带有专用的随机数发生器芯片,密码算法软件引擎必须自己实现随机数发生器。其次,因为密码软件引擎与其他功能的软件共享操作系统等软硬件运行环境,由于各种应用功能的要求千变万化,必然会导致操作系统功能复杂、运行环境接口繁多,就可能会引入更多的计算机软件漏洞和攻击威胁。所以,密码软件引擎在实现灵活、成本低廉、易于实施的同时,又成为安全挑战最大的密码实现。2.1随机数发生器的挑战随机数发生器是各种密码计算参数的来源,包括密钥、初始化向量、随机填充值等,应该具备足够随机性(即信息熵)、从而确保攻击者不可预测。在计算机系统中,如何利用外界环境的不确定因素(即熵源),构造不可预测的、高速的随机数发生器,已有大量的相关研究,美国NIST也在这一方面形成了较为完善的技术标准体系。下文逐一展开介绍。Linux内核也带有了随机数发生器软件实现,并且在很多密码软件引擎中使用。然而必须要看到,即使是美国NIST制定多年的随机数发生器系列标准,也仍然不时有安全问题披露;同时,即使是被大量使用的、公开源代码的随机数发生器软件实现,也时有安全漏洞出现。2.1.1美国NIST的随机数发生器标准体系随机数发生器,大致可以分为NRBG(Non-deterministicRandomBitGenerator非确定性随机数发生器,或者称为TrueRandomBitGenerator真随机数发生器)和DRBG(DeterministicRandomBitGenerator确定性随机数发生器,或者称为PseudorandomBitGenerator伪随机数发生器)。目前,美国NIST制定的随机数发生器相关的FIPS标准主要包括如下:(1)SP800-22AStatisticalTestSuiteforRandomandPseudorandomNumberGeneratorsforCryptographicApplications,随机数发生器的统计检测。(2)SP800-90ARecommendationforRandomNumberGenerationUsingDeterministicRandomBitGenerators,根据外部输入的熵源,使用对称密码或Hash等算法计算得到确定性随机数。(3)SP800-90BRecommendationfortheEntropySourcesUsedforRandomBitGeneration,随机数发生器的熵源分析。(4)SP800-90CRecommendationforRandomBitGenerator(RBG)Constructions,随机数发生器的系统构造,NRBG、DRBG和熵源以及在线检测部件的组成。(5)0SP800-108RecommendationforKeyDerivationUsingPseudorandomFunctions,利用伪随机数函数实现密钥派生。以上各标准之间关系如图1所示。图1美国NIST的密码随机数发生器标准体系首先,SP800-90A描述了多种确定性随机数发生器的算法,其基本原理是:发生器维护密钥和内部状态,间断地从外部获得熵源输入,计算输出随机数。SP800-90B是DRBG随机数发生器的熵分析,用于评估和分析外部输入的熵源。SP800-90C是随机数发生器的系统构造,给出NRBG、DRBG和熵源以及在线检测部件的多种组成方式,形成实际使用的随机数发生器。其次,随机数发生器(主要是NRBG)输出的随机数序列,可使用SP800-22标准给出的多项统计检测方法来进行检测,判断其随机性优劣。最后,SP800-108给出了使用伪随机数函数来实现密钥派生的多种方法。2.1.2随机数发生器标准及其使用的问题下文结合现实的软件随机数发生器安全漏洞、分析讨论随机数发生器标准及其使用的问题。根据Snowden报告以及大量相关研究,在SP800-90A标准2006版所包括的DualEC算法中,美国NSA植入后门、可以预测使用该算法的随机数发生器输出;SP800-90A标准2014版去掉了DualEC算法。SP800-22标准的随机数统计检测方法、SP800-90C标准的熵分析方法,根据中科院DCS中心的研究成果,也存在着缺陷,影响到统计检测的准确性、熵分析结果的准确性。随机数发生器标准也不能完全解决现实密码算法软件引擎中的随机数问题。例如,2012年的国际研究结果表明,Internet大量网络设备的RSA密钥对相同,或者使用了相同的素因子、导致RSA密钥可分解。上述问题一方面是因为大量网络设备使用了厂商预置的、相同的默认密钥,也有部分是因为随机数发生器问题:虽然这些设备使用了高强度的随机数发生器,但是由于网络设备的特殊性,使得不同设备的随机数发生器很容易在初态一致的情况下输出随机数并用于生成密钥,所以就会有相同的RSA素因子。类似问题,也在智能IC上也有发现。2.1.3我国商用密码随机数发生器标准相比美国NIST制定的随机数发生器标准体系,我国商用密码的随机数发生器相关标准仍有不足。国家密码管理局已经发布GM/T0062《密码产品随机数检测要求》标准。该标准的作用大致相当于NISTSP800-22标准。但是,我国尚未发布随机数发生器相关的其他标准。总体而言,相比NISTSP-800在随机数发生器方面的系列标准,我国尚未形成体系化的、类似定位的随机数发生器系列标准。考虑到密码技术的特殊性,我国没有必要照章抄袭或者模仿NISTSP-800的随机数发生器系列标准,但是制定类似定位、发挥相同作用的商用密码系列标准是有必要的。尤其是,随着密码算法软件引擎的需求日益增长,我国亟需随机数发生器标准,从而能够更好地引导密码算法软件引擎的随机数发生器设计。2.2密钥安全的挑战密码算法软件引擎运行在通用计算机平台上,相比硬件形式实现,不但有侧信道攻击威胁,计算机系统的各种攻击也会直接威胁到密钥数据的安全。2.2.1密钥面临的各种攻击和安全威胁在密码算法执行过程中,攻击者可以通过各种方法窃取其中的密钥数据。首先,侧信道攻击是密码学研究中长久以来的重要方向。在密码计算过程中,当密钥比特有不同取值时,密码计算的执行会有细微差异、进而影响到可被攻击者观测到的外部状态(例如,功率、电磁辐射、计算时间、声音、高速缓存状态等等)。不论是软件形式或者硬件形式的密码算法实现,都有侧信道攻击的威胁。其次,由于在计算机系统中,密钥也同样表现为内存空间中的数据变量,所以现有计算机系统中各种敏感数据所面临的攻击和安全问题,也同样会威胁到密钥。这一类型的安全威胁大致可以分为:物理攻击、软件攻击和CPU硬件漏洞攻击。物理攻击是指攻击者与被攻击系统有物理接触,然后利用物理接触条件、非授权地读取敏感数据。最典型的物理攻击是冷启动攻击和DMA攻击。冷启动攻击利用内存芯片数据的延迟消失,在断电之后、内存芯片的数据仍然维持一段时间,在低温情况下能够维持更长时间、甚至数小时。攻击者可以直接取出计算机系统的内存芯片,放在攻击者控制的恶意计算机上,读取其中的敏感数据;或者在受害者计算机上插入恶意的引导介质,启动之后立即读取原有的内存数据。DMA攻击是指攻击者插入恶意外设,发起DMA请求、绕过操作系统的访问控制,直接访问内存。其次,各种计算机系统的软件内存漏洞,也会导致攻击者非授权地读取密钥。例如,操作系统软件漏洞,会导致恶意进程绕过操作系统的内存隔离机制、读取其他进程甚至内核空间的内存数据。软件系统的正常功能也有可能导致内存数据泄露,例如Coredump或者Crashreport就有可能使得内存中的敏感数据扩散。而且,近年来有多个CPU硬件漏洞被披露(包括Meltdown、Spectre、Foreshadow/L1TF和ZombieLoad等),这些漏洞都有可能使得攻击者读取到内存中的密钥等敏感数据。最后,密码算法软件引擎在实现中也会引入安全漏洞、导致密钥泄露。例如,著名的OpenSSL心脏出血,就是因为软件引擎在处理TLS心跳请求消息时存在缺陷,收到畸形请求消息,会将内存空间中随机地址的64K字节发送给攻击者。2.2.2现有密钥安全技术进展在通用的计算机平台上,如何保护密钥、提供安全有效的密码计算,一直都是学术界和工业界共同关注的重要技术问题。首先,Windows操作系统的CSP(CryptographicServiceProvider)和CNG(CryptographicNextGeneration)都支持在内核空间中执行密码运算,密钥数据出现在内核内存空间;类似的,Linux操作系统在v2.5.45之后,也有内核空间的密码计算服务,称为CryptoAPI。由于密钥数据出现在内核空间,普通的用户态攻击者必须提升权限、获得内核空间的读权限,才能够读取密钥数据。基于寄存器的密钥安全技术,可以有效防范冷启动攻击。2010年,TRESOR利用Intel完CPU的AES-NI指令,完成了寄存器实现的AES算法,有效抵抗冷启动攻击。后续研究工作将其推广到RSA算法,在IntelCPU计算机上完成寄存器实现的RSA算法,同样能够抵抗冷启动攻击。2014年,中科院DCS中心研究团队第一次完成了基于CPU高速缓存的密码算法软件实现,在IntelCPU上、利用高速缓存的工作模式配置,将RSA私钥计算限定在CPU高速缓存内。相比基于寄存器的密码算法软件实现,高速缓存的存储空间足够大、能够支持更多类型的密码算法,而且支持使用高级语言实现、不需要使用汇编实现。2015年,中科院DCS中心研究团队继续提出了基于硬件事务内存的密钥安全方案,使用IntelTSX(TransactionalSynchronizationExtension)硬件事务内存特性,完成了密钥安全方案:私钥只有在需要密码计算的时候,才解密到硬件事务中、开始密码计算;在此期间,任何来自其他恶意线程或进程的读取访问,都会导致事务回滚、密钥数据被清零。而且,IntelTSX特性利用高速缓存来存储事务中间过程的、未提交的数据,所以该方案也能够保证RSA私钥不会出现在内存芯片,有效抵抗冷启动攻击。近年来,Intel公司推出SGX(SoftwareGuardeXtension)特性,用于在不可信的操作系统和虚拟机监控器上创建执行环境,该环境只依赖于CPU的安全特性、提供代码的完整性和数据的机密性,并且能动态地执行远程证明。利用IntelSGX特性,也能够实现密码算法软件引擎,提高密钥数据的安全程度。基于IntelSGX特性的软件系统,其安全性完全依赖于IntelCPU,甚至操作系统、虚拟机监控器也不能得到用户软件系统代码或数据的任何信息。从另一角度而言,闭源的CPU硬件设计和实现,也会同样面临多年前对于非开源操作系统的质疑和担忧。而且,针对SGX执行环境的有效攻击方法也不断被提出。2.2.3密钥安全技术的应用实施对于各种不同类型的侧信道攻击,可以通过安全增强的密码算法实现来防御。学术界已经对侧信道攻击防御有很长时间的研究,研究成果也开始逐步应用到一些开源密码软件,但是仍然值得继续扩大应用范围。尤其对于密码算法软件实现,近年来出现了多种基于共享高速缓存的侧信道攻击,这一类攻击在原有传统密码硬件实现中并不存在,所以相同的防御技术值得继续深入研究。各种密码算法软件引擎的密钥安全方案应用实施,都必须面对运行环境不可信的问题。首先,作为软件程序,必须在一定程度上依赖和信任操作系统和CPU等硬件。其次,对操作系统和CPU等硬件的信任,必须深入分析,不能简单地用“绝对信任”和“不信任”来总结;具体而言,代码完整性、操作原子性、寄存器特权级别、寄存器接口访问唯一性等,不同密钥安全方案对于运行环境有各不一样的要求和假设,运行环境只需要满足相应条件即可以、并不是完全的绝对信任和依赖。最后,应该更辩证地考虑操作系统和CPU等硬件之间的关系,基础软硬件构成了密码算法软件引擎的运行环境;与此同时,操作系统和各种基础硬件之间,也在运行过程中相互监控、相互制约,更有利于形成合理的生态。如果运行环境的安全条件信任建立在仅有的某一特定硬件或者某一特定软件模块基础上,而该信任基础并不能被彻底地分析或证明,则采取分布式信任的技术思想更为妥当、应该将安全基础建立在多个可相互监控和制约的部件之上。软件引擎的检测现状和难题目前,国产密码算法软件的合规检测按照GM/T0028《密码模块安全技术要求》和GM/T0039《密码模块安全检测要求》来执行。作为指导性的行业标准,GM/T0028和GM/T0039没有对密码产品的随机数发生器和密钥安全设计做出详细的具体设计指导。与此同时,我国在随机数发生器和密钥安全的技术方案,也尚未形成行业标准或者国家标准;所以,在检测过程中,就只能从密码学的技术原理出发、结合密码软件产品的实际情况,提出具体技术要求。在总体技术思想上,GM/T0028《密码模块安全技术要求》和GM/T0039《密码模块安全检测要求》参考了美国NISTFIPS140标准和ISO/IEC19790标准。但是,我国仍然有必要在随机数发生器方案和密钥安全方案上,提出和实施有特色的安全要求。作为密码算法软件实现的最重要的数据安全部分,随机数发生器和密钥安全应该在运行环境所提供适度安全保证的前提下,加强自身的安全设计、而不是完全依赖于运行环境。目前我国商用密码算法软件模块的随机数发生器和密钥安全,仍然有较高的要求,需要外部的密码硬件模块提供一定程度的支持和协作;例如,外部输入的真随机数作为熵源之一、利用门限密码算法与外部密码硬件模块协作保护密钥。相比而言,美国FIPS140密码模块测评要求对软件密码模块允许完全由软件实现的随机数发生器和密钥安全方案,其安全性对运行环境有更大的依赖性。国产商用密码软件引擎的检测要求,与运行环境的安全假设息息相关。如果假定通用计算机软硬件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论