1.一种短信推送方法,其特征在于,包括:
在云端服务器上注册接收短信的应用程序组件的信息;
所述云端服务器根据指定的封装协议将所述应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信;
所述云端服务器将所述封装短信推送到用户终端;
所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息;以及
所述用户终端根据所述应用程序组件的信息将所述短信内容发送给对应的应用程序组件;
其中,所述云端服务器根据指定的封装协议将所述应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信包括:
所述云端服务器获取应用程序组件的信息、时间戳以及短信发送者和接收者的号码;
根据获取的应用程序组件的信息、时间戳以及短信发送者和接收者的号码构建动态密钥;
根据获取的应用程序组件的信息和待发送的短信内容构建需要加密的数据;
根据构建的动态密钥对需要加密的数据进行加密;
根据封装短信的数据格式对加密的数据进行封装,以生成封装短信;所述封装短信的数据格式包括:
安全短信标识符,用于标识所述封装短信是所述云端服务器为推送数据而发送的安全数据;
时间戳,用于标识封装时间以及用于生成动态密钥;
标识码,用于标识所述动态密钥;
密文,所述密文是使用所述动态密钥加密得到的,所述密文包括:应用程序包名,应用程序组件名,应用程序签名信息以及所述短信内容。
2.根据权利要求1所述的方法,其特征在于,所述应用程序组件的信息包括应用程序包名,应用程序签名信息和应用程序组件名,其中所述应用程序包名和所述应用程序签名信息指示对应的应用程序,所述应用程序组件名指示所述应用程序中的应用程序组件。
3.根据权利要求1所述的方法,其特征在于,所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息的步骤包括:
所述用户终端判断所述封装短信的类型;以及
如果所述封装短信是封装了推送数据的安全数据,则根据预设解码方法、所述时间戳和所述标识码对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息。
4.根据权利要求1或2所述的方法,其特征在于,所述用户终端根据所述应用程序组件的信息将所述短信内容发送给对应的应用程序组件的步骤包括:
根据所述应用程序组件的信息调用回调函数onSmsPushReceive()以将所述短信内容分派给所述应用程序组件;以及
调用返回函数onComplete()以返回对所述短信内容的处理结果。
5.一种短信推送系统,其特征在于,包括云端服务器和用户终端,
所述云端服务器上注册有接收短信的应用程序组件的信息,并根据指定的封装协议将所述应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信;
所述云端服务器将所述封装短信推送到所述用户终端;
所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息;以及
所述用户终端根据所述应用程序组件的信息将所述短信内容发送给对应的应用程序组件;
其中,所述云端服务器根据指定的封装协议将所述应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信包括:
所述云端服务器获取应用程序组件的信息、时间戳以及短信发送者和接收者的号码;
根据获取的应用程序组件的信息、时间戳以及短信发送者和接收者的号码构建动态密钥;
根据获取的应用程序组件的信息和待发送的短信内容构建需要加密的数据;
根据构建的动态密钥对需要加密的数据进行加密;
根据封装短信的数据格式对加密的数据进行封装,以生成封装短信;所述封装短信的数据格式包括:
安全短信标识符,用于标识所述封装短信是所述云端服务器为推送数据而发送的安全数据;
时间戳,用于标识封装时间以及用于生成动态密钥;
标识码,用于标识所述动态密钥;
密文,所述密文是使用所述动态密钥加密得到的,所述密文包括:应用程序包名,应用程序组件名,应用程序签名信息以及所述短信内容。
6.根据权利要求5所述的系统,其特征在于,所述应用程序组件的信息包括应用程序包名,应用程序签名信息和应用程序组件名,其中所述应用程序包名和所述应用程序签名信息指示对应的应用程序,所述应用程序组件名指示所述应用程序中的应用程序组件。
7.根据权利要求5所述的系统,其特征在于,所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息包括:
所述用户终端判断所述封装短信的类型;以及
如果所述封装短信是封装了推送数据的安全数据,则根据预设解码方法、所述时间戳和所述标识码对所述封装短信进行解码和解密以获得所述短信内容和所述应用程序组件的信息。
8.根据权利要求5或6所述的系统,其特征在于,所述用户终端根据所述应用程序组件的信息将所述短信内容发送给对应的应用程序组件包括:
根据所述应用程序组件的信息调用回调函数onSmsPushReceive()以将所述短信内容分派给所述应用程序组件;以及
调用返回函数onComplete()以返回对所述短信内容的处理结果。
9.一种短信推送云端服务器,其特征在于,包括:
注册单元,所述注册单元用于注册接收短信的应用程序组件的信息;
编码单元,所述编码单元用于根据指定的封装协议将所述应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信;
推送单元,所述推送单元用于将所述封装短信推送到用户终端;
其中,所述编码单元,具体用于获取应用程序组件的信息、时间戳以及短信发送者和接收者的号码;根据获取的应用程序组件的信息、时间戳以及短信发送者和接收者的号码构建动态密钥;根据获取的应用程序组件的信息和待发送的短信内容构建需要加密的数据;
根据构建的动态密钥对需要加密的数据进行加密;根据封装短信的数据格式对加密的数据进行封装,以生成封装短信;所述封装短信的数据格式包括:
安全短信标识符,用于标识所述封装短信是所述云端服务器为推送数据而发送的安全数据;
时间戳,用于标识封装时间以及用于生成动态密钥;
标识码,用于标识所述动态密钥;
密文,所述密文是使用所述动态密钥加密得到的,所述密文包括:应用程序包名,应用程序组件名,应用程序签名信息以及所述短信内容。
10.根据权利要求9所述的服务器,其特征在于,所述应用程序组件的信息包括应用程序包名,应用程序签名信息和应用程序组件名,其中所述应用程序包名和所述应用程序签名信息指示对应的应用程序,所述应用程序组件名指示所述应用程序中的应用程序组件。
短信推送方法、短信推送系统及短信推送云端服务器\n技术领域\n[0001] 本发明涉及数据推送技术领域,尤其涉及一种短信推送方法、短信推送系统及短信推送云端服务器。\n背景技术\n[0002] 目前较为常见的基于短信通道的数据推送主要有以下两种:\n[0003] 1、通过短信发送明文数据,不指定接收者。推送的数据作为普通短信分发给所有能够接收短信的应用程序。该方案的缺点是:(1)由于发送者的号码有可能被仿冒,不能保证数据的发送者是合法的,因此发送者的号码不能作为发送者的标识(;2)由于未指定接收者,其他应用程序也可以获取推送的数据,不能确保只有指定的接收者能够接收到数据,因此无法保证推送行为的私密性;(3)由于短信是明文发送,因此推送的数据无保密性。\n[0004] 2、数据经过加密后通过短信发送,不指定接收者。加密后的数据作为普通短信分发给所有能够接收短信的应用程序。能够成功解密短信内容的应用程序就可以获得推送的原始数据。该方案的缺点是:(1)由于发送者的号码有可能被仿冒,不能保证数据的发送者是合法的,因此短信发送者的号码不能作为发送者的标识;(2)由于未指定接收者,其他应用程序也可以获取推送的数据,不能确保只有指定的接收者能够接收到数据,因此无法保证推送行为的私密性;(3)由于短信内容易获取且加密算法和加密协议易被破解,因此加密数据易被第三方获取并破解,整套系统的安全性很难得到保障。\n[0005] 此外,现有技术都是在应用程序级别实现基于短信服务的数据推送,其还具有以下缺点(:1)推送数据的安全通道不能重用,每个应用程序必须设计和实现一套自有的基于短信的数据推送服务,大大提高了应用程序的开发门槛和成本;(2)无法实现只有部分指定的应用程序可以接收到封装了推送数据的短信,无法实现从服务器端系统到用户终端的指定应用程序之间点到点的封闭私密的安全通道,这是因为移动终端操作系统在接收到短信之后,会将短信分发给所有具有短信接收能力的应用程序。\n发明内容\n[0006] 本发明旨在至少解决上述技术问题之一。\n[0007] 为此,本发明的一个目的在于提出一种可以实现从服务器端到用户终端的指定应用程序之间点到点的、封闭的、私密的安全通道的短信推送方法。\n[0008] 本发明的另一目的在于提出一种短信推送方法。\n[0009] 本发明的又一目的在于提出一种短信推送云端服务器。\n[0010] 为了实现上述目的,根据本发明第一方面的实施例的短信推送方法,包括以下步骤:在云端服务器上注册接收短信的应用程序组件的信息;所述云端服务器根据指定的封装协议将所述信息和待发送的短信内容编码和加密以生成封装短信;所述云端服务器将所述封装短信推送到所述用户终端;所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述信息;以及所述用户终端根据所述信息将所述短信内容发送给对应的应用程序组件。\n[0011] 根据本发明实施例的短信推送方法,实现了服务器端与用户终端的指定应用程序之间的点到点的、封闭的、私密的安全通道,使得短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0012] 为了实现上述目的,根据本发明第二方面的实施例的短信推送系统包括云端服务器和用户终端。所述云端服务器上注册有接收短信的应用程序组件的信息,并根据指定的封装协议将所述信息和待发送的短信内容编码和加密以生成封装短信;所述云端服务器将所述封装短信推送到所述用户终端;所述用户终端对所述封装短信进行解码和解密以获得所述短信内容和所述信息;以及所述用户终端根据所述信息将所述短信内容发送给对应的应用程序组件。\n[0013] 根据本发明实施例的短信推送系统,实现了服务器端与用户终端的指定应用程序之间的点到点的、封闭的、私密的安全通道,使得短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0014] 为了实现上述目的,根据本发明第三方面的实施例的短信推送云端服务器包括:\n注册单元,所述注册单元用于注册有接收短信的应用程序组件的信息;编码单元,所述编码单元用于根据指定的封装协议将所述信息和待发送的短信内容编码和加密以生成封装短信;推送单元,所述推送单元用于将所述封装短信推送到用户终端。\n[0015] 根据本发明实施例的短信推送云端服务器,通过注册接收短信的应用程序组件的信息,并根据该信息生成封装短信,保证了短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0016] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。\n附图说明\n[0017] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,\n[0018] 图1是根据本发明一个实施例的短信推送方法的流程图;\n[0019] 图2是根据本发明一个实施例的待发送的短信内容的封装编码方法的流程图;\n[0020] 图3是根据本发明一个实施例的需要加密的数据和封装短信的格式的示意图;\n[0021] 图4是根据本发明一个实施例的短信接收和分派的流程图;\n[0022] 图5是根据本发明一个实施例的短信推送系统的结构框图;\n[0023] 图6是根据本发明一个实施例的短信推送系统的示意图;以及\n[0024] 图7是根据本发明一个实施例的短信推送云端服务器的结构框图。\n具体实施方式\n[0025] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。\n[0026] 在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。\n[0027] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。\n[0028] 下面参考附图描述根据本发明实施例的短信推送方法、短信推送系统及短信推送云端服务器。\n[0029] 一种短信推送方法,包括以下步骤:在云端服务器上注册接收短信的应用程序组件的信息;云端服务器根据指定的封装协议将应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信;云端服务器将封装短信推送到用户终端;用户终端对封装短信进行解码和解密以获得短信内容和信息;以及用户终端根据信息将短信内容发送给对应的应用程序组件。\n[0030] 图1是根据本发明一个实施例的短信推送方法的流程图。\n[0031] 如图1所示,短信推送方法包括下述步骤。\n[0032] 步骤S101,在云端服务器上注册接收短信的应用程序组件的信息。\n[0033] 具体地,应用程序开发者需要首先在云端服务器上对接收短信的应用程序组件进行注册,把应用程序包名、应用程序签名信息(例如,签名值及证书信息)、接收数据的应用程序组件名登记到云端服务器,其中应用程序包名和应用程序签名信息指示对应的应用程序,应用程序组件名指示应用程序中的应用程序组件。这些注册的信息将用于标识短信的接收者。\n[0034] 步骤S102,云端服务器根据指定的封装协议将应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信。\n[0035] 云端服务器在启动一次基于短信的数据推送服务时,将注册时登记的应用程序包名、应用程序签名信息、接收数据的应用程序组件名和待发送的短信内容一起根据指定的安全数据封装协议进行加密和编码处理生成一条待推送的封装短信,然后将该封装短信推送到指定的接收者。\n[0036] 下面详细描述根据本发明实施例的安全数据封装协议。\n[0037] 图2为根据本发明一个实施例的待发送的短信内容的封装编码方法的流程图。如图2所示,将待发送的短信内容进行封装生成封装短信的流程如下:\n[0038] 步骤S201,获取应用程序信息、时间戳以及短信发送者和接收者的号码。\n[0039] 其中,时间戳用于标识封装时间(由此,用户判断该短信发送行为的时效性)以及用于生成动态密钥。\n[0040] 步骤S202,根据获取的应用程序信息、时间戳以及短信发送者和接收者的号码构建动态密钥。\n[0041] 其中,“动态”是指:云端服务器每次发送短信时,封装短信所使用的密钥是动态生成的。具体地,可以首先生成多个随机数,然后将多个随机数与用户终端的信息(例如用户终端绑定的用户账号、用户密码、用户终端的标识码或用户终端的电话号码等)进行叠加以生成多个密钥,再将多个密钥以及多个密钥对应的多个标识码按照预定规则写入密钥表。\n由此,在云端服务器每次发送短信时,可以直接从密钥表中指定密钥并获取该密钥在密钥表中对应的标识码,然后根据时间戳以及指定的密钥生成用于对数据进行加密的动态密钥。\n[0042] 步骤S203,根据获取的应用程序信息和待发送的短信内容构建需要加密的数据。\n[0043] 图3为根据本发明一个实施例的需要加密的数据和封装短信的格式的示意图。如图3所示,需要加密的数据由以下若干数据块组成:长度、接收本次发送短信的应用程序包名(该部分数据不是定长的,但是有数据长度限制,详见下面的描述)、接收本次发送短信的应用程序组件名(该部分数据也不是定长的,但是也有数据长度限制,详见下面的描述)、动作类型(将短信发送给相应组件时,以“动作类型”标识本次发送的短信)、摘要值(应用层程序签名所使用证书的公钥的摘要值或者签名文件的摘要值,用于指定某一个开发者公布的应用(证书公钥代表该开发者)或者直接唯一指定某一个应用程序(签名文件唯一,认为其SHA1计算的摘要值也是唯一的))、摘要类型(用于指明“摘要值”数据段中的数据具体是签名所用的公钥的摘要值还是签名文件的摘要值)和待发送的短信内容(该部分数据也不是定长的,但是同样有数据长度限制,详见下面的描述)。\n[0044] 步骤S204,根据构建的动态密钥对需要加密的数据进行加密,如进行三重DES(Data Encryption Standard,数据加密标准)加密。\n[0045] 步骤S205,根据封装短信的数据格式构建封装短信内容。\n[0046] 如图3所示,封装短信的数据格式包括:安全短信标识符、时间戳、标识码、密文和协议版本等。其中,安全短信标识符用于标识封装短信是云端服务器为推送数据而发送的安全数据,由此终端系统可以快速地初步判定一条短信是否为云端服务器为推送数据而发送的安全数据。如上所述,时间戳用于标识封装时间(由此,用户判断该短信发送行为的时效性),此外,根据该时间戳可以在对密文进行解码时生成用于解码的动态密钥。标识码用于标识动态密钥,其是发送短信时临时生成的。密文是使用动态密钥而加密得到的,例如进行三重DES加密得到的。密文包括应用程序包名、应用程序组件名、应用程序签名信息和短信内容。\n[0047] 应理解的是,在通常情况下,一条短信内容的数据量最多为140字节,密文的字节数为8的倍数。由此,可计算出图2中的“应用程序包名”、“应用程序组件名”和“待推送的数据内容”数据块的总长度上限为:\n[0048] 长度(应用程序包名)+长度(应用程序组件名)+长度(待推送的数据内容)≤((140-25)/8*8-25)。\n[0049] 也就是说,接收远程推送数据的应用程序包名、应用程序组件名和待推送的数据内容的总数据量不超过87字节。\n[0050] 另外应理解的是,由于不同短信网关的特性有不同,具体的数据量上限可以不是\n140字节,但是依然可以按照上述算法计算出封装短信格式中可变部分的数据量上限。\n[0051] 采用上述的数据封装格式,至少具有以下优点:能够用较小的数据量封装足够多的数据(待推送的数据、接收者相关信息、时间戳、安全验证所需的数据等),保证一条普通短信能够承载经过封装的数据,减少推送数据的成本;数据封装格式具有良好的可扩展性;\n安全加密强度较高,破解难度较大;独立的不公开的数据封装格式,可采用动态链接库等形式实现短信编码的数据封装,进一步减少数据封装格式被破解的可能性;封装短信具有独特标识(即安全短信标识符),便于用户终端快速将承载远程推送数据的安全短信与普通短信区分开,基本不影响普通短信的处理效率。\n[0052] 步骤S103,云端服务器将封装短信推送到用户终端。\n[0053] 步骤S104,用户终端对封装短信进行解码和解密以获取短信内容和接收短信的应用程序组件的信息。\n[0054] 步骤S105,用户终端根据接收短信的应用程序的信息将短信内容发送给对应的应用程序组件。\n[0055] 下面结合图3和图4详细描述本发明实施例的短信接收和分派的过程。\n[0056] 图4为根据本发明一个实施例的短信接收和分派的流程图。\n[0057] 如图4所示,用户终端接收到短信(步骤S301)时,系统在将这条短信分派给接收短信的应用程序之前,首先将这条短信交给安全短信服务进行处理(步骤S302)。安全短信服务判断这条短信是否为封装了远程推送数据的封装短信(步骤S303)。如果不是,则将这条短信当作普通短信处理,将这条短信分派给所有能够接收短信的应用程序(步骤S304)。如果安全短信服务能够成功解析和识别这条短信是远程推送的封装短信,则不能将这条短信当作普通短信分派出去,而是将该短信按照指定的封装格式进行解码和解密,获取原始短信内容(步骤S305),然后根据原始短信内容精确查找数据的接收者(如,指定的应用程序的指定组件)(步骤S306)。这样,推送的数据就可以按照预先的配置精确地发送给指定的接收者了。\n[0058] 应理解,应用开发者只需在自己的应用程序中,按照安全短信服务应用程序组件所提供的程序框架,来实现一个自己的安全短信服务客户端程序,即可将基于短信推送功能集成到应用程序中,便可通过短信通道来接收服务器端推送的短信了。\n[0059] 安全短 信服务的 应 用程序组 件是一个 抽象类(例如 ,类名为 :\ncom.baidu.security.cmdsys.executor.SmsPushServiceBase),使用安全短信服务应用程序需实现一个继承于该抽象类,并且实现该抽象类的抽象方法,这个类才能作为接收远程推送短信的应用程序组件。表1为根据本发明一个实施例的安全短信服务的应用程序组件的抽象方法。\n[0060]\n[0061] 表1安全短信服务的应用程序组件的抽象方法\n[0062] 结合表1,如图4所示,用户终端将短信内容发送给对应的应用程序组件的步骤可包括:根据信息调用onSmsPushReceive(),将短信内容分派给应用程序组件(步骤S307);以及调用onComplete(),返回对短信内容的处理结果(步骤S308)。\n[0063] 此外,根据上述结合图2所示的实施例,云端服务器在生成密钥表后,还将密钥表通知用户终端,用户终端在接收到密钥表之后对密钥表进行保存。由此,在用户终端接收到封装短信后,从封装短信中获取标识码和时间戳,首先根据标识码从保存的密钥表中获取对应的密钥,然后根据该密钥和时间戳生成编码所使用的动态密钥,再根据该动态密钥对封装短信中的密文进行解密即可获得原始短信内容。\n[0064] 应理解,用户终端初始保存的密钥表可以是固定的,但是一旦用户终端通过网络与云端服务器器建立连接(例如登录百度账户、启动百度app store等),即可以适时地改变该密钥表,例如,每次登录时更新或者每个月更新一次,这个更新策略,取决于所需的安全控制强度。\n[0065] 采用上述的动态密钥策略,一方面动态密钥是推送短信时临时动态产生的,增强单次短信推送的安全性,基本上不可能在接收者收到推送的短信之前完成短信破解。另一方面,动态密钥是与用户身份有关的,对于不同的用户终端,他们接收到的安全短信所使用的动态密钥是相互独立的,因此,即使黑客对某一个用户的动态密钥生成和保护规则完成了破解,也不代表破解了所有用户的动态密钥的生成和保护规则。也就是说,破解不具有普适性,极大地增加了破解所需的代价。再一方面,即使一个用户终端的密钥表在某个时刻被破解了,但是密钥表的更新机制保证了该系统不会一直被破解(使得破解具有时效性)。也就是说,更新机制使得密钥能够处于安全状态,即使被破解了也能够恢复为安全状态,这也极大地增加了破解本安全短信推送服务所需的代价。\n[0066] 综上,根据本发明实施例的短信推送方法实现了服务器端与用户终端的指定应用程序之间的点到点的、封闭的、私密的安全通道,使得短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0067] 本发明另一方面还提出一种短信推送系统。\n[0068] 图5是根据本发明一个实施例的短信推送系统的结构框图。如图5所示,短信推送系统包括云端服务器10和用户终端20。\n[0069] 云端服务器10上注册有接收短信的应用程序组件的信息,并根据指定的封装协议将接收短信的应用组件的信息和待发送的短信内容编码和加密以生成封装短信,以及将封装短信推送到用户终端20。用户终端20用于对封装短信进行解码和解密以获得短信内容和接收短信的应用程序组件的信息,并根据应用程序组件的信息将短信内容发送给对应的应用程序组件。\n[0070] 在本发明的一个实施例中,应用程序签名信息包括应用程序包名,应用程序签名信息和应用程序组件名,其中应用程序包名和应用程序签名信息指示对应的应用程序,应用程序组件名指示应用程序中的应用程序组件。封装短信的数据格式包括:安全短信标识符,用于标识封装短信是云端服务器为推送数据而发送的安全数据;时间戳,用于标识封装时间以及用于生成动态密钥;标识码,用于标识动态密钥;密文,其是使用动态密钥而加密得到的,且包括应用程序包名、应用程序组件名、应用程序签名信息以及短信内容。\n[0071] 在本发明的一个实施例中,密文的字节数为8的倍数。\n[0072] 用户终端20对封装短信进行解码和解密以获得短信内容和接收短信的应用程序组件的信息具体包括:用户终端20首先判断封装短信的类型,如果封装短信是封装了推送数据的安全数据,则根据预设解码方法、时间戳和标识码对封装短信进行解码和解密以获得短信内容和接收短信的应用程序组件的信息。\n[0073] 在本发明的一个实施例中,用户终端根据获取的接收短信的应用程序组件的信息将短信内容发送给对应的应用程序组件包括:根据信息调用回调函数onSmsPushReceive()以将短信内容分派给应用程序组件;以及调用返回函数onComplete()以返回对短信内容的处理结果。\n[0074] 根据本发明实施例的短信推送系统,实现了服务器端与用户终端的指定应用程序之间的点到点的、封闭的、私密的安全通道,使得短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0075] 图6为根据本发明一个实施例的短信推送系统的示意图。如图6所示,云端服务器\n10包括用户数据管理模块110、应用程序信息管理模块120、安全编码模块130和安全短信服务模块140。用户数据管理模块110管理着移动终端用户的信息,包括手机号码、用户ID和动态密码表等。应用程序信息管理模块120能够接收推送的数据的应用程序的信息,这些信息包括:应用程序包名、接收推送数据的应用程序组件名称、应用程序版本号、应用程序签名值、应用程序签名所用证书的信息等;同时,还向应用程序开发者提供了注册登记新的应用程序的在线系统,以便新的应用程序使用该短信推送系统。短信编码模块130按照上述的“安全短信封装协议”对待推送的数据进行协议封装,完成加密和编码操作,生成承载了待推送数据的封装短信(参见图2)。第一安全短信服务模块140是该短信推送系统的云端服务器的核心模块,该模块负责接收服务提供者的请求,接收到待推送的数据后,从应用程序信息管理模块120中获取接收数据的应用程序信息,从用户数据管理模块110中获取用户信息和短信发送的目标,将经过短信编码模块130生成的安全短信发送给指定的用户终端20。\n[0076] 用户终端20包括无线接口层210、短信解码模块220、动态密钥管理模块230、第二安全短信服务模块240和应用程序250。无线接口层210是移动终端系统的GSM/GPRS/EDGE模块的中间件。对于本短信推送系统,需要在该软件模块中增加一项功能:接收到短信后,先将短信指派给第二安全短信服务模块240,让该安全短信服务模块240首先处理该短信,如果该系统服务不能识别和处理该短信,才将短信作为普通短信向上指派给接收短信的应用程序。由此,使得承载着远程推送数据的短信能够在被应用程序接收之前就能被拦截和处理。\n[0077] 短信解码模块220可以按照上述“安全短信封装协议”对接收到的承载着远程推送数据的短信进行解封装,经过一系列的解码和解密的操作,最终得到远程推送的数据明文以及数据的接收者的相关信息(应用程序包名、应用程序签名和证书、应用程序接收数据的组件名等)。\n[0078] 动态密钥管理模块230管理着特定于该用户的用于生成动态密钥的私密数据,该数据会在合适的时候被更新(例如,Wifi状态良好时,用户终端可以方便地连接互联网的时候,通过Https建立安全网络会话来更新密钥相关的数据)。通常情况下,该动态密钥数据不需要更新,只是为了使得整个短信推送系统尽可能地远离被破解的危机,而给密钥相关数据设定了有效期限,在密钥即将过期是进行相关数据更新即可。\n[0079] 第二安全短信服务模块240是本短信推送系统的用户终端的核心模块,负责接收无线接口层210发送的短信,并由短信解码模块220对短信内容进行解密获取远程推送的数据明文和接收者相关的信息,然后指派给指定的接收者。该指派过程基于一个安全的一对一的绑定来进行数据传输,由此使得整个数据推送过程对于其他应用程序是透明的。同时,该模块还负责在适当的时候与云端服务器20建立安全会话,来更新特定于该终端用户的用于生成动态密钥的重要数据。\n[0080] 应用程序250特指能够接收本短信推送系统传输的远程推送数据的应用程序。这些应用程序通过实现上述的“安全短信服务的应用程序组件”来使用该推送数据的安全通道,同时该“安全短信服务的应用程序组件”也是远程推送数据的真正接收者,本质上就是该应用程序组件与第二安全短信服务模块240建立了一对一的安全数据通道。\n[0081] 本发明又一方面还提出一种短信推送云端服务器。\n[0082] 图7为根据本发明一个实施例的短信推送云端服务器的结构框图。如图7所示,根据本发明实施例的短信推送云端服务器包括注册单元1100、编码单元1200和推送单元\n1300。\n[0083] 注册单元1100用于注册有接收短信的应用程序组件的信息。在本发明的一个实施例中,所述信息可包括应用程序包名,应用程序签名信息和应用程序组件名等。其中,应用程序包名和应用程序签名信息指示对应的应用程序,应用程序组件名指示应用程序中的应用程序组件。\n[0084] 编码单元1200用于根据指定的封装协议将接收短信的应用程序组件的信息和待发送的短信内容编码和加密以生成封装短信。在本发明的一个实施例中,封装短信的数据格式包括:安全短信标识符,用于标识封装短信是云端服务器为推送数据而发送的安全数据;时间戳,用于标识封装时间以及用于生成动态密钥;标识码,用于标识动态密钥;密文,该密文是使用动态密钥而加密得到的,且密文包括应用程序包名,应用程序组件名,应用程序签名信息以及所述短信内容。其中,密文的字节数优选为8的倍数。\n[0085] 推送单元1300用于将封装短信推送到用户终端。\n[0086] 根据本发明实施例的短信推送云端服务器,通过注册接收短信的应用程序组件的信息,并根据该信息生成封装短信,保证了短信发送服务对除了发送方和接收方之外的第三方完全透明,保证推送的短信具有来源可靠、传输私密、送达精确和推送成本低的优点。\n[0087] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。\n[0088] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。\n[0089] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
法律信息
- 2016-04-20
- 2013-08-14
实质审查的生效
IPC(主分类): H04W 4/02
专利申请号: 201310132256.3
申请日: 2013.04.16
- 2013-07-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-04-10
|
2011-10-08
| | |
2
| |
2006-01-25
|
2004-07-19
| | |
3
| |
2013-03-13
|
2012-11-12
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |