◆王森
(国家信息中心 信息与网络安全部 北京 100045)
在十四五时期,我国将继续深入推进政务信息化建设,提高政府数字化服务效能,深化“互联网+政务服务”,提升全流程一体化在线服务平台功能[1-2]。与此同时,政务领域面临的网络安全风险威胁日益严峻,亟待加强网络安全保护。采用密码技术对信息系统进行保护,是最可靠、最有效、最核心的基础支撑方式。
2020年密码法颁布实施,随后国家制定了系列行政法规和政策文件,对关键信息基础设施、政务服务信息系统的密码应用合规性进行要求。《关键信息基础设施保护条例》第三十八条“国家政务信息系统等网络与信息系统,其运营者应当使用商用密码进行保护,制定商用密码应用方案,配备必要的资金和专业人员,同步规划、同步建设、同步运行商用密码保障系统,自行或者委托商用密码检测机构开展商用密码应用安全性评估”。《国家政务信息化项目管理办法》(国办发〔2019〕57号)第十五条“项目建设单位应当落实国家密码管理有关法律法规和标准规范的要求,同步规划、同步建设、同步运行密码保障系统并定期进行评估”,第二十八条“加强国家政务信息化项目建设投资和运行维护经费协同联动,……,对于不符合密码应用和网络安全要求,或者存在重大安全隐患的政务信息系统,不安排运行维护经费,项目建设单位不得新建、改建、扩建政务信息系统”。
因此,从全面安全防护和满足合规性要求两个方面考虑,都应该切实做好密码应用安全性评估。根据国家密码管理局《商用密码应用安全性评估管理办法(试行)》相关条款要求,密码应用安全性评估应在三个时期开展,一是在信息系统前期规划过程中,应对密码建设方案进行评估;二是系统建设完成上线之前,应该开展密码应用安全性评估,同时按照政务信息化项目管理办法,方案评估和密码应用安全性评估应作为项目建设完成验收评估的准备材料;三是信息系统在运行过程中,应定期开展评估。
按照国家标准GB/T 39786-2021《信息系统密码应用安全性基本要求》[3],规范了“物理和环境”“网络和通信”“设备和计算”“应用和数据”四个层面安全性要求。其中“应用与数据”要求基于密码技术对登录用户进行身份鉴别,保证应用系统用户身份的真实性。为此,系统中通常部署安全认证网关,基于智能密码钥匙的方式满足采用密码技术进行身份鉴别的要求。
本文主要介绍了国产商用密码SM2公钥算法、数字证书数据格式及基本原理,详细介绍了国家认证根(RootCA),以及为国家认证根为信任源点的电子认证服务体系。文中国密数字证书的检测方案,可用作政务领域信息系统建设者和密评测试人员开展数字证书合规性检测的重要参考。
加密保护和安全认证是密码技术两大核心功能。对称加密通过置换和乱序等方式,改变原文生成密文,实现加密保护,通常加密和解密密钥为同一个。与对称密码算法不同,非对称算法中密钥分成公钥和私钥,通过特定的使用方法可以实现身份鉴别和抗抵赖等功能。
根据《中华人民共和国密码法》,我国密码分类管理包括商用密码、普通密码、核心密码,其中商用密码用于保护国家秘密之外的所有信息。在政务应用中的非涉密场景,可以使用商用密码保护非密工作信息。我国的商用密码系列名称是以SM开头算法,如SM2椭圆曲线公钥[4]、SM3哈希算法、SM4分组对称加密算法、SM9标识密码算法、ZUC流密码算法等。
SM2算法私钥密钥长度为256位,公钥密钥长度为512位,依据国家标准GB/T 32918中合规使用数字签名、密钥交互、公钥加密、参数定义等用法。与RSA使用方法一样,SM2算法也是分为公私钥对,私钥由用户保存,公钥公开。同时,256位的SM2算法比1024位的RSA算法安全性更高。
公钥算法通常基于一项数学难题,例如RSA基于大数因子分解难题,Elgamal算法基于有限域上离散对数难题,椭圆曲线算法基于椭圆曲线上的离散对数难题。在公钥算法中,个人保存私钥,公钥公开。公钥技术主要用来实现身份认证和抗抵赖。个人保存私钥,因此可以通过公钥验证加密结果来实现身份认证,验证私钥签名实现抗抵赖。公钥体系中获取公钥是前提,其他用户必须能够获得声明方的公钥,才能进行身份鉴别和签名验证。
最初的方法采用集中发布公示的方式,每个人可以自行生成公私钥对,并通过集中发布服务公开自己的公钥。进行身份认证和校验数字签名时,通过查询公开信息获得用户公钥。
公开公示密钥的方式需要在线服务,公示服务也可能被人篡改。因此人们设计了另外一种公开公钥的方式,就是采用数字证书和公钥基础设施PKI。用户通过向权威的认证机构证明身份,并将公钥和个人信息发送给权威机构,权威机构制作成数字证书并下发给用户。
申请数字证书过程中的关键步骤通常包括以下步骤:
(1)用户准备好一个电子钥匙即Ukey。为申请数字证书,UKey产生公钥和私钥,公钥私钥成对生成。根据SM2算法密钥生成规则,先通过随机数生成产生私钥priKey,通过计算得到公钥pubKey。私钥保存在Ukey中,具有不可导出、不可见等特性,只能通过调用Ukey应用接口,进行解密、签名等操作;而公钥可以读取明文。
(2)做好准备后,用户将与CA进行交互。用户向认证机构CA提交制作数字证书请求,请求文件中包含将需要公开的个人信息和公钥。
(3)CA应该严格验证用户提交信息的真实性,例如通过个人有效证件检查或者进行在线的实人认证。通过验证后,CA使用自己的私钥,将包含用户信息和用户公钥pubKey的文件进行数字签名,最后按照规范格式将包含用户信息、用户公钥、证书说明、数字签名sig封装成一个文件,下发给用户。
可以看到,数字证书本身并不包含任何需要保护的秘密信息,用户收到数字证书文件后,可以存储到合适位置,或者和私钥一起保存在Ukey里。
“挑战应答”是具有抗重放攻击的身份鉴别技术。例如HTTPS协议中使用数字证书方式进行双向“挑战应答”式身份鉴别。
为实现服务器域名验证,客户端需要预置顶级的数字证书根证书,通常将这些可信的根证书保存在操作系统证书库和浏览器信任根证书列表中。在服务端,为鉴别用户身份也需要预置用户证书CA根证书。双向身份认证的过程如下:
客户端校验服务端数字证书过程中,首先核验证书中主题项(DN)信息和扩展字段SAN(subject alternative name),通常浏览器会检验用户访问网址域名与服务端证书信息是否一致。如果不一致,服务端身份存在仿冒,出现了类似钓鱼网站的现象,很多安全浏览器会提示访问风险。当检验成功后,下一步客户端根据服务端数字证书中签发者信息,在本地信任根证书列表中查找签发者证书,并通过签发者证书中的公钥验证服务端数字证书是否有效。
基于同样的规则,服务端校验客户端数字证书有效性。通过客户端数字证书的签发者信息确认客户端的CA证书,并验证用户数字证书的有效性。通常验证客户端数字证书有效性过程会更严谨,包括检验证书的生效时间是否在有效期内,证书id是否在吊销列表文件,最主要还是校验证书签发者的数字签名。当通过检测,证明了用户数字证书的有效性,下一步才能开始基于数字证书的身份鉴别。
数字证书信息核验完成之后,开展基于公钥算法和数字签名进行身份鉴别,通过数字证书包含的身份信息和用户公钥信息,确认用户拥有私钥的过程。服务器端会发送一段随机值randA作为挑战信息给客户端,客户端收到随机值A后,会再生成一个随机值randB,客户端使用私钥对randA||randB(联接)进行签名,并把签名结果和randB一起发送给客户端。服务器端收到签名后,会使用用户证书中的公钥解密签名,并与randA||randB进行比较,匹配成功后,校验签名成功,即证明了用户的真实身份。
当校验完成用户后,服务器根据证书中的主题项(DN)信息,确认用户在系统中身份,并根据相应的访问控制信息为用户分配访问系统的权限。
很多单位采用自建CA制作用户数字证书用于系统应用,根据《密码法》等法律法规政策文件和规范标准,按照密码服务的专业性,并关系到国家安全和社会服务公共利益,国家密码管理局要求电子认证服务应该通过许可认定。
按照电子认证服务属于重要密码服务的原则,在等级保护三级及以上、关键信息基础设施等系统中采用自建CA颁发证书,不符合商用密码应用合规性要求,同时给系统带来安全风险隐患。因此,政务信息化项目中使用数字证书,应选用国家密码管理局认定并在电子政务电子认证服务机构名录中的机构。
《商用密码管理条例》第二十九条规定“国家建立统一的电子认证信任机制,推动电子认证服务互信互认。国家密码管理部门负责电子认证信任源的规划和管理”。目前,我国已构建成国家电子认证根为认证源点,辐射至全国各地区和各行业的电子认证体系。通过国家密码管理局官方网站,可以链接达到国家电子认证根CA网站[5]。目前网站上公布了4个电子认证根,应用名称和用途详见表1。
表1 国家根证书信息
目前,经国家密码管理局审批许可的电子政务电子认证服务的机构共有45家。通过“公务人员应用根(SM2)”签发的电子政务电子认证服务机构共有10家单位。按相关规范文件要求,机关单位中公务人员应全部采用SM2国密算法。
信息系统密评过程中关于数字证书合规性检测,首先采集用户证书,根据标准GM/T 0015《基于SM2密码算法的数字证书格式规范》进行核验[7]。相关内容包括根证书链验证;制作数字证书CA是否有效,且属于拥有电子认证服务资质的CA证书,证书链是否由国家认证根颁发;数字证书有效期验证,证书有效期字段符合要求;数字证书是否被撤销,是否在吊销证书列表中;密钥用法是否符合用于数字签名等验证项。
同时,在开展密评过程中,可以用通过访谈方式,查阅档案资料,了解用户数字证书制作方式。如果没有采用经国家密码管理局许可的电子政务电子认证服务,应在打分表上进行登记。
随着商用密码技术发展及国家政策法规的支撑保障,密码在政务领域中得到了越来越多应用[8]。但是,仍普遍存在对密码应用原理不理解、使用方法不正确、密码应用不规范等问题。对于采用数字证书作为密码方式的登录手段,有人简单理解UKey为“物理钥匙”。为此本文通过密评要求、算法原理、国家体系等方面介绍了数字证书原理,希望能进一步推动政务领域的密码安全应用,落实密码应用安全性评估相关政策规范要求。政务信息化项目建设工作相关人员应在信息系统规划设计期间完成电子认证机构的数字认证服务签订,同时按照《信息系统密码应用安全性基本要求》等技术标准全面加强密码应用。