一种面向共享用电的RSA改进算法及应用方案

2022-02-25 01:40峰2王俊龙3李志鹏鹏3谭赣江
测控技术 2022年1期
关键词:密钥解密扫码

王 军, 翟 峰2, 王俊龙3, 李志鹏, 李 鹏3, 谭赣江

(1.河南许继仪表有限公司,河南 许昌 461000; 2.中国电力科学研究院计量研究所,北京 100192;3.国网河北省电力有限公司,河北 石家庄 050000)

随着移动支付和二维码技术的成熟应用,用电领域也逐渐引入二维码和扫码用电技术实现扫码用电[1]和费用结算[2],使得充电桩、岸电、农排和共享电源等用电方式更加灵活便捷,极大地方便了电力用户,降低了电力公司运维管理成本,为共享用电[3]模式的推广和应用提供技术支撑。

随着共享用电模式的推广应用,如何保证扫码用电和支付过程中的信息安全,已成为制约共享用电模式发展的关键因素。由于以高级加密标准、混沌加密[4]为代表的对称加密算法[5]依赖于多个用户之间的共享密钥,容易在用户侧出现密钥泄露。因此,目前共享用电的信息安全策略多基于非对称加密算法,包括RSA算法、背包算法、数字签名算法等。其中背包算法安全性较低,容易被破解。数字签名算法仅能用于数字签名,不能进行数据加密解密。相对而言,RSA算法由于其加密函数求逆的困难性被认为是目前最安全的算法之一。但随着大数据分解技术的不断研究,RSA算法[6]被破解的概率也越来越高,在共享用电领域,这直接威胁到用电和支付过程中的数据和通道安全。近年来,针对RSA算法的安全性改进也在不断推新,但大多围绕增加大素数长度或分解密钥长度展开研究,无法解决算法中数据因子被直接攻击的问题。

针对上述问题,笔者提出一种基于ESAM(Embedded Secure Access Module,嵌入式安全控制模块)芯片的RSA改进算法及加密传输技术方案,采用托管密钥的方式保证扫码用电过程中的信息安全,解决了扫码用电APP的下载安全隐患和结算信息被篡改、钓鱼的难题,对信息安全的整体防护提供了有力的支撑。

1 共享用电的安全性保障方案

1.1 共享用电的系统架构

系统主要由基于密码机的云端主站、动态二维码生成模块以及设备本体(充电桩、农排费控终端[7]、岸电终端或其他共享用电终端)3个功能单元构成。其中,动态二维码生成模块主要由远程控制模块、MCU和安全加解密芯片构成。云端主站与动态二维码生成模块之间采用电力专网通信,动态二维码生成模块与设备本体之间采用本地通信(见图1)。

图1 共享用电的系统架构

用户请求扫码用电时,动态二维码生成模块会生成用电二维码订单信息。使用扫码APP完成识别后,订单信息将分别由APP和动态二维码生成模块内置的远程通信模块上传至云端主站。主站校验通过后产生用电指令,该指令被密码机生成的秘钥加密后送达动态二维码生成模块,后者使用内置安全加解密芯片完成解密操作,并最终将指令传达至设备本体,开启共享用电。

在通信过程中,动态二维码生成模块和主站侧密码机内嵌的安全ESAM芯片使用改进版的RSA算法,实现本地安全加解密管理。同时,二维码生成模块通过内嵌远程通信模块与主站进行安全连接、认证管理,保证二维码信息在生成和传递过程中不被篡改和钓鱼,并通过固定接口方式与设备本体实现电源取电及本地通信,借助设备本体实现二维码显示和负荷控制管理等核心功能。

1.2 安全加解密方案

上述共享用电的系统架构主要采用基于ESAM的非对称加密方案来解决APP下载和现场扫码过程中信息被篡改的问题,该方案采用非对称加解密+签名验签的方式进行统一密码服务。使用公钥加密、私钥解密、私钥签名、公钥验签的方式构建起共享用电的非对称加解密体制,如图2所示。以公钥加密,私钥解密的方式实现非对称加密算法,保障信息的保密性。解密操作仅在可信授权终端上才能完成,防止加密信息被拦截并破解。私钥签名、公钥验签用以保障信息的不可抵赖性,有效验证信息的来源,防止信息在传输途中遭到恶意篡改。二者结合使用提供双重保证,进一步增强共享用电系统的安全性。

具体而言,该方案利用正向分解运算量大、逆向运算量小的数学技巧对数据进行加解密处理。在发送方,对明文数据进行公钥加密形成密文,对密文数据进行哈希运算形成信息摘要,并通过私钥对信息摘要进行加密形成数字签名,通过密文+数字签名的方式进行数据传输。接收方接收到密文和数字签名后,首先对密文数据进行哈希运算,获取信息摘要A,通过公钥对数字签名进行解密,获取信息摘要B,对比信息摘要A和信息摘要B,如果相同,证明接收方的消息真实有效,否则说明数据信息被篡改。本方案中的加解密过程使用到了改进后的RSA算法。

1.3 RSA算法改进

传统RSA算法主要包含生成密钥、数据加密算法和数据解密算法三部分。

(1)生成密钥。

① 选取两个大素数α和β,且α≠β,计算乘积k,表示密钥长度。

图2 非对称加解密模型

k=α×β

(1)

② 计算k的欧拉函数值。

φ(k)=(α-1)×(β-1)

(2)

③ 选取任意整数e,满足1

x≡e-1(modφ(k))

(3)

④ 获取公钥为(e,k),私钥为(x,k)。

(2)数据加密算法。

R=Memodk

(4)

(3)数据解密算法。

依据发送者发送的密文数据,接受者可利用式(5)进行数据解密。

M=Rxmodk

(5)

观察上述公式可知,x作为解密密钥,可以利用其完成解密计算得到明文数据。若x被破译,则整个加密体系将失效。那么,如果需获取x,由式(3)可知需先获取e和φ(k);又由式(2)可知,若需获取φ(k),则需先获取α和β;再由式(1)可知,只有对k进行素数因子分解,才可能获取α和β。因此在传统的RSA算法中,如果k被分解,最终会导致x被成功获取,进而威胁到整体加密算法体系的安全性和可靠性。

由此可知,RSA算法存在密钥被攻击分解,造成算法失效的安全风险。笔者基于RSA算法,提出了托管密钥因子的概念,削弱了RSA算法中被攻击分解带来的安全隐患,进而优化整个扫码用电的安全算法。笔者将改进后的算法命名为ERSA算法,具体改进措施包括以下两个方面。

① 对素数α和β进行大小比较,产生托管密钥分散因子,消除带来的安全风险;

② 在解密算法计算过程中增加平方根操作,以对应加密算法中引入托管秘钥分散因子带来的改变。

基于上述分析,ERSA算法主要改进包括生成托管密钥、数据加密算法和数据解密算法三部分。

(1)托管密钥算法。

节段预制拼装造桥技术具有良好的经济、环境效益,近年来得到大力推广,其核心是通过体外预应力将预制节段“化零为整”。由于体外预应力需通过锚固块及转向块才能将预应力作用传递到梁体上,因此,这类桥梁关键构造在于预应力钢束锚固块及转向块,在设计时应重点考虑。

① 通过RSA算法式(1)获取k的值。

③ 比较α、β的大小,根据结果在对应约束下计算托管秘钥s,且满足gcd(s,k)=1,进而在后续的加解密算法中代替。

若α>β,则满足k-α

若α<β,则满足k-β

④ 将托管秘钥s代入式(3),可求出x′,则式(3)转变为

x′≡e1(modφ(s))

(6)

此时,公钥为(e1,s),私钥为(x,s)。

(2)数据加密算法。

发送者通过公钥对明文M进行数据加密,具体如式(7)。

R′=Me1mods

(7)

(3)数据解密算法。

通过发送者发送的密文数据,接收者依据式(8)进行数据解密处理,获取辛勤工作中明文M。

(8)

根据上述ERSA算法,托管密钥获取、加密算法和解密算法流程分别如图3~图5所示。

图3 ERSA算法托管密钥获取流程

图4 ERSA加密算法流程

图5 ERSA解密算法流程

在ERSA算法中,攻击者无法通过托管秘钥s分解得到α和β,继而无法计算得到私钥x。与此同时,由于托管秘钥s是在k、α、β所确定的约束范围内选取得到,拥有一定的随机性,故攻击者很难通过s推算得到k,增大了k被获取的难度,提升了数据传输的安全性。

2 基于ERSA算法的二维码生成方案及其应用

2.1 基于ERSA算法的动态二维码生成方案

将ERSA算法应用于二维码生成方案中,可有效保证信息传输的安全性和可靠性,该方案的核心内容包括ERSA算法加密及数字签名[9]、ERSA算法解密及数字验签、生成二维码编码和二维码扫描译码四部分,二维码加密方案如图6所示。

以充电桩扫码购电为例,介绍ERSA算法应用。

① 用户通过APP扫码请求购电,主站输出明文购电链接,通过密码机的ERSA算法生成公私钥对,使用公钥对输入的明文数据以及交易流水号、终端编号、时间等附加信息一起进行加密处理,生成密文数据。

② 密文数据通过电力专网传输到设备本体内的动态二维码生成模块,通过模块内的ERSA的解密算法进行数据解密。

图6 二维码加密方案

③ 动态二维码生成模块对ERSA算法解密的明文数据经过数据分析、数据编码、数据纠错、填充塞模等操作后生成相应的二维码并显示在终端屏幕上。

④ 用户扫描后,通过格式信息识别、版本信息确认、消除塞模、纠错码字恢复等二维码扫描译码等操作,最终在用户手机端显示出用电交易页面。

2.2 基于动态二维码的共享用电业务流程

基于动态二维码[8]的共享用电业务主要分为下载APP和扫码用电两个步骤,具体流程(图7)如下。

① 用户通过二维码下载APP业务。主站将配置好的APP下载地址通过密码机加密后以密文方式传输到本地动态二维码模块内,并通过内置的安全加解密芯片解密后与时间、终端编号等信息一起再次加密后生成APP下载地址的动态二维码,显示到显示屏上,供即时需要的用户即时下载、即时认证绑定,保证扫码用电的及时性与安全性。

② 用户扫码用电业务。动态二维码模块会根据设备编号、资产编号、时间等自动生成用电二维码订单信息,内置流水号、设备信息、位置信息、开始时间、开始表码、倍率等信息,供用户APP安全识别,并预授权一定金额后,生成用电订单信息,该信息通过动态二维码模块内置的远程模块和用户APP分别安全上送到主站,实现用电申请。申请通过后,主站以安全加密方式把用电指令下发给动态二维码模块内置的安全加解密芯片进行解密,通过解密后的指令向终端本体下发合闸指令,则用电开始。在用电过程中,动态二维码模块实时监测用电费用是否超过预授权金额[10],若超过则发出跳闸指令。在无跳闸情况下,可指导用户通过APP发出用电停止指令,主站接到用电停止指令后,首先通过密码机进行加密处理,然后通过远程通信模块下发给动态二维码模块。模块接到指令并验证指令的合法性,若合法则通知终端本体跳闸停止用电,结算费用[11],并生成相应的用电数据信息。本方案通过动态二维码模块上传至主站,保证扫码用电时的用户、用电、结算等敏感信息的安全可靠[12]。

图7 基于动态二维码的费控共享用电流程

3 结果分析

(1)时间开销方面。

在Windows系统下(CPU:8核,内存:8 GB)建立的仿真环境。利用VS 2010开发环境设计测试驱动,模拟底层驱动和模拟数据生成模块。通过预留的调用接口,分别调用RSA算法和ERSA算法对模拟数据进行加解密。通过测试工具IBM Rational Purify Plus对仿真测试程序进行插装,监测实时产生密钥用时及加解密运行过程的时间效率。

ERSA算法增加了大小判断,并用托管分散因子代替密钥及在解密时增加平方根运算。因此,ERSA算法在执行用时上相对于传统RSA有所上升。两种算法经过多次验证后选取三组相同的和经典素数,具体见表1。由表1可知,ERSA算法相对RSA算法的产生密钥用时上升9.23%,加解密用时上升5.69%,总用时上升7.28%。

表1 RSA与ERSA算法用时对比

(2)安全性方面。

由于RSA算法中公钥和私钥都包含密钥长度k,可以被分解,在公钥公开的情况下,如果k被破解,私钥随之被获取。基于上述分析,ERSA算法定义变量s,通过与取模转换运算获取s,代替k,从而使攻击者无法获取k,有效地提高了算法的安全性。

同时,针对基于RSA和ERSA算法的共享用电主站和APP采用AppScan、Burpsuite等测试软件通过弱点扫描、信息篡改、渗透攻击[13]等方法进行了安全功能测试和渗透测试,测试项目包括:越权访问、明文传输、SQL注入[14]、敏感信息泄露、数据保密性完整性等,具体测试数据如表2所示。由表2可知,基于ERSA算法相对RSA算法的共享用电系统的渗透测试问题率下降19.04%,功能安全的问题率下降17.76%。

表2 安全仿真测试数据

4 结束语

ERSA算法相对于传统的RSA算法在共享用电中的问题发生率平均下降18.28%,安全性和可靠性均有明显提升,为共享用电规模化应用提供了技术和安全保证,但其加解密运行时间略有增加,工作效率有所降低,有待进一步研究,在保证安全性的情况下,力争降低运行时间,提高工作效率。

猜你喜欢
密钥解密扫码
脐橙连上物联网 扫码便知“前世今生”
山之高
解密电视剧 人世间
幻中邂逅之金色密钥
幻中邂逅之金色密钥
炫词解密
浙江海宁“云证通”开启“码上生活”新方式
炫词解密
炫词解密
Android密钥库简析