基于SM9 算法的互联网身份认证技术

2023-10-18 13:32刘廷舰董峰伟
科技创新与应用 2023年29期
关键词:私钥公钥口令

郭 嘉,刘廷舰,董峰伟

(三未信安科技股份有限公司,北京 100000)

得益于5G 通信技术及物联网、互联网技术的发展,我国已经正式进入了“万物互联”的时代。新时期背景下人们在享受物联网、互联网技术所带来的便利的同时,也在承受信息泄露、丢失风险所带来的挑战。传统互联网环境下的身份认证模式需要不同用户基于不同服务器的需求,记忆并应用多种口令,这导致传统的身份认证过程中极容易出现因口令泄漏所引发的安全问题。想要从根源上避免诸如此类的问题,便可以基于SM9 算法以及去中心化的认证机制,在降低认证代价的基础上全面避免认证节点堵塞的问题,还可以有效优化认证过程的隐私性与效率。

1 SM9 算法概念解析

1.1 专业术语解析

SM9 算法是基于256 位BN 椭圆曲线的公钥加密算法,尽管其相较于传统的国家商用密钥而言做出了一定的创新,但其本质仍属于IBE 机制[1]。本文所应用到的SM9 算法相关专业术语如下。

1.1.1 标识(Identify)

标识是指在用户实体无法否认的身份信息,即身份认证过程中唯一一个可以确定用户实体的信息,具有唯一性与绝对性[2]。如身份证号、电子邮件地址等,通常情况下标识会以ID 的缩写形式出现,用户x、用户y 可以利用IDx、IDy的形式代替。

1.1.2 主密钥(Master Key)

可以将其理解为标识密钥分层机构中最重要、最顶层的密钥,应用中通常会分为主公钥以及主私钥2 个模块。其中,主公钥面向全部用户,主私钥则只需要由密钥生成中心(Key General Center,简称KGC)进行单独保存,以此维护其私密性,并且在后续的流程中,KGC 会根据用户的标识及主私钥生成具有针对性的用户密钥(User Key)[3]。

1.2 公钥加密方案解析

设定P1为椭圆曲线假发循环群G1的生成元,则P2为椭圆曲线加法循环群G2的生成元;H(·)代表Hash 函数;Enc(·)及Dec(·)依次对应分组加密与分组解密的运算模式;KDF(·)是密钥推导过程中涉及的函数;MAC(·)是身份认证过程中携带密钥的认证消息编码;e(·)是双线性对。综上,基于本次研究的SM9 密钥加密算法如下。

假设①与②分别为身份认证流程中的信息发送者及信息接收者,则身份认证过程中的加密流程如下。

首先是密钥生成:KGC 产生的随机数ke∈[1,N-1]作为加密主私钥,计算Ppub-e=[ke]P1为加密主公钥、(ke,Ppub-e)则为加密主密钥对;

用户②的标识为ID②,则为用户②所生成的加密私钥为de②,KGC 在有限域FN上计算t1=H1(ID②,N)+ke,t2=,得到de②=[t2]P2;

其次是加密过程:为了加密消息明文M,①需要执行以下步骤。

1)计算Q②=[H1(ID②\\h ID,N)]P1+Ppub-e;

2)选择随机数r∈[1,N-1];

3)计算C1=[r]Q②,g=e(Ppub-e,P2),w=gr;

4)计算K=KDF(C1\\w\\ID②);

5)按加密明文的分类方法进行计算,在采用序列密码方式加密的情况下,则计算C2=M+K;在采用分组密码方式加密的情况下,则计算C2=Enc(K,M);

6)计算C3=MAC(K,C2),得到密文为C=C1\\C2\\C3。

最后是解密过程:针对密文C=C1\\C2\\C3,②的解密过程如下。

1)计算w′=e(C1,de②);

2)计算K′=KDF(C1\\w′\\ID②);

3)按加密明文方法的不同进行解密,在采用序列密码方式加密的情况下,则计算M′=C2+K1;在采用分组密码方式加密的情况下,则计算M′=Dec(K1′,C2);

4)计算u=MAC(K2′,C2),假设u=C3,则输出明文M′,否则报错。

1.3 SM9 数字签名算法

设①与②分别对应签名方以及验证方,则基于SM9的数字签名过程如下。

首先是密钥生成:KGC 产生的随机数ke∈[1,N-1]作为加秘主私钥,计算Ppub-s=[ke]P1为加密主公钥、(ke,Ppub-s)则为加密主密钥对;

签名方①的标识为ID①,则为用户②所生成的加密私钥为de①,KGC 在有限域FN上计算t1=H1(ID②,N)+ke,,得到de①=[t2]P2。

其次是签名过程:假设有待签名的消息为A,则①的签名过程如下。

1)计算g1=(Ppub-s,P2);

2)选择随机数r∈[1,N-1];

3)计算w=gr,h=H(M\\w,N),l=(r-h)modN;

4)计算S=[l]de①,则A 的签名为(h,S)。

最后是验证过程:为验证消息M′的签名(h′,S′),②需要执行下述过程。

1)计算g1=(Ppub-s,P)2;

2)计算,h1=H(ID①,N);

3)计算P=[h1]P1+Ppub-s,u=e(P,S′),w′=u·t;

4)计算h2=H(2M′\\w′,N),假设h2=h′,则签名验证通过,反之失败[4]。

2 基于SM9 算法的互联网身份认证实现

本文涉及的符号定义如图1 所示。

2.1 参数初始化

由于本次技术方案重点采用了MS9 的公钥计算模式,因此在完成初始化参数之前,需要确定基点P1∈G1,P2∈G2。将这一过程中IGC 所产生的随机数集SkI∈[1,N-1]定义为私钥,而后设GI中包含的元素PkI∈[SkI]PI为公钥。由此,可以确定公私密钥对为(SkI,PkI)[5]。后续过程中,IGC 会公开PkI同时将SkI私钥存储于数据库之中。

为保障能够充分发挥SM9 算法的优势,IGC 应该基于IdI生成与其相对应的私钥SkI,而后在有限域FN之上完成t1=H(IdI,N)+SkI及t2=SkI·t1-1modN的计算,最终得到SkI=[t2]P2。这一过程如图2 所示,其中输入为空,输出为生成的公钥PkI及公钥的有效期限,同时对这一流程进行签名。参数初始化的流程形式如图2 所示。

图2 参数初始化的流程形式

2.2 生成用户身份标识

用户Ui在完成注册操作并认证成功后,IGC 会为该用户生成能代表其身份且具有唯一性的Idi及Ski分别作为该用户的公钥与私钥[6]。同参数初始化过程一般,IGC 会在有限域FN之上完成t1=H(Idi,N)+Ski以及t2=Skiti-1modN的计算,进而得到Ski=[t2]P2。为保障用户的隐私性,这一过程将采用离线模式,因此可以并保障IGC 所反馈给用户的信息不会泄露,同时还会将此作为身份认证信息利用共识机制上传于区块链之中,以满足用户后续的登录与验证行为[7]。

2.3 密钥更新

在用户有更新密钥的需求时,用户自身会充当IGC 的角色进行更新流程[8]。即用户通过指定的操作在相关系统中选择随机数k∈[1,N-1]作为这次更新活动的私钥。而后系统会自动计算G1中的元素Pki=[k]P1作为公钥。并在有限域FN之上完成t1=H(IdI,N)+k以及t2=k·t1-1modN的计算,进而得到Ski=[t2]P2。这一过程之后用户的基础身份信息不会发生改变,并且更新后的私钥为Ski,其参数为Pki,流程如图3 所示。这一流程中需要输入索引以及Hash 值,并输出密钥更新后的参数Pki及密钥的有效时间,进一步利用未更新之前的密钥对这一流程进行签名[9]。

图3 用户密钥更新形式

2.4 密钥更换

身份认证过程中存在因用户自身遗忘、泄漏密钥进而导致其无法更新密钥的情况。因此需要向IGC 主动发出更换密钥的申请,该过程与用户身份标识的过程存在相似性[10]。用户的身份标识保持不变,在IGC 接收到用户的更换密钥申请后,其会在有限域FN之上完成t1=H(IdI,N)+Ski以及t2=Skit1-1modN的计算,进而得到Ski=[t2]P2。具体流程如图4 所示。

图4 用户密钥更换形式

2.5 身份信息更换

在用户需要更换其自身的身份标识以更好地进行身份认证活动时,也同样需要向IGC 发出更换身份信息的申请。IGC 在接收申请后,会结合用户的需求为其重新生成一份具有唯一标识的身份标识符以及Ski作为其公钥与私钥。首先需要输入索引及Hash 值,用以在用户正式更换身份标识之前明确相关参数所在的位置,而后结合用户需求输出身份标识以及参数、有效期限等,最后对本流程进行签名。如若用户想要注销其身份信息,只需要将输出区域设置为空白即可,如图5 所示。

图5 用户注销身份信息形式

3 安全性及效率分析

首先,对用户口令安全方面进行分析。该技术方案中用户在不同服务器上进行身份认证的情况下,需要使用相同的口令以及不同的随机数,进一步利用该过程中所生成的Hash 值进行身份认证,因此相关用户在不同服务器系统中只需要记住统一的口令便可完成身份证操作。在有重新注册、更换终端设备等需求的情况下,只需使用统一的口令,便可对所有系统进行更新处理。

其次,对用户丢失终端的安全隐患进行分析。本技术方案中储存在用户终端设备上的随机数、私钥等信息都是经过特殊加密处理后的数据。假设存在用户终端设备丢失的情况,只要其他人无法提供正确的口令,便无法破解终端上所储存的用户私密信息。因此,即使在用户终端设备丢失的情况下,该技术方案仍可抵御口令猜测攻击、信息遗失等安全隐患,全面保护用户身份认证过程的安全性与隐私性。

最后,是他人仿冒用户身份进行认证方面的安全性分析。该技术方案中所发起的身份认证申请过程中的所有信息都是经过发起方数字签名及接收方公钥加密的,因此,不存在他人利用仿冒用户身份标识的情况完成身份认证。如果存在用户终端设备丢失,且他人仿冒用户身份进行验证的情况,只要他人在规定次数内没有输入正确的口令,该系统设备便会自动锁定相关程序应用,因此,他人无法仿冒用户的真实身份进行认证。同时,如上文所述,该技术方案存在一定的错误预设次数,这为用户的身份认证过程提供了一定的容错率,即使用户存在遗忘相关信息的情况,只要用户能够在规定的次数输入正确的口令,便能够完成身份认证。

4 结束语

综上所述,本次研究基于SM9 算法,进一步利用了区块链技术的优势,整理出了一种更具隐私性与效率性的互联网身份认证技术方案以及其配套的密钥管理方案,重点解决了既有SM9 算法中密钥更新的困境。采用本技术方案进行互联网身份认证的过程中,用户仅仅需要在首次注册后有第三方可信任IGC 为其生成独有的身份认证标识以及密钥,在后续的过程中便可以完全由用户自行操作,不会过度依赖IGC。并且后续过程中用户的交易形式、交流内容等都会储存于区块链之上,利用共识机制保障相关数据的安全性与真实可信性。此次提出的身份认证方案基本框架具有一定的推广与深入研究价值,未来可进一步加深研究,从而实现其在更广泛场景中的应用。

猜你喜欢
私钥公钥口令
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
高矮胖瘦
口 令
一种基于混沌的公钥加密方案
一种基于虚拟私钥的OpenSSL与CSP交互方案
好玩的“反口令”游戏
SNMP服务弱口令安全漏洞防范
HES:一种更小公钥的同态加密算法