商用密码的安全性

一、密码算法安全性的含义
密码乃国之重器,是保护国家利益的战略性资源,是网络安全的核心技术和基础支撑。根据2017年4月《密码法》(草案),我国密码分为核心密码、普通密码和商用密码。核心密码、普通密码用于保护国家秘密信息;而商用密码用于保护不属于国家秘密的信息。
这样看来,是不是商用密码的安全性相对来说比较差呢?不少人有这样的疑惑。为了弄明白说清楚这个问题,让我们先从密码算法安全性的含义本身说起。

关于算法的安全性,密码学研究中主要采用以下三个术语:
1、无条件安全性(unconditionallysecure)
即使密码分析者拥有无限的计算资源和密文,都没有足够的信息恢复出明文,那么这个算法就具有无条件安全性。
事实上,只有一次一密乱码本,才是不可破的。对于实际应用的密码算法都是可破的,只要简单的一个接一个的去尝试每种可能的密钥,并检查所得明文是否有意义。这种方法称为蛮力攻击(brute-force attack)。
香农(Shannon,没错,就是那个提出信息熵的“信息论之父”,也是1949年发表现代密码学奠基之作《保密系统的通信理论》的作者,将保密通信由传统艺术演变成一门现代科学的大神,以后有空单独聊)曾经证明了一次一密乱码本(one-timepad)是不可破解的,此种情形下,密钥流是完全随机的、与明文相同长度的比特串,即使给出无限多的资源仍然不可破。虽然其具有理论上的绝对安全性,但考虑到密钥传输的代价,它又是不实用的。想想是不是这个理:既然能够安全地传输同等长度的密钥,何不直接安全地传输明文呢?所以,也可以这么说,实际上不存在不可破译的密码。
目前也有观点提出,采用量子保密通信来传输密钥,可以实现绝对安全的一次一密的密码系统,这个话题太大,暂且不表。本文的粗暴结论是这仅仅是又一个理论上的可能,实用性上还非常非常非常漫长。
2、计算安全性(computationallysecure)
在实际中,无条件安全的系统是不存在额,我们通常所说的算法安全性,就是指算法的计算安全性。如果算法用现在或者将来的可用资源都不能破译,那么,这个算法被认为是计算安全的。也就是说,算法的计算安全性是可以通过计算复杂性(或者说攻击复杂性)来衡量,
通常来讲,可以用三种方式来衡量对算法的计算复杂性:
1)数据复杂性:用于攻击算法所需要输入的数据量。
2)时间复杂性:以执行某特定的基本步骤所需时间为单元,完成攻击过程所需要的总时间单元数。
3)空间复杂性:以某特定的基本存储空间为单元,完成攻击过程所需要的总存储单元数。
拿时间复杂性举例。如果某算法的时间复杂性是2的128次方,那么破译这个算法也需要2的128次方次运算(这些运算可能非常复杂和耗时)。假设攻击者拥有足够的计算速度去完成每秒100万次的运算,并且用100万个并行处理器完成这个任务,那么仍然需要花费10的19次方年以上才能找到密钥,(而这是宇宙年龄的10亿倍)。因此,可认为该算法目前具有计算安全性。
某些时候,这三种复杂度是相关联的,比如,存储空间越大时,攻击所需的时间可能越快。由于计算能力在不断发展,因此,几年前安全的密码算法,可能会在多少年之后变得不再安全。因此,对算法定期进行安全性评估是非常有必要的。
在实际应用系统中,当破译某个密码算法的所需的计算时间或成本费用远远超过信息有用的生命周期或者信息本身的价值时,那算法破译本身就没有意义了。这时也可以认为该算法具有计算安全性。
3、可证明安全性(Provable security)
算法的安全性可规约为某个经过深入研究的数学难题(如大整数素因子分解、计算离散对数等),数学难题被证明求解困难。这个话题也比较复杂,尽管自己多次学习,但仍未能深明要义,只记得这些困难问题虽然本身的安全性并没有得到完全证明,但多数目前仍然是计算安全的,可以作为算法或协议涉及的基础,感兴趣的可以查阅“P问题、NP问题、NP-hard问题、NPC问题”等文章。
不过,当量子计算出现之后,针对目前使用的RSA、DH和ECC等公钥算法的计算安全性不再有理论保证,因此,密码界正在开展抗量子密码研究,以期在量子计算机成为现实攻击工具之前找到新的出路。
从上述分析可以看出,无论核心密码、普通密码和商用密码,其采用的密码算法的安全性都是客观的科学问题,不存在哪类算法更加安全的说法。
既然如此,为什么包括我们国家在内的很多国家都要对密码系统进行分类管理呢?其实,一个密码系统的安全性,除了密码算法的安全性之外,还涉及密钥管理、密码工程实现等诸多方面的问题。欢迎持续关注,也欢迎把你的问题、意见或建议留下来,一起来探讨。
二、商密产品的安全性
前面我们已经对商密算法的安全性有了一定的了解,不少人还有这样的疑问,既然商密算法都公开了,那为什么商密产品跟普通的网络安全产品不一样,需要获得专门的产品型号证书才能销售使用呢?从技术层面分析,密码设备自身的安全性对于信息系统安全来说至关重要,商密产品型号检测是确保密码设备安全性符合要求的基础手段。下面我们就来看看密码设备的安全性都有哪些要求吧。
1、密码产品的分级标准
商用密码产品按形态可以划分为软件、芯片、模块、板卡、整机和系统等六大类。
目前,密码芯片的安全性要求及检测遵循《GM/T 0008-2012 安全芯片密码检测准则》,其中将密码芯片的安全等级从低到高分为一级、二级和三级。
密码芯片之外的其它各类产品均遵循《GM/T 0028-2014 密码模块安全技术要求》和《GM/T 0039-2014 密码模块安全检测要求》,将密码模块的安全等级从低到高分为一级、二级、三级和四级。0028标准中所谓的“密码模块”是一个专有词汇,特指实现了密码功能的硬件、软件和/或固件的集合,包含在明确的密码边界以内,不是仅仅以背板形态出现、不具备完整密码功能的产品。也就是说,六大类商密产品中,除芯片和系统之外的其它四类产品均可视为“密码模块”,其安全性可划分为四级。
2、安全等级的含义
密码产品的安全等级越高,其自身的安全防护能力就越强,密码产品的安全性就越高。那么密码产品的安全性是如何度量和区分出来的呢?国密0028标准明确指出,“安全要求从安全目标的最低等级开始,随着安全目标等级的递增而增加”。也就是说,密码产品的安全等级,表明了密码产品达到以下安全目标的能力水平。等级越高,满足安全目标的能力越强:
安全功能:使用并正确实现核准的安全功能,以保护敏感信息。核准的安全功能包括分组密码、序列密码、非对称密码、消息鉴别码、杂凑函数、实体鉴别、密钥建立和随机比特生成器。
授权控制:防止非授权地操作或使用密码模块;防止非授权地泄露密码模块的内容,其中包括关键安全参数;
非授权访问的检测:防止对密码模块和密码算法进行非授权或检测不到的修改,包括非授权地修改、替换、插入和删除敏感安全参数;
运行状态指示:提供密码模块运行状态的指示;
核准的工作模式:保证密码模块在核准的工作模式下能够正确运行;
错误检测:检测出密码模块运行中的错误,防止这些错误非授权地公开、修改、替换或使用关键安全参数,或者非授权地修改或替换公开安全参数;
设计分发和实现:保证正确地设计、分配和实现密码模块。
3、分级要求
国密0028标准具体从十一个域分别提出了四个等级的安全要求,包括:
密码模块规格:密码模块的类型(硬件模块、软件模块、固件模块、混合软件模块、混合固件模块)、边界、工作模式;
密码模块接口:接口类型、定义(数据、控制、状态、电源)、可信信道
角色、服务和鉴别:角色(密码主管、用户、维护员)、服务(显示版本、状态、自测试、安全功能、置零)、旁路能力(绕开密码功能)、自启动密码服务能力、鉴别(角色、身份、多因素)
软件/固件安全:完整性保护、加载安全
运行环境:密码模块运行所依赖的软件、固件、硬件等;运行环境类型(不可修改、收限制、可修改)
物理安全:三类物理实体(单芯片、多芯片嵌入式、多芯片独立式);外壳、抗探测、环境失效
非入侵式安全:能量分析、计时分析、电磁泄露
敏感安全参数管理:生成、建立、输入输出、存储、置零
自测试:运行前自测试、条件自测试、周期性自测试
生命周期保障:版本配置管理、设计一致性、有限状态模型、开发、厂商测试、配送与操作、生命终止、指南文档
以及对其他攻击的缓解:能量分析、计时分析、电磁泄露
感兴趣的请参阅标准文稿,所有已发布的国密标准均可以在密标委网站上访问到。
综上,密码算法、协议和机制的安全性与可靠性直接取决于实现它们的密码产品。关于密码产品的安全性,目前已经有了比较系统的级别划分,也有相对明确的安全技术要求和检测要求。
密码产品的安全等级越高,其自身的安全防护能力就越强。不过值得注意得是,安全级别越高,其防护成本也越高,目前,我国绝大部分密码产品的安全级别在二级的水平。关于信息系统如何选择相应级别的密码产品,在《GM/T 0054-2018 信息系统密码应用基本要求》中已经有了相应的规定,此处暂不赘述。欢迎后续共同探讨。
三、密码系统的安全性
看了前两篇文章,大家对我国商密算法和商密产品的安全性是不是很有信心了!下面我们来说说一个安全有效的商用密码系统应该包括哪些内容。
本文所谓“密码系统”,特指国家《密码法》(草案征求意见稿)中提到的“密码保障系统”。(第十二条关键信息基础设施应当依照法律、法规的规定和密码相关国家标准的强制性要求使用密码进行保护,同步规划、同步建设、同步运行密码保障系统。)
密码保障系统能否有效抵御网络攻击,能否有效保护数据和信息安全,关键在于密码的使用是否合规、正确、有效。密码使用的合规性、正确性、有效性,涉及密码算法、密码协议、密码产品、密钥体系、密码技术体系设计、密码与应用的结合、物理环境与管理手段等诸多方面。(此段摘抄自《商用密码知识与政策干部读本》)
因此,由专业人员结合业务应用实际情况进行密码保障系统的设计,是确保系统安全性的前提。通常,一个完整的密码保障系统的至少应包括以下内容:
1、密码保障需求分析
分析网络和业务信息系统的现状和安全需求,结合系统安全目标,提出需要基于密码技术实现的安全功能需求和相关性能要求。
2、密码保障系统总体设计
在密码需求分析的基础上,首先应明确密码保障系统的设计目标、设计原则和设计依据。然后可分别从技术体系、逻辑框架、系统组成、部署结构等维度分别对保障系统的顶层设计思路进行阐述,以确保系统整体设计安全合规,且满足使用需求。
3、密码保障系统技术方案
对密码保障系统提供的密码功能或服务,以及如何安全可靠地提供这些功能服务进行具体设计。应包括如下要点:
密码应用设计
对系统提供的密码功能(比如:身份认证、签名验签、数据加解密、数据完整性、实体行为不可否认性等基础密码功能)具体应用场景和方式进行设计,必要时画出相应的密码功能应用流程。某些应用安全功能(比如数据隔离、实体防伪等)看似与密码无关,实际上也可以基于基础密码机制进行组合设计而实现。
主要密码协议设计
对系统中涉及的主要密码协议过程进行描述。原则上尽量采用已有标准密码协议,如果为系统定制密码协议,则必须由专业人员进行设计,并通过专门的安全性评估。
算法配用
明确每个密码功能配用的算法种类,包括SM1、SM2、SM3、SM4、SM7、SM9等。特殊情况也可以设计专用的算法。
密钥配用与管理
通常以表格形式阐述密钥种类及相互关系,并对密钥全生命周期管理进行设计(产生、分发、存储、使用、更新、销毁、恢复、归档等)。
密码产品设计
对密码保障系统中采用的密码产品或服务进行设计,原则上尽量选用已有商密型号的密码产品,如需采用新的密码产品,仍需要研制后提交检测获取型号。
4、密码管理措施
提出密码保障系统安全可靠运行所需的管理措施,包括相关人员、制度、业务等方面的管理措施。
至此,从密码算法、密码产品到密码系统,我们有了一个基础的认识,那当前各个重要领域正在如火如荼推进的密码应用,又是什么情况呢?敬请期待下篇小作。
四、密码应用的安全性
近年来,“密码应用”成为了高频词,常见于网络新闻、政策文件、技术标准等各个场合,今天我们就来扒一扒这几个字。
(一)“密码应用”的上下文
首先,是不是有个看似明白却又含糊的问题,究竟什么是密码应用呢?“密码应用”跟“密码系统”是什么关系呢?查遍资料,也没有个定义和说法。不过没关系,我们先从网上搜几个上下文感受一下。
国办发〔2014〕6号文 国务院办公厅转发密码局等部门关于《金融领域密码应用指导意见》的通知
厅字[2018]36号关于印发《金融和重要领域密码应用与创新发展工作规划(2018-2022年)》的通知
《GM/T 0054-2018 信息系统密码应用基本要求》本标准规定了信息系统商用密码应用的基本要求。本标准适用于指导、规范和评估系统中的商用密码应用。物理和环境安全密码应用总则如下:采用密码技术实施对重要场所、监控设备等的物理访问控制……
《商用密码应用安全性评估管理办法(评估)》本办法所称商用密码应用安全性评估,是指在采用密码技术、产品和服务集成建设的网络和信息系统中,对其密码应用的合规性、正确性和有效性等进行评估。……重要领域网络和信息系统规划阶段,责任单位应当依据商用密码应用安全性有关标准,制定商用密码应用建设方案……
(二)“密码应用”与“密码系统”的涵义比较
从上述主要上下文,我们大致能提炼出以下几个意思:
多数情况下,商用密码应用=密码应用
多数情况下,密码应用≠密码系统。也就是说,尽管“应用”常常被认为是“应用系统”的简称,但“密码应用”很多时候并不是“密码应用系统”的简称。
如果说密码系统(即密码保障系统,参见本号前文)是一个基于密码技术和产品,提供真实性、完整性、机密性、不可抵赖性等安全功能的系统;那么密码应用则可以看作是在网络和信息系统中采用密码技术、产品和服务提供相应安全功能的过程和行动。
特别需要说明的是,以上仅仅是密小白基于当前商用密码应用的大背景,对密码应用和密码系统的简要辨析。在具体文献和应用场景中,它们的确切含义,可能有差异。
(三)密码应用安全性
基于上述对“密码应用”涵义的认识,我们就可以认为, “密码应用安全性”指的是在采用密码技术、产品和服务为网络和信息系统提供相应安全功能的过程和行动中,如何确保密码的使用合规、正确、有效。关于密码应用安全性,已有如下规定需要遵循:
《GM/T0054-2018 信息系统密码应用基本要求》,是关于不同等保级别中如何应用密码技术的标准.本号前面有专文简述,后续会择机对部分内容进行具体分析。
《商用密码应用安全性评估管理办法(试行)》,要求重要领域网络和信息系统的责任单位应当在系统规划、建设和运行阶段,组织开展商用密码应用安全性评估工作,并对评估程序和监督管理办法做出了具体规定。
简单小结一下,通过几篇文章的简要介绍,我们已经知道了,在我国重要领域网络和信息系统的建设、使用和管理中,需要采用国家批准的密码算法,选用经过核准的密码产品,设计安全的密码应用方案,并通过商用密码应用安全性评估。
相信经过大家的共同努力,“用上密码、用对密码、用好密码”将成为重要领域的安全共识,密码在保障网络安全中的核心支撑作用也将得到更加充分的体现!

你可能感兴趣的:(网络安全,算法,数据结构,c++)