发明内容
为了提高Android企业应用的安全性,本发明提供了一种安卓企业应用的鉴权方法及系统。所述技术方案如下:
一种安卓企业应用的鉴权方法,所述方法包括:
安卓Android客户端当启动待启动的程序时,如果不是首次启动所述待启动的程序,则获取自身包括IMSI(International Mobile SubscriberIdentificationNumber,国际移动用户识别码)码、IMEI(International Mobile Equipment Identity,国际移动设备身份码)码和MDN(Mobile Directory Number,移动用户号码簿号码)码,还进一步获取RSA(公钥加密算法)公钥和当前的时间戳,根据DES(Data Encryption Algorithm,数据加密算法)会话密钥和所述当前的时间戳对所述IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,根据所述RSA公钥对所述DES会话密钥进行加密,发送鉴权请求消息,所述鉴权请求消息携带加密的所述IMSI码、IMEI码、MDN码、待启动的程序的标识和DES会话密钥;
服务器接收所述鉴权请求消息,根据RSA私钥对所述加密的DES会话密钥进行解密,获取当前的时间戳,根据所述解密的DES会话密钥和所述当前的时间戳对所述加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密,根据所述解密的待启动的程序的标识,从已存储的程序标识与软件密钥的对应关系中查找出所述待启动的程序对应的软件密钥;根据所述软件密钥对所述解密的IMSI码、IMEI码和MDN码进行加密,将所述加密的IMSI码、IMEI码和MDN码分别与鉴权信息列表中每条记录包括的IMSI码、IMEI码和MDN码进行匹配,如果从所述鉴权信息列表中匹配出包括所述加密的IMSI码、IMEI码和MDN码的记录,则对所述Android客户端鉴权通过,如果从所述鉴权信息列表中没有匹配出包括所述加密的IMSI码、IMEI码和MDN码的记录,则对所述对所述Android客户端鉴权失败;
其中,允许所述Android客户端获取的时间戳与所述服务器获取的时间戳之间的时间差在预设的时间值内。
一种安卓企业应用的鉴权系统,所述系统包括安卓Android客户端和服务器;
所述Android客户端,用于当启动待启动的程序时,如果不是首次启动所述待启动的程序,则获取自身包括IMSI码、IMEI码和MDN码,还进一步获取RSA公钥和当前的时间戳,根据DES会话密钥和所述当前的时间戳对所述IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,根据所述RSA公钥对所述DES会话密钥进行加密,发送鉴权请求消息,所述鉴权请求消息携带加密的所述IMSI码、IMEI码、MDN码、待启动的程序的标识和DES会话密钥;
所述服务器,用于接收所述鉴权请求消息,根据RSA私钥对所述加密的DES会话密钥进行解密,获取当前的时间戳,根据所述解密的DES会话密钥和所述当前的时间戳对所述加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密,根据所述解密的待启动的程序的标识,从已存储的程序标识与软件密钥的对应关系中查找出所述待启动的程序对应的软件密钥;根据所述软件密钥对所述解密的IMSI码、IMEI码和MDN码进行加密,将所述加密的IMSI码、IMEI码和MDN码分别与鉴权信息列表中每条记录包括的IMSI码、IMEI码和MDN码进行匹配,如果从所述鉴权信息列表中匹配出包括所述加密的IMSI码、IMEI码和MDN码的记录,则对所述Android客户端鉴权通过,如果从所述鉴权信息列表中没有匹配出包括所述加密的IMSI码、IMEI码和MDN码的记录,则对所述对所述Android客户端鉴权失败;
其中,允许所述Android客户端获取的时间戳与所述服务器获取的时间戳之间的时间差在预设的时间值内。
在本发明实施例中,Android客户根据当前的时间戳和DES会话密钥对IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,得到密文;以及在服务器侧,服务器根据当前的时间戳和DES会话密钥对Android客户端加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密,所以Android客户端每次运行待启动的程序时,加密得到的密文都是不一样的且为动态变化的,如此提高Android企业应用的安全性。
实施例1
如图1所示,本发明实施例提供了一种安卓企业应用的鉴权方法,包括:
步骤101:Android客户端当启动待启动的程序时,如果不是首次启动待启动的程序,则获取自身包括IMSI码、IMEI码和MDN码,还进一步获取RSA公钥和当前的时间戳,根据DES会话密钥和当前的时间戳对获取的IMSI码、IMEI码和MDN码,以及待启动的程序的标识进行加密;
步骤102:Android客户端根据RSA公钥对DES会话密钥进行加密,发送鉴权请求消息,该鉴权请求消息携带加密的IMSI码、IMEI码、MDN码、待启动的程序的标识和DES会话密钥;
步骤103:服务器接收鉴权请求消息,根据RSA私钥对加密的DES会话密钥进行解密,获取当前的时间戳,根据解密的DES会话密钥和当前的时间戳对加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密;
步骤104:服务器根据解密的IMSI码、IMEI码、MDN码和待启动的程序的标识对Android客户端进行鉴权。
在本发明实施例中,Android客户根据当前的时间戳和DES会话密钥对IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,得到密文;以及在服务器侧,服务器根据当前的时间戳和DES会话密钥对Android客户端加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密,所以Android客户端每次运行待启动的程序时,加密得到的密文都是不一样的且为动态变化的,如此提高Android企业应用的安全性。
实施列2
如图2所示,本发明实施例提供了一种安卓企业应用的鉴权方法,包括:
步骤201:当Android客户端启动待启动的程序时,判断是否首次启动待启动的程序,如果是,执行步骤202,如果否,执行步骤207;
其中,对于Android客户端内的程序,如果该程序在安装后一直未启动,则该程序对应一个状态为未启动状态,如果该程序在安装后已被启动,则该程序对应一个状态为已启动状态。
具体地,Android客户端获取待启动的程序对应的状态,如果获取的状态为未启动状态,则判断出首次启动待启动的程序,如果获取的状态为已启动状态,则判断出不是首次启动待启动的程序。
步骤202:Android客户端获取IMSI码、IMEI码和MDN码,还进一步获取待启动的程序的标识和软件密钥;
其中,Android客户端内包含有待启动的程序的标识、软件密钥、IMSI码、IMEI码和MDN码。
步骤203:Android客户端根据DES会话密钥对获取的IMSI码、IMEI码、MDN码、待启动的程序的标识和软件密钥进行加密,根据服务器的RSA公钥对DES会话密钥进行加密;
其中,Android客户端会周期性生成DES会话密钥并将生成的DES会话密钥缓存在存储器中,且Android客户端的存储器中事先存储有DES加密算法和RSA加密算法;服务器的公钥管理中心中存储有RSA公钥和RSA私钥对。
具体地,Android客户端从自身的存储器中读取DES会话密钥和DES加密算法,根据读取的DES会话密钥并通过读取的DES加密算法对获取的IMSI码、IMEI码、MDN码、待启动的程序的标识和软件密钥进行加密,从服务器的公钥管理中心获取RSA公钥,从自身的存储器中读取RSA加密算法,根据获取的RSA公钥并通过读取的RSA加密算法对读取的DES会话密钥进行加密。
步骤204:Android客户端发送注册请求消息给服务器,且该注册请求消息携带加密后的IMSI码、IMEI码、MDN码、待启动的程序的标识和软件密钥,以及加密后DES会话密钥;
步骤205:服务器接收该注册请求后消息;根据解密的DES会话密钥对加密的IMSI码、IMEI码、MDN码、待启动的程序的标识和软件密钥进行解密;
其中,服务器内事先存储有DES解密算法和RSA解密算法。
具体地,服务器接收注册请求消息,且该注册请求消息携带加密后的IMSI码、IMEI码、MDN码、DES会话密钥、待启动的程序的标识和软件密钥,从自身的公钥管理中心中获取RSA私钥以及读取自身存储的RSA解密算法;根据获取的RSA私钥,并通过读取的RSA解密算法对加密的DES会话密钥进行解密;读取存储的DES解密算法,根据解密的DES会话密钥,并通过读取的DES解密算法对加密的IMSI码、IMEI码、MDN码、待启动的程序的标识和软件密钥进行解密。
步骤206:服务器根据解密的软件密钥对IMSI码、IMEI码和MDN码进行加密,将加密的IMSI码、IMEI码和MDN码存储在鉴权信息列表中,以及将待启动的程序的标识与软件密钥存储在程序标识与软件密钥的对应关系中,根据待启动的程序的标识获取待启动的程序的最新版本号,发送待启动的程序的最新版本号给Android客户端,执行步骤213;
具体地,服务器根据解密的软件密钥对IMSI码、IMEI码和MDN码进行加密,将加密的IMSI码、IMEI码和MDN码存储在鉴权信息列表中,将待启动的程序的标识和软件密钥作为一条记录,并将该条记录存储在程序标识与软件密钥的对应关系中,根据待启动的程序的标识获取待启动的程序的最新版本号,发送待启动的程序的最新版本号给Android客户端。
步骤207:Android客户端获取IMSI码、IMEI码和MDN码、当前的时间戳和待启动的程序的标识;
具体地,Android客户端获取自身的包括的IMSI码、IMEI码、MDN码和待启动的程序的标识,从CDMA(Code Division Multiple Access,码分多址)网络中读取当前时间,并将读取的当前时间作为当前的时间戳。
步骤208:Android客户端根据DES会话密钥和当前的时间戳对获取的IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,根据服务器的RSA公钥对DES会话密钥进行加密;
具体地,Android客户端从自身的存储器中读取DES会话密钥,DES加密算法和RSA加密算法,根据读取的DES会话密钥和当前的时间戳,并通过读取的DES加密算法对获取的IMSI码、IMEI码、MDN码和待启动的程序的标识行加密,从服务器的公钥管理中心获取RSA公钥,根据获取的RSA公钥并通过读取的RSA加密算法对读取的DES会话密钥进行加密。
步骤209:Android客户端发送鉴权请求消息给服务器,且该鉴权请求消息携带加密后的IMSI码、IMEI码、MDN码、待启动的程序的标识以及加密后的DES会话密钥;
步骤210:服务器接收该鉴权请求消息,对该DES会话密钥进行解密,获取当前的时间戳;根据当前的时间戳和解密的DES会话密钥对加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密;
具体地,服务器接收该鉴权请求消息,且该鉴权请求消息携带加密后的IMSI码、IMEI码、MDN码、DES会话密钥和待启动的程序的标识,从自身的公钥管理中心中获取RSA私钥,以及读取存储的DES解密算法和RSA解密算法,根据获取的的RSA私钥,并通过读取的RSA解密算法对加密的DES会话密钥进行解密,获取当前的时间戳,根据解密的DES会话密钥当前的时间戳,并通过读取的DES解密算法对加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密。
其中,引入当前的时间戳可以使Android客户端加密的IMSI码、IMEI码、MDN码和待启动的程序的标识具有时效性,如此Android客户端每次启动应用程序时加密的密文都是动态变化的,还可以允许Android客户端获取的时间戳与服务器获取的时间戳之间的时间差在预设的时间值内。假设,预设的时间值为半小时,则Android客户端加密的IMSI码、IMEI码、MDN码和待启动的程序的标识有效期最多为半小时。
步骤211:服务器根据待启动的程序的标识获取对应的软件密钥,根据获取的软件密钥对解密的IMSI码、IMEI码和MDN码进行加密,根据加密的IMSI码、IMEI码和MDN码对Android客户端进行鉴权,如果鉴权通过,则执行步骤212;
具体地,服务器根据待启动的程序的标识获取对应的软件密钥,根据获取的软件密钥对解密的IMSI码、IMEI码和MDN码进行加密,将加密的IMSI码、IMEI码和MDN码分别与鉴权信息列表中每条记录存储的IMSI码、IMEI码和MDN码进行匹配,如果从鉴权信息列表中匹配出包括加密码的IMSI码、IMEI码和MDN码的记录,则对Android客户端鉴权通过;如果从鉴权信息列表中没有匹配出包括加密码的IMSI码、IMEI码和MDN码的记录,则对Android客户端鉴权失败。
其中,如果对Android客户端鉴权失败,则结束操作。
其中,在本实施例中,Android客户端包括企业鉴权客户端程序,且Android客户端可以动态变更公钥或密钥规则。
步骤212:服务器根据待启动的程序的标识获取待启动的程序的最新版本号,发送待启动的程序的最新版本号;
步骤213:Android客户端接收服务器发送待启动的程序的最新版本号,根据该程序的最新版本号,判断是否需要更新待启动的程序;
具体地,Android客户端接收服务器发送待启动的程序的最新版本号,获取自身缓存待启动的程序的版本号,比较获取的版本号和待启动的程序的最新版本号,如果两者相同,则判断出不需要更新待启动的程序,如果两者不同,则判断出需要更新待启动的程序。
步骤214:如果需要更新待启动的程序,则Android客户端更新该程序,并在更新结束后启动待启动的程序,如果不需要更新待启动的程序,则Android客户端直接启动待启动的程序。
其中,Android客户端更新完待启动的程序后,将缓存待启动的程序的版本号更新为待启动的程序的最新版本号。
在本发明实施例中,Android客户根据当前的时间戳和DES会话密钥对IMSI码、IMEI码、MDN码和待启动的程序的标识进行加密,得到密文;以及在服务器侧,服务器根据当前的时间戳和DES会话密钥对Android客户端加密的IMSI码、IMEI码、MDN码和待启动的程序的标识进行解密,所以Android客户端每次运行应用程序时,加密得到的密文都是不一样且为动态变化的,如此提高Android企业应用的安全性。