商用密码应用与安全性评估
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 密码应用概述

密码是保障网络空间安全的核心技术,在网络空间安全防护中发挥着重要的基础支撑作用。如果密码技术没有得到合规、正确、有效的应用,那么密码提供的安全功能就无法发挥,也就无法解决应用系统面临的安全问题。

1.1.1 密码的概念与作用

1.密码的概念

密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。其中,特定变换是指明文和密文相互转化的各种数学方法和实现机制;加密保护是指使用特定变换,将原始信息变成攻击者不能识别的符号序列,简单地说,就是将明文变成密文,从而保证信息的保密性;安全认证是指使用特定变换,确认信息是否被篡改、是否来自可靠信息源以及确认信息发送行为是否真实存在等,简单地说,就是确认主体和信息的真实可靠性,从而保证信息来源的真实性、数据的完整性和行为的不可否认性;技术是指利用物项实现加密保护或安全认证的方法或手段;产品是指以实现加密保护或安全认证为核心功能的设备与系统;服务是指基于密码专业技术、技能和设施,为他人提供集成、运营、监理等密码支持和保障的活动,是基于密码技术和产品,实现密码功能的行为。在我国,密码分为核心密码、普通密码和商用密码,其中商用密码用于保护不属于国家秘密的信息。

从内容上看,密码技术包括密码编码、实现、协议、安全防护、分析破译,以及密钥产生、分发、传递、使用、销毁等技术。典型的密码技术包括密码算法、密钥管理和密码协议。

密码算法是实现密码对信息进行“明”“密”变换、产生认证“标签”的一种特定规则。不同的密码算法实现不同的变换规则:加密算法实现从明文到密文的变换;解密算法实现从密文到明文的变换;数字签名算法实现类似于手写签名的功能;杂凑算法实现任意长消息压缩为固定长摘要的功能。

密钥管理是指根据安全策略,对密钥的产生、分发、存储、更新、归档、撤销、备份、恢复和销毁等密钥全生命周期的管理。密钥是密码算法中控制密码变换的关键参数,它相当于一把“钥匙”。只有掌握了密钥,密文才能被解密,恢复成原来的明文。同样,为了能够产生独一无二的数字签名,也需要签名人拥有只有自己掌握的私有密钥,以确保签名不能被伪造。

密码协议是指两个或两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则。密码协议是将密码算法等应用于具体使用环境的重要密码技术,具有十分丰富的内容。

2.密码的重要作用

密码的重要作用是保护网络与信息安全。密码直接关系国家政治安全、经济安全、国防安全和网络安全,直接关系公民、法人和其他组织的合法权益,在网络空间安全防护中发挥着重要的基础支撑作用,是维护网络安全最有效、最可靠、最经济的技术手段。通俗来讲,密码的作用可概括为三个方面。

第一,密码是“基因”,是网络安全的核心技术和基础支撑。密码可以完整实现网络空间信息防泄密、内容防篡改、身份防假冒、行为抗抵赖等功能,满足网络与信息系统对保密性、完整性、真实性和不可否认性等安全需求。密码是网络免疫体系的内置基因,是实现网络从被动防御向主动免疫转变的关键元素。没有密码,就不能真正解决网络安全问题。

第二,密码是“信使”,是构建网络信任体系的重要基石。信任是世界上任何价值物转移、交易、存储和支付的基础,是社会发展的润滑剂和助推器。最初人类社会依靠血缘和宗族关系建立信任,后来主要依靠法律和合同建立信任。信息时代,万物互联、人机互认、天地一体,网络空间的信任至关重要,密码算法和密码协议可解决人、机、物的身份标识、身份鉴别、统一管理、信任传递和行为审计问题,是实现安全、可信、可控的互联互通的核心技术手段。密码是网络空间传递价值和信任的重要媒介和手段。

第三,密码是“卫士”,密码技术与核技术、航天技术并称为国家的三大“撒手锏”技术,是国之重器,是重要的战略性资源。近年来,我国密码算法设计分析能力达到国际先进水平,我国自主设计的商用密码算法ZUC、SM2、SM3和SM9已成为国际标准,这是与世界先进密码算法同台竞争、反复论证的结果。密码无处不在,时时刻刻守卫着国家、公民、法人和其他组织的安全。如果把网络与信息系统比作大楼,密码就好比看门的卫士,如果没有卫士或者用别人的卫士,就等同于门洞大开或者雇佣“小偷”看门,没有任何安全可言。

随着信息化快速发展,在万物互联成为趋势、信息孤岛逐渐消弭的态势下,密码在保护国家安全、促进经济社会发展、保护公民合法权益和个人隐私等方面的重要性和战略地位将更为凸显。合规、正确、有效使用密码,使用自主、安全、可控的密码,既是对国家安全和经济社会发展的有力护航,也是对公民合法权益和个人隐私的有力保障。

1.1.2 密码功能与密码应用

1.密码的功能

在20世纪70年代之前,密码仅用于实现信息的加密保护,这是密码最原始、最基本的功能。随着技术的发展,密码不仅可以实现加密保护,还可以实现实体身份和信息来源的安全认证等功能。

信息安全的基本含义有多种定义,其中最为通用的定义是“CIA”,即信息安全的主要目标是保障信息的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability)。近年来,随着信息处理分工的发展,真实性(Authenticity)也成为信息安全的主要目标。例如,在云计算、移动互联网等环境中,计算通常由专业分工明确的多方共同完成,相互之间必须要确保身份的真实性。另外,随着网络交易的迅速发展,不可否认性(Non-repudiation)的重要性也日益凸显。在上述目标中,除了可用性(指确保信息访问和信息服务在任何时候都是有效的,主要基于可生存、容灾备份等技术实现)外,其他特性都与密码技术密切相关。相对于其他类型的安全手段,如人力保护、设备加固、物理隔离、防火墙、监控技术、生物技术等,密码技术最关键、最核心、最基础。

总的来说,密码可以实现信息的保密性、信息来源的真实性、数据的完整性和行为的不可否认性,这也是密码具有的四个功能。信息的保密性是指保证信息不被泄露给非授权的个人、进程等实体的性质。采用密码技术中的加密和解密技术,可以方便地实现信息的保密性。信息来源的真实性是指保证信息来源可靠、没有被伪造和篡改的性质。实体身份的真实性是指信息收发双方身份与声称的相一致。采用密码技术中的安全认证技术,可以方便地实现信息来源的真实性。数据的完整性是指数据没有受到非授权的篡改或破坏的性质。数据完整性与信息来源的真实性的区别在于,数据完整性并不要求数据来源的可靠性,但数据来源真实性一般要依赖于数据完整性。采用密码杂凑算法可以很方便地实现数据的完整性。不可否认性也称抗抵赖性,通常是指一个已经发生的操作行为无法否认的性质。采用数字签名算法可以很方便地实现行为的不可否认性。

2.密码应用技术框架

实现密码的功能,需要密码应用技术体系支撑。密码应用技术框架包括密码资源、密码支撑、密码服务、密码应用四个层次,以及提供管理服务的密码管理基础设施,如图1-1所示。

密码资源层提供基础性的密码算法资源,底层提供序列、分组、公钥、杂凑、随机数生成等基础密码算法;上层以算法软件、算法IP核、算法芯片等形态对底层的基础密码算法进行封装。

密码支撑层提供密码资源调用,由安全芯片类、密码模块类、密码整机类等各类密码产品组成,如可信密码模块、智能IC卡、密码卡、服务器密码机等。

密码服务层提供密码应用接口,分为对称密码服务、公钥密码服务及其他密码服务三大类,为上层应用提供数据的保密性保护、身份鉴别、数据完整性保护、抗抵赖等功能。

图1-1 密码应用技术框架

密码应用层调用密码服务层提供的密码应用接口,实现所需的数据加密和解密、数字签名和验签等功能,为信息系统提供安全功能应用或服务。典型应用如安全电子邮件系统、电子印章系统、安全公文传输、桌面安全防护、权限管理系统、可信时间戳系统等。

密码管理基础设施作为一个相对独立的组件,为上述四层提供运维管理、信任管理、设备管理、密钥管理等功能。

密码应用技术框架为密码技术研发、产品研制、应用服务和管理提供了重要理论指导,为构建典型密码应用技术体系发挥了重要作用。

1.1.3 密码应用中的安全性问题

密码技术只有得到合规、正确、有效应用,才能发挥安全支撑作用,否则应用系统的安全问题就没有真正解决。在实际应用中,由于各种原因,各类用户(特别是信息系统应用开发商)有可能弃用、乱用、误用密码技术,导致应用系统的安全性得不到有效保障,甚至一些不合规、不安全的密码产品和实现还会遭受攻击者的入侵和破坏,造成比不用密码技术更广泛、更严重的安全问题。

①密码技术被弃用。只有被上层应用调用,密码技术才有机会发挥作用。如果信息系统应用开发商对密码在安全防护中的重要地位缺乏认识,为节省资源或贪图便利,在开发工作中故意忽视密码技术,那么此类应用中信息的保密性、信息来源的真实性、数据的完整性和行为的不可否认性等必然会缺乏相应密码算法、协议等的支撑,整个系统会毫无安全可言。

②密码技术被乱用。如果信息系统应用开发商对密码在信息互联互通中的重要作用缺乏认识,不严格执行密码标准,不规范调用密码技术,就会导致系统无法对接,甚至出现安全漏洞。常见案例包括未明确约定协议底层使用的算法名称及参数,擅自修改数据接口及数据格式,简化使用标准所规定的密码协议等。例如,现有研究发现,大量的SSL SSL:一种常用的网络通信安全协议。软件并没有正确地验证网络实体与公钥/数字证书的绑定关系,在数字证书验证过程中没有检查根证书配置和实体身份标识,在这种情况下,即使启用了SSL协议,仍然会存在中间人攻击的风险。

③密码技术被误用。如果信息系统应用开发商对密码应用缺乏技能和经验,不清楚合规性要求,不了解密码算法的类型、协议参与方的角色要求、关键参数的类型和规模等基本知识,错误调用密码技术,就会不可避免地产生安全漏洞。常见的案例包括颠倒分组密码中密钥和明文的位置,使用固定值而不是随机数作为加密算法初始向量,使用计数器代替数字签名中的随机数,颠倒身份鉴别中的挑战者与响应者角色等。还有一些系统中支持了已被实际破解的密码算法(如MD5、SHA-1等),导致密码支撑资源被错误调用。在SSL协议部署时存在密码算法配置错误、密码协议配置错误、证书配置错误等情况。在利用随机数生成密钥时,使用不安全的随机数发生器,或者不正确地使用随机数发生器,会导致产生大量重复密钥或重复使用的素因子。

弃用、乱用、误用密码技术都将导致安全问题,因此,合规、正确、有效使用密码技术是信息系统应用开发商必须学习并熟练掌握的基本能力。同时也必须认识到,只有信息系统应用开发商才有机会了解、提炼用户的实际安全需求,从而在其使用密码技术建设安全应用的过程中有机会做到“正确规范”。以某应用中需要“抗抵赖签名”为例,关键信息包括签名者的身份、签署内容的类型、具体的数据格式及验签者的身份等。这些与实际应用密切相关的细节信息,是密码技术自身所不能掌握的。应用开发商务必与用户深入沟通,明确此类细节,提炼用户安全需求,从而为正确规范使用密码技术做好准备。