一种基于Android智能移动终端的通信密钥分配方法

文档序号:8000628阅读:169来源:国知局
一种基于Android智能移动终端的通信密钥分配方法
【专利摘要】本发明公开了一种基于Android智能移动终端的通信密钥分配方法,通过在Android操作系统的底层建立通用保密通信平台,使智能移动终端具备可以与保密通信支持网络进行交互,接收两级密钥,并对收到的业务密钥进行解密后再使用的功能,从而可以为VoIP保密电话、保密短信、保密视频通话、文件加密传输、安全移动支付以及其他需要保密支持的通信业务提供通用底层支撑。保密通信支持网络为改造后的智能移动终端提供各种通信业务所需的业务密钥,智能移动终端得到业务密钥后,使用其进行保密通信。
【专利说明】—种基于Android智能移动终端的通信密钥分配方法

【技术领域】
[0001]本发明涉及移动终端的保密通信技术,一种基于Android智能移动终端的通信密钥分配方法。

【背景技术】
[0002]目前,移动通信技术在日常生活中已经被广泛使用,但是其中大多数的通信过程并没有经过加密处理,容易被第三方非法窃听。虽然有的运营商在无线传输部分进行了加密处理,但是对于一些更高保密要求的情况,需要使数据流在整个传输过程中均处于加密状态,以防在中间过程中被监听,这就要求在移动通信的过程中,需要采用端对端的加密处理,也就是说,加密和解密环节分别位于主叫终端和被叫终端,这样,无论中间环节流经什么网络,都可以有效保护用户的信息安全。
[0003]通常意义上的移动终端,并不包含支持端对端保密通信的功能。因此,现有的一些改造技术一般是从移动终端硬件入手,为其添加加解密模块、密钥存储模块等,从而形成支持某种保密通信方式的特种移动终端。但这种方法一是成本昂贵,为了添加一个保密通信功能,就要新设计投产一个机型,技术门槛较高,不利于推广普及;二是从用户角度来说,多数人并不愿意仅仅为了拥有保密通信功能,就不得不更换一台新移动终端,他们更希望的是,能让自己原有的移动终端拥有保密通信功能。
[0004]随着Android智能操作系统近几年来的推广,其市场占有率不断提高。通过纯软件的方式改造Android智能手机或其他Android智能移动终端,使其在保持原有功能的前提下,新增高强度保密通信功能的想法成为可能。目前市面上也有一些Android环境下或其他移动操作系统下的简单通信加密工具,如加密短信之类的小应用软件。但由于难以解决密钥分配的问题,基本上都是采用数学算法或者是密钥重复使用(或变种重复使用)的方式进行加密,还有直接使用移动终端中的永久存储介质中的一个或多个文件/密钥块作为每次通话时的业务密钥,密钥容易被破解或被导出后破解,对安全性需求较高的场合并不胜任。而且,即使是这样的加密强度,目前在智能移动平台上也多限于短消息这样的少量信息加密,另外,这样的加密通信软件也只能为特定的一种或少数几种业务提供安全保护。有能力对VoIP电话、视频通话等大数据量通信业务提供一次一密级别支持的通用保密智能移动终端平台还非常缺乏。以应用层软件实现加密信息的做法还有某些不可靠性,因为它们是安装在Android操作系统中的应用软件,既然可以被用户安装,那么同样也可以被攻击者恶意卸载掉,因此其本身安全性也较为脆弱,不适用于对安全性要求高的场合。


【发明内容】

[0005]本发明的目的就是为了解决上述问题,提供一种基于Android智能移动终端的通信密钥分配方法,通过在Android操作系统的底层建立通用保密通信平台,使智能移动终端具备可以与保密通信支持网络进行交互,接收两级密钥,并对收到的业务密钥进行解密后再使用的功能,从而为VoIP保密电话、保密短信、保密视频通话、文件加密传输、安全移动支付以及其他需要保密支持的通信业务提供通用底层支撑。保密通信支持网络为改造后的智能移动终端提供各种通信业务所需的业务密钥,智能移动终端得到业务密钥后,使用其进行保密通信。
[0006]为实现上述目的,本发明采用如下技术方案:
[0007]一种基于Android智能移动终端的通信密钥分配方法,它的步骤为:
[0008](I)在Android操作系统的底层建立通用保密通信平台,并在应用层通信软件程序源码中调用通用保密通信平台API (Applicat1n Programming Interface,应用程序编程接口),将改造后的Android操作系统源码编译为镜像文件,烧写到智能移动终端中;
[0009](2)所述智能移动终端直接连接保密通信支持网络所属的密钥终端,下载本机与保密通信支持网络之间的共享密钥,保存在该智能移动终端中;共享密钥下载完毕后,智能移动终端与S钥终端断开连接;
[0010](3)通信业务发起后,智能移动终端通过调用系统底层的通用保密通信平台API,生成业务密钥获取线程,向保密通信支持网络申请本次通信所需的业务密钥;
[0011](4)保密通信支持网络收到所述业务密钥申请后,向参与通信的智能移动终端分配本次通信所需的业务密钥;
[0012](5)智能移动终端通过调用系统底层的通用保密通信平台API,从保密通信支持网络接收本次通信所需的业务密钥,并将其存放在智能移动终端的内存空间中;
[0013](6)智能移动终端使用该业务密钥进行保密通信。
[0014]所述步骤(I)中,通用保密通信平台的建立方法为:
[0015](1-1)在Android操作系统源码的C/C++framework层(C/C++本地框架层)中添加保密通信函数库,在其中实现保密通信相关基础功能,包括与保密通信支持网络的指令交互、密钥申请、密钥下载、密钥管理、加解密操作,并以JNI接口的形式向Android的Javaframework层提供调用,所述保密通信函数库在编译时将被编译成so库文件;
[0016](1-2)在Android操作系统源码的Java framework层(Java框架层)中添加保密通信类,该类应用所述JNI接口调用C/C++frameW0rk层中提供的保密通信函数库,并对其在Java framework层做进一步的封装和扩展,最后向更上层的应用层提供保密通信相关的系统API,即通用保密通信平台API,供各种应用层通信软件调用。
[0017]所述步骤(3)中,智能移动终端申请业务密钥的方法为:
[0018](3-1)通信业务发起后,系统底层的通用保密通信平台API被应用层通信软件调用,生成新的业务密钥获取线程,该线程通过无线方式获得与保密通信支持网络的连接;
[0019](3-2)所述连接建立后,智能移动终端向保密通信支持网络发送本次通信的相关信息,以申请本次通信所需的业务密钥,这些信息包括主叫终端和被叫终端的身份、验证信息、为何种业务申请业务密钥、业务密钥用途是加密还是解密。
[0020]进一步地,在所述步骤(4)中,保密通信支持网络向智能移动终端分配业务密钥的方法为:
[0021](4-1)建立网络服务端线程,用以等待智能移动终端业务密钥获取线程的连接;
[0022](4-2)与智能移动终端建立连接,并收到其业务密钥申请后,得知本次通信具体的业务类型、终端身份、验证信息、业务密钥用途,判断是否具备业务密钥申请的权限,为具备权限的智能移动终端分配要下载的业务密钥;
[0023](4-3)保密通信支持网络使用与智能移动终端的共享密钥,为要下发的业务密钥加密;
[0024](4-4)保密通信支持网络将加密之后的业务密钥通过无线方式发送到智能移动终端。
[0025]所述保密通信支持网络与智能移动终端的共享密钥,其特征是:
[0026]<1>所述保密通信支持网络中存储的共享密钥的头部保存有共享密钥当前使用信息,下载到智能移动终端的共享密钥,其头部信息被过滤掉;
[0027]〈2>保密通信支持网络为业务密钥加密时,从保密通信支持网络与智能移动终端的共享密钥头部信息中提取出该块共享密钥的当前使用位置,使用该位置处的共享密钥为要下发的业务密钥加密,并将该位置信息以隐含形式混在加密之后的业务密钥的空闲保留位中,然后相应地更新共享密钥的头部信息;
[0028]〈3>智能移动终端接收到保密通信支持网络发送的已加密的业务密钥后,提取其中隐含的位置信息,结合存储在智能移动终端中的与保密通信支持网络间的共享密钥,使用该位置处的共享密钥为接收到的业务密钥解密;
[0029]<4>保密通信支持网络与智能移动终端间的共享密钥量不足时,按照步骤(2)所述方法,智能移动终端从保密通信支持网络下载新的共享密钥。
[0030]所述步骤(5)中,智能移动终端接收业务密钥的方法为:一旦智能移动终端的业务密钥下载量达到了当前业务类型能够进行保密通信的最低阈值之后,即通知相应的应用程序,告知其业务密钥已经能够使用;然后一边使用一边继续下载,直到本次业务密钥下载完毕。
[0031]所述步骤(5)中的智能移动终端的内存空间,其特征是:
[0032](5-1)智能移动终端为每个业务密钥获取线程开辟一块逻辑上呈环形的内存空间,用于存放从保密通信支持网络接收到的业务密钥,该内存空间的大小取决于业务类型;
[0033](5-2)智能移动终端为每一个存放业务密钥的所述环形内存空间都设有一个读取位置指针,使用业务密钥进行保密通信时,从该指针所指位置读出相应数量的业务密钥,并使用该段业务密钥对通信信息进行加解密;该指针在环形内存空间中不断前进,始终指向下一次要读取的业务密钥首地址,当该指针越过环形空间末尾时,即从环形空间开头继续读取业务密钥;
[0034](5-3)智能移动终端为每一个存放业务密钥的所述环形内存空间都设有一个写入位置指针,从该指针所指位置开始,将接收到的业务密钥存储入环形内存空间;该指针在环形内存空间中不断前进,始终指向下一次要存储业务密钥的环形内存空间首地址,当该指针越过环形空间末尾时,即从环形空间开头继续写入业务密钥;每次向保密通信支持网络申请的业务密钥量不超过所述环形内存空间的大小;
[0035](5-4)第一次业务密钥下载后,当所述写入位置指针与所述读取位置指针在环形内存空间中各自所指位置的距离差到达一个设定的阈值时,智能移动终端向保密通信支持网络申请再次下载业务密钥;
[0036](5-5)本次通信业务结束后,存储业务密钥的内存空间被系统回收,其中的数据被销毁。
[0037]以上所述的共享密钥和/或业务密钥,其使用方式优选采用一次一密,同时也可作为各种流行的对称与非对称加解密的密钥而使用。
[0038]本发明主要特点在于:
[0039](I)在Android操作系统中,通过对Android系统的Java framework层及以下的改动,使操作系统具备由保密通信支持网络获取密钥的能力。且这种能力可以固化在操作系统中,不因应用层软件的变动而变动,并且在应用层提供API接口,使得第三方开发的其他应用层通信软件可以调用操作系统提供的底层保密通信支持,为自己的软件增加保密通信功能。
[0040]( 2 )通用保密通信平台独立于具体业务之外,运行在应用层的各种业务应用软件可以通过调用通用保密通信平台的API,在本应用软件内实现保密通信流程中的各种操作。
[0041](3)保密通信支持网络与智能移动终端的共享密钥的头部信息只存在于保密通信支持网络中,智能移动终端存储的该共享密钥副本不包含该密钥的当前使用位置等信息。这样,即使在极端情况下,比如移动终端失窃,与保密通信支持网络间的共享密钥被人导出,也无法据此判断出先前或此后的每次保密通信所使用的共享密钥的起始位置,从而难以破解出有效信息。
[0042](4)保密通信支持网络通过智能移动终端所发送的本次通信的相关信息,包括主叫终端和被叫终端的身份、验证信息、为何种业务申请业务密钥、业务密钥用途是加密还是解密等,唯一确定为某线程分配何种业务密钥。
[0043](5)每次通信时的业务密钥都是直到通信开始前才由智能移动终端申请,并由保密通信支持网络下发的;而且即使下发到智能移动终端,也只是存在临时开辟的内存空间中,通信完毕即被清除。
[0044](6)密钥可以由保密通信支持网络获取,特别是业务密钥可以实时获取,因此具备了对一次一密这样高强度加密方式的支持能力。
[0045](7)以逻辑上的环形内存空间作为业务密钥的存储方式,当密钥消耗到一定程度时续下载新密钥替换旧密钥。
[0046]本发明的有益效果是:它使Android智能移动终端具备从保密通信支持网络下载密钥的能力。它可以为运行Android系统的各种移动设备提供多种保密通信业务,尤其是为大数据量通信业务的一次一密式高强度保密提供底层软件平台支撑。这样,对于移动终端生产商来说,无需生产专门的特种加密移动终端,而只需要对本企业现有的一款支持Android操作系统的智能移动终端的源代码进行修改后,重新刷机即可。生产商还可以将加入了保密通信功能的完整ROM或升级固件以网络或光盘的形式提供给客户,由客户方自己来完成移动终端的升级改造。对于智能移动终端用户来说,可以很方便的让自己的现有智能移动终端加入保密网络,具备高强度保密通信功能,而无需做任何硬件改动。对于Android平台上的各种通信应用软件的开发者来说,如果希望自己的软件中也可以应用这些保密通信功能,只需要调用系统底层新添加的保密相关的API为自己软件的通信数据流加解密即可。
[0047]另外,本发明的作用是提供了一种在Android操作系统的底层建立通用保密通信平台的方法,并通过该通用保密通信平台,配合保密通信支持网络实现了对通信业务密钥的分配,该方法并不针对特定通信业务和终端,因此应用范围并不局限于智能移动终端,还可以直接或稍加变换后应用于运行Android系统的智能电视、机顶盒等等,使这些设备同样具备在本机软硬件条件允许的前提下进行保密通信的能力。由于在本发明中,对Android操作系统的修改在Java framework层和本地C/C++framework层,而不在应用软件层,因此保密能力是固化在操作系统中的,而不会像某些保密应用软件那样可以被人恶意卸载或替换,其安全性大大提高。而且,相对于市面上那些针对某种具体业务的保密通信应用软件来说,本发明可以为应用层的任意第三方通信程序提供保密服务,其通用性、可扩展性和兼容性都具备优势。

【专利附图】

【附图说明】
[0048]图1为Android操作系统的软件层次结构示意图;
[0049]图2为移动终端下载与保密通信支持网络间的共享密钥过程示意图;
[0050]图3为保密通信支持网络处与移动终端处存储的共享密钥对比示意图;
[0051]图4为业务密钥分配过程示意图;
[0052]图5为双向实时通信业务中的业务密钥交叉分配示意图;
[0053]图6为移动终端处业务密钥的存储结构逻辑图。

【具体实施方式】
[0054]下面结合附图与实施例对本发明做进一步说明。
[0055]本发明旨在提供一种基于Android智能移动终端的通信密钥分配方法,该方法由以下若干步骤及部分组成:
[0056](I)在Android操作系统的底层建立通用保密通信平台,并在应用层通信软件程序源码中调用通用保密通信平台API,将改造后的Android操作系统源码编译为镜像文件,烧写到智能移动终端中。
[0057]所述Android操作系统底层的通用保密通信平台的具体实现方式是,在Android源码的C/C++framework层中添加保密通信基础函数库,该库可添加在b1nic中(也可在其他位置添加,b1nic为优选方案)。在保密通信基础函数库中实现与保密通信支持网络(保密通信支持网络独立于智能移动终端之外,是负责产生密钥和为智能移动终端分发密钥的网络拓扑实体,它能够接收智能移动终端的密钥申请,配合智能移动终端的通用保密通信平台的相关功能,向智能移动终端提供通信业务所需的各级密钥,密钥可以采用量子密钥,也可以使用其他传统密钥)的指令交互、密钥申请、密钥下载、密钥管理、加解密操作等保密通信相关基础功能。由于b1nic是Android C/C++framework层(关于Android操作系统的软件层次结构如图1所示,第三方开发者编写的APP均位于应用软件层,相对来说,其下的Java框架层、C/C++本地框架层与Android运行时环境,及Linux内核层在本文中统称为Android系统底层。系统底层是操作系统的基础部分,固化在智能移动终端中,无法像应用软件层的软件那样可以被使用者任意安装和卸载)中使用的基础C语言库,因此在这里新加入的函数也被当做Android系统的基础函数库的一部分,可以在Android C/C++framework层内任意调用。然后,再在Andro i d C/C++framework层中添加保密通信高级函数库,它调用b1nic中的密钥下载、密钥管理等等基础函数功能,并在此基础上进行封装和扩展,以JNI的形式向Android的Java framework层提供调用接口,C/C++framework中的保密通信函数库将被编译成SO库文件。在Android的Java framework层,添加保密通信类,它应用所述JNI接口调用C/C++framework层中提供的保密通信高级函数库,并对其在Java framework层做进一步的封装和扩展,最后向更上层的应用层提供保密通信相关的系统API (这些新增的API与Android系统官方自带的系统API在使用上没有任何本质区别),即通用保密通信平台API,供各种应用层通信软件调用。这样,其他人编写的各种基于Android系统的应用通信程序就都可以调用这些新加的系统API来实现连接保密通信支持网络、下载密钥、力口解密等等各种操作。对于不同的应用层软件来说,底层提供的API是统一的,在调用时只需针对不同业务修改调用参数即可。以VoIP业务中触发密钥下载部分为例:在Android系统应用层的VoIP通话软件源代码特定位置(一般是在发起/收到通话请求与真正建立通话之间的业务流程代码中),加入对Android系统底层的通用保密通信平台的“密钥申请” JavaAPI的调用代码,配以相应的参数,即可实现在合适的时机触发对所需业务密钥申请的功倉泛。
[0058]当然,系统底层的通用保密通信平台的具体实现方式和调用方式还可能有许多变种,例如将Android C/C++framework层的基础函数库和高级函数库两部分合并在一起,或者干脆是将C/C++framework层中定义的保密通信函数库的功能移到Java framework层来实现等等。但完全在Java framework层实现容易被反编译,因此,较安全的方法,还是将通用保密通信平台的核心功能放在Android C/C++framework层中实现,这样编译出来的so库文件难以被有效反编译,在最大程度上保护了密钥的获取及使用细节和加解密算法的实现细节。
[0059]另外,C/C++framework层和Java framework层的各个函数接口也可以被位于操作系统同一层的其他源码所调用。例如,如果不采用在应用层对新增系统API调用的方式,也可以在Android原生VoIP的C/C++framework层部分对通用保密通信平台的C/C++函数库直接调用,或在Android原生VoIP的Java framework层部分对通用保密通信平台的JavaAPI直接调用。当然,由于这种方法涉及修改Android底层代码,因此不适合第三方应用层软件的开发者使用。
[0060]对Android源代码修改完成后,重新编译源代码,生成包含有通用保密通信平台的新Android操作系统镜像文件,并将该镜像文件烧写到智能移动终端中。
[0061](2)所述智能移动终端直接连接保密通信支持网络所属的密钥终端,下载本机与保密通信支持网络之间的共享密钥,保存在该智能移动终端中;共享密钥下载完毕后,智能移动终端与S钥终端断开连接。
[0062]如图2所示,移动终端A和B通过有线方式,分别连接密钥终端Tl和T2 (理论上,移动终端可以连接Tl-Tn的任何一个密钥终端,实际使用中用户往往选择距离自己较近的密钥终端),这两个密钥终端均属于保密通信支持网络S的一部分,移动终端A、B分别下载本机与保密通信支持网络S之间的共享密钥key (S-A)和key (S-B),保存在本机的存储卡中。共享密钥下载完毕后,移动终端与密钥终端断开有线连接。key (S-A)和key (S-B)可以被保密通信支持网络S由多种方式生成,例如:
[0063]〈1>在量子保密通信中,保密通信支持网络可以使用内部的量子密钥收发装置,可以在密钥终端处直接生成量子密钥;
[0064]〈2>在经典保密通信中,保密通信支持网络可以使用各种经典随机数发生装置及算法,单独生成密钥,然后通过经典网络传输到密钥终端。
[0065]所述保密通信支持网络中存储的共享密钥的头部保存有共享密钥当前使用信息,例如,保密通信支持网络S与移动终端A之间的共享密钥key (S-A)当前已经使用到了什么位置;在下载时,头部信息被过滤,不下载到移动终端中去,这部分只保留在保密通信支持网络端(如图3所示),以减少移动终端中存储的共享密钥一旦被攻击者恶意盗取后的损失。如果缺少了这些关键定位信息,面对庞大的共享密钥数据块,攻击者将很难定位之前通信时使用的是哪一部分密钥,之后还将会使用哪一部分密钥。
[0066]步骤(3)- (6)的总体流程如图4所示,以VoIP通话业务为例,详细实施部分如下所述:
[0067](3)通信业务发起后,智能移动终端通过调用系统底层的通用保密通信平台API,生成业务密钥获取线程,向保密通信支持网络申请本次通信所需的业务密钥。这部分包含以下内容:
[0068]<1>当主叫移动终端发出呼叫,以及被叫移动终端收到呼叫时,相应的应用层通信软件均会调用系统底层的通用保密通信平台API,创建新的业务密钥获取线程,连接保密通信支持网络,申请下载本次通话所需的业务密钥。不同通信业务可以根据自己的需要申请业务密钥,例如VoIP电话软件可以选择申请几MB的业务密钥,而SMS短消息软件可以选择申请几百字节的业务密钥,这些不同体现在调用系统底层的通用保密通信平台API时的参数不同。每个智能移动终端需要创建两个线程,分别用于下载加密通话业务密钥和解密通话业务密钥,前者用于加密自己的语音,后者用于解密对方加密后的语音。
[0069]<2>所述业务密钥获取线程通过无线方式与保密通信支持网络建立连接后,智能移动终端向保密通信支持网络发送本次通信的相关信息,包括主叫终端和被叫终端的身份、验证信息、为何种业务申请业务密钥(VoIP业务)、业务密钥用途是加密还是解密,以便保密通信支持网络为其提供业务密钥。
[0070](4)保密通信支持网络收到所述业务密钥申请后,向参与通信的智能移动终端分配本次通信所需的业务密钥。这部分包含以下内容:
[0071]〈1>建立网络服务端线程,用以等待智能移动终端业务密钥获取线程的连接。
[0072]〈2>与智能移动终端建立连接,并收到其业务密钥申请后,得知本次通信具体的业务类型、终端身份、验证信息、业务密钥用途,判断该智能移动终端是否具备申请业务密钥的权限。如具备权限,则根据该智能移动终端所提供的信息为其分配要下载的业务密钥。例如,如果本次通信是VoIP通话,那么分配的业务密钥将会以MB为单位,如果是SMS短消息,那么只需分配几百字节的业务密钥即可。以一次一密为例,业务密钥是一串由随机数组成的对称密钥,由保密通信支持网络生成,其生成方式可以采用量子方式、软件算法、物理性随机数发生方法等等。
[0073]为VoIP业务分配密钥时,分配给主被叫移动终端的加解密业务密钥应为交叉关系,即所分配的主叫移动终端的加密业务密钥对应于被叫移动终端的解密业务密钥,所分配的主叫移动终端的解密业务密钥对应于被叫移动终端的加密业务密钥。如图5所示,移动终端A与B通信,保密通信支持网络S将业务密钥Kl传输给移动终端A,作为其加密业务密钥,同时将业务密钥Kl传输给移动终端B,作为其解密业务密钥;同理,保密通信支持网络S将业务密钥K2传输给移动终端B,作为其加密业务密钥,同时将业务密钥K2传输给移动终端A,作为其解密业务密钥。
[0074]〈3>保密通信支持网络使用与智能移动终端的共享密钥,为要下发的业务密钥加密。保密通信支持网络为业务密钥加密时,从保密通信支持网络与智能移动终端的共享密钥头部信息中提取出该块共享密钥的当前使用位置,使用从该位置开始向后的共享密钥为要下发的业务密钥加密,并将该位置信息以隐含形式混在加密之后的业务密钥的某些空闲保留位中,以告知智能移动终端在为收到的业务密钥解密时,也同样应该从与保密通信支持网络的共享密钥的此处开始使用。保密通信支持网络每次消耗掉一部分与某台智能移动终端的共享密钥后,该共享密钥的头部信息都要更新,以准确反映最新的共享密钥使用情况。
[0075]〈4>保密通信支持网络将加密之后的业务密钥通过无线方式发送到智能移动终端。
[0076](5)智能移动终端通过调用系统底层的通用保密通信平台API,从保密通信支持网络接收本次通信所需的业务密钥,并将其存放在智能移动终端的内存空间中。
[0077]所述智能移动终端接收到保密通信支持网络发送的已经加密的业务密钥后,提取其中隐含的位置信息,这里的位置信息指明了该智能移动终端与保密通信支持网络间的共享密钥的使用位置;再结合存储在智能移动终端中的与保密通信支持网络间的共享密钥,就可以知道应该从哪个位置开始使用共享密钥,为接收到的业务密钥解密。使用时,一个优选的方式是,无论是每次通话所需的业务密钥,还是智能移动终端与保密通信支持网络间的共享密钥,都是一次一密,使用过的密钥不再重复使用,以确保高安全度。当然,也支持其他的密钥使用方式,如各种流行的对称及非对称加密算法。所述共享密钥量不足时,按照步骤(2)所述方法,智能移动终端从保密通信支持网络下载新的共享密钥。
[0078]由于VoIP通话具有时间跨度和实时要求,所需业务密钥量较大,如全部下载完成耗时可能较长,因此不能等业务密钥都下载完毕后再开始通话。由于业务密钥下载速度远高于业务密钥使用速度,所以一旦智能移动终端的业务密钥下载量达到了能够进行VoIP保密通话的最低阈值之后,即可以通知VoIP应用程序,告知其业务密钥已经能够使用,然后一边使用一边继续下载,直到本次业务密钥下载完毕。
[0079]智能移动终端为每个业务密钥获取线程开辟一块逻辑上呈环形的内存空间(如图6所示),其大小取决于本次通信的业务类型,这块环形内存空间用于存放从保密通信支持网络接收到的业务密钥。这样的好处是真正用于通话的业务密钥并不实际落地存储在移动终端永久介质中,而是通话完毕后即被从内存中清除,既防止事后被人导出,也确保了每次通话的业务密钥不被反复使用。
[0080]智能移动终端为每一个存放业务密钥的所述环形内存空间都设有一个读取位置指针,指向该环形内存空间的某个位置,当需要对一段通信明文(密文)进行加密(解密)时,从该指针所指位置读出相应数量的业务密钥,并使用该段业务密钥对通信明文(密文)进行加密(解密);该指针在环形内存空间中不断前进,始终指向下一次要读取的业务密钥首地址,当该指针越过环形空间末尾时,即从环形空间开头继续读取业务密钥。对于VoIP业务来说,在一次通话中,这样的环形内存空间要有2个,分别存放用于加密的业务密钥和用于解密的业务密钥。同时,智能移动终端为每一个存放业务密钥的所述环形内存空间还都设有一个写入位置指针,从该指针所指位置开始,将接收到的业务密钥存储入环形内存空间;该指针在环形内存空间中不断前进,始终指向下一次要存储业务密钥的环形内存空间首地址,当该指针越过环形空间末尾时,即从环形空间开头继续写入业务密钥;每次向保密通信支持网络申请的业务密钥量不超过所述环形内存空间的大小。第一次业务密钥下载后,当所述写入位置指针与所述读取位置指针在环形内存空间中各自所指位置的距离差到达一个设定的阈值时,智能移动终端向保密通信支持网络申请再次下载业务密钥
[0081]例如,第一次业务密钥下载后,将存放该业务密钥的环形内存空间的前50%填满;当该业务密钥使用到环形内存空间的25%刻度时,智能移动终端向保密通信支持网络申请再次下载业务密钥,然后从保密通信支持网络再下载50%的密钥量,填入环形内存空间的后50%处;同理,当业务密钥的使用量达到环形内存空间的75%刻度时,智能移动终端从保密通信支持网络再续下载50%的密钥量填入环形内存空间的前50% ;所述续下载的新业务密钥将原先相同位置上的旧业务密钥替换掉。在VoIP、视频通话等单次通信时间可能较长、密钥消耗较快的业务中,随着通信时间延长,下载到智能移动终端内存中的业务密钥不一定够用,此时智能移动终端就会通知保密通信支持网络,继续下载业务密钥以供使用。
[0082]由于业务密钥存储在智能移动终端的内存中,而非永久存储设备上;随着通信业务的结束,存储业务密钥的内存空间被操作系统回收,其中的数据也被销毁,无法再次利用和读出。
[0083](6)智能移动终端使用所述业务密钥进行保密通信。通信双方用各自的加密业务密钥加密明文后发给对方,收到对方的密文后用相对应的解密业务密钥解密得到明文。
[0084]本实施方式主要实现了一种基于Android智能操作系统的通用保密通信平台,以及基于该平台的通信密钥分配方法,对于通信密钥使用时的具体技术细节,不在本发明的讨论范围之内。例如,本实施例中优选使用从保密通信支持网络下载到的对称业务密钥对通信信息进行一次一密式的加解密操作,但并不排斥利用该平台及分配方法对非对称密钥进行分发,也不排斥对业务密钥进行使用时采用非一次一密的加解密处理方式。
[0085]实施例补充说明:
[0086]以上的【具体实施方式】是以VoIP业务为例详述的,也同样适用于视频通话等领域,这些业务的共同特点是实时双向交互,且信息量较大,单次业务密钥分配可能无法满足全程通信需求等。
[0087]另外,还有一类通信业务,例如SMS短消息。它并非是实时双向交互,而更类似于一问一答,而且其单次信息量很少。对于这样的业务,在具体实施时,可以做如下的改动:
[0088]<1>在智能移动终端为业务密钥开辟内存空间时不需要将其设置为逻辑环形,因为SMS信息很短,所需业务密钥也很少,完全可以一次下载到位,无需续下载。
[0089]<2>不像VoIP业务的双向实时交互那样,保密通信支持网络需要为每次通话准备两块业务密钥(如图5所示)。在SMS通信时,对于同一条SMS消息来说,保密通信支持网络只需要准备一块业务密钥,分别给发送方用于加密,给接收方用于解密就可以了。同理,智能移动终端也只需创建一个线程,向保密通信支持网络申请所需业务密钥即可。
[0090]<3>SMS短信发送方在发送密文前,就要向保密通信支持网络申请加密业务密钥;而接收方需要等到短信收到后,再向保密通信支持网络申请解密业务密钥。由于运营商网络的缘故,这中间的时间间隔可能会稍长,因此在保密通信支持网络端,需要将发送方的业务密钥申请信息暂时记忆一段时间,等待接收方的业务密钥申请到了之后,再比对是否匹配。
[0091]<4>由于SMS信息较短,因此无需像VoIP那样,业务密钥下载一部分后,再通知业务程序可以开始使用;而完全可以等本条SMS短信所需的业务密钥全部下载完成后,再开始使用。
[0092]在不超出本发明所提出的技术方案框架内,针对如SMS短消息这类的非实时、非双向交互通信业务所进行的如上改动,或者其他容易想到的变通或改动,均属本发明保护范围之内。
[0093]通信业务类型种类繁多,本发明的实施例主要以VoIP为例讨论了一种基于Android智能移动终端的通用保密通信平台的创建与应用,以及基于该平台的通信密钥分配方法。但本发明所提出的技术方案的应用范围不仅限于所提到的VoIP、短消息、视频通话等,其他通信业务类型也可以通过本发明所提供的通用保密通信平台来实现保密通信;在其他具体通信业务中,对所述通用保密通信平台的调用细节的变化(如调用时机、调用位置、业务密钥申请/下载的具体参数、内存空间的管理等),应视为对本发明所提出的技术方案的具体应用变形,均属本发明保护范围之内。
[0094]另外,本发明不止可以用于Android智能移动终端的改造,也同样可以直接或稍加改动之后,应用于其它能够运行Android操作系统的终端设备,如智能电视、机顶盒等,为这些智能设备提供与之功能相对应的保密信息服务。
【权利要求】
1.一种基于Android智能移动终端的通信密钥分配方法,其特征是,它的步骤为: (1)在Android操作系统的底层建立通用保密通信平台,并在应用层通信软件程序源码中调用通用保密通信平台API,将改造后的Android操作系统源码编译为镜像文件,烧写到智能移动终端中; (2)所述智能移动终端直接连接保密通信支持网络所属的密钥终端,下载本机与保密通信支持网络之间的共享密钥,保存在该智能移动终端中;共享密钥下载完毕后,智能移动终端与S钥终端断开连接; (3)通信业务发起后,智能移动终端通过调用系统底层的通用保密通信平台API,生成业务密钥获取线程,向保密通信支持网络申请本次通信所需的业务密钥; (4)保密通信支持网络收到所述业务密钥申请后,向参与通信的智能移动终端分配本次通信所需的业务密钥; (5)智能移动终端通过调用系统底层的通用保密通信平台API,从保密通信支持网络接收本次通信所需的业务密钥,并将其存放在智能移动终端的内存空间中; (6)智能移动终端使用该业务密钥进行保密通信。
2.如权利要求1所述的一种基于Android智能移动终端的通信密钥分配方法,所述步骤(I)中的通用保密通信平台的建立方法,其特征是: (1-1)在Android操作系统源码的C/C++framework层中添加保密通信函数库,在其中实现保密通信相关基础功能,包括与保密通信支持网络的指令交互、密钥申请、密钥下载、密钥管理、加解密操作,并以JNI接口的形式向Android的Java framework层提供调用,所述保密通信函数库在编译时将被编译成so库文件; (1-2)在Android操作系统源码的Java framework层中添加保密通信类,该类应用所述JNI接口调用C/C++framework层中提供的保密通信函数库,并对其在Java framework层做进一步的封装和扩展,最后向更上层的应用层提供保密通信相关的系统API,即通用保密通信平台API,供各种应用层通信软件调用。
3.如权利要求1或2所述的一种基于Android智能移动终端的通信密钥分配方法,所述步骤(3)中的智能移动终端申请业务密钥的方法,其特征是: (3-1)通信业务发起后,系统底层的通用保密通信平台API被应用层通信软件调用,生成新的业务密钥获取线程,该线程通过无线方式获得与保密通信支持网络的连接; (3-2)所述连接建立后,智能移动终端向保密通信支持网络发送本次通信的相关信息,以申请本次通信所需的业务密钥,这些信息包括主叫终端和被叫终端的身份、验证信息、为何种业务申请业务密钥、业务密钥用途是加密还是解密。
4.如权利要求3所述的一种基于Android智能移动终端的通信密钥分配方法,所述步骤(4)中的保密通信支持网络向智能移动终端分配业务密钥的方法,其特征是: (4-1)建立网络服务端线程,用以等待智能移动终端业务密钥获取线程的连接; (4-2)与智能移动终端建立连接,并收到其业务密钥申请后,得知本次通信具体的业务类型、终端身份、验证信息、业务密钥用途,判断是否具备业务密钥申请的权限,为具备权限的智能移动终端分配要下载的业务密钥; (4-3)保密通信支持网络使用与智能移动终端的共享密钥,为要下发的业务密钥加密; (4-4)保密通信支持网络将加密之后的业务密钥通过无线方式发送到智能移动终端。
5.如权利要求4所述的一种基于Android智能移动终端的通信密钥分配方法,所述保密通信支持网络与智能移动终端的共享密钥,其特征是: (5-1)所述保密通信支持网络中存储的共享密钥的头部保存有共享密钥当前使用信息,下载到智能移动终端的共享密钥,其头部信息被过滤掉; (5-2)保密通信支持网络为业务密钥加密时,从保密通信支持网络与智能移动终端的共享密钥头部信息中提取出该块共享密钥的当前使用位置,使用该位置处的共享密钥为要下发的业务密钥加密,并将该位置信息以隐含形式混在加密之后的业务密钥的空闲保留位中,然后相应地更新共享密钥的头部信息; (5-3)智能移动终端接收到保密通信支持网络发送的已加密的业务密钥后,提取其中隐含的位置信息,结合存储在智能移动终端中的与保密通信支持网络间的共享密钥,使用该位置处的共享密钥为接收到的业务密钥解密; (5-4)保密通信支持网络与智能移动终端间的共享密钥量不足时,按照步骤(2)所述方法,智能移动终端从保密通信支持网络下载新的共享密钥。
6.如权利要求1所述的一种基于Android智能移动终端的通信密钥分配方法,所述步骤(5)中的智能移动终端接收业务密钥的方法,其特征是: 一旦智能移动终端的业务密钥下载量达到了当前业务类型能够进行保密通信的最低阈值之后,即通知相应的应用程序,告知其业务密钥已经能够使用;然后一边使用一边继续下载,直到本次业务密钥下载完毕。
7.如权利要求1所述的一种基于Android智能移动终端的通信密钥分配方法,所述步骤(5)中的智能移动终端的内存空间,其特征是: (7-1)智能移动终端为每个业务密钥获取线程开辟一块逻辑上呈环形的内存空间,用于存放从保密通信支持网络接收到的业务密钥,该内存空间的大小取决于业务类型; (7-2)智能移动终端为每一个存放业务密钥的所述环形内存空间都设有一个读取位置指针,使用业务密钥进行保密通信时,从该指针所指位置读出相应数量的业务密钥,并使用该段业务密钥对通信信息进行加解密;该指针在环形内存空间中不断前进,始终指向下一次要读取的业务密钥首地址,当该指针越过环形空间末尾时,即从环形空间开头继续读取业务密钥; (7-3)智能移动终端为每一个存放业务密钥的所述环形内存空间都设有一个写入位置指针,从该指针所指位置开始,将接收到的业务密钥存储入环形内存空间;该指针在环形内存空间中不断前进,始终指向下一次要存储业务密钥的环形内存空间首地址,当该指针越过环形空间末尾时,即从环形空间开头继续写入业务密钥;每次向保密通信支持网络申请的业务密钥量不超过所述环形内存空间的大小; (7-4)第一次业务密钥下载后,当所述写入位置指针与所述读取位置指针在环形内存空间中各自所指位置的距离差到达一个设定的阈值时,智能移动终端向保密通信支持网络申请再次下载业务密钥; (7-5)本次通信业务结束后,存储业务密钥的内存空间被系统回收,其中的数据被销毁。
8.如权利要求1或6所述的一种基于Android智能移动终端的通信密钥分配方法,其特征是:所述共享密钥和/或业务密钥,其使用方式优选采用一次一密。
【文档编号】H04L9/08GK104243144SQ201310228443
【公开日】2014年12月24日 申请日期:2013年6月8日 优先权日:2013年6月8日
【发明者】赵勇, 黄勇, 刘春华 申请人:安徽量子通信技术有限公司, 山东量子科学技术研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1