CN106991320A - 基于定制化安卓系统的应用鉴权方法 - Google Patents

基于定制化安卓系统的应用鉴权方法 Download PDF

Info

Publication number
CN106991320A
CN106991320A CN201710200162.3A CN201710200162A CN106991320A CN 106991320 A CN106991320 A CN 106991320A CN 201710200162 A CN201710200162 A CN 201710200162A CN 106991320 A CN106991320 A CN 106991320A
Authority
CN
China
Prior art keywords
signature
installation package
application
package file
application installation
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.)
Granted
Application number
CN201710200162.3A
Other languages
English (en)
Other versions
CN106991320B (zh
Inventor
邱霖恺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FUJIAN SHIDA COMPUTER EQUIPMENT Co Ltd
Original Assignee
FUJIAN SHIDA COMPUTER EQUIPMENT Co Ltd
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 FUJIAN SHIDA COMPUTER EQUIPMENT Co Ltd filed Critical FUJIAN SHIDA COMPUTER EQUIPMENT Co Ltd
Priority to CN201710200162.3A priority Critical patent/CN106991320B/zh
Publication of CN106991320A publication Critical patent/CN106991320A/zh
Application granted granted Critical
Publication of CN106991320B publication Critical patent/CN106991320B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于定制化安卓系统的应用鉴权方法。S1、设备安装应用安装包文件时,判断该应用是否已安装过,若是,执行步骤S2;否则,执行步骤S3;S2、比对该安装应用安装包文件在Andoroid原生签名里的公钥是否与首次安装的应用安装包文件版本在Andoroid原生签名里的公钥一致,若否,则执行步骤S3;若是,执行步骤S4;S3、进行应用安装包文件的验签,验签通过后执行步骤S4,若验签不通过,则终止流程;S4、进行应用安装包文件的安装/更新,完成应用安装/更新。本发明不但简化了第三方应用开发者的应用更新流程,还能够避免不同项目之间如果使用相同公钥验签而出现的应用相互切机的情况。

Description

基于定制化安卓系统的应用鉴权方法
技术领域
本发明涉及一种基于定制化安卓系统的应用鉴权方法。
背景技术
一般文件鉴权通常采用的是对文件进行签名和验签的策略。而对于安卓系统的应用包安装,如果应用在安装后需要进行更新,仍然需要再次对已更新的文件进行签名。本技术基于安卓原生应用签名,提取利用其签名采用RSA2048算法非对称密钥进行签名的特性,提取公钥特征码(SHA256)进行管控,对于已经安装过一次的应用可以配置无需对更新包进行签名,只需要Android应用原生签名公钥特征一致即可更新。本技术针对Android应用包结构不会校验文件尾部附加数据的特点,将签名信息附加在文件尾部,采用RSA2048非对称密钥进行签名验签,利用灌装公钥到定制化系统进行验签,使用私钥对应用包进行签名的方式进行鉴权管控。
可信任应用安装一般通过应用市场等安全途径获取应用,但是一些用户会允许非应用市场的途径安装一些第三方应用,此时需要更加安全的应用授权方式。采用首次安装应用包需要签名的机制,搭配可配置是否后续每次更新的应用包都需要对应签名来进行判断,依靠Android原生签名的公私钥对是不变的特性,加上程序包名的判断来保证应用不会被非法应用包所更新。只需要在首次安装时给应用包做额外签名,这为一些第三方可信任机构开发的应用自主更新提供了更加方便的途径。
另一方面,现有的技术中对于多客户的环境下,并不能满足一些客户要求定制的Android终端不能安装其他客户的应用,本技术采用签名添加项目ID域的方式,对不同项目进行隔离,保证不同项目的定制终端相互之间系统相同但是应用相互无法切机安装。
已有技术中,大部分签名方案的缺陷就是无法兼容其他系统开发商的签名方案,而本技术采用了多厂商签名设计方案,使得一套签名可以同时签下多个厂商的签名信息,且相互直接不干扰。
发明内容
本发明的目的在于提供一种基于定制化安卓系统的应用鉴权方法,该方法不但简化了第三方应用开发者的应用更新流程,还能够避免不同项目之间如果使用相同公钥验签而出现的应用相互切机的情况。
为实现上述目的,本发明的技术方案是:一种基于定制化安卓系统的应用鉴权方法,包括如下步骤,
S1、设备安装应用安装包文件时,判断该应用是否已安装过,若是,执行步骤S2;否则,执行步骤S3;
S2、比对该安装应用安装包文件在Andoroid原生签名里的公钥是否与首次安装的应用安装包文件版本在Andoroid原生签名里的公钥一致,若否,则执行步骤S3;若是,执行步骤S4;
S3、进行应用安装包文件的验签,验签通过后执行步骤S4,若验签不通过,则终止流程;
S4、进行应用安装包文件的安装/更新,完成应用安装/更新。
在本发明一实施例中,在步骤S1之前,还包括对应用安装包文件签名的过程,具体如下:
S01、签名程序获取待签名的应用安装包文件、及与之对应的项目ID和签名用的私钥;
S02、签名程序根据配置依次调用各个厂商提供的签名接口,得到不同厂家的签名数据块,并依次追加写入签名数据块到待签名的应用安装包文件的末尾;
S03、签名程序根据签名的写入偏移量、签名数据块大小和项目ID生成签名索引表,并将该签名索引表也加入待签名的应用安装包文件的末尾。
在本发明一实施例中,所述签名索引表用来表述各个不同厂商的签名数据块在文件中的位置和大小。
在本发明一实施例中,所述步骤S3中,应用安装包文件的验签方式具体如下:
S31、设备获得待验签的应用安装包文件和一用于验签的公钥;
S32、从待验签的应用安装包文件末尾开始寻找签名索引表,若无,则终止流程,若是,执行步骤S33;
S33、判断签名索引表是否损坏,若是,则终止流程,若否,则继续判断签名索引表内项目ID是否与本设备匹配一致,若否,则终止流程;若是,则执行步骤S34;
S34、根据签名索引表查找本设备对应厂商的签名信息,并根据厂商自定义的签名和公钥进行验签比对签名信息数据是否合法,若不合法,终止流程。
相较于现有技术,本发明具有以下有益效果:
1.应用安装包需要额外签名的次数仅仅是首次安装时应用的签名,根据配置可以启用后续只要没有变更Android原生签名密钥则无需再次签名更新安装包,简化了第三方应用开发者的应用更新流程;
2.一个文件中可以带有多个不同终端厂商的签名信息,各家可以根据自行需求进行验证;
3.对应同一个厂商的不同项目,采用了签名信息内嵌项目ID的方式进行管控,避免不同项目之间如果使用相同公钥验签而出现的应用相互切机的情况。
附图说明
图1为已签名文件的文件结构。
图2为本发明签名工具框架图。
图3为本发明应用安装包文件尾部签名数据块的验签流程图。
图4为本发明使用应用安装包文件安装/更新应用的流程图。
图5为本发明给应用安装包文件尾部签名的流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明的一种基于定制化安卓系统的应用鉴权方法,包括如下步骤,
S1、设备安装应用安装包文件时,判断该应用是否已安装过,若是,执行步骤S2;否则,执行步骤S3;
S2、比对该安装应用安装包文件在Andoroid原生签名里的公钥是否与首次安装的应用安装包文件版本在Andoroid原生签名里的公钥一致,若否,则执行步骤S3;若是,执行步骤S4;
S3、进行应用安装包文件的验签,验签通过后执行步骤S4,若验签不通过,则终止流程;
S4、进行应用安装包文件的安装/更新,完成应用安装/更新。
在步骤S1之前,还包括对应用安装包文件签名的过程,具体如下:
S01、签名程序获取待签名的应用安装包文件、及与之对应的项目ID和签名用的私钥;
S02、签名程序根据配置依次调用各个厂商提供的签名接口,得到不同厂家的签名数据块,并依次追加写入签名数据块到待签名的应用安装包文件的末尾;
S03、签名程序根据签名的写入偏移量、签名数据块大小和项目ID生成签名索引表,并将该签名索引表也加入待签名的应用安装包文件的末尾。
所述签名索引表用来表述各个不同厂商的签名数据块在文件中的位置和大小。
所述步骤S3中,应用安装包文件的验签方式具体如下:
S31、设备获得待验签的应用安装包文件和一用于验签的公钥;
S32、从待验签的应用安装包文件末尾开始寻找签名索引表,若无,则终止流程,若是,执行步骤S33;
S33、判断签名索引表是否损坏,若是,则终止流程,若否,则继续判断签名索引表内项目ID是否与本设备匹配一致,若否,则终止流程;若是,则执行步骤S34;
S34、根据签名索引表查找本设备对应厂商的签名信息,并根据厂商自定义的签名和公钥进行验签比对签名信息数据是否合法,若不合法,终止流程。
以下为本发明的具体实现过程。
本发明的基于定制化安卓系统的应用鉴权方法,可以分为以下几个部分:
1.签名的机制(参见图1)
a)针对之前未安装过的应用的应用安装包文件,通过文件尾部追加签名数据块实现的定制签名验签机制。其中这个签名块是由一个签名索引表数据块,和各个厂商对应签名数据块组成的。
b)针对已经安装过的应用,比对Android原生签名里的公钥是否和首次安装的版本的公钥一致的机制。
c)针对不同终端供应商不同的签名无法兼容的问题,通过配置一个签名索引表,实现了多厂商签名兼容的情况。
d)针对不同项目使用相同公钥验签的情况,采用签名内嵌一个项目ID,对应项目ID固化一个项目ID在系统里,在应用首次安装的时候针对项目ID进行比对,不符合规则的也不允许所请求的应用包执行安装步骤。
2.应用安装包文件的签名工具(参见图2)
采用模块化接口,各个厂家只需要适配对应的签名接口并提供对应动态库,然后配置对应配置项目到配置信息表,即可在目标文件签名区加入对应厂家的自定义签名
b)项目ID也配置在配置信息表内。
c)可以同时在一个文件中签入多个厂家的签名信息,互不冲突。
3.系统端的验签模块(参见图5)
a)通过索引表只查找本机器对应的厂商的签名并进行验证,保证文件完整性的前提下进行合法性校验。
b)对于已经安装过的应用则还可以在验签之前先行检验是否和之前的应用安装包的Android原生签名的公钥是一致的,一致则可以根据配置选择是否跳过检查文件合法性。
c)针对不同项目使用相同公钥验签的情况,采用签名内嵌一个项目ID,对应项目ID固化一个项目ID在系统里,在应用首次安装的时候针对项目ID进行比对,不符合规则的也不允许所请求的应用包执行安装步骤。
实现方式如下:
1.应用安装包文件尾部签名数据块的验签流程(见图3)
设备先得到一个待验签的文件和一段用来验签的公钥数据,从文件末尾开始寻找签名索引表,厂商根据需要可以比对索引表内的项目ID是否和机器内固化的项目ID一致,不一致可以根据策略停止安装流程,之后根据索引表查找设备对应厂商的签名信息,根据厂商自定义的签名和公钥进行验签比对签名信息数据是否合法。这其中索引表对所有的厂商签名数据块都有做一层完整性校验,而各个厂商的签名数据块则对原始文件完整性数据又进行了一次校验,因此可以保证原文件和签名后的文件数据被篡改都能被检测的出来。
2.使用应用安装包文件安装/更新应用的流程 (见图4)
设备先得到一个应用安装包文件,从中解析出程序包名,并判断是否已经在系统内安装过。如果没有安装过则直接执行应用安装包文件尾部签名数据块的验签流程。如果已经安装过,则读取配置查看是否只需要判断Android原生签名公钥是否合法,就能放行安装步骤,否则仍然需要执行应用安装包文件尾部签名数据块的验签流程。
3.给应用安装包文件尾部签名的流程(见图5)
程序先获得一个待签名的安装包文件、这次项目的项目ID和对应的私钥(公钥预置在目标机器中用来验签),根据配置依次调用各个厂商提供的签名接口,得到不同厂家的签名数据块,依次追加写入到待签名文件的末尾,之后根据这些签名的写入偏移量、数据块大小和项目ID生成一个索引表,用来表述各个不同厂商的签名数据块在文件中的位置和大小,最后再把这个索引表也写入文件末尾。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

Claims (4)

1.一种基于定制化安卓系统的应用鉴权方法,其特征在于:包括如下步骤,
S1、设备安装应用安装包文件时,判断该应用是否已安装过,若是,执行步骤S2;否则,执行步骤S3;
S2、比对该安装应用安装包文件在Andoroid原生签名里的公钥是否与首次安装的应用安装包文件版本在Andoroid原生签名里的公钥一致,若否,则执行步骤S3;若是,执行步骤S4;
S3、进行应用安装包文件的验签,验签通过后执行步骤S4,若验签不通过,则终止流程;
S4、进行应用安装包文件的安装/更新,完成应用安装/更新。
2.根据权利要求1所述的基于定制化安卓系统的应用鉴权方法,其特征在于:在步骤S1之前,还包括对应用安装包文件签名的过程,具体如下:
S01、签名程序获取待签名的应用安装包文件、及与之对应的项目ID和签名用的私钥;
S02、签名程序根据配置依次调用各个厂商提供的签名接口,得到不同厂家的签名数据块,并依次追加写入签名数据块到待签名的应用安装包文件的末尾;
S03、签名程序根据签名的写入偏移量、签名数据块大小和项目ID生成签名索引表,并将该签名索引表也加入待签名的应用安装包文件的末尾。
3.根据权利要求2所述的基于定制化安卓系统的应用鉴权方法,其特征在于:所述签名索引表用来表述各个不同厂商的签名数据块在文件中的位置和大小。
4.根据权利要求2所述的基于定制化安卓系统的应用鉴权方法,其特征在于:所述步骤S3中,应用安装包文件的验签方式具体如下:
S31、设备获得待验签的应用安装包文件和一用于验签的公钥;
S32、从待验签的应用安装包文件末尾开始寻找签名索引表,若无,则终止流程,若是,执行步骤S33;
S33、判断签名索引表是否损坏,若是,则终止流程,若否,则继续判断签名索引表内项目ID是否与本设备匹配一致,若否,则终止流程;若是,则执行步骤S34;
S34、根据签名索引表查找本设备对应厂商的签名信息,并根据厂商自定义的签名和公钥进行验签比对签名信息数据是否合法,若不合法,终止流程。
CN201710200162.3A 2017-03-30 2017-03-30 基于定制化安卓系统的应用鉴权方法 Active CN106991320B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710200162.3A CN106991320B (zh) 2017-03-30 2017-03-30 基于定制化安卓系统的应用鉴权方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710200162.3A CN106991320B (zh) 2017-03-30 2017-03-30 基于定制化安卓系统的应用鉴权方法

Publications (2)

Publication Number Publication Date
CN106991320A true CN106991320A (zh) 2017-07-28
CN106991320B CN106991320B (zh) 2019-09-24

Family

ID=59412039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710200162.3A Active CN106991320B (zh) 2017-03-30 2017-03-30 基于定制化安卓系统的应用鉴权方法

Country Status (1)

Country Link
CN (1) CN106991320B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768662A (zh) * 2018-05-30 2018-11-06 格尔软件股份有限公司 一种对Android APK增加自定义签名的方法
CN109460247A (zh) * 2018-12-17 2019-03-12 深圳创维数字技术有限公司 软件包升级方法、软件客户端、存储介质及装置
CN112860280A (zh) * 2021-03-16 2021-05-28 福州汇思博信息技术有限公司 一种基于Android系统的应用安装验证方法与终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530534A (zh) * 2013-09-23 2014-01-22 北京理工大学 一种基于签名验证的Android程序ROOT授权方法
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN103944903A (zh) * 2014-04-23 2014-07-23 福建联迪商用设备有限公司 一种多方授权的apk签名方法及系统
CN106230598A (zh) * 2016-07-29 2016-12-14 深圳兆日科技股份有限公司 移动终端第三方应用安全认证方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN103530534A (zh) * 2013-09-23 2014-01-22 北京理工大学 一种基于签名验证的Android程序ROOT授权方法
CN103944903A (zh) * 2014-04-23 2014-07-23 福建联迪商用设备有限公司 一种多方授权的apk签名方法及系统
CN106230598A (zh) * 2016-07-29 2016-12-14 深圳兆日科技股份有限公司 移动终端第三方应用安全认证方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768662A (zh) * 2018-05-30 2018-11-06 格尔软件股份有限公司 一种对Android APK增加自定义签名的方法
CN108768662B (zh) * 2018-05-30 2021-05-07 格尔软件股份有限公司 一种对Android APK增加自定义签名的方法
CN109460247A (zh) * 2018-12-17 2019-03-12 深圳创维数字技术有限公司 软件包升级方法、软件客户端、存储介质及装置
CN109460247B (zh) * 2018-12-17 2021-08-17 深圳创维数字技术有限公司 软件包升级方法、软件客户端、存储介质及装置
CN112860280A (zh) * 2021-03-16 2021-05-28 福州汇思博信息技术有限公司 一种基于Android系统的应用安装验证方法与终端

Also Published As

Publication number Publication date
CN106991320B (zh) 2019-09-24

Similar Documents

Publication Publication Date Title
EP2988470B1 (en) Automatic purposed-application creation
CN1653460B (zh) 加载应用程序到设备中的方法,设备和设备中的智能卡
FI114416B (fi) Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
CN108282466B (zh) 用于在tee中提供数字证书功能的方法、系统
CN105787357B (zh) 一种基于安卓系统apk下载方法及其系统
CN109214168A (zh) 固件升级方法及装置
CN104426658B (zh) 对移动终端上的应用进行身份验证的方法及装置
CN108683502A (zh) 一种数字签名验证方法、介质及设备
KR20050053668A (ko) 전자 장치에의 데이터 로딩
CN104683409A (zh) 终端间应用共享的方法和终端
CN110362990A (zh) 应用安装的安全处理方法、装置及系统
CN103858130A (zh) 管理权限方法、装置及终端
CN107301343B (zh) 安全数据处理方法、装置及电子设备
CN104520870A (zh) 用于更新安全模块的固件的方法和系统
CN106648787A (zh) 一种资源更新的方法及终端
CN106452786A (zh) 加解密处理方法、装置和设备
CN106991320A (zh) 基于定制化安卓系统的应用鉴权方法
CN103761329A (zh) 一种对移动设备进行刷机的方法及其装置
CN112560017B (zh) 一种使用三级证书认证实现apk统一签名的方法
CN109756340B (zh) 一种数字验签方法、装置和存储介质
CN111831308A (zh) 快充设备的固件更新方法、程序、快充设备及存储介质
Kostiainen et al. Practical property-based attestation on mobile devices
CN108599959A (zh) 授权证书校验方法、装置及可读存储介质、应用设备
CN109117605A (zh) 一种鉴权方法及其装置、设备和存储介质
JP5443498B2 (ja) 情報処理装置および情報処理方法

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
GR01 Patent grant
GR01 Patent grant