CN103560883B - 一种基于用户权限的安卓应用程序间的安全性鉴定方法 - Google Patents

一种基于用户权限的安卓应用程序间的安全性鉴定方法 Download PDF

Info

Publication number
CN103560883B
CN103560883B CN201310521790.3A CN201310521790A CN103560883B CN 103560883 B CN103560883 B CN 103560883B CN 201310521790 A CN201310521790 A CN 201310521790A CN 103560883 B CN103560883 B CN 103560883B
Authority
CN
China
Prior art keywords
plug
program
card
character
user
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.)
Active
Application number
CN201310521790.3A
Other languages
English (en)
Other versions
CN103560883A (zh
Inventor
王堃
房硕
孙雁飞
吴蒙
郭篁
徐贺
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201310521790.3A priority Critical patent/CN103560883B/zh
Publication of CN103560883A publication Critical patent/CN103560883A/zh
Application granted granted Critical
Publication of CN103560883B publication Critical patent/CN103560883B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

一种基于用户权限的安卓应用程序间的安全性鉴定方法,基于安卓系统中的三个主体,在安卓设备中设计一个应用程序和另一个独立安装且作为该程序插件的应用程序两者间的安全性鉴定方法,这种鉴定方法是基于用户权限的,主程序中登录的不同的用户对被调用的插件程序具有不同的执行权限;设计主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,以及设计插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法。

Description

一种基于用户权限的安卓应用程序间的安全性鉴定方法
技术领域
本发明是一种基于用户权限的安卓应用程序间的安全性鉴定方法,可以鉴定程序是否被篡改,并可以在程序被调用时对主调程序的登录用户权限进行鉴定,属于安卓应用程序开发中的安全领域。
背景技术
在安卓应用程序开发中,有一种插件式开发方式。在这种插件式开发方式中,主程序和插件程序都以独立的应用程序形式存在于安卓系统中,它们可以独立安装,但插件程序并不给安卓系统提供启动接口,只可在主程序中进行调用。但是由于安卓平台的开放性,这种插件形式会遇到各种各样的安全问题。例如,主程序和插件程序之间的安全性鉴定问题,既存在恶意程序仿冒主程序的危险,也存在恶意者仿冒插件程序的危险。若不做任何安全措施,恶意的程序可以伪装成插件程序,骗取用户点击运行。恶意的程序也可以伪装成主程序,扫描所有的插件程序,肆意调用。再者,很多情况下主程序可能是基于用户的,不同的用户使用不同插件程序的权限也不同,所以插件程序在被调用时也需要鉴定调用者的权限。众所周知,安卓系统中窃取程序安装包是非常容易的,若不做防护措施,用户就可以随意安装使用所有插件程序,失去了用户权限的意义。更有甚者,恶意者可以伪装成鉴定服务器给用户授权,使得用户可以伪造权限调用插件程序。因此,就需要解决两个问题,一个是主程序和插件程序之间的身份鉴定问题,另一个是插件程序对在主程序中登陆用户的权限鉴定问题。
本方法中含有大量的哈希值计算,哈希算法是一种占用资源较小的加密算法,且我们的需求只是完成身份识别功能,哈希算法也完全符合我们要求。使用哈希值计算加密,也有效地隐藏了密码信息等敏感信息,使得即使信息在传输过程中被截获,也不具存在密码被破解以及系统被破坏的风险。
发明内容
技术问题:本发明的目的是提供一种基于用户权限的安卓应用程序间的安全性鉴定方法。
功能1.作为主程序的安卓应用程序(以下简称主程序)在扫描到系统中已安装的可用的作为主程序的插件的安卓应用程序(以下简称插件程序)时,对插件程序进行鉴定是否被篡改,并根据主程序中登录用户的权限鉴定是否可以加载该插件程序。
功能2.插件程序在被主程序调用时,鉴定主程序是否被篡改,并对主程序中登录用户的权限进行鉴定,是否允许调用。
技术方案:本方法中包含三个主体,一是服务器端,二是主程序,三是插件程序。
服务器端:服务器端存有用户的所有信息,包括用户名、密码、由用户名和密码运算得到的用于身份标识的验证信息(UserID),用户登陆时随机生成的具有短暂时效性的验证码(TempKey),用户对插件程序的执行权限、主程序的包名(MainPackageName)和主程序的签名信息(MainSignature)、每个插件程序的包名(FunctionPackageName)和对应的插件程序的签名信息(FunctionSignature)、用于服务器和插件程序间进行身份验证的识别信息(FunctionID)。服务器作为身份识别的最终判定者,并将身份识别的结果发送给请求方。
主程序:主程序的作用有:为用户提供登录功能、根据登录用户的权限加载安卓设备中已安装的插件程序、调用插件程序。主程序中记录着带有登录用户的用户名和密码信息的验证信息(UserID)。主程序在用户请求加载插件时会扫描安卓设备中所有已安装的插件程序。当主程序扫描到一个可用插件程序时,主程序需要鉴别插件程序的安全性以及登录用户对该插件程序的执行权限,所以预加载插件程序时需向服务器端发送身份鉴定请求。主程序将含有用户信息和预加载的业务程序信息的身份鉴定请求发送给服务器端,服务器经过身份鉴定后再将鉴定结果发回给主程序。主程序根据服务器的返回结果选择加载该插件程序或者跳过该插件程序。
插件程序:插件程序在被调用时需要对主调程序进行身份鉴定和对主调用户进行权限鉴定。插件程序将包含有主程序的包名和签名信息以及登录用户信息的密文发送到服务器端进行鉴定。若鉴定成功则允许调用,若鉴定失败则反馈鉴定失败信息并关闭自身防止非法调用。
本发明的一种基于用户权限的安卓应用程序间的安全性鉴定方法基于安卓系统中的三个主体,所述的三个主体,一是服务器端,二是作为主程序的安卓应用程序简称主程序,三是作为主程序的插件的安卓应用程序简称插件程序;在安卓设备中设计一个应用程序和另一个独立安装且作为该程序插件的应用程序两者间的安全性鉴定方法,这种鉴定方法是基于用户权限的,主程序中登录的不同的用户对被调用的插件程序具有不同的执行权限;设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,以及设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法。
所述的设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,当主程序扫描到安卓设备中一个已安装的插件程序时鉴定该插件程序是否为原版程序,并鉴定登录用户对该插件程序的使用权限,根据鉴定的结果选择是否加载该插件程序,鉴定流程为:
(1)主程序获取插件程序的包名FunctionPackageName和插件程序的签名信息FunctionSignature;
(2)主程序将FunctionPackageName和对应的FunctionSignature以及包含用户名和用户密码信息的密文UserID和用户登录时由服务器端生成的具有时效性的验证信息TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
(3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
(4)主程序向服务器发送鉴定请求,请求参数包括HashKey1和用户名UserName和FunctionPackageName三个信息;
(5)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向主程序返回鉴定失败信息,执行步骤(12),若验证成功则执行步骤(6);
(6)服务器使用本地记录的FunctionPackageName和FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
(7)服务器将HashKey1’与HashKey1进行比较,若不一致则返回鉴定失败信息,执行步骤(12),若验证一致则执行步骤(8);
(8)服务器将HashKey1和服务器端记录的UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2;
(9)服务器将HashKey2发送给主程序;
(10)主程序将HashKey1和UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2’;
(11)主程序将HashKey2’和HashKey2进行比较,若不一致则执行步骤(12),若验证一致则将加载该插件程序,鉴定完毕;
(12)鉴定失败,不加载该插件程序;
其中UserID根据用户名信息和密码信息加密计算得到,目的为验证用户信息且不使用明文包含密码信息,以提高安全性,TempKey为用户登录时由服务器随机生成的验证码,在用户登录成功后发送至客户端,它具有时效性,一段时间之后即失效,在验证信息中加入具有时效性的信息,即便验证信息在传递中被恶意者截获,也会很快失去价值。
所述的设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法,当插件程序被主程序调用时鉴定主程序是否为原版程序,鉴定登录用户是否具有使用权限,鉴定流程为:
(1)主程序获取插件程序的包名FunctionPackageName和签名信息FunctionSignature;
(2)主程序将FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
(3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
(4)主程序调用插件程序,将登录用户的用户名UserName和HashKey1作为参数传递给插件程序;
(5)插件程序获取主程序的包名MainPackageName和主程序的签名信息MainSignature;
(6)插件程序将UserName和HashKey1以及MainPackageName和MainSignature共四个信息进行逐字符相加的运算,得到一个字符串;
(7)插件程序对该字符串进行哈希值运算,得到一个新字符串命名为HashKey3;
(8)插件程序向服务器发送鉴定请求,参数包括HashKey3和UserName和FunctionPackageName三个信息;
(9)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向插件程序返回鉴定失败信息,执行步骤(17),若验证成功则执行步骤(10);
(10)服务器使用本地记录的FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
(11)服务器将UserName和HashKey1’以及本地记录的主程序的的包名MainPackageName和主程序的签名信息MainSignature共四个信息进行逐字符相加的运算,得到一个字符串,再对该字符串进行哈希值运算得到HashKey3’;
(12)服务器将HashKey3’与HashKey3进行比较,若不一致则返回失败信息,执行步骤(17);若验证一致则执行步骤(13);
(13)服务器将HashKey1’和HashKey3和用于插件程序身份鉴定的标识FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4;
(14)服务器将HashKey4发送给插件程序;
(15)插件程序将HashKey1和HashKey3和FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4’;
(16)插件程序将HashKey4’和HashKey4进行比较,若不一致则执行步骤(17),若验证一致则允许该次调用,鉴定完毕;
(17)鉴定失败,插件程序向用户反馈运行失败信息后关闭自身。
其中FunctionID为插件程序创建时服务器生成的身份标识,步骤(13)中添加FunctionID信息是为了防止恶意者仿冒服务器端进行伪造鉴定。
所述的服务器端,存有用户的所有信息,包括用户名、密码、由用户名和密码运算得到的用于身份标识的验证信息UserID,用户登陆时随机生成的具有短暂时效性的验证码TempKey,用户对插件程序的执行权限、主程序的包名MainPackageName和主程序的签名信息MainSignature、每个插件程序的包名FunctionPackageName和对应的插件程序的签名信息FunctionSignature、用于服务器和插件程序间进行身份验证的识别信息FunctionID,服务器作为身份识别的最终判定者,并将身份识别的结果发送给请求方。
所述的主程序,安装于安卓设备中,主程序的作用有:为用户提供登录功能、根据登录用户的权限加载安卓设备中已安装的插件程序、调用插件程序;主程序中记录着带有登录用户的用户名和密码信息的验证信息UserID,主程序在用户请求加载插件时会扫描安卓设备中所有已安装的插件程序,当主程序扫描到一个可用插件程序时,主程序需要鉴别插件程序的安全性以及登录用户对该插件程序的执行权限,所以预加载插件程序时需向服务器端发送身份鉴定请求,主程序将含有用户信息和预加载的业务程序信息的身份鉴定请求发送给服务器端,服务器经过身份鉴定后再将鉴定结果发回给主程序,主程序根据服务器的返回结果选择加载该插件程序或者跳过该插件程序。
所述的插件程序,是安装于同一安卓设备中的应用程序主程序的插件程序,插件程序在被调用时需要对主调程序进行身份鉴定和对主调用户进行权限鉴定,插件程序将包含有主程序的包名和签名信息以及登录用户信息的密文发送到服务器端进行鉴定,若鉴定成功则允许调用,若鉴定失败则反馈鉴定失败信息并关闭自身防止非法调用。
有益效果:
本方法具有以下功能:
(1)防止恶意程序伪装成合法的插件程序,欺骗用户加载和运行。
(2)恶意者无法通过穷举扫描的方式检测某个用户的所有可用插件。
(3)使用哈希值计算加密,隐藏敏感信息。
(4)加入具有短暂时效性的参数,即便信息在传输过程中被截获也会很快变得毫无价值。
(5)防止恶意者伪造服务器进行伪造授权。
(6)防止恶意程序伪装成主程序对插件程序进行调用。
(7)防止某位用户伪装成其他用户对插件程序进行调用。
(8)防止某个插件程序去验证某个用户对其他插件程序的执行权限。
附图说明
图1是一种主程序加载插件程序时对插件程序的安全性和用户权限鉴定流程。
图2是一种插件程序被调用时对主程序的安全性和权限性进行鉴定的流程。
具体实施方式
1.用户在主程序中登录的时候,主程序将用户名和用户密码进行字符运算得到一个包含用户身份标识信息的字符串UserID,服务器端也保留有该UserID。用户登录成功后,服务器会为用户分配一个具有时效性的验证码TempKey,该TempKey为随机生成,并在服务器中只保存一段很短的时间(例如半小时),超时后TempKey将会无效。服务器端还保存有主程序和所有插件程序的包名和签名信息以及用于插件程序身份识别的FunctionID。
本发明的一种基于用户权限的安卓应用程序间的安全性鉴定方法,基于安卓系统中的三个主体,所述的三个主体,一是服务器端,二是作为主程序的安卓应用程序简称主程序,三是作为主程序的插件的安卓应用程序简称插件程序;在安卓设备中设计一个应用程序和另一个独立安装且作为该程序插件的应用程序两者间的安全性鉴定方法,这种鉴定方法是基于用户权限的,主程序中登录的不同的用户对被调用的插件程序具有不同的执行权限;设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,以及设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法。
所述的设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,当主程序扫描到安卓设备中一个已安装的插件程序时鉴定该插件程序是否为原版程序,并鉴定登录用户对该插件程序的使用权限,根据鉴定的结果选择是否加载该插件程序,鉴定流程为:
(1)主程序获取插件程序的包名FunctionPackageName和插件程序的签名信息FunctionSignature;
(2)主程序将FunctionPackageName和对应的FunctionSignature以及包含用户名和用户密码信息的密文UserID和用户登录时由服务器端生成的具有时效性的验证信息TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
(3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
(4)主程序向服务器发送鉴定请求,请求参数包括HashKey1和用户名UserName和FunctionPackageName三个信息;
(5)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向主程序返回鉴定失败信息,执行步骤(12),若验证成功则执行步骤(6);
(6)服务器使用本地记录的FunctionPackageName和FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
(7)服务器将HashKey1’与HashKey1进行比较,若不一致则返回鉴定失败信息,执行步骤(12),若验证一致则执行步骤(8);
(8)服务器将HashKey1和服务器端记录的UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2;
(9)服务器将HashKey2发送给主程序;
(10)主程序将HashKey1和UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2’;
(11)主程序将HashKey2’和HashKey2进行比较,若不一致则执行步骤(12),若验证一致则将加载该插件程序,鉴定完毕;
(12)鉴定失败,不加载该插件程序;
其中UserID根据用户名信息和密码信息加密计算得到,目的为验证用户信息且不使用明文包含密码信息,以提高安全性,TempKey为用户登录时由服务器随机生成的验证码,在用户登录成功后发送至客户端,它具有时效性,一段时间之后即失效,在验证信息中加入具有时效性的信息,即便验证信息在传递中被恶意者截获,也会很快失去价值。
所述的设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法,当插件程序被主程序调用时鉴定主程序是否为原版程序,鉴定登录用户是否具有使用权限,鉴定流程为:
(1)主程序获取插件程序的包名FunctionPackageName和签名信息FunctionSignature;
(2)主程序将FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
(3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
(4)主程序调用插件程序,将登录用户的用户名UserName和HashKey1作为参数传递给插件程序;
(5)插件程序获取主程序的包名MainPackageName和主程序的签名信息MainSignature;
(6)插件程序将UserName和HashKey1以及MainPackageName和MainSignature共四个信息进行逐字符相加的运算,得到一个字符串;
(7)插件程序对该字符串进行哈希值运算,得到一个新字符串命名为HashKey3;
(8)插件程序向服务器发送鉴定请求,参数包括HashKey3和UserName和FunctionPackageName三个信息;
(9)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向插件程序返回鉴定失败信息,执行步骤(17),若验证成功则执行步骤(10);
(10)服务器使用本地记录的FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
(11)服务器将UserName和HashKey1’以及本地记录的主程序的的包名MainPackageName和主程序的签名信息MainSignature共四个信息进行逐字符相加的运算,得到一个字符串,再对该字符串进行哈希值运算得到HashKey3’;
(12)服务器将HashKey3’与HashKey3进行比较,若不一致则返回失败信息,执行步骤(17);若验证一致则执行步骤(13);
(13)服务器将HashKey1’和HashKey3和用于插件程序身份鉴定的标识FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4;
(14)服务器将HashKey4发送给插件程序;
(15)插件程序将HashKey1和HashKey3和FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4’;
(16)插件程序将HashKey4’和HashKey4进行比较,若不一致则执行步骤(17),若验证一致则允许该次调用,鉴定完毕;
(17)鉴定失败,插件程序向用户反馈运行失败信息后关闭自身。
其中FunctionID为插件程序创建时服务器生成的身份标识,步骤(13)中添加FunctionID信息是为了防止恶意者仿冒服务器端进行伪造鉴定。
所述的服务器端,存有用户的所有信息,包括用户名、密码、由用户名和密码运算得到的用于身份标识的验证信息UserID,用户登陆时随机生成的具有短暂时效性的验证码TempKey,用户对插件程序的执行权限、主程序的包名MainPackageName和主程序的签名信息MainSignature、每个插件程序的包名FunctionPackageName和对应的插件程序的签名信息FunctionSignature、用于服务器和插件程序间进行身份验证的识别信息FunctionID,服务器作为身份识别的最终判定者,并将身份识别的结果发送给请求方。
所述的主程序,安装于安卓设备中,主程序的作用有:为用户提供登录功能、根据登录用户的权限加载安卓设备中已安装的插件程序、调用插件程序;主程序中记录着带有登录用户的用户名和密码信息的验证信息UserID,主程序在用户请求加载插件时会扫描安卓设备中所有已安装的插件程序,当主程序扫描到一个可用插件程序时,主程序需要鉴别插件程序的安全性以及登录用户对该插件程序的执行权限,所以预加载插件程序时需向服务器端发送身份鉴定请求,主程序将含有用户信息和预加载的业务程序信息的身份鉴定请求发送给服务器端,服务器经过身份鉴定后再将鉴定结果发回给主程序,主程序根据服务器的返回结果选择加载该插件程序或者跳过该插件程序。
所述的插件程序,是安装于同一安卓设备中的应用程序主程序的插件程序,插件程序在被调用时需要对主调程序进行身份鉴定和对主调用户进行权限鉴定,插件程序将包含有主程序的包名和签名信息以及登录用户信息的密文发送到服务器端进行鉴定,若鉴定成功则允许调用,若鉴定失败则反馈鉴定失败信息并关闭自身防止非法调用。
功能1:
主程序在安装新的插件程序或扫描系统中已有的插件程序时,对插件程序进行合法性鉴定,分为以下几步流程:
(1)将获取到FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个信息进行字符串运算(例如逐字符相加,该算法不固定),处理为包含了这四个信息的一个字符串。
(2)再对得到的字符串进行哈希运算进行加密处理,得到一个新字符串命名为HashKey1。
(3)将HashKey1和UserName和FunctionPackageName三个信息发送到服务器进行验证。
(4)服务器先根据UserName和FunctionPackageName进行执行权限的验证,然后再验证插件程序的完整性。若服务器端验证失败,则返回验证失败信息。若服务器端验证成功,则服务器会将HashKey1以及服务器端记录的UserID进行字符串运算,得到一个字符串并进行哈希运算,命名为HashKey2,将HashKey2发送给主程序。主程序将HashKey1和UserID进行同样的运算,将结果和HashKey2进行比较,若一致则将加载该插件程序。
该方法可具有以下安全性:
(1)由于安装包的签名信息具有较高的安全性,将其加入验证信息后,恶意程序无法伪装成合法的插件程序包,欺骗用户加载和运行。
(2)将用户信息加入到验证信息中,在不知道用户密码的情况下,恶意者无法通过穷举扫描的方式检测该用户的所有可用插件。
(3)在信息的检测过程中,使用UserID隐藏用户的密码信息,提高了安全性,并防止在信息传输过程中被截获破解。
(4)使用随机生成并只具有短暂时效性的TempKey,信息在传输过程中万一被截获也会很快变得毫无价值,恶意者使用截获到的不变动的信息可以进行大量的恶意操作。
(5)步骤(4)可以防止恶意者伪造服务器进行伪造授权。
功能2:
插件程序在被调用时也要检测主调程序的信息,以及登录用户的权限。具体流程如下:
(1)首先在主程序中,在调用业务程序时,将UserName和HashKey1传递到被调用的插件程序中。
(2)插件程序将收到的UserName和HashKey1,以及MainPackageName和主MainSignature共四个信息进行字符串运算成一个字符串。
(3)插件程序再将得到的字符串进行哈希运算,得到一个新字符串命名为HashKey3。
(4)插件程序将HashKey3以及UserName和FunctionPackageName,三个信息发送到服务器端进行权限验证。
(5)服务器先根据UserName和FunctionPackageName进行执行权限的验证,然后再验证主程序的合法性。若验证失败,则服务器返回失败信息,插件程序不会被运行。若验证成功,服务器将运算出HashKey1,再将HashKey1和HashKey3和FunctionID三个字符串进行合并和哈希运算得到HashKey4。插件程序收到HashKey4后,进行同样的运算,将结果和HashKey4进行比较。若一致则说明主程序的合法性并且登录的用户具有运行该插件的权限。
该方法可具有以下安全性:
(1)恶意程序无法伪装成主程序对插件程序进行调用。
(2)一名用户无法伪装成其他用户对插件程序进行调用。
(3)将HashKey1加入到验证信息中是为了阻止某个插件程序去验证该用户对其他插件程序的执行权限。

Claims (4)

1.一种基于用户权限的安卓应用程序间的安全性鉴定方法,其特征在于该方法基于安卓系统中的三个主体,所述的三个主体,一是服务器端,二是作为主程序的安卓应用程序简称主程序,三是作为主程序的插件的安卓应用程序简称插件程序;在安卓设备中设计一个应用程序和另一个独立安装且作为该程序插件的应用程序两者间的安全性鉴定方法,这种鉴定方法是基于用户权限的,主程序中登录的不同的用户对被调用的插件程序具有不同的执行权限;设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,以及设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法;
所述的设计一种主程序加载插件程序时对插件程序执行的基于用户权限的安全性鉴定方法,当主程序扫描到安卓设备中一个已安装的插件程序时鉴定该插件程序是否为原版程序,并鉴定登录用户对该插件程序的使用权限,根据鉴定的结果选择是否加载该插件程序,鉴定流程为:
1)主程序获取插件程序的包名FunctionPackageName和插件程序的签名信息FunctionSignature;
2)主程序将FunctionPackageName和对应的FunctionSignature以及包含用户名和用户密码信息的密文UserID和用户登录时由服务器端生成的具有时效性的验证信息TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
4)主程序向服务器发送鉴定请求,请求参数包括HashKey1和用户名UserName和FunctionPackageName三个信息;
5)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向主程序返回鉴定失败信息,执行步骤12),若验证成功则执行步骤6);
6)服务器使用本地记录的FunctionPackageName和FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
7)服务器将HashKey1’与HashKey1进行比较,若不一致则返回鉴定失败信息,执行步骤12),若验证一致则执行步骤8);
8)服务器将HashKey1和服务器端记录的UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2;
9)服务器将HashKey2发送给主程序;
10)主程序将HashKey1和UserID两个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey2’;
11)主程序将HashKey2’和HashKey2进行比较,若不一致则执行步骤12),若验证一致则将加载该插件程序,鉴定完毕;
12)鉴定失败,不加载该插件程序;
其中UserID根据用户名信息和密码信息加密计算得到,目的为验证用户信息且不使用明文包含密码信息,以提高安全性,TempKey为用户登录时由服务器随机生成的验证码,在用户登录成功后发送至客户端,它具有时效性,一段时间之后即失效,在验证信息中加入具有时效性的信息,即便验证信息在传递中被恶意者截获,也会很快失去价值;
所述的设计一种插件程序被调用时对主程序执行的基于用户权限的安全性鉴定方法,当插件程序被主程序调用时鉴定主程序是否为原版程序,鉴定登录用户是否具有使用权限,鉴定流程为:
2.1)主程序获取插件程序的包名FunctionPackageName和签名信息FunctionSignature;
2.2)主程序将FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串;
2.3)主程序对该字符串使用哈希函数进行转换运算,得到一个新字符串命名为HashKey1;
2.4)主程序调用插件程序,将登录用户的用户名UserName和HashKey1作为参数传递给插件程序;
2.5)插件程序获取主程序的包名MainPackageName和主程序的签名信息MainSignature;
2.6)插件程序将UserName和HashKey1以及MainPackageName和MainSignature共四个信息进行逐字符相加的运算,得到一个字符串;
2.7)插件程序对该字符串进行哈希值运算,得到一个新字符串命名为HashKey3;
2.8)插件程序向服务器发送鉴定请求,参数包括HashKey3和UserName和 FunctionPackageName三个信息;
2.9)服务器先根据UserName和FunctionPackageName进行执行权限的验证,若验证失败则向插件程序返回鉴定失败信息,执行步骤2.17),若验证成功则执行步骤2.10);
2.10)服务器使用本地记录的FunctionPackageName和对应的FunctionSignature以及UserID和TempKey这四个字符串进行逐字符相加的运算,得到一个字符串,对该字符串进行哈希值运算,得到一个新字符串命名为HashKey1’;
2.11)服务器将UserName和HashKey1’以及本地记录的主程序的的包名MainPackageName和主程序的签名信息MainSignature共四个信息进行逐字符相加的运算,得到一个字符串,再对该字符串进行哈希值运算得到HashKey3’;
2.12)服务器将HashKey3’与HashKey3进行比较,若不一致则返回失败信息,执行步骤2.17);若验证一致则执行步骤2.13);
2.13)服务器将HashKey1’和HashKey3和用于插件程序身份鉴定的标识FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4;
2.14)服务器将HashKey4发送给插件程序;
2.15)插件程序将HashKey1和HashKey3和FunctionID三个字符串进行逐字符相加运算,得到一个字符串,再对该字符串进行哈希值运算,得到HashKey4’;
2.16)插件程序将HashKey4’和HashKey4进行比较,若不一致则执行步骤2.17),若验证一致则允许该次调用,鉴定完毕;
2.17)鉴定失败,插件程序向用户反馈运行失败信息后关闭自身 ;
其中FunctionID为插件程序创建时服务器生成的身份标识,步骤2.13)中添加FunctionID信息是为了防止恶意者仿冒服务器端进行伪造鉴定。
2.根据权利要求1所述的一种基于用户权限的安卓应用程序间的安全性鉴定方法,其特征在于所述的服务器端,存有用户的所有信息,包括用户名、密码、由用户名和密码运算得到的用于身份标识的验证信息UserID,用户登陆时随机生成的具有短暂时效性的验证码TempKey,用户对插件程序的执行权限、主程序的包名MainPackageName和主程序的签名信息MainSignature、每个插件程序的包名FunctionPackageName和对应的插件程序的签名信息FunctionSignature、用于服务器和插件程序间进行身份验证的识别信息FunctionID,服务器作为身份识别的最终判定者,并将身份识别的结果发送给请求方。
3.根据权利要求1所述的一种基于用户权限的安卓应用程序间的安全性鉴定方法,其特征在于所述的主程序,安装于安卓设备中,主程序的作用有:为用户提供登录功能、根据登录用户的权限加载安卓设备中已安装的插件程序、调用插件程序;主程序中记录着带有登录用户的用户名和密码信息的验证信息UserID,主程序在用户请求加载插件时会扫描安卓设备中所有已安装的插件程序,当主程序扫描到一个可用插件程序时,主程序需要鉴别插件程序的安全性以及登录用户对该插件程序的执行权限,所以预加载插件程序时需向服务器端发送身份鉴定请求,主程序将含有用户信息和预加载的业务程序信息的身份鉴定请求发送给服务器端,服务器经过身份鉴定后再将鉴定结果发回给主程序,主程序根据服务器的返回结果选择加载该插件程序或者跳过该插件程序。
4.根据权利要求1所述的一种基于用户权限的安卓应用程序间的安全性鉴定方法,其特征在于所述的插件程序,是安装于同一安卓设备中的应用程序主程序的插件程序,插件程序在被调用时需要对主调程序进行身份鉴定和对主调用户进行权限鉴定,插件程序将包含有主程序的包名和签名信息以及登录用户信息的密文发送到服务器端进行鉴定,若鉴定成功则允许调用,若鉴定失败则反馈鉴定失败信息并关闭自身防止非法调用。
CN201310521790.3A 2013-10-30 2013-10-30 一种基于用户权限的安卓应用程序间的安全性鉴定方法 Active CN103560883B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310521790.3A CN103560883B (zh) 2013-10-30 2013-10-30 一种基于用户权限的安卓应用程序间的安全性鉴定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310521790.3A CN103560883B (zh) 2013-10-30 2013-10-30 一种基于用户权限的安卓应用程序间的安全性鉴定方法

Publications (2)

Publication Number Publication Date
CN103560883A CN103560883A (zh) 2014-02-05
CN103560883B true CN103560883B (zh) 2016-08-31

Family

ID=50015039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310521790.3A Active CN103560883B (zh) 2013-10-30 2013-10-30 一种基于用户权限的安卓应用程序间的安全性鉴定方法

Country Status (1)

Country Link
CN (1) CN103560883B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108023858B (zh) * 2016-11-02 2019-03-01 视联动力信息技术股份有限公司 一种视联网网管安全认证方法及其系统
CN108092947B (zh) * 2016-11-23 2020-12-04 腾讯科技(深圳)有限公司 一种对第三方应用进行身份鉴别的方法及装置
CN106709347B (zh) * 2016-11-25 2019-06-11 腾讯科技(深圳)有限公司 应用运行的方法及装置
CN106559223B (zh) * 2016-11-29 2019-11-15 武汉斗鱼网络科技有限公司 应用程序签名方法及装置
CN106453425A (zh) * 2016-12-09 2017-02-22 郑州云海信息技术有限公司 一种多用户使用主机插件的权限管理方法及系统
CN108259429B (zh) * 2016-12-29 2021-01-29 航天信息股份有限公司 一种针对软件分发进行控制的方法和系统
CN107341378A (zh) * 2017-06-28 2017-11-10 上海爱优威软件开发有限公司 用于设定应用的使用权限的方法
WO2020047764A1 (zh) * 2018-09-05 2020-03-12 福建联迪商用设备有限公司 一种调用api的方法及终端
CN109450633B (zh) * 2018-09-25 2022-10-21 平安科技(深圳)有限公司 信息加密发送方法及装置、电子设备、存储介质
CN112580014B (zh) * 2020-12-24 2023-03-24 维沃移动通信有限公司 验证码获取方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009005A (zh) * 2006-01-24 2007-08-01 中国电信股份有限公司 保障基于互联网的支付安全的方法、系统和平台
CN101552676A (zh) * 2009-05-06 2009-10-07 阿里巴巴集团控股有限公司 插件模块验证宿主模块合法性的方法、系统及设备
CN102883324A (zh) * 2012-10-19 2013-01-16 广州市动景计算机科技有限公司 移动终端中的插件调用安全验证方法及装置、移动终端
CN103365644A (zh) * 2012-04-10 2013-10-23 腾讯科技(深圳)有限公司 一种扩展软件功能的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3555858B2 (ja) * 2000-03-23 2004-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体
US20120222051A1 (en) * 2011-02-25 2012-08-30 Microsoft Corporation Shared resource access verification

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009005A (zh) * 2006-01-24 2007-08-01 中国电信股份有限公司 保障基于互联网的支付安全的方法、系统和平台
CN101552676A (zh) * 2009-05-06 2009-10-07 阿里巴巴集团控股有限公司 插件模块验证宿主模块合法性的方法、系统及设备
CN103365644A (zh) * 2012-04-10 2013-10-23 腾讯科技(深圳)有限公司 一种扩展软件功能的方法及装置
CN102883324A (zh) * 2012-10-19 2013-01-16 广州市动景计算机科技有限公司 移动终端中的插件调用安全验证方法及装置、移动终端

Also Published As

Publication number Publication date
CN103560883A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN103560883B (zh) 一种基于用户权限的安卓应用程序间的安全性鉴定方法
CN104469767B (zh) 一套移动办公系统中集成式安全防护子系统的实现方法
CN105659559B (zh) 验证远程服务器的安全性
US8590024B2 (en) Method for generating digital fingerprint using pseudo random number code
CN105024819B (zh) 一种基于移动终端的多因子认证方法及系统
CN103188221B (zh) 应用程序登录方法、装置和移动终端
CN101350723B (zh) 一种USB Key设备及其实现验证的方法
CN104735065B (zh) 一种数据处理方法、电子设备及服务器
CN103795724B (zh) 一种基于异步动态口令技术的保护账户安全的方法
CN112000951B (zh) 一种访问方法、装置、系统、电子设备及存储介质
CN108416589A (zh) 区块链节点的连接方法、系统及计算机可读存储介质
CN106330838B (zh) 一种动态签名方法及应用该方法的客户端和服务器
CN104199657B (zh) 开放平台的调用方法及装置
CN108399329A (zh) 一种提高可信应用程序安全的方法
CN106453361B (zh) 一种网络信息的安全保护方法及系统
CN109257391A (zh) 一种访问权限开放方法、装置、服务器及存储介质
CN111886828B (zh) 基于共识的在线认证
CN106156635A (zh) 终端启动方法和装置
CN106453422B (zh) 一种基于移动终端动态认证方法及系统
TWM623435U (zh) 使用多安全層級驗證客戶身分與交易服務之系統
EP1886204B1 (en) Transaction method and verification method
CN110020869B (zh) 用于生成区块链授权信息的方法、装置及系统
CN110381075B (zh) 基于区块链的设备身份认证方法和装置
CN111800377B (zh) 一种基于安全多方计算的移动终端身份认证系统
CN110661800A (zh) 一种支持保证级别的多因子身份认证方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20140205

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000218

Denomination of invention: Safety identification method, between android application programs, based on user right

Granted publication date: 20160831

License type: Common License

Record date: 20161118

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EC01 Cancellation of recordation of patent licensing contract

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000218

Date of cancellation: 20180116

EC01 Cancellation of recordation of patent licensing contract
TR01 Transfer of patent right

Effective date of registration: 20200605

Address after: Room 408, block D, Caiying building, No.99 Tuanjie Road, Jiangbei new district, Nanjing, Jiangsu

Patentee after: Jiangsu Jiangxin Electronic Technology Co., Ltd

Address before: 210003 Gulou District, Jiangsu, Nanjing new model road, No. 66

Patentee before: NANJING University OF POSTS AND TELECOMMUNICATIONS

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210428

Address after: Gulou District of Nanjing City, Jiangsu province 210009 dingjiaqiao talent apartment No. 32 3-1-1902

Patentee after: Wang Kun

Address before: Room 408, block D, Caiying building, No.99 Tuanjie Road, Jiangbei new district, Nanjing, Jiangsu

Patentee before: Jiangsu Jiangxin Electronic Technology Co., Ltd

TR01 Transfer of patent right