公开/公告号CN112260820A
专利类型发明专利
公开/公告日2021-01-22
原文格式PDF
申请/专利号CN201911307439.8
申请日2019-12-18
分类号H04L9/08(20060101);H04W12/04(20210101);H04W12/122(20210101);H04W12/03(20210101);H04W12/30(20210101);H04W12/02(20090101);G06F21/83(20130101);G06F21/60(20130101);
代理机构
代理人
地址 100083 北京市海淀区花园北路48号塔5号楼0206号
入库时间 2023-06-19 09:36:59
所属技术领域:
本发明涉及信息安全领域,涉及Android移动终端设备的一种密钥拆分保护的密码键盘及其实现方法。
背景技术:
目前互联网技术快速发展,用户使用移动终端在网络环境中面临着各种威胁。在移动支付应用中,大量的个人隐私敏感数据如银行卡信息、身份信息和密码信息等会从系统键盘输入输出,从而暴露在不安全的环境中。攻击者可进行一系列基于键盘输入窃取的攻击行为,如对系统键盘进行数据监听、数据篡改,在输入时进行截屏、录屏攻击等。为了保护个人的数据隐私及安全,往往对服务器数据存储安全、客户端与服务器间的数据通讯安全做很好的加密保护,但却经常忽略了数据的第一入口保护。尤其在移动支付应用中,用户录入敏感信息时,应避免使用系统键盘,而使用自己定制的更加安全的键盘来保障用户的信息安全。但是,一般的安全密码键盘在加密时密钥会在内存中和本地存储时完整出现,攻击者可以利用此漏洞计算得到明文信息。而且一般的安全键盘在密码运算时并没有采用国产密码算法,如果“门锁”都是用国外技术、国外制造,就等同于安全的大门彻底敞开,面临重大安全风险。
针对移动支付应用中键盘安全威胁的存在,为解决用户在移动支付时敏感信息输入的安全问题,本发明提出了一种Android系统下基于密钥拆分保护的移动支付密码键盘实现方法。
发明内容:
本发明所述的一种Android系统下基于密钥拆分保护的移动支付密码键盘,主要由客户端密码键盘SDK和服务端的密码键盘服务平台构成,是采用国密算法SM2、SM3、SM4进行数据的安全加密保护,并将私钥进行分散加密存储,计算时不会出现完整的私钥明文。
所述的服务端的密码键盘服务平台实现数字信封的验证、解封与解密功能,得到用户密码原文。
所述密码键盘SDK中包括数据加密模块,密码键盘模块,安全传输模块。由密码键盘模块获取加密数据,数据加密模块进行加密保护,最后由安全传输模块将密文发送至服务端。
所述的密码键盘模块是在Android系统上绘制随机序列的数字键盘、字母键盘、符号键盘。该模块的设计分为三层。一层为交互层,负责处理用户的界面交互。一层为显示层,负责键盘数据的显示。一层为数据获取层,负责获取键盘输入数据的摘要值。在数据输入过程中,在发生截屏时,监听系统通知,清空键盘数据,关闭交互层功能,自定义通知提示用户,防止用户信息被窃取。
所述的数据加密模块完成逐字实时加密。在数据层获取到每个输入数据后,采用SM4算法,使用随机生成的对称密钥进行实时加密保护。
所述的安全传输模块采用SM2算法,包括生成设备密钥对和数字信封。该模块提取设备信息,通过密钥拆分算法生成完整的SM2算法私钥数据和公钥数据作为设备密钥对。该模块将通信消息封装成完整的数字信封发送至服务端密码键盘服务平台。
密码键盘SDK在使用前,对代码进加壳混淆处理,提供代码保护,防止反编译、逆向分析。
本发明具有以下有益效果:
1)键盘动态显示。提供用户交互的密码键盘界面,实现键盘信息与显示对应,结合键盘信息组装成键盘,且每次键盘显示动态变化。
2)采用即时加密技术保证密码键盘输入安全。实现每个键值输入即时加密,确保内存与存储中不出现用户密码原文。
3)本地存储的密钥拆分存储,计算中不出现完整密钥。
4)采用数字信封技术保证密码在传输过程中的安全。
5)所有密码运算均采用国产密码算法,包括SM2,SM3,SM4,从算法上保证了安全性。
6)客户端采用SDK方式易于部署和实现。
7)密码键盘SDK做代码混淆处理,防范反编译攻击、逆向分析。
8)自定义通知,在发生截屏时清空键盘数据,关闭交互层功能,并提示用户,防止用户信息被窃取。
附图说明:
图1为本发明模块结构示意图
具体实施方式:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
所述的服务端的密码键盘服务平台实现数字信封的验证、解封与解密功能,得到用户密码原文。
密码键盘SDK中包括数据加密模块,密码键盘模块,安全传输模块。由密码键盘模块获取加密数据,数据加密模块进行加密保护,最后由安全传输模块将密文发送至服务端。
所述的密码键盘模块是在Android系统上绘制随机序列的数字键盘、字母键盘、符号键盘。该模块的设计分为三层。一层为交互层,负责处理用户的界面交互。一层为显示层,负责键盘数据的显示。一层为数据获取层,负责获取键盘输入数据的摘要值。使用Android系统KeyBoardView类中API绘制键盘时,加入随机数,使得键盘显示层的键值信息动态发生变化,将获取到的键值做对应的 SM3摘要处理,经过变换的数据信息就代表点击的数据信息,从而在数据层仅出现一次点击时的明文信息,在摘要处理后,立即对数据信息的内存进行置零释放。
所述的数据加密模块完成逐字实时加密。在数据层获取到每个输入数据的摘要值后,采用SM4算法,使用随机生成的对称密钥进行实时加密保护。每次随机生成的对称密钥不进行存储。
所述的安全传输模块采用SM2算法,包括生成设备密钥对和数字信封。首次进行通讯时,该模块提取设备信息,通过密钥拆分算法生成完整的SM2算法私钥数据和公钥数据作为设备密钥对。并生成完整的数字信封发送至服务端密码键盘服务平台。
Android终端设备安全键盘的实现方法,包括如下步骤:
1)密码键盘模块加入随机值,生成动态变化的键盘。
2)密码键盘模块中对显示层的键值使用SM3算法计算对应的摘要值,置零释放键值信息。
3)数据加密模块获取用户当前点击的键值所对应的摘要值,随机生成对称密钥,采用SM4算法,进行实时加密,当用户完成全部输入后,将所有密文按顺序拼接,完整的密文存储在内存中。
4)实时监听系统通知,在发生截屏时清空键盘数据,关闭交互层功能,并提示用户,防止用户信息被窃取。
5)安全传输模块根据设备信息和随机因子按照密钥拆分算法生成拆分形式的SM2算法密钥对,密钥不完整出现,存储在应用路径下。
6)安全传输模块首次与后台安全通信使用SDK预置设备私钥封装完整的数字信封,内容包括设备公钥和设备ID标识。后续通信内容都使用该设备私钥封装完整的数字信封。
7)服务端平台收到数字信封要先验证再解封最后解密得到用户密码原文。
8)对代码进行混淆处理。
机译: 一种处理密码数据的方法,包括从初始密钥中随机选择派生密钥以补充初始密钥的位,并基于所选择的密钥实现派生过程
机译: 使用链接到基于密码的密码密钥安全方案的拆分秘密密码密钥的计算机系统
机译: 一种基于具有膨胀部分的新核心的加密方法-密钥和可执行密钥,以及在每种情况下对称和非对称密码学的一个示例,该方法作为该核心的表面