为什么签名apk,需要公钥证书和私钥证书,不是私钥就能签名吗?对应的公钥通常包含在APK文件中,这样用户和系统可以验证签名的有效性

在这里插入图片描述

在Android开发中,对APK进行签名确实需要使用到公钥证书和私钥证书,而不仅仅是私钥。以下是详细解释:

  1. 身份验证:公钥证书作为应用程序的身份证明,可以帮助用户或系统验证安装的APK的真实性。当用户下载并安装APK时,系统会使用公钥证书来检查APK的签名是否有效。
  2. 数据完整性:签名确保了APK文件在发布后未被篡改。如果有人尝试修改APK中的代码或资源,签名将不再匹配,系统将识别出这种篡改并拒绝安装或运行该APK。
  3. 授权更新:如果开发者希望用户能够无缝更新应用,那么必须使用相同的私钥(对应的公钥)对新版本的APK进行签名,这样系统才能识别出这是同一开发者的应用更新。
  4. 安全要求:随着Android版本的发展,对于APK的签名要求也在提高。例如,Android 7.0引入了APK签名方案v2,它在原有基于JAR签名的基础上增加了额外的安全措施。
  5. 多重保护:为了防止私钥泄露导致的二次打包风险,Android还引入了V3签名轮换等机制,以增强应用的安全性。
  6. 工具支持:开发者通常使用Android Studio或Eclipse等工具来生成签名并对APK进行签名。这些工具提供了创建新的签名或使用现有签名的选项,简化了签名过程。

综上所述,虽然私钥是进行数字签名的核心,但公钥证书在验证身份和保证数据完整性方面发挥着不可或缺的作用。因此,在签名APK时,需要同时使用私钥和与之对应的公钥证书。

签名apk,只用私钥证书行吗?

不可以,只用私钥证书签名APK是不够的。在Android系统中,APK文件的签名同时需要用到私钥和与之对应的公钥证书。这是因为:

  • 身份验证:公钥证书作为应用程序的身份证明,有助于操作系统和用户确认APK的开发者身份。
  • 数据完整性:使用公钥证书验证签名可以确保应用在分发过程中未被篡改。如果APK文件被修改,签名将不再匹配,从而提示用户该应用可能不安全。
  • 授权更新:公钥证书还用于验证应用更新。只有使用相同私钥(对应公钥)签名的应用更新才会被操作系统接受,这样可以防止未授权的更新和应用的二次打包。

此外,非对称加密算法是数字签名和数字证书的基础,其中公钥与私钥是一对,如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。

因此,为了确保应用的安全性和可靠性,签名APK时必须同时使用私钥和公钥证书。只使用私钥证书是不足够的,也无法满足Android系统对APK签名的要求。

还是没明白

验证我知道,现在想问的是我只想签名apk,只用私钥证书,行吗? 验证在后面 设备里处理。

不可以,只用私钥签名APK是不够的

在Android开发中,APK文件的签名不仅需要使用私钥,还需要对应的公钥证书。这是因为签名过程实际上是一个加密过程,它涉及到非对称加密技术中的两个基本概念:消息摘要和数字签名。消息摘要是将文件内容通过哈希算法生成一个唯一的摘要,而数字签名则是使用私钥对这个摘要进行加密。当用户安装或更新应用时,系统会使用公钥对签名进行验证,确保APK的完整性和来源的可靠性。

以下是详细解释为什么不能只用私钥签名APK:

  • 身份验证:公钥证书作为应用程序的身份证明,有助于操作系统和用户确认APK的开发者身份。没有公钥,系统无法验证APK的发布者。
  • 数据完整性:使用公钥证书验证签名可以确保应用在分发过程中未被篡改。如果只用私钥签名,那么就没有相应的公钥来进行验证,从而无法保证数据的完整性。
  • 授权更新:公钥证书还用于验证应用更新。只有使用相同私钥(对应公钥)签名的应用更新才会被操作系统接受,这样可以防止未授权的更新和应用的二次打包。
  • 安全要求:从Android 7.0开始,谷歌增加了新的签名方案V2,这要求更严格的安全措施,包括分块签名和签名密钥轮换等,这些都需要公钥证书的参与。

因此,为了确保应用的安全性和可靠性,签名APK时必须同时使用私钥和公钥证书。只使用私钥是无法满足Android系统对APK签名的要求的。

公钥证书在apk签名过程中做了什么?

公钥证书在APK签名过程中用于验证应用程序的身份和完整性

首先,公钥证书包含可以标识密钥所有者的信息,如名称和位置,以及与私钥配对的公钥。在Android开发中,当开发者使用私钥对APK进行签名时,对应的公钥通常包含在APK文件中,这样用户和系统可以验证签名的有效性。

其次,数字签名的作用在于确保APK文件的安全性和完整性。由于签名可以验证APK文件的来源和完整性,因此可以有效地防止恶意软件入侵和篡改。同时,签名也是实现应用程序升级的关键,因为只有当新旧两个版本的签名相同时,新版本才能替换旧版本并正常运行。

此外,Android系统要求所有APK必须先使用证书进行数字签名,然后才能安装到设备上进行更新。这个过程涉及到密码学的加密算法、数字签名、数字证书等基础知识。非对称加密是这里的核心概念,其中一个密钥是公开的(公钥),用于加密,另一个是私有的(私钥),用于解密。在APK签名中,私钥用于生成签名,而公钥用于验证该签名。

总结来说,公钥证书在APK签名过程中起到了验证身份和保证数据完整性的作用,这是通过非对称加密技术和消息摘要算法实现的。这些机制共同确保了APK的安全性和可信度,使得用户可以从应用市场安全地下载和安装应用。、

对应的公钥通常包含在APK文件中,这样用户和系统可以验证签名的有效性 这样说我就明白了。

jadx查看签名
在这里插入图片描述
F20-B客户旧版AP有apk验证,时间1970:得先导入临时证书test1_19700101000000_L1_new.x509.pem,再用 老版本FtApkSignTool 二次签名工具 用临时公私钥证书(test2_19700101000000_L1_new.x509.pem和test2_19700101000000_L1.rsa_pri.pk8)对(android原生签名的)apk签名,就能安装了。

F20-M客户新版AP有apk验证,时间1970:得先导入临时证书test1_19700101000000_L1_new.x509.pem,再用 新版本V2签名工具(FtApkSignTool_V2-20240115.exe) 用临时公私钥证书(test2_19700101000000_L1_new.x509.pem和test2_19700101000000_L1.rsa_pri.pk8)对(android原生签名的)apk签名,就能安装了。

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个工具前后用了好多天的时间查阅资料并不断修改才完成。本工具可以用于读取apk包的大量信息,无其他依赖。可以直接通过命令行运行,也可以当作架包使用。 命令行方式使用举例: 获取AndroidManifest.xml文件定义的versionCode: java -jar ApkAnalysis.jar “apk路径” -versionCode 获取apk证书详情: java -jar ApkAnalysis.jar “apk路径” -certs 获取apk证书的第一条的详情: java -jar ApkAnalysis.jar “apk路径” -certs 0 获取证书摘要(百度、高德地图等API需要的那个SHA1): java -jar ApkAnalysis.jar “apk路径” -certs 0 SHA1 获取apk发布者信息: java -jar ApkAnalysis.jar “apk路径” -certs 0 issuer 获取apk声明的权限: java -jar ApkAnalysis.jar “apk路径” -permissions 当作为架包使用时,通过 ApkAnalysis apkAnalysis = ApkAnalysis.getApkReader(apkFilePath); 获取到ApkAnalysis的实例,然后就调用对应方法读取即可。相信都会使用自动补全等功能吧?那个会告诉你有哪些可用的方法,这里不例举了。 输入 java -jar ApkAnalysis.jar -help会给出如下提示,请慢慢研究。如果好用,请不吝评价一下,谢谢~至于源码么,会反编译的就反编译吧,我也拦不住的,纯Java写的,还是很好反编译的,也没有代码混淆过。感兴趣愿意一起交流的可以留言问我要,纯粹伸手党就算了。 Apk分析工具 v1.0.7 编译时JDK版本:1.6.0_33 当前JRE版本:1.6.0_33 作者:周骞 发布日期:2015-01-08 --------------------------------------------------- ApkAnalysis [-versionCode] [-versionName] [-packageName]... 可用的选项: -versionCode 版本号 -versionName 版本名称,如1.0.3 -packageName Apk包名 -certs [index] [MD5|SHA1|issuer|subject|validity] 获取证书的信息 -verify 校验apk文件签名,并列出未通过校验的文件 -permissions 获取apk所需的权限 -features 获取apk所需的特性 -activities [detail] 获取apk所含的Activity -services [detail] 获取apk所含的Service -receivers [detail] 获取apk所含的静态Receiver -content [name] 获取AndroidManifest.xml的内容 -extract 抽取apk文件 -h[elp] 显示此帮助信息 --------------------------------------------------- 如在程序引用本包,方法如下: ApkAnalysis apkAnalysis = ApkAnalysis.getApkReader(apkFilePath); 需要判断apkAnalysis是否为null,为null表示读取失败,不为null时即可调用getXX()获取数据
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值