一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种密钥处理方法、装置和终端设备与流程

2022-05-26 13:20:53 来源:中国专利 TAG:


1.本技术涉及存储技术领域,尤其是涉及一种密钥处理方法、装置和终端设备。


背景技术:

2.安卓(android)系统在很多场合需要使用到数据加密,比如本地登录密码加密,网络传输数据加密等。在网络传输时,为保证传输安全,终端设备之间做数据传输时通常需要加密,比如图1所示,手机终端1向手机终端2发送用户数据(比如日志文件)时,手机终端1需要先对日志app产生的日志数据进行加密处理,然后再将加密后的密文传输给手机终端2。手机终端2接收该加密密文后,利用密钥对其进行解密来获得原始用户数据。其中,用于加密或者解密的密钥,比如公钥和私钥,需要通过密钥材料以及一系列逻辑运算来获得。
3.当终端设备遭到攻击或非法入侵时,比如手机终端1被恶意用户root之后,会获取手机终端的各个安卓应用程序包(android application package,apk),然后从各个apk中获得密钥材料和相关的逻辑算法,进而通过这些密钥材料和逻辑算法可以恢复出密钥。一旦获得密钥后,就可以利用该密钥对加密密文进行解密,获取到用户原始数据,比如上述的日志数据,进而导致用户数据被泄露,数据传输的安全性难以保证。


技术实现要素:

4.本技术提供了一种密钥处理方法和装置,用于在多设备间共享数据场景下提升密钥的安全能力,从而提高数据传输的安全性,具体地,本技术公开了以下技术方案:
5.第一方面,本技术提供了一种密钥处理方法,该方法包括:第一应用从应用程序框架层获取删除apk中的资源asset目录文件的能力,所述asset目录文件中存储有根密钥材料,所述根密钥材料用于生成根密钥;在应用程序层中的所述第一应用启动进程后,在检测到所述根密钥材料生成根密钥,且所述根密钥已经被保存的情况下,通过所述能力将所述asset目录文件中的所述密钥材料删除。
6.本方面提供的方法,在应用程序层拓展了接口能力,该能力具有删除asset目录文件的功能,当由根密钥材料生成的根密钥存储后,利用拓展的接口能力删除根密钥材料,从而避免系统被root之后,恶意应用获取根密钥而威胁数据的安全,本方法删除了根密钥材料,提高了密钥安全性,降低共享密钥被泄露或盗取的风险。
7.另外,当需要再次使用根密钥材料时,可从存储单元中获取根密钥,而不再通过原根密钥材料重新生成,从而可以提高获得根密钥的效率。
8.结合第一方面,在第一方面的一种可能的实现方式中,通过所述能力将所述asset目录文件中的所述密钥材料删除,包括:所述第一应用获取待删除文件的文件名,以及该文件名的接入模式;在所述文件的接入模式为写模式时,调用资源管理器assetmanager服务的接口,将所述文件名所对应的文件删除;所述第一应用完成接口能力的调用后,关闭所述assetmanager服务。其中,所述第一应用为第一apk,且所述能力通过assetmanager服务的接口实现。本方法利用assetmanager服务的接口实现对asset目录文件中根密钥材料的删
除,从而降低根密钥材料被窃取的风险。
9.结合第一方面,在第一方面的另一种可能的实现方式中,所述根密钥材料生成根密钥,包括:第一应用从所述asset目录文件中获得分段式存储的根密钥材料,根据所述根密钥材料获得随机数种子,根据所述随机数种子获得安全随机数,根据所述安全随机数获得所述根密钥。
10.结合第一方面,在第一方面的又一种可能的实现方式中,根据所述根密钥材料获得随机数种子,包括:第一应用根据所述根密钥材料生成可编程语言的数据类型字符串,所述可编程语言的数据类型为biginteger;对所述biginteger类型的字符串进行位移、异或运算、哈希运算后,生成所述随机数种子。
11.结合第一方面,在第一方面的又一种可能的实现方式中,所述根密钥材料包括第一密钥材料、第二密钥材料和第三密钥材料,所述第一、第二和第三密钥材料分别用十进制表示所述biginteger类型的字符串为:b1、b2和b3。
12.一种可能的实现方式是,对所述biginteger类型的字符串进行位移、异或运算、哈希运算后,生成所述随机数种子,包括:将所述b1、b2和b3分别转换成二进制字符串,将b1转换后的二进制字符串向左移4位后,与b2转换后的二进制字符串做异或运算,运算结果转换成十进制的字符串后得到b4;对所述b4做哈希运算得到b5;将所述b5用二进制表示后的字符串向右移6位,与所述二进制表示的b3做异或运算,运算结果转换成十进制的字符串后得到b6;对所述b6做哈希运算得到b7,所述b7为第一随机数种子。
13.可选的,结合前述一种可能的实现方式,还另一种可能的方式,生成第二随机数种子,具体地,对所述b6做哈希运算得到b7之后,方法还包括:将所述b5用二进制表示后的字符串向左移6位,与二进制表示的所述b7做异或运算,运算结果转换成十进制的字符串后得到b8;对所述b8做哈希运算得到b9,所述b9为第二随机数种子。本实现方式在原有的b7的基础上,增加了两步运算得到第二随机数种子b9,且该第二随机数种子相比于第一随机数种子b7,运算过程变复杂,从而得到的随机数种子安全性更高,
14.可选的,所述根密钥存储在存储单元中,且存储在所述存储单元中的不同应用之间的所述根密钥都是互相隔离的。进一步地,所述存储单元为密钥保密柜或keystore。本实现方式中,由于在该存储单元中保存的不同应用的文件都是互相隔离的,并且由专业的安全工程人员开发和维护,因此可以保证存储单元中的数据在手机root之后不会被攻击者侵入,提高了根密钥的安全性。
15.结合第一方面,在第一方面的又一种可能的实现方式中,还包括:从所述存储单元中获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对第一数据进行加密生成第一加密密文;发送所述第一加密密文。
16.结合第一方面,在第一方面的又一种可能的实现方式中,还包括:接收所述第一加密密文,从所述存储单元中获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对所述第一加密密文进行解密得到所述第一数据。
17.第二方面,本技术还提供了一种密钥处理装置,所述装置包括:获取单元,用于从应用程序框架层获取删除apk中的asset目录文件的能力,所述asset目录文件中存储有根密钥材料,所述根密钥材料用于生成根密钥;处理单元,用于在所述应用程序层中的第一应用启动进程后,在检测到所述根密钥材料生成根密钥,且所述根密钥已经被保存的情况下,
通过所述能力将所述asset目录文件中的所述密钥材料删除。
18.结合第二方面,在第二方面的一种可能的实现方式中,所述处理单元,还用于获取待删除文件的文件名,以及该文件名的接入模式,在所述文件的接入模式为写模式时,调用assetmanager服务的接口,将所述文件名所对应的文件删除;在完成接口能力的调用后,关闭所述assetmanager服务。
19.结合第二方面,在第二方面的一种可能的实现方式中,所述处理单元,还用于从所述asset目录文件中获得分段式存储的根密钥材料,根据所述根密钥材料获得随机数种子;根据所述随机数种子获得安全随机数,以及,根据所述安全随机数获得所述根密钥。
20.结合第二方面,在第二方面的另一种可能的实现方式中,所述处理单元,还用于根据所述根密钥材料生成可编程语言的数据类型字符串,所述可编程语言的数据类型为biginteger,对所述biginteger类型的字符串进行位移、异或运算、哈希运算后,生成所述随机数种子。
21.结合第二方面,在第二方面的又一种可能的实现方式中,所述根密钥材料包括第一密钥材料、第二密钥材料和第三密钥材料,所述第一、第二和第三密钥材料分别用十进制表示所述biginteger类型的字符串为:b1、b2和b3。
22.所述处理单元,还用于将所述b1、b2和b3分别转换成二进制字符串,将b1转换后的二进制字符串向左移4位后,与b2转换后的二进制字符串做异或运算,运算结果转换成十进制的字符串后得到b4;对所述b4做哈希运算得到b5;将所述b5用二进制表示后的字符串向右移6位,与所述二进制表示的b3做异或运算,运算结果转换成十进制的字符串后得到b6;对所述b6做哈希运算得到b7,所述b7为第一随机数种子。
23.结合第二方面,在第二方面的又一种可能的实现方式中,所述处理单元,还用于将所述b5用二进制表示后的字符串向左移6位,与二进制表示的所述b7做异或运算,运算结果转换成十进制的字符串后得到b8;对所述b8做哈希运算得到b9,所述b9为第二随机数种子。
24.可选的,还包括存储单元,所述存储单元用于存储所述根密钥,且存储在所述存储单元中的不同应用之间的所述根密钥都是互相隔离的。
25.结合第二方面,在第二方面的又一种可能的实现方式中,还包括发送单元。所述处理单元,还用于从所述存储单元中获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对第一数据进行加密生成第一加密密文;所述发送单元,用于发送所述第一加密密文。
26.结合第二方面,在第二方面的又一种可能的实现方式中,还包括接收单元,所述接收单元,用于接收所述第一加密密文;所述处理单元,还用于从所述文件保密柜获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对所述第一加密密文进行解密得到所述第一数据。
27.第三方面,本技术还提供了一种终端设备,包括处理器和存储器,其中,所述处理器与所述存储器耦合,所述存储器用于存储计算机程序指令;所述处理器用于执行所述存储器中存储的所述指令,以使得所述终端设备执行前述第一方面及第一方面各种实现方式中的方法。
28.可选的,所述处理器和存储器可集成在一芯片系统中,所述芯片系统中还包括接口电路,所述接口电路用于实现所述芯片系统与外部的其它模块之间的通信。
29.另外,所述终端设备中还可以包括但不限于传感器模块、移动通信模块、无线通信模块、显示屏、摄像头、usb接口等等。
30.可选的,所述终端设备为手机或平板电脑,且该终端设备中搭载android操作系统。
31.第四方面,本技术还提供了一种计算机可读存储介质,该存储介质中存储有指令,使得当指令在计算机或处理器上运行时,可以用于执行前述第一方面以及第一方面各种实现方式中的方法。
32.另外,本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当该指令被计算机或处理器执行时,可实现前述第一方面以及第一方面各种实现方式中的方法。
33.需要说明的是,上述第二方面至第四方面的各种实现方式的技术方案所对应的有益效果与前述第一方面以及第一方面的各种实现方式的有益效果相同,具体参见上述第一方面以及第一方面的各种实现方式中的有益效果描述,不再赘述。
附图说明
34.图1为本技术提供的一种用户数据传输的结构示意图;
35.图2为本技术实施例提供的一种终端设备的结构示意图;
36.图3为本技术实施例提供的一种终端设备的软件结构示意图;
37.图4为本技术实施例提供的一种密钥处理方法的流程图;
38.图5为本技术实施例提供的另一种密钥处理方法的流程图;
39.图6为本技术实施例提供的一种密钥处理装置的结构示意图。
具体实施方式
40.为了使本技术领域的人员更好地理解本技术实施例中的技术方案,并使本技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术实施例中的技术方案作进一步详细的说明。
41.在对本技术实施例的技术方案说明之前,首先对本技术涉及的相关术语进行说明。
42.1、apk(安卓应用程序包)
43.android应用是用java编写的,利用android软件开发工具包(software development kit,sdk)编译代码,并且把所有的数据和资源文件打包成一个apk文件,它是一个后缀名为.apk的压缩文件,apk文件中包含了一个android应用程序的所有内容,是android平台用于安装应用程序的文件。简单来说,apk文件就是一个zip压缩包,解开这个压缩包可以获得以下结构信息,参见表1。
44.表1,apk文件结构
45.apk文件结构注释asset目录存放需要打包到apk中的静态文件lib目录程序依赖的native库文件res目录存放应用程序的资源文件
meta-inf目录保存应用程序签名信息和证书的目录androidmanifest.xmlandroid应用程序的配置文件classes.dexdex可执行文件resources.arsc资源配置文件
46.其中,资源asset目录(或assets目录),用于存放需要打包到apk中的静态文件,和res目录的不同点在于,asset目录支持任意深度的子目录,用户可以根据自己的需求任意部署文件夹架构,而且res目录下的文件会在.r文件中生成对应的资源id。asset目录不会自动生成对应的资源id,所以访问的时候需要资源管理器(assetmanager)。因此,android系统提供了应用程序框架层中的assetmanager拓展接口来访问asset目录或asset文件里的资源。其中,assetmanager是android系统中的资源管理器。
47.lib目录,用于存放应用程序依赖的native库文件,一般是用c/c 编写,lib库可以包含4中不同类型,根据中央处理器(central processing unit,cpu)型号的不同,大体可以分为arm处理器,arm-v7a,mips(million instructions per second,单字长定点指令平均执行速度),x86,分别对应着arm架构,arm-v7架构,mips架构和x86架构。
48.res目录,res是resource的缩写,该目录用于存放资源文件,存放在这个文件夹下的所有文件都会映射到android工程的.r文件中,生成对应的资源id,访问的时候直接使用资源id即r.id.filename。res文件夹下可以包含多个文件夹,比如动画文件、图像资源、一些特征值、颜色值、字符串的值、xml文件等等,这些文件在运行时可以通过resources.getxml()读取。
49.meta-inf目录,用于保存应用的签名信息,该签名信息可以验证apk文件的完整性。
50.androidmanifest.xml,是android应用程序的配置文件,是一个用来描述android应用“整体资讯”的设定文件,简单来说,相当于android应用向android系统“自我介绍”的配置文件,android系统可以根据这个“自我介绍”完整地了解apk应用程序的资讯。每个android应用程序都必须包含一个androidmanifest.xml文件,且它的名字是固定的,不能修改。在开发android应用程序时,一般会将代码中的每一个activity,service,provider和receiver在androidmanifest.xml中注册,只有这样系统才能启动对应的组件。另外这个文件还包含一些权限声明以及使用的sdk版本信息等等。
51.classes.dex,是dex可执行文件。一般情况下,android应用在打包时通过androidsdk中的dx工具将java字节码转换为dalvik字节码。dx工具可以对多个class文件进行合并、重组、优化,从而可以达到减小体积、缩短运行时间的目的。
52.resources.arsc,用于记录资源文件和资源id之间的映射关系,以及根据资源id查找资源。
53.2、res/raw和asset
54.android系统中的资源文件大致可以分为两种,分别是res/raw和asset。其中,res/raw目录下存放可编译的资源文件,这种资源文件系统会在r.java里面自动生成该资源文件的id,所以访问这种资源文件比较简单,通过r.xxx.id即可。
55.对于另一种asset,在asset目录下存放原生资源文件,比如可以存放一些图片,html,js,css等文件。其与res/raw的区别是,asset文件夹下的文件不会被映射到r.java
中,所以访问时需要assetmanager类。此外,asset可以包含目录结构,换句话说,asset目录下可以再建立文件夹,比如创建一个用于存储密钥材料的文件夹,而res/raw则没有目录结构。
56.3、aes算法
57.高级加密标准(advanced encryption standard,aes),在密码学中又称rijndael加密法,是美国联邦政府采用的一种区块加密标准。aes是一个迭代的、对称密钥分组的密码,aes算法具备加密强度大、执行效率高、使用简单等特点。其中,aes的分组区块长度固定为128位,密钥长度则可以是128,192或256位。并且密钥长度越长,加密等级越高。
58.aes算法在对明文加密时,会将明文拆分成一个个独立的明文块(分组),每一个明文块长度为128bit(比特),即16字节。将这些明文块经过aes加密器进行处理后,生成一个个独立的密文块,这些密文块拼接在一起,形成最终的aes加密密文。
59.4、biginteger
60.在java中有两个类,分别是biginteger和bigdecimal。其中biginteger表示大整数类,bigdecimal表示大浮点数类。javadoc定义了biginteger为不可变的任意精度的整数,biginteger提供了所有java基本整数操作符的对应方法,并提供了java.lang.math的所有相关方法。
61.例如,biginteger类可以包括的函数有:整数相加,add();整数相减subtract();相乘,multiply();相除取整,divide();取余数,remainder();等等。此外,还包括:将指定字符串转换为十进制表示形式,biginteger(string val);将指定基数的biginteger的字符串表示形式转换为biginteger,biginteger(string val,int radix)。例如,将一个整数的二进制补码的字节数组翻译为biginteger,biginteger(int,byte[])。或者,将一个字符串翻译为一个biginteger,该字符串中可能包含负号,后面跟着一个或多个十进制数字序列,biginteger(string,int)。将一个字符串翻译为一个biginteger,该字符串中可能包含负号,后面跟着一个或多个指定进制的数字序列。
[0062]
下面结合附图对本技术的应用场景和设备结构进行说明。
[0063]
本技术的技术方案可应用于数据传输的应用场景,比如图1所示的手机1与手机2之间的数据传输。其中传输的数据加一种加密密文,该加密密文可采用上述aes算法处理后生成。
[0064]
其中,所述终端设备可以是一种便携式设备,比如手机、平板电脑、可折叠终端、具备无线通讯功能的可穿戴设备(例如智能手表或手环)、用户设备(user device)或用户设备(user equipment,ue)设备等。本技术的实施例对终端设备的具体设备形态不做限定。另外,上述各种终端设备中需要搭载安卓(android)系统。
[0065]
参见图2所示,为本实施例提供的一种终端设备的结构示意图。该终端设备包括处理器110和存储器120,此外,还包括:usb接口130,电源管理模块140,电池141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键191,摄像头192,显示屏193等等。
[0066]
应理解,本实施例示意的结构并不构成对终端设备的具体限定。在本技术另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0067]
其中,处理器110可以由集成电路(integrated circuit,ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器110可以包括中央处理器(central processing unit,cpu)或数字信号处理器(digital signal processor,dsp)等。
[0068]
此外,处理器110还可以包括硬件芯片。该硬件芯片可以是专用集成电路(application specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。
[0069]
在一些实施例中,处理器110可以包括一个或多个接口。所述接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,sim接口和/或通用串行总线(universal serial bus,usb)接口等。
[0070]
存储器120,用于存储和交换各类数据或软件,包括根密钥材料,根密钥、待传输数据、加密密文、asset目录等文件。此外,存储器120中可以存储有计算机程序指令或代码。
[0071]
具体地,存储器120可以包括易失性存储器(volatile memory),例如随机存取内存(random access memory,ram);还可以包括非易失性存储器(non-volatile memory),例如只读存储记忆体(read only memory,rom)、快闪存储器(flash memory),硬盘(hard sisk drive,hdd)或固态硬盘(solid-state drive,ssd),存储器120还可以包括上述种类的存储器的组合。
[0072]
显示屏193可用于显示不同的应用界面,以及显示图片、照片、文本信息,播放视频/音频等媒体流等。具体的,显示屏193可包括显示面板和触控面板。其中显示面板可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板。触控面板也称为触摸屏、触敏屏等。在一些实施例中,终端设备可以包括一个或n个显示屏193,n为大于1的正整数。
[0073]
音频模块170、扬声器170a,受话器170b,麦克风170c可实现用户与终端设备之间的语音交互。其中音频模块170中包括音频电路,可将接收到的音频数据转换后的信号,传输到扬声器170a,由扬声器170a转换为声音信号输出。
[0074]
麦克风170c用于接收用户输入的声音信号,比如唤醒词、第一语音指令、第二语音指令等,将该接收的声音信号转换为电信号,再传输至音频模块170,音频模块170接收后将电信号转换为音频数据,再将音频数据输出至处理器110做进一步处理,得到语音指令对应的文本内容。
[0075]
传感器模块180可以包括至少一个传感器,比如压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,触摸传感器,指纹传感器等等。
[0076]
按键191包括开机键,音量键等。
[0077]
usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接
口,usb type c接口等。usb接口130可以用于连接充电器为终端设备充电,也可以用于终端设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如虚拟现实设备等。
[0078]
电源管理模块140用于连接电池141与处理器110。电源管理模块140为处理器110,存储器120,显示屏193,摄像头192,移动通信模块150和无线通信模块160等供电。在一些实施例中,电源管理模块140可以设置于处理器110中。
[0079]
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器(或基带芯片)等实现。天线1和天线2用于发射和接收电磁波信号。终端设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
[0080]
移动通信模块150可以提供应用在终端设备上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。无线通信模块160可以提供应用在终端设备上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wifi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0081]
在一些实施例中,终端设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds)。
[0082]
图3是本技术实施例提供的一种终端设备的软件结构示意图。以android系统的终端设备为例,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,android系统从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
[0083]
应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括:apk、桌面应用、联系人应用、通话应用、备忘录应用,以及相机,图库,日历,地图,导航,音乐,视频,短信息等应用程序。其中,每个应用程序可对应一个apk,比如第一应用对应为第一apk。同时,开发者可以利用java语言设计和编写属于自己的应用程序,且这些程序与核心应用程序之间彼此平等、友好共处。
[0084]
应用程序框架层是android应用开发的基础,它为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括窗口管理器(windowmanager)、活动管理器、资源管理器(assetmanager)、内容提供器、通知管理器(notificationmanager)。另外,还可以包括:视图系统、电话管理器等。
[0085]
其中,窗口管理器又可以叫窗口管理服务(window manager service,wms)。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0086]
活动管理器又可以叫活动管理服务(activity manager service,ams),ams可用于管理app的运行进程。app的运行进程包括app进程的启动、暂停和终止等。
[0087]
资源管理器(assetmanager)为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。此外还获取删除asset目录文件的能力,调用服务接口等。
[0088]
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0089]
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
[0090]
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0091]
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0092]
在android平台上,开发人员可以访问核心应用程序所使用的api框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
[0093]
安卓运行时(android runtime)包括核心库(core libraries)和虚拟机(dalvik virtual)。android runtime负责android系统的调度和管理。
[0094]
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
[0095]
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0096]
应用程序框架层以下的系统库和内核层等可称为底层系统,底层系统中包括用于提供显示服务的底层显示系统,例如,底层显示系统包括内核层中的显示驱动以及系统库中的表面管理器(surface manager)等。
[0097]
系统库可以包括多个功能模块。例如:surface manager,媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
[0098]
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
[0099]
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
[0100]
三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。
[0101]
2d图形引擎是2d绘图的绘图引擎。
[0102]
内核层(kernel)是硬件和软件之间的层。比如在linux kernel中至少包含显示驱动(display driver),摄像头驱动(camera driver),usb驱动,音频驱动,传感器驱动等。
[0103]
下面对本技术实施例的技术方案进行介绍。本技术提供了一种密钥处理方法,该方法在应用程序运行打包并安装完成apk之后,提供一种删除apk文件中的asset目录的内容的能力,从而提高数据传输的安全性。
[0104]
如图4所示,所述方法包括:
[0105]
101:第一应用从应用程序框架层获取删除apk中的asset目录文件的能力,所述asset目录文件中存储有根密钥材料。
[0106]
其中,所述asset目录文件中包括至少一个文件,其中的一个或多个文件用于存储密钥材料,所述密钥材料用于生成根密钥,因此,所述密钥材料又称为根密钥材料。所述根密钥材料可以分段地存储在asset目录文件下的一个或多个文件中。
[0107]
具体地,应用程序框架层中的assetmanager扩展接口,利用该接口可以向应用程序层提供删除所述apk中的asset目录文件的能力。可选的,所述扩展的接口为删除asset目录文件接口。比如,应用程序层的第一应用(比如第一apk)调用应用程序框架层的assetmanager服务接口,获取到assetmanager服务。
[0108]
102:应用程序层中的所述第一应用在启动进程后,在检测到所述根密钥材料生成根密钥,并且所述根密钥已经被保存的情况下,通过所述能力将所述asset目录文件中的所述密钥材料删除。
[0109]
具体地,包括:102-1:所述第一应用(即第一apk)获取待删除文件的文件名,以及该文件名的接入模式(accessmode)。
[0110]
所述待删除文件的文件名是所述asset目录文件中的至少一个文件,且所述待删除文件中存储根密钥材料。当第一应用启动后,第一应用预先知道存储有根密钥的文件的位置,从而知道该待删除文件在asset目录文件中的文件名。所述文件名的接入模式也可通过每个文件被记录的信息中获得,可以由应用程序层设置。其中,所述接入模式包括“读模式”和“写模式”。
[0111]
102-2:在所述文件的接入模式为写模式时,所述第一应用调用assetmanager服务的接口,将所述文件名所对应的文件删除。
[0112]
可选的,通过程序代码可表示为:delete(string filename,int accessmode)能力,其中,string filename为文件名,该文件名所对应的文件中包含有所述根密钥材料。
[0113]
102-3:应用程序完成接口能力的调用后,关闭assetmanager服务。具体地,所述第一应用通过assetmanager.close()关闭assetmanager服务。
[0114]
第一应用在第一次使用工作密钥对数据进行加密、解密时,由于此时加解密密钥尚未生成,需要获取密钥材料将密钥生成出来,并将生成密钥进行保存。由于已经保存了生
成的根密钥,所以可以将密钥材料删除,从而防止密钥材料被窃取或泄露,提高加密、解密文件的安全性。另外,后续如果需要再次对数据做加密或者解密时,可直接读取保存的根密钥即可,从而提高了获取根密钥的效率,提升了根密钥加载的性能。
[0115]
本实施例提供的方法,在操作系统已经对第一apk打包完成的阶段,应用程序包安装完成后,在对数据进行加密之前,如图5所示,执行以下方法步骤:
[0116]
201:第一apk从asset目录文件中获取分段地存储的根密钥材料,所述密钥材料在分为3段式存储的情况下,第一密钥材料、第二密钥材料和第三密钥材料分别为,第一密钥材料:r.string.key_part1;第二密钥材料:r.xml.key_part2;第三密钥材料:assets/key_part3。
[0117]
202:第一apk根据所述根密钥材料获得随机数种子(seed)。
[0118]
202-1:第一apk根据所述根密钥材料获得可编程语言的数据类型,比如biginteger,
[0119]
具体地,分别将第一、第二和第三密钥材料转换为对应的biginteger,所述biginteger简写为“b”。将所述第一密钥材料转换成的biginteger 1,简写为“b1”;将所述第二密钥材料转换成biginteger 2,简写为“b1”;将所述第三密钥材料转换成的biginteger 3,简写为“b3”。例如,在一具体示例中,将b1、b2和b3用十进制字符串表示,分别为:
[0120]
b1为9444126578703665168633460043876424480918**********。
[0121]
b2为7911060252592586426981353607020227916946**********。
[0122]
b3为7622454588259758393251114208350529478206**********。
[0123]
其中,“*”表示隐藏字符,该隐藏字符可以是0至9中的任意一个值。
[0124]
202-2:对所述biginteger类型的字符串b1、b2和b3进行位移、异或、哈希运算后,生成所述随机数种子。可选的,在一种实现方式中,步骤202-2具体包括:
[0125]
步骤1:将b1、b2和b3分别转换成二进制字符串,将b1转换后的二进制字符串向左移4位后,与b2转换后的二进制字符串做异或运算,将得到的运算结果再转换成十进制的字符串后,得到b4。
[0126]
具体的算法表示为:b4=(b1<<4)xor b2。
[0127]
其中,“<<”表示左移,“xor”表示异或运算。例如,字符串111向左移1位变成011。在本示例中,上述字符串经过异或运算后,得到的结果再转换成十进制数据,得到所述b4,所述b4为:111188794281548025620470671806376167272***************。
[0128]
步骤2:对所述b4做哈希运算得到b5,具体的算法表示为,b5=sha256(b4)。
[0129]
即根据sha256获取b4摘要。本示例中,得到b5为173732491064918790031985424697462761365****************。
[0130]
其中,sha256是sha-2下细分出的一种算法。sha-2,名称来自于安全散列算法2(英文:secure hash algorithm 2),一种密码散列函数算法标准,由美国国家安全局研发,属于sha算法之一,是sha-1的后继者。sha256可理解为是一个哈希函数。
[0131]
哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。散列值通常用一个短的随机字
母和数字组成的字符串来代表。对于任意长度的消息,sha256都会产生一个256bit长的哈希值,称作消息摘要。这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。
[0132]
步骤3:将所述b5用二进制表示后的字符串向右移6位,再与前述二进制表示的b3做异或运算,将得到的运算结果转换成十进制的字符串后,得到b6。
[0133]
具体的算法表示为:b6=(b5>>6)xor b3。
[0134]
其中,“>>”表示右移,例如,字符串111向右移1位变成1110。本示例中,将二进制字符串b6转化为十进制表示,可得b6为133286827664610164760628996991781805896*****************。
[0135]
步骤4:对十进制表示的字符串b6做哈希运算得到b7,所述b7为一种随机数种子,比如记为第一随机数种子(seed 1)。
[0136]
具体的算法表示为b7=sha256(b6)。本示例中,得到第一随机数种子b7为131551711321217258615457571909407500369***********************。
[0137]
本实施例通过根密钥材料b1、b2和b3可以得到第一随机数种子。
[0138]
可选的,在另一种具体的实现方式中,在上述“步骤4”中得到所述b7之后,还包括:执行以下步骤,得到第二随机数种子(seed 2),具体地,包括:
[0139]
步骤5:将所述b6转换为二进制字符串,然后将该二进制字符串向左移6位后,与b7做异或运算,然后再将异或运算得到的运算结果转换成十进制数据,得到b8。
[0140]
运算表示为:b8=(b6<<6)xor b7。本示例中,得到的b8通过十进制表示为23456456546876894330923457769879348884******************。
[0141]
步骤6:对b8做哈希运算得到b9,所述b9为第二随机数种子(seed 2)。
[0142]
具体地,用算法表示为b9=sha256(b8)。本示例中,得到第二随机数种子b9为:*****************************************。
[0143]
本实施例通过根密钥材料b1、b2和b3得到第二随机数种子,在上述步骤1至步骤4的基础上增加了步骤5和步骤6,增加算法复杂度,提升了随机数种子的安全性。
[0144]
需要说明的是,上述生成随机数种子的过程中,做“左移”或“右移”,或者“异或运算”的字符串均为二进制字符串,得到的第一随机数种子b7或第二随机数种子b9均为十进制字符串。“*”表示隐藏字符,该隐藏字符为十进制的0至9中的任意值。
[0145]
203:第一应用根据所述随机数种子获得安全随机数,其中,所述安全随机数为securityrandom。
[0146]
具体地,第一应用根据所述第一随机数种子或者第二随机数种子生成所述安全随机数。
[0147]
204:所述第一应用根据所述安全随机数获得根密钥。
[0148]
205:所述第一应用将所述根密钥存储在存储单元中。
[0149]
所述存储单元用于保存各个应用的关键资产(比如密码、密钥等信息),在该存储单元中保存的不同应用的文件都是互相隔离的,并且由专业的安全工程人员开发和维护,因此可以保证存储单元中的数据在手机root之后不会被攻击者侵入,提高了根密钥的安全性。
[0150]
可选的,所述存储单元为文件保密柜,或密码保险箱(keystore)。
[0151]
另外,在存储所述根密钥之前,所述应用程序层会对应用的身份进行校验,只有校验身份合法后,才允许将根密钥保持到存储单元中;否则,不允许存储所述根密钥。
[0152]
当检测到所述根密钥存储到所述存储单元中时,利用在系统中的扩展接口(删除asset目录文件接口),将所述根密钥材料删除。具体方法参见上述步骤101和102,此处不再赘述。
[0153]
206:当后续需要再次对文件进行加密时,第一应用可从所述存储单元中获取根密钥,并加载所述根密钥,以及利用所述根密钥生成工作密钥。
[0154]
例如,第一应用可利用该工作密钥对待传输数据(原文)进行加密生成第一加密密文,比如第一akp通过aes算法对备忘录数据进行加密,得到第一加密密文,并传输给第二应用。或者,第二应用可利用该工作密钥对所述第一应用发送的第一加密密文进行解密,得到原文,比如第二apk通过aes算法对所述第一加密密文进行解密得到备忘录数据。
[0155]
可选的,还可以通过其他方法利用工作密钥对数据进行加密、解密,本实施例对具体加密或解密的方法,以及过程不做限制。
[0156]
本方法,在应用程序层的应用拓展了接口能力,该能力具有删除asset目录文件的功能,当由根密钥材料生成的根密钥存储后,利用拓展的接口能力删除根密钥材料,从而避免系统被root之后,恶意应用获取根密钥而威胁数据的安全,本方法删除了根密钥材料,提高了密钥安全性,降低共享密钥被泄露或盗取的风险。
[0157]
另外,当需要再次使用根密钥材料时,可从存储单元中获取根密钥,而不再通过原根密钥材料重新生成,从而可以提高获得根密钥的效率。
[0158]
下面介绍与上述方法实施例对应的装置实施例。
[0159]
图6为本技术实施例提供的一种密钥处理装置的结构示意图。所述装置可以是一种终端设备,或位于所述终端设备中的一个部件,例如芯片或芯片系统。并且该装置可以实现前述实施例中的密钥处理方法。
[0160]
具体地,如图6所示,该装置可以包括:获取单元601、处理单元602、接收单元603和发送单元604。此外,所述装置还可以包括存储单元等其他的单元或模块。
[0161]
其中,获取单元601用于从应用程序框架层获取删除apk中的asset目录文件的能力,所述asset目录文件中存储有根密钥材料,所述根密钥材料用于生成根密钥。处理单元602用于在应用程序层中的第一应用启动进程后,在检测到所述根密钥材料生成根密钥,且所述根密钥已经被保存的情况下,通过所述能力将所述asset目录文件中的所述密钥材料删除。
[0162]
可选的,在本实施例的一种具体的实现方式中,处理单元602还用于获取待删除文件的文件名,以及该文件名的接入模式,在所述文件的接入模式为写模式时,调用assetmanager服务的接口,将所述文件名所对应的文件删除;在完成接口能力的调用后,关闭所述assetmanager服务。
[0163]
可选的,在本实施例的另一种具体的实现方式中,处理单元602还用于从所述asset目录文件中获得分段式存储的根密钥材料,根据所述根密钥材料获得随机数种子;根据所述随机数种子获得安全随机数,以及,根据所述安全随机数获得所述根密钥。
[0164]
可选的,在本实施例的又一种具体的实现方式中,处理单元602还用于根据所述根密钥材料生成可编程语言的数据类型字符串,所述可编程语言的数据类型为biginteger,
对所述biginteger类型的字符串进行位移、异或运算、哈希运算后,生成所述随机数种子。
[0165]
可选的,在本实施例的又一种具体的实现方式中,所述根密钥材料包括第一密钥材料、第二密钥材料和第三密钥材料,所述第一、第二和第三密钥材料分别用十进制表示所述biginteger类型的字符串为:b1、b2和b3。
[0166]
处理单元602,还用于将所述b1、b2和b3分别转换成二进制字符串,将b1转换后的二进制字符串向左移4位后,与b2转换后的二进制字符串做异或运算,将运算结果转换成十进制的字符串后得到b4;对所述b4做哈希运算得到b5;将所述b5用二进制表示后的字符串向右移6位,与所述二进制表示的b3做异或运算,运算结果转换成十进制的字符串后得到b6;对所述b6做哈希运算得到b7,所述b7为第一随机数种子。
[0167]
可选的,具体的算法表示为:
[0168]
步骤1:b4=(b1<<4)xor b2;
[0169]
步骤2:b5=sha256(b4);
[0170]
步骤3:b6=(b5>>6)xor b3;
[0171]
步骤4:b7=sha256(b6)。
[0172]
可选的,在本实施例的又一种具体的实现方式中,处理单元602还用于将所述b5用二进制表示后的字符串向左移6位,与二进制表示的所述b7做异或运算,运算结果转换成十进制的字符串后得到b8;再对所述b8做哈希运算得到b9,所述b9为第二随机数种子。
[0173]
可选的,具体的算法表示为
[0174]
步骤5:b8=(b6<<6)xor b7;
[0175]
步骤6:b9=sha256(b8)。
[0176]
可选的,所述存储单元,用于存储所述根密钥,且存储在所述存储单元中的不同应用之间的所述根密钥都是互相隔离的。
[0177]
可选的,在本实施例的又一种具体的实现方式中,处理单元602还用于从所述存储单元中获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对第一数据进行加密生成第一加密密文;发送单元604用于发送所述第一加密密文。
[0178]
可选的,在本实施例的又一种具体的实现方式中,接收单元603用于接收所述第一加密密文;处理单元602还用于从所述文件保密柜获取所述根密钥,利用所述根密钥生成工作密钥,利用所述工作密钥对所述第一加密密文进行解密得到所述第一数据。
[0179]
应理解,当所述密钥处理装置为一种终端设备时,比如手机或者平板电脑时,该终端设备的结构可以与前述图2相同,并且还可以包括其他更多或更少的部件,本技术实施例示意的结构并不构成对终端设备的具体限定。并且图2所示的部件可以以硬件,软件、固件或者其任意组合的方式来实现。
[0180]
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。例如,在前述图6所示的装置中的获取单元601和处理单元602的功能可以由处理器110来实现,接收单元603和发送单元604的功能可以由移动通信模块150或无线通信模块160来实现。所述存储单元的功能可以由存储器120实现。
[0181]
本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令。在计算机加载和执行所述计算机程序指令时,全部或部分地产生按照上述各个实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络
或者其他可编程装置。
[0182]
所述计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个通信设备、计算机、服务器或数据中心通过有线或无线方式向另一个通信设备进行传输。
[0183]
其中,所述计算机程序产品和所述计算机程序指令可以位于前述通信设备的存储器中,从而实现本技术实施例所述的设备检测方法。
[0184]
此外,在本技术的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本技术实施例的技术方案,在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0185]
以上所述的本技术实施方式并不构成对本技术保护范围的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献