CN107820240A - 基于安卓操作系统的短消息加、解密方法及安卓操作系统 - Google Patents
基于安卓操作系统的短消息加、解密方法及安卓操作系统 Download PDFInfo
- Publication number
- CN107820240A CN107820240A CN201610818880.2A CN201610818880A CN107820240A CN 107820240 A CN107820240 A CN 107820240A CN 201610818880 A CN201610818880 A CN 201610818880A CN 107820240 A CN107820240 A CN 107820240A
- Authority
- CN
- China
- Prior art keywords
- short message
- encryption
- code
- key
- pdu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/02—Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/04—Key management, e.g. using generic bootstrapping architecture [GBA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
- H04W4/14—Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Telephone Function (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在加密接口代码与加密实现代码之间设置第一JNI接口,安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息,触发加密接口代码通过所述第一JNI接口调用加密实现代码对短消息进行加密,生成加密后的短消息;将加密后的短消息发送至接收方。基于上述方法,使短消息加密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。另外,本发明还公开了与上述加密方法相对应的解密方法及安卓操作系统。
Description
技术领域
本发明涉及移动通信加密技术领域,更具体的说,是涉及一种基于安卓操作系统的短消息加、解密方法及安卓操作系统。
背景技术
短消息是通过无线信道传送的,而无线信道是一个开放信道,任何具有适当无线设备的人均可通过窃听无线信道而非法获得短消息的具体内容,因此,上述短消息传送方式存在很大的安全隐患,容易导致短消息的具体内容被泄露、被侦听或被篡改。
现有技术中,对短消息进行加密的方法有硬件方式、特制SIM卡方式、服务端方式和软件方式等几种。其中,硬件方式是通过对终端进行改造,添加硬件模块实现短消息的加密,但是,这种方式改造成本较高,对各种类型的终端来说,通用性较差。特制SIM卡方式是通过特制的安全SIM卡实现短消息的加密,但是,这种方式通用性较差。服务端方式是把短消息加密的过程放到了特定的短信服务器端,如,发送方将短消息加密后发送到接收方,接收方再访问服务器端,由服务器端解密之后得到短消息明文,但是这种方式无法避免明文在终端与服务器端传递,存在明文被截获的危险。随着基于安卓操作系统的终端的迅速扩张,目前,多用软件方式对短消息进行加密,即在安卓操作系统的应用层设置短消息加密软件,但是该种方式中短消息加密软件的加密方式简单,且容易被卸载、被冒充。
综上所述,现有技术中的短消息加密方法,由于其安全性较低、通用性较差,因此,不适用于基于安卓操作系统的终端。
发明内容
有鉴于此,本发明提供了一种基于安卓操作系统的短消息加、解密方法及安卓操作系统,以克服现有技术中的短消息加密方法,由于其安全性较低、通用性较差,因此,不适用于基于安卓操作系统的终端的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口,所述方法包括:
安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;
触发所述加密接口代码;
所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息;
将所述加密后的短消息发送至接收方。
优选的,所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息,具体包括:
所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文;
生成加密密钥;
所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
优选的,所述生成加密密钥具体包括:
将所述PDU中指示所述短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥。
优选的,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥,包括:
确定加密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥。
优选的,所述确定加密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为加密密钥在所述业务密钥段中的起始位置。
优选的,所述生成加密后的短消息之后,所述方法还包括:
使用所述PDU中的TP-DCS中的保留位标识所述加密后的短消息为加密短消息。
一种基于安卓操作系统的短消息解密方法,预先在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,所述方法包括:
接收发送方发送的加密后的短消息;
触发所述解密接口代码;
所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
优选的,所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息,具体包括:
所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文;
生成解密密钥;
所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
优选的,所述生成解密密钥具体包括:
将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同。
优选的,将所述业务密钥段处理为与所述PDU中的加密后的短消息正文长度相等的密钥,包括:
确定解密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的加密后的短消息正文长度相等的密钥。
优选的,所述确定解密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为解密密钥在所述业务密钥段中的起始位置。
一种安卓操作系统,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口,在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,所述系统包括:
获取单元,用于安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;
第一触发单元,用于触发所述加密接口代码;
加密单元,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息;
发送单元,用于将所述加密后的短消息发送至接收方;
接收单元,用于接收发送方发送的加密后的短消息;
第二触发单元,用于触发所述解密接口代码;
解密单元,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
优选的,所述加密单元具体包括:
第一调用子单元,用于使所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第一解析子单元,用于利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文;
加密密钥生成子单元,用于生成加密密钥;
加密子单元,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
优选的,所述加密密钥生成子单元具体用于:
将所述PDU中指示所述短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥;
其中,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥,包括:
确定加密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥;
其中,所述确定加密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为加密密钥在所述业务密钥段中的起始位置。
优选的,所述系统还包括:
标识单元,用于在所述生成加密后的短消息之后,使用所述PDU中的TP-DCS中的保留位标识所述加密后的短消息为加密短消息。
优选的,所述解密单元具体包括:
第二调用子单元,用于使所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第二解析子单元,用于利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文;
解密密钥生成子单元,用于生成解密密钥;
解密子单元,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
优选的,所述解密密钥生成子单元具体用于:
将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同;
其中,将所述业务密钥段处理为与所述PDU中的加密后的短消息正文长度相等的密钥,包括:
确定解密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的加密后的短消息正文长度相等的密钥;
其中,所述确定解密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为解密密钥在所述业务密钥段中的起始位置。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在加密接口代码与加密实现代码之间设置第一JNI接口,安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;触发加密接口代码通过所述第一JNI接口调用加密实现代码对短消息进行加密,生成加密后的短消息;将加密后的短消息发送至接收方。基于上述方法,使短消息加密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。此外,本发明无需对短信PDU结构做出改变或者占用正文部分做扩展标记即可区分加密短信与非加密短信,进一步提高了通用性和兼容性。再有,本发明还在业务密钥段中进一步设置了冗余密钥部分,并基于此动态随机选取业务密钥段的起始使用位置,即使业务密钥段被意外泄露,短信的保密性仍有较高保障。另外,本发明还公开了与上述加密方法相对应的解密方法及安卓操作系统。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种基于安卓操作系统的短消息加密方法实施例1的流程示意图;
图2为本发明公开的基于安卓操作系统的短消息加密方法实施例1中生成加密后的短消息的方法的流程示意图;
图3为本发明公开的基于安卓操作系统的短消息加密方法实施例1中服务器生成的业务密钥段示例;
图4为本发明公开的一种基于安卓操作系统的短消息解密方法实施例2的流程示意图;
图5为本发明公开的基于安卓操作系统的短消息解密方法实施例2中生成解密后的短消息的方法的流程示意图;
图6为本发明公开的安卓操作系统实施例3的具体结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
由背景技术可知,现有技术中的短消息加密方法,由于其安全性较低、通用性较差,因此,不适用于基于安卓操作系统的终端。
为此,本发明公开了一种基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在加密接口代码与加密实现代码之间设置第一JNI接口,安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;触发加密接口代码通过所述第一JNI接口调用加密实现代码对短消息进行加密,生成加密后的短消息;将加密后的短消息发送至接收方。基于上述方法,使短消息加密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。
另外,本发明还公开了与上述加密方法相对应的解密方法及安卓操作系统。
下面将通过以下实施例对本发明的基于安卓操作系统的短消息加、解密方法进行详细说明。
请参阅附图1,为本发明公开的一种基于安卓操作系统的短消息加密方法实施例1的流程示意图,该方法应用于基于安卓操作系统的终端中,在执行该方法之前,预先在终端的安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口。需要说明的是,加密实现代码使用C/C++实现,编译后以.so库的形式存在于安卓操作系统中。以安卓2.3版本为例,一个优选的方案是,在“安卓源代码目录/frameworks/base/telephony/java/com/android/internal/telephony/”中的SMSDispatcher.java文件内部的sendRawPdu函数中添加加密接口代码。基于上述内容,该方法具体包括如下步骤:
S101:安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息。
S102:触发所述加密接口代码。
S103:所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息。
S104:将所述加密后的短消息发送至接收方。
请参阅附图2,为本发明公开的基于安卓操作系统的短消息加密方法实施例1中生成加密后的短消息的方法的流程示意图,从图中可以看出,本发明公开的基于安卓操作系统的短消息加密方法实施例1中,生成加密后的短消息的步骤具体如下:
S201:所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码。
S202:利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文。
S203:生成加密密钥。
该步骤具体包括:将所述PDU中指示所述短消息身份的信息发送到服务器;接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥。需要说明的是,所述PDU中指示所述短消息身份的信息,包括但不限于发送方的手机号码、接收方的手机号码;如果所述短消息是一条长短信的一部分,还要将所述短消息在该条长短信中的顺序位置也发送到服务器。
为了进一步提高安全性,对于每次短消息通信,所述业务密钥段可以是冗余的,真正为短消息加解密所用的所述加密密钥,是由该业务密钥段进一步处理得到的,处理方法可以包括但不限于截取、拼接、异或、组合等等。目的是即使该业务密钥段在接收的过程中被截获,甚至被破解的情况下,短消息加解密的安全性仍然能有较高保证。
进一步地,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥的方法为:确定加密密钥在所述业务密钥段中的起始位置;从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥。
一个优选的方案为:指定业务密钥段的某个位置,读取出此次通信所用的业务密钥段在该位置处的内容,将该内容作为短消息加密密钥在业务密钥段中的起始位置。由于每次通信的业务密钥段内容都是随机产生的,因此加密密钥的起始位置每次也是随机的。
上述优选方案的具体实施例如图3所示,图3为所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段示例,该业务密钥段长度为512字节,由于一条短消息的PDU中的短消息正文部分最多只有140个字节(较长的短消息在传输时也要被拆分成若干条不长于140字节的短消息,然后分别加解密),因此该业务密钥段是有冗余的。其中,前396个字节包含了实际可能会用做加解密的部分。
在业务密钥的后116个字节中的某个位置抽取出一个字节(即图3中①的位置,这个字节的具体位置不重要,只要发送方和接收方的操作系统中设置为相同位置即可),读出这个字节的内容,其必然在0-255之间。然后以这个数值为短消息加密密钥的起始位置,向后延伸至多140字节,即为本次短消息实际用到的加密密钥。例如,①处的内容为0x77,即十进制的119,那么从该业务密钥段的第119个字节向后数最多140个字节,就是本次加密的实际用到的最大密钥范围,当然,如果本条短消息只有10个字节长度,那么用到的加密密钥则是第119字节开始向后的10个字节。也就是说,实际上,只有512字节的前396字节,是可能被用于对短消息的PDU中的短消息正文进行加密的密钥部分。本实施例中设置冗余部分密钥,以及动态选取密钥的起始位置,其目的是能够提高加密密钥的安全性。使用完成后,该512字节的业务密钥段被全部丢弃。
需要说明的是,根据上述在业务密钥段中获取加密密钥的思想,稍作变动,还可以得到其他的优选方法,均应视为本方法的变种。例如,可以在业务密钥段的不同位置分别截取多段密钥,然后再拼接为完整加密密钥使用。再例如,还可以在业务密钥段中选取两段或多段密钥,先进行异或处理,然后再按某种规则拼接,等等。这些衍生变种方法的安全性可能要更高一些。
需要说明的是,为了保证业务密钥段在传输过程中的安全性,发送方与服务器可以事先分别保存有二者的共享密钥,当发送方要加密短消息时,将该短消息的PDU中指示所述短消息身份的信息发送至服务器,服务器生成上述业务密钥段,并使用上述共享密钥加密后发送给发送方。
S204:所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
本实施例1公开了一种基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在加密接口代码与加密实现代码之间设置第一JNI接口,将通过安卓操作系统的应用层生成的短消息发送至安卓操作系统的Java框架层;触发加密接口代码通过所述第一JNI接口调用加密实现代码对短消息进行加密,生成加密后的短消息;将加密后的短消息发送至接收方。基于上述方法,使短消息加密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。
在上述本发明公开的实施例的基础上,本发明还公开了一种基于安卓操作系统的短消息解密方法,请参阅附图4,为本发明公开的一种基于安卓操作系统的短消息解密方法实施例2的流程示意图,该方法应用于基于安卓操作系统的终端中,在执行该方法之前,预先在该终端的安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,需要说明的是,解密实现代码使用C/C++实现,编译后以.so库的形式存在于安卓操作系统中。以安卓2.3版本为例,一个优选的方案是,在“安卓源代码目录/frameworks/base/telephony/java/com/android/internal/telephony/”中的SMSDispatcher.java文件内部的dispatchPdus函数中添加解密接口代码。基于上述内容,该方法具体包括如下步骤:
S301:接收发送方发送的加密后的短消息。
S302:触发所述解密接口代码。
S303:所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
请参阅附图5,为本发明公开的基于安卓操作系统的短消息解密方法实施例2中生成解密后的短消息的方法的流程示意图,从图中可以看出,本发明公开的基于安卓操作系统的短消息解密方法实施例2中,生成解密后的短消息的步骤具体如下:
S401:所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码。
S402:利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文。
S403:生成解密密钥。
具体的,该步骤包括:将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同。
需要说明的是,上述基于安卓操作系统的短消息加密方法实施例1中S203对应的生成加密密钥的具体方式同样应用于本步骤,以便生成相应的解密密钥,对此,本实施例不再赘述。
S404:所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
本实施例公开了一种基于安卓操作系统的短消息解密方法,预先在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,接收发送方发送的加密后的短消息;触发所述解密接口代码;所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。基于上述方法,使短消息解密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。
在以上实施例的基础上,另外一种优选的实施方式是在以上实施例的基础上添加如下内容:在Android应用层的Settings源码中,加入对是否发送加密短消息的配置,用户可以在界面上设置,共有3个选项:总是发送加密短消息、总是发送明文短消息、每次发送短消息前确认是否加密。该配置结果以首选项的方式存在于XML文件中,在加解密接口代码中加入判断,每次会读取XML文件,找到当前配置如何处理该条短消息。
需要说明的是,在本发明公开的基于安卓操作系统的短消息加密方法中,在对短消息进行加密之后,可使用PDU中的TP-DCS中的保留位标识该短消息是否为加密短消息,比如,定义bit1=0,bit0=1时为短信已加密的标志。这样,当接收方接收到短消息之后,可通过判断该保留位的值确定收到的短消息是否是加密的,如果是加密的,则按照上述实施例公开的解密方法进行处理,如果是非加密的,则按照现有技术的短消息正常接收流程处理。
进一步需要说明的是,由于安卓版本变动可能带来代码位置变动,比如,基于上述思路在现有短信收发流程的其他位置加入加解密代码,都属于本发明保护范围之内,另外,如果将加解密实现代码由本地C/C++代码实现改为用Java代码实现、在安卓的应用层而非Java框架层添加加解密接口代码、直接对短信文本进行加解密处理而非对PDU正文进行加解密处理、对代码中的各步骤顺序的调整等等在本方案基础上所做的变种,均属于本发明保护范围之内。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的安卓操作系统实现,因此本发明还公开了一种安卓操作系统,下面给出具体的实施例进行详细说明。
请参阅附图6,图6为本发明公开的安卓操作系统实施例3的具体结构示意图,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口,在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,该系统具体包括如下单元:
获取单元11,用于安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;
第一触发单元12,用于触发所述加密接口代码;
加密单元13,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息;
发送单元14,用于将所述加密后的短消息发送至接收方;
接收单元15,用于接收发送方发送的加密后的短消息;
第二触发单元16,用于触发所述解密接口代码;
解密单元17,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
所述加密单元具体包括:
第一调用子单元,用于使所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第一解析子单元,用于利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文;
加密密钥生成子单元,用于生成加密密钥;
加密子单元,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
所述加密密钥生成子单元具体用于:
将所述PDU中指示所述短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥;
其中,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥,包括:
确定加密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥;
其中,所述确定加密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为加密密钥在所述业务密钥段中的起始位置。
需要说明的是,所述安卓操作系统还包括:
标识单元,用于在所述生成加密后的短消息之后,使用所述PDU中的TP-DCS中的保留位标识所述加密后的短消息为加密短消息。
所述解密单元具体包括:
第二调用子单元,用于使所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第二解析子单元,用于利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文;
解密密钥生成子单元,用于生成解密密钥;
解密子单元,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
所述解密密钥生成子单元具体用于:
将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同;
其中,将所述业务密钥段处理为与所述PDU中的加密后的短消息正文长度相等的密钥,包括:
确定解密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的加密后的短消息正文长度相等的密钥;
其中,所述确定解密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为解密密钥在所述业务密钥段中的起始位置。
需要说明的是,上述各个单元及子单元的具体功能实现,已在方法实施例部分进行详细描述,本实施例不再赘述,具体请参见方法实施例中的相关描述。
综上所述:
基于安卓操作系统的短消息加密方法,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在加密接口代码与加密实现代码之间设置第一JNI接口,将通过安卓操作系统的应用层生成的短消息发送至安卓操作系统的Java框架层;触发加密接口代码通过所述第一JNI接口调用加密实现代码对短消息进行加密,生成加密后的短消息;将加密后的短消息发送至接收方。基于上述方法,使短消息加密固化为安卓操作系统的一部分,能够解除被卸载、被反编译、被冒充等安全隐患,且具有较高的通用性。此外,本发明无需对短信PDU结构做出改变或者占用正文部分做扩展标记即可区分加密短信与非加密短信,进一步提高了通用性和兼容性。再有,本发明还在业务密钥段中进一步设置了冗余密钥部分,并基于此动态随机选取业务密钥段的起始使用位置,即使业务密钥段被意外泄露,短信的保密性仍有较高保障。
另外,本发明还公开了与上述加密方法相对应的解密方法及安卓操作系统。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (17)
1.一种基于安卓操作系统的短消息加密方法,其特征在于,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口,所述方法包括:
安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;
触发所述加密接口代码;
所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息;
将所述加密后的短消息发送至接收方。
2.根据权利要求1所述的方法,其特征在于,所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息,具体包括:
所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文;
生成加密密钥;
所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
3.根据权利要求2所述的方法,其特征在于,所述生成加密密钥具体包括:
将所述PDU中指示所述短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥。
4.根据权利要求3所述的方法,其特征在于,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥,包括:
确定加密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥。
5.根据权利要求4所述的方法,其特征在于,所述确定加密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为加密密钥在所述业务密钥段中的起始位置。
6.根据权利要求2至5中任意一项所述的方法,其特征在于,所述生成加密后的短消息之后,所述方法还包括:
使用所述PDU中的TP-DCS中的保留位标识所述加密后的短消息为加密短消息。
7.一种基于安卓操作系统的短消息解密方法,其特征在于,预先在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,所述方法包括:
接收发送方发送的加密后的短消息;
触发所述解密接口代码;
所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
8.根据权利要求7所述的方法,其特征在于,所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息,具体包括:
所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文;
生成解密密钥;
所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
9.根据权利要求8所述的方法,其特征在于,所述生成解密密钥具体包括:
将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同。
10.根据权利要求9所述的方法,其特征在于,将所述业务密钥段处理为与所述PDU中的加密后的短消息正文长度相等的密钥,包括:
确定解密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的加密后的短消息正文长度相等的密钥。
11.根据权利要求10所述的方法,其特征在于,所述确定解密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为解密密钥在所述业务密钥段中的起始位置。
12.一种安卓操作系统,其特征在于,预先在安卓操作系统的Java框架层的短消息发送部分添加加密接口代码,在安卓操作系统的本地框架层添加加密实现代码,在所述加密接口代码与所述加密实现代码之间设置第一JNI接口,在安卓操作系统的Java框架层的短消息接收部分添加解密接口代码,在安卓操作系统的本地框架层添加解密实现代码,在所述解密接口代码与所述解密实现代码之间设置第二JNI接口,所述系统包括:
获取单元,用于安卓操作系统的Java框架层从安卓操作系统的应用层获取短消息;
第一触发单元,用于触发所述加密接口代码;
加密单元,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码对所述短消息进行加密,生成加密后的短消息;
发送单元,用于将所述加密后的短消息发送至接收方;
接收单元,用于接收发送方发送的加密后的短消息;
第二触发单元,用于触发所述解密接口代码;
解密单元,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码对所述加密后的短消息进行解密,生成解密后的短消息。
13.根据权利要求12所述的系统,其特征在于,所述加密单元具体包括:
第一调用子单元,用于使所述加密接口代码通过所述第一JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第一解析子单元,用于利用所述短消息解析代码解析所述短消息的协议数据单元PDU,确定所述PDU中的短消息正文;
加密密钥生成子单元,用于生成加密密钥;
加密子单元,用于使所述加密接口代码通过所述第一JNI接口调用所述加密实现代码,利用所述加密密钥对所述PDU中的短消息正文进行加密,生成加密后的短消息。
14.根据权利要求13所述的系统,其特征在于,所述加密密钥生成子单元具体用于:
将所述PDU中指示所述短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的短消息正文长度相等的密钥,生成加密密钥;
其中,将所述业务密钥段处理为与所述PDU中的短消息正文长度相等的密钥,包括:
确定加密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的短消息正文长度相等的密钥;
其中,所述确定加密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为加密密钥在所述业务密钥段中的起始位置。
15.根据权利要求13或14所述的系统,其特征在于,所述系统还包括:
标识单元,用于在所述生成加密后的短消息之后,使用所述PDU中的TP-DCS中的保留位标识所述加密后的短消息为加密短消息。
16.根据权利要求12所述的系统,其特征在于,所述解密单元具体包括:
第二调用子单元,用于使所述解密接口代码通过所述第二JNI接口调用安卓操作系统的本地框架层中的短消息解析代码;
第二解析子单元,用于利用所述短消息解析代码解析所述加密后的短消息的协议数据单元PDU,确定所述PDU中的加密后的短消息正文;
解密密钥生成子单元,用于生成解密密钥;
解密子单元,用于使所述解密接口代码通过所述第二JNI接口调用所述解密实现代码,利用所述解密密钥对所述PDU中的加密后的短消息正文进行解密,生成解密后的短消息。
17.根据权利要求16所述的系统,其特征在于,所述解密密钥生成子单元具体用于:
将所述PDU中指示所述加密后的短消息身份的信息发送到服务器;
接收所述服务器根据所述PDU中指示所述加密后的短消息身份的信息生成的业务密钥段;
将所述业务密钥段通过截取、拼接、异或、组合中的一种或几种方法处理为与所述PDU中的加密后的短消息正文长度相等的密钥,生成解密密钥,所述解密密钥与加密短消息时所用的加密密钥相同;
其中,将所述业务密钥段处理为与所述PDU中的加密后的短消息正文长度相等的密钥,包括:
确定解密密钥在所述业务密钥段中的起始位置;
从所述起始位置开始,在所述业务密钥段中选择与所述PDU中的加密后的短消息正文长度相等的密钥;
其中,所述确定解密密钥在所述业务密钥段中的起始位置,包括:
指定所述业务密钥段的某个位置,读取所述业务密钥段在所述位置处的内容,将所述内容作为解密密钥在所述业务密钥段中的起始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610818880.2A CN107820240A (zh) | 2016-09-12 | 2016-09-12 | 基于安卓操作系统的短消息加、解密方法及安卓操作系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610818880.2A CN107820240A (zh) | 2016-09-12 | 2016-09-12 | 基于安卓操作系统的短消息加、解密方法及安卓操作系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107820240A true CN107820240A (zh) | 2018-03-20 |
Family
ID=61601344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610818880.2A Pending CN107820240A (zh) | 2016-09-12 | 2016-09-12 | 基于安卓操作系统的短消息加、解密方法及安卓操作系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107820240A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858203A (zh) * | 2018-12-21 | 2019-06-07 | 厦门市美亚柏科信息股份有限公司 | 一种Android平台应用的安全防护方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388769A (zh) * | 2007-09-11 | 2009-03-18 | 姚锡根 | 一种获取确定序列加密法的加强方法 |
CN101577621A (zh) * | 2008-05-05 | 2009-11-11 | 姚锡根 | 基序列算法 |
CN101877095A (zh) * | 2010-06-06 | 2010-11-03 | 刘延鹏 | 一种基于qr码、短消息和互联网的产品防伪方法 |
US20110151903A1 (en) * | 2006-05-25 | 2011-06-23 | Celltrust Corporation | Secure mobile information management system and method |
CN102497270A (zh) * | 2011-12-24 | 2012-06-13 | 王勇 | 一类规范化文档的加密方法 |
CN104243144A (zh) * | 2013-06-08 | 2014-12-24 | 安徽量子通信技术有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
-
2016
- 2016-09-12 CN CN201610818880.2A patent/CN107820240A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110151903A1 (en) * | 2006-05-25 | 2011-06-23 | Celltrust Corporation | Secure mobile information management system and method |
CN101388769A (zh) * | 2007-09-11 | 2009-03-18 | 姚锡根 | 一种获取确定序列加密法的加强方法 |
CN101577621A (zh) * | 2008-05-05 | 2009-11-11 | 姚锡根 | 基序列算法 |
CN101877095A (zh) * | 2010-06-06 | 2010-11-03 | 刘延鹏 | 一种基于qr码、短消息和互联网的产品防伪方法 |
CN102497270A (zh) * | 2011-12-24 | 2012-06-13 | 王勇 | 一类规范化文档的加密方法 |
CN104243144A (zh) * | 2013-06-08 | 2014-12-24 | 安徽量子通信技术有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
Non-Patent Citations (1)
Title |
---|
黄月江: "《计算机系统、数据库系统和通信网络的安全与保密》", 31 December 1995 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858203A (zh) * | 2018-12-21 | 2019-06-07 | 厦门市美亚柏科信息股份有限公司 | 一种Android平台应用的安全防护方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101278516B (zh) | 使用长密钥板的共享密钥加密 | |
US6449473B1 (en) | Security method for transmissions in telecommunication networks | |
CN101188496B (zh) | 一种短信加密传输方法 | |
CN104301115B (zh) | 一种手机与蓝牙key签名验证密文通讯方法 | |
CN105430640B (zh) | 一种短信加密认证方法、终端及系统 | |
KR20030085094A (ko) | 암호화 장치 | |
CN104333455A (zh) | 一种智能手机保密通信系统及方法 | |
CN104303583B (zh) | 用于在通信系统中建立安全连接的系统和方法 | |
CN101986726B (zh) | 一种基于wapi的管理帧保护方法 | |
KR100430358B1 (ko) | 무선 통신 장치 및 무선 통신 방법 | |
CN103430478A (zh) | 用于在无线通信系统中加密短数据的方法和设备 | |
CN105007163B (zh) | 预共享密钥的发送、获取方法及发送、获取装置 | |
CN112672342B (zh) | 数据传输方法、装置、设备、系统和存储介质 | |
CN109714360A (zh) | 一种智能网关及网关通信处理方法 | |
CN103167494B (zh) | 信息发送方法和系统 | |
CN102264068B (zh) | 共享密钥协商方法与系统、网络平台及终端 | |
CN105704711A (zh) | 一种保证通话安全的方法、装置及用户终端 | |
CN101854594A (zh) | 信息发送方法与装置和信息接收方法与装置 | |
CN1649295A (zh) | 集群系统中端对端加解密的装置及其方法 | |
CN101917712A (zh) | 一种移动通讯网中数据加解密方法和系统 | |
CN102624892B (zh) | 一种防止外挂客户端模拟http请求的方法 | |
CN105262759A (zh) | 一种加密通信的方法和系统 | |
KR20080046130A (ko) | 무선통신시스템에서 시그널링 무선베어러의 배치 방법 및장치 | |
CN106302698B (zh) | 订购业务的方法和系统 | |
CN107820240A (zh) | 基于安卓操作系统的短消息加、解密方法及安卓操作系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180320 |
|
RJ01 | Rejection of invention patent application after publication |