本篇文章给大家谈谈inf区块链,以及区块链fisco对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
Adroid 签名机制V1,V2,V3
apk解压后META-INF 文件夹下有三个文件:MANIFEST.MF、CERT.SF、CERT.RSA。
该文件中保存的内容其实就是逐一遍历 APK 中的所有条目
这里会把之前生成的 CERT.SF 文件,用私钥计算出签名, 然后将签名以及包含公钥信息的数字证书一同写入 CERT.RSA 中保存。这里要注意的是,Android APK 中的 CERT.RSA 证书是自签名的,并不需要这个证书是第三方权威机构发布或者认证的,用户可以在本地机器自行生成这个自签名证书。Android 目前不对应用证书进行 CA 认证。
RSA 文件加密了,所以我们需要用 openssl 命令才能查看其内容
签名验证是发生在 APK 的安装过程中,一共分为三步:
为了解决V1的缺点,在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2。
APK 签名方案 v2 是一种全文件签名方案,该方案能够发现对 APK 的受保护部分进行的所有更改,从而有助于加快验证速度并增强完整性保证。
由于在 v1 仅针对单个 ZIP 条目进行验证,因此,在 APK 签署后可进行许多修改 — 可以移动甚至重新压缩文件。事实上,编译过程中要用到的 ZIPalign 工具就是这么做的,它用于根据正确的字节限制调整 ZIP 条目,以改进运行时性能。而且我们也可以利用这个东西,在打包之后修改 META-INF 目录下面的内容,或者修改 ZIP 的注释来实现多渠道的打包,在 v1 签名中都可以校验通过。
v2 签名将验证归档中的所有字节,而不是单个 ZIP 条目,因此,在签署后无法再运行 ZIPalign(必须在签名之前执行)。正因如此,现在,在编译过程中,Google 将压缩、调整和签署合并成一步完成。
简单来说,v2 签名模式在原先 APK 块中增加了一个新的块(签名块),新的块存储了签名,摘要,签名算法,证书链,额外属性等信息,这个块有特定的格式,具体格式分析见后文,先看下现在 APK 成什么样子了。
为了保护 APK 内容,整个 APK(ZIP 文件格式)被分为以下 4 个区块:
其中,应用签名方案的签名信息会被保存在 区块 2(APK Signing Block)中,而区块 1(Contents of ZIP entries)、区块 3(ZIP Central Directory)、区块 4(ZIP End of Central Directory)是受保护的,在签名后任何对区块 1、3、4 的修改都逃不过新的应用签名方案的检查。
其中 v2 签名机制是在 Android 7.0 以及以上版本才支持。因此对于 Android 7.0 以及以上版本,在安装过程中,如果发现有 v2 签名块,则必须走 v2 签名机制,不能绕过。否则降级走 v1 签名机制。
v1 和 v2 签名机制是可以同时存在的,其中对于 v1 和 v2 版本同时存在的时候,v1 版本的 META_INF 的 .SF 文件属性当中有一个 X-Android-APK-Signed 属性,因此如果想绕过 v2 走 v1 校验是不行的。
之前的渠道包生成方案是通过在 META-INF 目录下添加空文件,用空文件的名称来作为渠道的唯一标识。但在新的应用签名方案下 META-INF 已经被列入了保护区了,向 META-INF 添加空文件的方案会对区块 1、3、4 都会有影响。
可以参考: 美团解决方案 。
Android 9.0 中引入了新的签名方式,它的格式大体和 v2 类似,在 v2 插入的签名块(Apk Signature Block v2)中,又添加了一个新快(Attr块)。
在这个新块中,会记录我们之前的签名信息以及新的签名信息,以密钥转轮的方案,来做签名的替换和升级。这意味着,只要旧签名证书在手,我们就可以通过它在新的 APK 文件中,更改签名。
v3 签名新增的新块(attr)存储了所有的签名信息,由更小的 Level 块,以链表的形式存储。
其中每个节点都包含用于为之前版本的应用签名的签名证书,最旧的签名证书对应根节点,系统会让每个节点中的证书为列表中下一个证书签名,从而为每个新密钥提供证据来证明它应该像旧密钥一样可信。
这个过程有点类似 CA 证书的证明过程,已安装的 App 的旧签名,确保覆盖安装的 APK 的新签名正确,将信任传递下去。
需要注意的是,对于覆盖安装的情况,签名校验只支持升级,而不支持降级。也就是说设备上安装了一个使用 v1 签名的 APK,可以使用 v2 签名的 APK 进行覆盖安装,反之则不允许。
我的世界神奇宝贝mod中的三大主宠分别在什么地方捕捉?
小杰尼龟:海岸旁边的沙地上,几率较低。
妙蛙种子:橡树林里,几率极低。
小火龙:高山上,几率较高。
小锯鳄:河流两岸上,几率较低。
菊草叶:草原,几率极低。
火球鼠:合金欢草原,几率极低。
沼跃鱼:河岸两旁,沼泽地,几率极低。
木守宫:热带雨林,橡树林,几率极低。
火稚鸡:合金欢草原,几率极低。
波加曼:雪地,几率较高。
嫩苗龟:橡树林,几率极低。
小火猴:高山,几率较高。
水水濑:海岸旁,几率较低。
腾腾蛇:橡树林,几率极低。
暖暖猪:沙漠,几率较低。
玩家
早期基岩版玩家(Steve/Alex默认角色)是用户们在世界中控制的人物。当用户开始一个新游戏,玩家就会被放进由随机或指定的种子世界中,物品栏为空。玩家有10颗心的生命条(即20点生命值)。
会受到来自敌对生物、中立生物和其他玩家击中所产生的伤害,不同难度伤害不同。生命值可以通过自然恢复(仅在饥饿值满条件下)或饮用特定药水来恢复(和平模式下无条件恢复)。饥饿值也是一个非和平模式的指标,随时间的推移将逐渐消耗,并且在疾跑时将会加剧消耗。
食物可以恢复饥饿值。
光纤模块TX power这一项是-inf是什么意思?
inf 无限
infiniteinf区块链的前三个字母inf区块链,无穷大inf区块链的意思。
实际意思是当算出的结果大于某个数(这个数很大inf区块链,比如10的很多次方),则MATLAB认为就是无穷大inf区块链了,并返回 inf
inf区块链的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链fisco、inf区块链的信息别忘了在本站进行查找喔。
标签: #inf区块链
评论列表