林璟锵、荆继武

一、密码应用安全的技术定位

密码应用安全的目标是在计算机和网络系统中应用密码算法,利用密码学原理实现计算机和网络系统的安全。在实践中,密码应用安全研究需要从实际运行的计算机和网络系统出发,融合密码算法和密码协议的理论成果,在技术上连接二者。所以,从知识体系和研究风格而言,密码学(尤其是理论密码学)更接近于理科,系统安全和网络安全更接近于工科,密码应用研究则是介于理科和工科之间的基础研究。

大量的安全事件和研究成果已经表明,为了在计算机和网络系统中更紧密地融合密码技术、使得密码技术更充分地在网络空间中发挥安全作用,仍然还有大量的技术研究工作需要完成。

二、密码应用安全的技术体系分析

下面,我们不考虑特定的应用场景、仅仅考虑通用的密码算法应用场景,从数据、系统、实体等三个角度来分析密码技术应用中的安全问题,尝试分析得到密码应用安全的技术体系;也就是:在各种密码学理论研究成果已经就绪的前提下,网络空间还需要解决哪些问题,才能够保证密码技术应用成功实现预期的安全目标?

如下图所示,粗线框是典型的密码学理论研究方向:

●对于基础性的核心密码算法(例如,对称加密算法、公钥加密算法、数字签名算法等),最重要的数据、最关键的参数就是密钥。在密码算法研究中,其它的数据、其它的参数都是公开已知的。

●在使用密码算法时,即使仅仅是单方利用密码算法进行数据处理时,密码学理论研究需要还考虑工作模式(例如,对称加密算法的工作模式、公钥加密算法和数字签名算法的数据填充等)。

●在利用密码算法构建多方之间的安全通信时,就涉及各种密码安全协议的设计和分析。例如,各种身份鉴别协议、TLS协议、IPSec协议等,都是常用的密码安全协议。此外,针对不同的应用场景(例如,区块链、云计算、物联网等),设计专门的密码安全协议,也是当前应用密码学研究的重要内容之一。

以上三方面研究内容是密码学理论研究中的重要方向。下面,我们进一步从数据、系统、实体等三个角度来分析在密码学理论成果在应用中的安全问题。

●核心密码算法的安全性,是纯粹的理论研究,基本不考虑与系统、实体的相关关系;从数据角度而言,最重要的密钥数据来自于随机数。

●各种密码协议和工作模式,也需要随机数、作为执行过程的参数。

●在密码协议中,通常都是使用密钥来区分不同的特定实体,密钥与实体之间的关系绑定直接作为基本假设;同时,实体所执行的各种操作,在应用中实现为计算机系统上的计算任务,也就是,密码协议对系统运行环境也有隐含的条件假设(主要是数据的输入输出传递和处理过程)。

●对于在计算机系统上执行的密码算法(按照某种特定工作模式),从计算机系统安全角度而言,主要是假设密码计算过程中的密钥安全,要求攻击者不能访问密钥;从与实体之间的关系而言,每一次密码计算都应直接或间接地体现实体的操作意志(即,密码计算的访问控制实施)。

综合以上,为了在实际的计算机和网络系统中发挥密码技术的安全作用,密码应用安全需要做到:

1.选择合适的密码算法、工作模式和密码协议

研究安全的密码算法、工作模式和密码协议,是密码学理论研究的重要内容。对于大多数密码应用安全来说,应该选择公开的、经过全面深入分析的、标准化的密码算法、工作模式和密码协议,而不是自创的、未经充分检验的方案。

一方面,我们需要确认实际运行的计算机和网络系统是否选择了安全的密码算法、工作模式和密码协议。另一方面,系统应该具备密码算法升级的能力,尤其对于长期使用的系统;一旦某些算法出现问题、及时更换。

2.使用合理的密钥参数

按照系统的安全需求,选择合适的密钥长度;同时,需要考虑系统运行期间的密钥更新(周期性执行、按需执行,以及安全事件时的密钥更新)。

3.产生安全的随机数

随机数在密码算法、工作模式和密码协议中,大量使用。必须以安全的方法、安全的流程来产生随机数,用于密钥以及其它重要安全参数。

4. 以正确的方式实现和使用密码协议

密码协议详述了各网络实体之间的数据传递和处理,然而实际的系统运行环境并不能够轻松满足密码协议的假设和要求。二者之间的差距,会导致密码协议在实现上和使用上的安全问题。对于相应的安全问题,我们应该更多地从密码应用安全的角度来审视问题,而不仅仅从软件漏洞的角度来考虑。

5.绑定密钥与实体

由于公钥密码学和PKI的发展,在实际系统中,实体与密钥的绑定关系大量体现为PKI数字证书。正确的PKI数字证书验证,非常重要。

对于其它类型的密码算法(对称密码算法、基于标识的密码算法),在处理密钥分发、初始化参数和标识等问题时,也需要关注其中的安全性;确保密钥或者密钥参数与实体之间绑定关系。

6.确保密钥安全

在计算机中,有多种攻击方法可以获得计算任务中的敏感数据。密钥作为关系到大量普通数据的、特殊的敏感数据,应该实施专门的、相比应用数据更高强度的安全措施。

7.实施密码计算的访问控制

在基于密码学的安全方案中,每一次密码计算都被认为是实体操作意志的体现。在计算机系统中,对密码计算实施高安全强度的访问控制,仍然是技术挑战。

在以上列出的七点研究内容中,解决12的重点在于如何让应用系统的研发人员及时地获得密码学理论研究成果、并快速完善地在计算机和网络系统中实施。3的随机数安全问题,也是传统密码学研究中的研究方向之一。然而,完成在各种计算机和网络系统中、在各种应用场景中行之有效的解决方案,仍然有技术挑战。

4567讨论的问题,更多表明了密码学和系统安全/网络安全之间的研究空白。一方面,在密码学理论研究中,密码技术与系统、与实体之间的联系大都直接作为假设而存在。另一方面,普通的计算机和网络系统如果没有专门的设计,并不能完全满足密码技术应用要求的运行环境假设(还需要对可执行程序、浏览器、脚本、APP等不同运行环境分别专门设计)。而且,这些密码应用安全的措施,相比通用的软件安全、操作系统安全和网络安全,有着特殊的技术挑战和解决方案。这一部分研究内容,虽然现在已经不少研究成果,但是还值得更多的重视和挖掘。

三、与现有研究方向的关系

以上我们从密码学理论研究的三个主要方向(密码算法、工作模式、安全协议)出发,分析他们在应用中与数据、系统、实体之间的联系,从而得到密码应用安全的技术体系。下面,我们再简单谈谈一些现有研究方向与上述技术体系的关系。

如上图所示,传统密钥管理研究的主要内容是通过多方的安全协议,实现密钥的管理(注册、生成、更新、撤销、恢复等);密钥管理也是密码技术的重要组成部分。WSN安全的重要研究内容之一是利用密码协议实现针对WSN环境的密钥管理、以及在此基础上实现的身份管理。云计算安全的研究内容之一,是针对云计算环境设计密码协议,在考虑不完全可信的云服务器的前提下,实现租户数据和计算的安全性。

以上所述的技术体系,不考虑特定的应用场景、仅仅考虑通用的应用场景。对于特定的应用场景,会有新的技术挑战,或者某些研究方向和技术挑战会有明显变化。例如,在比特币系统中,直接使用公钥数据来标识不同的实体,密钥与实体的关系绑定问题就明显弱化;在专用密码芯片硬件中、只运行密码计算任务,密钥安全问题相对容易解决;对于密码技术的支付应用,密码计算的用户控制是非常重要的,反过来,在时间戳服务中,时间戳的数字签名就基本上就是自动执行、无需人工干预。

四、密码应用安全技术体系的实施

在实际的密码应用中,首先应按照安全需求选择合适的密码算法、按照应用系统的不同安全需求(不同环节、不同阶段的数据机密性、完整性、身份鉴别等需求)选择合适的密码协议和工作模式,形成与应用系统功能密切联系的密码应用方案。同时,根据密码技术所处理数据的重要性和特点,确定密钥更新周期和方案。

其次,选择或者定制合适的密码计算软硬件。基本上,对于标准化的密码算法、工作模式和密码协议,都有各种现成的软硬件可以直接使用。现成的密码计算软硬件,也基本上能够支持不同的密钥更新策略。对于定制化的密码计算软硬件,应该充分论证其安全性。

最后,对于各类密码计算软硬件(尤其对于定制性的软硬件)的实际运行,从数据、系统、实体之间关系的角度来考察其安全性;包括随机数的来源、密码计算软硬件与运行环境的依赖、人员与密钥的绑定、密钥的运行期安全、密码计算的控制等。

五、总结

在计算机和网络系统中应用密码技术,将能有效提高网络空间的安全性。我们提出的密码应用安全技术体系,涉及了七点研究内容;虽然大部分研究内容在公开文献中已有涵盖,但是没有形成体系化的知识系统。本文第一次尝试推导分析得到密码应用安全的技术体系,在技术内容上可能会有所遗漏,欢迎大家提出意见、共同探讨。

本文列出的技术体系的七点研究方向,在现有的计算机和网络系统中,仍然存在大量问题亟待解决。具体问题和研究现状可以参考我们之前的分析《密码技术在计算机和网络系统中的应用探讨》。

声明:本文来自中科院DCS中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。