APP下载

SM9 用户私钥在线分发技术*

2022-09-24彭丰伟刘方舟陈福莉蔡罗成

通信技术 2022年8期
关键词:私钥公钥密钥

曾 勇,马 睿,彭丰伟,刘方舟,陈福莉,蔡罗成

(1.成都卫士通信息产业股份有限公司,四川 成都 610041;2.电子科技大学,四川 成都 611731;3.中国人民解放军61428 部队,北京 100072)

0 引言

物联网应用包括感知层、传输层和应用层[1]。在安全性要求较高的特种领域,需要采取认证加密手段处理感知层的用户终端采集和传输的信息,确保应用信息的安全。而分布在感知层的用户终端具有分布广、数量大、终端设备轻量化等特点,传统公钥基础设施(Public Key Infrastructure,PKI)的证书管理比较复杂,很难满足拥有海量连接的物联网应用的要求。Shamir 在1984 年提出了基于标识的密码系统(Identity Base Cryptography,IBC)概念[2],在IBC 中用户身份与其公钥以最自然的方式进行绑定,用户身份信息作为公钥,用户私钥则由密钥生成中心(Key Generation Center,KGC)通过主密钥和用户标识计算得出[3]。IBC 使得任意两个用户可以直接通信,不需要交换公钥证书,不必保存公钥证书列表和使用在线的第三方证书签发机构证书授权(Certificate Authority,CA),大大简化了公钥分发过程和证书管理过程[2]。因此,IBC 可以作为PKI 的一个很好的替代,尤其是在具有海量连接的物联网应用环境[4]。

SM9 密码算法作为身份标识密码算法[5]的一种,遵循IBC 密码体制,用于解决物联网用户终端数据的安全防护问题,得到了业界的广泛关注。在SM9 技术体系中,规定用户的私钥不能在终端自身的密码设备中产生,而是由密钥管理基础设施(Key Management System,KMS)统一产生并下载给用户,因此推广SM9 应用的关键在于解决好用户私钥分发的问题。我国密码行业标准GM/T 0086—2020《基于SM9 标识密码算法的密钥管理系统技术规范》提出了一种用户私钥离线分发方案[6],该方案安全性高,但需要耗费大量人力和时间开销,对密钥管理系统会造成较大压力和负担。业界也对SM9 用户私钥在线分发技术进行了相关研究[7-9],提出了一些相关用户密钥在线分发方案,但存在用户身份被假冒以及数据传输保护不完善等问题。本文基于SM9 密钥管理技术体制,提出了一种新的用户私钥分发机制,通过建立安全传输通道实现了用户私钥在线产生和分发,可以显著提升SM9 密钥管理的能力和效率,从而有效推进SM9 在物联网领域的应用。

1 SM9 密钥管理系统简介

1.1 密钥管理系统组成及架构

SM9 的KMS 由私钥生成系统(Private Key Generator,PKG)、注册服务机构(Registration Agency,RA)、公开参数服务器(Public Parameter Server,PPS)和用户终端实体(User/Client)组成[6],系统架构如图1 所示。各实体功能如下文所述。

图1 SM9 密钥管理系统组成及架构

(1)PKG 利用系统主密钥和相关参数为用户生成私钥,并提供相关管理及查询服务。

(2)RA 承担用户密钥申请注册、认证、管理以及与PKG 进行业务交流的任务,提供对称、非对称及杂凑等密码服务,并接收PKG 返回的密钥数据写入终端实体的密钥载体中。

(3)PPS 面向用户信息服务系统,提供公开的可访问地址,进行公开参数和策略的安全查询与分发。公开参数包括可公开共享的密码参数和用户标识状态目录。

(4)User/Client 是用户信息服务系统的终端应用系统,直接或通过本地代理向PKG 申请密钥,并实现对自身私钥的存储和使用。

从SM9 密钥管理系统架构分析可知,用户密钥的产生和分发主要涉及PKG、RA 和User/Client等实体,可通过在PKG 与RA 之间、RA 与User/Client 之间建立安全通道,实现密钥的传输和下载。

1.2 用户密钥产生和分发机制分析

SM9 密码系统的用户密钥包括用户公钥和私钥,用户公钥为公开信息,可根据用户身份标识产生,无须专门管理和分发;用户私钥为秘密信息,由PKG 统一生成后,通过安全渠道传递给User/Client。因此,SM9 用户私钥能否安全、快捷地传递给User/Client直接关系到SM9密码应用能否推广。SM9 的用户私钥离线分发方法包括以下关键步骤[6:]

(1)用户注册:用户通过RA 完成注册,用于密钥申请时对用户信息的验证。

(2)密钥申请:用户向RA 发送私钥分发请求,RA 先对申请信息进行认证,审核用户标识的唯一性以及用户数据的真实性和完整性,如审核通过,RA 依据用户申请内容,向PKG 发送密钥申请。

(3)密钥产生:PKG 验证RA 的申请,利用系统参数生成用户私钥,并将用户标识状态信息发布到PPS。

(4)密钥分发:PKG 将用户私钥密文和相关信息组成相应数据包,并进行数字签名,回送给RA,RA 验证收到的数据,验证通过后,把私钥密文数据下载到用户密钥载体中。

从上述流程可看出,在离线方式下用户私钥通过RA 直接下载写入User/Client(密钥载体)。对于海量终端接入的物联网应用部署,如果需要集中User/Client 并送到RA 完成私钥的下载写入工作,必然耗费大量时间及成本,导致密钥管理效率不高,不利于应用系统的密码应用部署。此外,该种用户私钥分发方式不利于用户密钥后续的更换工作。因此,需要设计一种用户私钥的在线分发机制,以适应具有海量终端接入的物联网应用系统的要求。

2 用户私钥在线分发方案

用户私钥在线分发是基于User/Client 与KMS之间互联互通的情况下,实时在线地从KMS 下载用户私钥到User/Client。而信息在交互过程中,面临着身份假冒、信息被窃听、信息被篡改和重放等安全威胁。因此,从User/Client 与KMS 之间的信息交互的安全性出发,基于SM9 KMS 架构提出一种新型的用户私钥分发方案。本方案设计要点如下:

(1)User/Client 标识设计。User/Client 采用两个用户标识:一个为公开标识(UID),可以公开,用于生成用户公钥;另一个为私有标识(SID),不对外公开,保存在用户终端的密钥载体中,第三方不能对SID进行读写,用于身份识别。UID和SID均由PKG 统一产生,具有唯一性的特点,设备出厂前由生产厂家写入,二者形成一一对应关系,并保存在PKG 中。由于UID和SID两个用户标识的功能相互独立,不会在SM9 密码管理体系架构中造成任何冲突。

(2)密钥分发流程设计。与密钥离线分发流程相比较,增加User/Client 与KMS 的双向认证过程,保证User/Client 身份的合法性,同时保证User/Client 不会被假冒的KMS 欺骗。在身份认证通过后,再完成用户信息的注册,最后进行密钥产生及下发。

(3)信息传输安全防护设计。通过身份认证进行密钥协商,产生数据传输加密密钥和完整性检验密钥,实现User/Client 与RA、PKG 之间信息传输的机密性、完整性、认证性和不可否认性保护,同时采用时间戳机制实现抗重放攻击。为适应轻量化终端的物联网应用场景,信息传输安全防护机制可基于轻量级对称密码算法SM7[5]实现,即对用户私钥进行机密性保护的密钥由User/Client 密钥载体的随机数发生器产生,并满足随机数检验的相关标准。

为了描述用户私钥分发流程,本文定义User/Client 的公开标识为UID、私有标识为SID,RA 的标识为RAID;RA 公钥为RAPK、私钥为RASK,PKG 公钥为PKGPK、私钥为PKGASK;SM9 非对称加密算法(PK为公钥)表示为APK(DATA),SM9 非对称解密算法(SK为私钥)表示为DASK(DATA),签名结果为sign;对称加密算法(K为密钥)表示为EK(DATA),对称解密算法(K为密钥)表示为DEK(DATA);杂凑结果为HMAC;User/Client 能够通过PPS 获得RA 的标识和RA、PKG 的公钥等参数[10]。

以下内容通过用户终端认证及注册和用户私钥在线分发两个步骤对方案的具体实现机制和过程进行描述。

2.1 用户终端认证及注册

2.1.1 实施方案

用户终端认证及注册的实施方案如下:

(1)User/Client 通过RA 与PKG 进行双向身份认证。User/Client 采用PKG 对SID信息加密后上报RA,RA 再请求PKG 验证User/Client 的合法性,PKG 完成验证后把结果告知RA,实现对User/Client 的认证;User/Client 通过随机数挑战—应答方式实现对RA 的合法性判定。

(2)用户注册。User/Client 与RA 认证成功后进行用户注册,注册信息在User/Client 与RA 之间传输,采用数据加密、哈希计算、签名验证等安全防护设计,确保信息的机密性、完整性和可认证性。

2.1.2 流程设计

认证及注册流程如图2 所示,其具体的流程如下文所述。

图2 用户认证及注册流程

(1)User/Client 发起认证请求。①产生随机数R1和时间戳T1,并在本地保存;②从PPS 获得RAID,RAPK和PKGPK;③利用PKGPK对SID加密生成APKGPK(SID);④利用RAPK对UID,RAID,T1和R1加密生成ARAPK(UID||RAID||T1||R1)。

(2)User/Client 发送认证请求数据APKGPK(SID)||ARAPK(UID||RAID||T1||R1)给RA。

(3)RA 验证认证请求。①利用RASK解密DARASK(ARAPK(UID||RAID||T1||R1)) 获得UID,RAID,T1和R1;②利用RAID与自身标识比对,不一致则丢弃;③利用T1判断是否重放攻击;④利用RASK签名SIGNRASK(APKGPK(SID))获得sign1。

(4)RA 发送认证请求数据RAID||APKGPK(SID)||sign1给PKG。

(5)PKG 验证认证请求。①从PPS 获 得RAPK,并对sign1验签,如果验签不通过则丢弃;②利用PKGSK解密DAPKGSK(APKGPK(SID))获得SID;③通过SID查找对应的UID´,如果没有找到则判定为非法用户;④产生一个认证令牌TOKEN,TOKEN用于后续用户私钥分发时数据完整性的校验以及用户对PKG 合法性的校验;⑤利用RAPK对UID´,TOKEN加密获得ARAPK(UID´||TOKEN);⑥利用PKGSK签名SIGNPKGSK(ARAPK(UID´||TOKEN))获得sign2。

(6)PKG 返回验证结果ARAPK(UID´||TOKEN)||sign2给RA。

(7)RA 判断User/Client 合法性,同时发起认证请求。①从PPS 获得PKG 的PKGPK,并对sign2验签,如果验证不通过则丢弃;②利用RASK解 密DARASK(ARAPK(UID´||TOKEN))获 得UID´和TOKEN;③比对UID´与本地保留的UID是否一致,如果不一致则用户非法;④产生随机数R2;⑤利用R1加密生成ER1(UID´||TOKEN||R2);⑥保留UID与TOKEN对应关系;⑦利用KDF(R1||R2)生成后续数据传输的加密密钥CK和完整性密钥IK,与UID,TOKEN绑定后在本地存储。

(8)RA 返回认证请求数据ER1(UID´||TOKEN||R2)给User/Client。

(9)User/Client判断RA合法性。①利用步骤(1)产生的随机数R1解密DER1(ER1(UID´||TOKEN||R2)),获得UID´,TOKEN和R2;②比对UID´和UID,如果不相等则RA 为非法;③利用密钥生成函数KDF(R1||R2)生成后续数据传输的加密密钥CK和完整性密钥IK,并本地保存CK和IK;④生成时间T2;⑤利用CK加密ECK(UID||T2||用户资料);⑥利用IK对ECK(UID||T2||用户资料)进行完整性保护HMACIK。

(10)User/Client 发起注册请求UID||ECK(UID||T2||用户资料)||HMACIK给RA。

(11)RA 完成用户终端注册。①利用UID与本地保存的UID比对,不一致丢弃数据;②通过UID查找CK和IK;③利用IK对ECK(UID||T2||用户资料)进行哈希计算,与接收到的HMACIK比对,如果不一致则丢弃;④利用CK解密ECK(UID||T2||用户资料)获得UID,T2和用户资料;⑤利用时间戳T2判断发送是否有效,防止重放攻击;⑥保存用户资料到注册表。

(12)RA 返回注册成功消息给User/Client,完成注册。

2.2 用户私钥在线分发

2.2.1 实施方案

用户注册成功后,User/Client 向PKG 申请私钥,PKG 产生并分发用户私钥。用户私钥信息在PKG与RA 之间、RA 与User/Client 之间传输采用数据加密、完整性校验、签名验签等安全防护设计,确保信息的机密性、完整性和可认证性,同时采用时间戳实现抗重放攻击。

2.2.2 流程设计

用户私钥生成和下发流程如图3 所示,对流程的具体描述如下文所述。

图3 用户私钥生成和下发流程

(1)User/Client 发起私钥请求。①User/Client产生随机数R3和时间戳T3,并本地保存;②利用PKGPK加密随机数R3生成APKGPK(R3);③利用注册时的CK加密ECK(UID||T3||APKGPK(R3));④利用注册时的IK对加密数据ECK(UID||T3||APKGPK(R3))进行完整性保护HMACIK。

(2)User/Client 发送私钥请求数据UID||ECK(U ID||T3||APKGPK(R3))||HMACIK给RA。

(3)RA 验证私钥请求。①利用UID查找CK和IK;②利用CK解密DECK(ECK(UID||T3||APKGPK(R3)))获得UID,T3和APKGPK(R3);③比对UID与本地保留的UID,不一致则终端不合法;④利用IK对数据ECK(UID||T3||APKGPK(R3))进行哈希计算与HMACIK进行比对,不一致则丢弃;⑤利用T3判定消息是否重放;⑥产生随机数R4,利用密钥产生中心公钥PKGPK对随机数R4加密生成APKGPK(R4);⑦利用R4加密ER4(UID||T3||APKGPK(R3));⑧利用RASK签名SIG NRASK(RAID||APKGPK(R4)||ER4(UID||T3||APKGPK(R3)))) 得到sign3。

(4)RA 发送私钥请求数据RAID||APKGPK(R4)||ER4(UID||T3||APKGPK(R3))||sign3给PKG。

(5)PKG 验证私钥请求,产生用户私钥。①从PPS 获得RAPK,并对sign3验签,如果验签不通过则丢弃;②利用PKGSK解密DAPKGSK(APKGPK(R4))获得R4;③利用R4解密DER4(ER4(UID||T3||APKGPK(R3)))获 得UID,T3和APKGPK(R3);④利 用PKGSK解密DAPKGSK(APKGPK(R3))获得R3,用于用户私钥UIDSK的保护;⑤利用T3判断是否重放攻击;⑥利用UID、KMS 主密钥及参数生成用户私钥UIDSK,利用R3作对称密钥加密UIDSK生成ER3(UIDSK)和时间戳T4;⑦利用注册时生成的认证令牌TOKEN对ER3(UIDSK)进行哈希计算HMACTOKEN;⑧生成随机数R5,并利用RAPK加密ARAPK(R5);⑨利用R5加密ER5(UID||T4||ER3(UIDSK)||HMACTOKEN);⑩利用PKGSK签名SIGNPKGSK(ER5(UID||T4||ER3(UIDSK)||HMACTOKEN))获得sign4。

(6)PKG 返回私钥数据ARAPK(R5)||ER5(UID||T4||ER3(UIDSK)||HMACTOKEN)||sign4给RA。

(7)RA 验证私钥数据合法性。①从PPS 获得PKGPK,并对sign4验签,如果验签不通过则丢弃;②利用RAPK解密DARASK(ARAPK(R5))得到R5;③利用R5解密DER5(ER5(UID||T4||ER3(UIDSK)||HMACTOKEN))获 得UID,T4,ER3(UIDSK) 和HMACTOKEN;④利用注册时产生的CK加密ECK(UID||T4||ER3(UIDSK)||HMACTOKEN);⑤利用注册时产生的IK对加密数据ECK(UID||T4||ER3(UIDSK)||HMACTOKEN)进行哈希计算得到HMACIK。

(8)RA 返回私钥数据ECK(UID||T4||ER3(UIDSK)||HMACTOKEN)||HMACIK给User/Client。

(9)User/Client 对私钥验证和存储。①利用注册时产生的IK对ECK(UID||T4||ER3(UIDSK)||HMACTOKEN)进行哈希运算并与接收到的HMACIK比较,不一致则判定为非法数据并丢弃;②利用注册产生的CK解 密DECK(ECK(UID||T4||ER3(UIDSK)||HMACTOKEN)),获得UID,T4,ER3(UIDSK)和HMACTOKEN;③核对UID与自身是否一致,不一致则判定为非法数据并丢弃;④利用注册产生的TOKEN对ER3(UIDSK)进行哈希计算,与HMACTOKEN比较,不一致则判定为非法数据并丢弃;⑤利用T4判断消息是否为重放攻击;⑥利用本地保存的R3解密DER3(ER3(UIDSK))得到UIDSK;⑦本地保存UIDSK。

(10)User/Client 发送私钥分配成功数据给RA。

(11)RA 发送私钥分配成功数据给PKG。

(12)PKG 将用户标识状态信息发布到PPS。

3 可行性分析

3.1 安全性分析

用户私钥的安全直接关系到应用系统的安全运行,用户私钥安全分发是确保用户私钥安全的关键环节之一,因此需要提供完备的安全防护体系和安全的密钥分发协议,确保用户私钥在线分发安全。

3.1.1 防护体系方面

本方案遵循SM9 密钥管理架构,基于现有SM9私钥离线分发规范标准,在实现RA 与PKG 之间的安全防护的同时,增加了User/Client 与RA、User/Client 与PKG 之间的安全防护设计,具体采用了双向身份认证、数据加密传输、数据完整性验证、数据合法性验证、时间戳防重放等安全防护技术,在User/Client、RA 和PKG 三者之间构建完备的安全防护体系,有效保障用户私钥在线分发的安全。

3.1.2 密钥分发协议方面

首先,本文基于SID的私密性和唯一性,利用SM9 算法的加解密和签名验签机制实现User/Client 与KMS(RA、PKG)之间的双向身份认证,确保User/Client 和KMS 身份的合法性;其次,利用身份认证过程中派生的加密密钥和完整性密钥,保护User/Client 向KMS 上传用户注册数据、私钥请求数据时,以及KMS 生成私钥数据下传给User/Client 时的机密性和完整性,确保User/Client 和KMS 之间数据传输通道安全,防止数据被泄密、伪造和篡改;再次,利用身份认证时生成的认证令牌TOKEN对下发的私钥数据进行来源和合法性验证,实现密钥数据的可认证性和不可否认性;最后,采用时间戳设计,规避数据重放攻击。综上,所提方案为密钥在线安全分发实现提供了有效支撑。

3.2 实用性分析

海量的终端接入和有限的终端资源之间的矛盾一直是物联网应用推广的难点,而现实需求对密码应用部署和密码轻量化应用也提出了更高的要求。

3.2.1 密码应用部署方面

本方案从物联网海量终端接入的实际部署需求出发,提出了一种利用物联网基础网络对终端设备进行用户密钥在线实时分发的方法,简化了密钥管理流程,减轻了密钥管理系统压力,可有效缩短应用部署时间和节省管理成本,有效满足海量终端接入的物联网应用场景的需要。

3.2.2 对应用系统的影响方面

本方案从物联网终端资源有限的实际出发,对密钥数据的加密保护采用轻量级对称密码算法(如SM7[5]),能较好地满足物联网应用场景的要求。此外,考虑到物联网终端密钥在线初装后密钥更换的频次要求较低,用户密钥在线分发协议增加的资源开销对应用系统和User/Client 的影响不大。因此本方案具有较好的实用性和推广价值。

4 结语

物联网应用采用SM9 密码系统进行信息安全防护已成为业界研究热点。本文基于GM/T 0086—2020《基于SM9 标识密码算法的密钥管理系统技术规范标准》提出了SM9 用户私钥在线分发新技术,解决了用户终端与密钥管理中心之间信息交换的安全防护问题。本文在机密性、合法性、完整性、可认证性和抗重放攻击等方面进行了安全设计,确保用户终端在线下载用户私钥的安全。所提方案相较于用户密钥离线分发具有较大优势,特别适用于5G 网络物联网场景的应用,为进一步推动SM9 在物联网的实用化进程提供了一种新的思路和方法。

猜你喜欢

私钥公钥密钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
幻中邂逅之金色密钥
幻中邂逅之金色密钥
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
密码系统中密钥的状态与保护*
TPM 2.0密钥迁移协议研究
神奇的公钥密码
一种基于虚拟私钥的OpenSSL与CSP交互方案
国密SM2密码算法的C语言实现