APK签名机制之——V2签名机制详解
通过前一篇 Apk签名机制之——JAR签名机制详解 的分析我们知道,JAR签名需要对apk内所有文件进行hash校验,当资源较多时签名验证速度较慢。为了加快验证速度并加强完整性保证,Andorid在7.0引入一种全文件签名方案V2。下面来看V2方案的具体设计原理。
在了解V2签名结构前,先来了解下 zip(apk)文件的结构 。
zip文件分为3部分:
通过中央目录起始偏移量和size即可定位到中央目录,再遍历中央目录条目,根据本地文件头的起始偏移量即可在数据区中找到相应的压缩数据。
在 Apk签名机制之——JAR签名机制详解 中我们已经知道,JAR签名是在apk文件中添加META-INF目录,即需要修改 数据区 、 中央目录 ,因为添加文件后会导致中央目录大小和偏移量发生变化,还需要修改 中央目录结尾记录 。V2方案为加强数据完整性保证,不在 数据区 和 中央目录 中插入数据,选择在 数据区 和 中央目录 之间 插入一个 APK签名分块 ,从而保证了原始zip(apk)数据的完整性。具体如下所示:
v2 签名块负责保护第 1、3、4 部分的完整性,以及第 2 部分包含的 APK 签名方案 v2分块 中的 signed data 分块的完整性。
APK签名分块包含了4部分:分块长度、ID-VALUE序列、分块长度、固定magic值。其中 APK 签名方案 v2分块 存放在ID为0x7109871a的键值对中。在进行签名校验时,先找到zip 中央目录结尾记录 ,从该记录中找到 中央目录起始偏移量 ,再通过magic值即可确定前方可能是 APK签名分块 ,再通过前后两个分块长度字段,即可确定 APK签名分块 的位置,最后通过ID(0x7109871a)定位 APK 签名方案 v2分块 位置。
APK 签名方案 v2分块 是一个签名序列,说明可以使用多个签名者对同一个APK进行签名。每个签名信息中均包含了三个部分的内容:
前面说了v2 签名块负责保护第 1、3、4 部分的完整性,以及第 2 部分包含的 APK 签名方案 v2分块 中的 signed data 分块的完整性。第1、3、4部分的完整性是通过内容摘要来保护的,这些摘要保存在 signed data 分块中,而 signed data 分块的完整性是通过签名来保证的。下面来看摘要的计算过程:
第 1、3 和 4 部分的摘要采用以下计算方式,类似于两级 Merkle 树 。
因为V2签名机制是在Android 7.0中引入的,为了使APK可在Android 7.0以下版本中安装,应先用JAR签名对APK进行签名,再用V2方案进行签名。要注意顺序一定是先JAR签名再V2签名,因为JAR签名需要修改zip 数据区 和 中央目录 的内容,先使用V2签名再JAR签名会破坏V2签名的完整性。
实际上我们在编译APK时并不需要关心这个过程,在Android Plugin for Gradle 2.2中,gradle默认会同时使用JAR签名和V2方案对APK进行签名,如果想要关闭JAR签名或V2签名,可以在build.gradle中进行配置:
在 Android 7.0 中,会优先以 v2方案验证 APK,在Android 7.0以下版本中,系统会忽略 v2 签名,仅验证 v1 签名。Android 7.0+的校验过程如下:
因为在经过V2签名的APK中同时带有JAR签名,攻击者可能将APK的V2签名删除,使得Android系统只校验JAR签名。为防范此类攻击,V2方案规定:
攻击者还可能试图删除 APK 签名方案 v2 分块 中安全系数较高的签名,从而使系统验证安全系数较低的签名。为防范此类攻击:
通过 Apk签名机制之——JAR签名机制详解 和本篇文章的分析,我们知道了:
JAR签名的劣势
V2签名的优势
现在我们可以解答 Apk签名的基本概念和用法 前言中提出的问题了:
APK签名是为了保证APK的完整性和来源的真实性,分为JAR签名和V2签名两种方案。核心思想均是计算APK内容的hash,再使用签名算法对hash进行签名。校验时通过签名者公钥解密签名,再与校验者计算的APK内容hash进行比对,一致则校验通过。
签名证书的指纹,在申请第三方SDK时,需填入APK包名和证书指纹,SDK开发者后台会根据这两个值生成一个key。第三方SDK在初始化时,会从系统中获取当前APK的包名、签名证书指纹以及key,然后将此指纹上传到其服务器,然后校验包名、签名证书指纹是否与此key绑定,校验通过后才进行授权。
在V2方案出现之前,快速批量打包方案有3类:
在V2方案出现之后,因同时保证了 数据区 、 中央目录 和 中央目录结尾记录 的完整性,故方案2、3均不适用了。那是不是就没有快速批量打包的可能了呢?当然不是,可以从 APK签名分块 中着手。再回过头来看一下 APK签名分块 的结构:
APK签名分块 中有一个ID-VALUE序列, 签名信息( APK 签名方案 v2 分块 )只存储在ID 为 0x7109871a的ID-VALUE中,通过分析签名校验源码可以发现,其它ID-VALUE数据是未被解析的,也就是说除 APK 签名方案 v2 分块 外,其余ID-VALUE是不影响签名校验的。故可以定义一个新的ID-VALUE,将渠道信息写入 APK签名分块 中。因为V2方案只保证了第1、3、4部分和第 2 部分( APK签名分块 )包含的 APK 签名方案 v2分块 中的 signed data 分块的完整性。新写入的ID-VALUE不受保护,所以此方案可行。实际上美团新一代渠道包生成工具 Walle 就是以这个方案实现的。
好了,到这里APK签名机制的全部内部就分析完了,相信大家看完这三篇文章之后,对JAR签名和V2签名机制都有了大致的了解,有兴趣的同学可以阅读签名和校验的源码进一步分析。
先进入菜单上,第五个必杀技装备模式(CUSTOM
MODE),
然后找到盖亚,先把“变为スプリームヴァージョン形态”这个
装备在“L1,L2,R1,R2”这四个辅助键位的任意一个键位上
就可以,V2变身为至高型就是得先在辅助键位上找到的,装
上之后,然后退出,之后再进入,盖亚的必杀技栏目上看见“
V2”两个字,就算装备成功了。
对着软件安装程序文件,单击鼠标右键,菜单中选择“属性”。在文件属性对话框,点击切换到“兼容性”选项界面,点击勾选“以兼容模式运行这个程序”,然后点击下面的向下箭头,里面选择自己合适的系统版本,设置完成后,点击确定。
富怡服装CAD最新版专为服装行业打造的出版、放码及排版工具。富怡服装CAD可以在计算机上开样、放码、也能将手工纸样通过数码相机输入系统(需另行购买)读入计算机。富怡服装CAD还适用于服装、内衣、鞋帽、箱包、沙发、帐蓬等行业。
8000千米。
洲际导弹(intercontinental missile)是指射程在8000千米以上的导弹。由于各国所处地理位置和作战对象不同,对洲际导弹的射程规定也不一致。
按飞行弹道分为洲际弹道导弹和洲际巡航导弹;按发射点与国际位置分为地地洲际导弹和潜地洲际导弹。是战略核武器的重要组成部分。洲际弹道导弹通常采用多级液体或固体火箭发动机,采用惯性制导或复合制导,携带核装药单弹头或多弹头(集束式多弹头或分导式多弹头)。
扩展资料:
洲际弹道导弹起源:
洲际弹道导弹的设计思想最早可以追溯到1930—1940年代由纳粹德国著名火箭专家沃纳·冯·布劳恩向纳粹政府提议的A9/10系列。
由于后来二战德国战败,这些构想未能实现。最早的中程弹道导弹则是冯·布劳恩在二战期间主持设计制造的V2火箭(“V”取自德语词Vergeltung 的首字母,意为“复仇”)。V2上装备的是液体燃料发动机和惯性制导系统,从移动发射车上发射以避免遭受盟军的空袭。
二战结束后,冯·布劳恩和大批曾为纳粹服务的德国科学家被俘,之后被秘密转移到美国,加入了美国军方发起的名为“文件夹行动”(Operation Paperclip)的中程弹道导弹研发计划,在V2设计思想的基础上研制了“红石”(Redstone)和“丘比特”(Jupiter)中程弹道导弹。
依据《北大西洋公约》的规定,美国可以将这些导弹部署在射程可覆盖苏联东欧平原地区的欧洲国家。
参考资料来源:人民网-资料:什么是洲际导弹?
在第二次世界大战的最后几个月里,盟军的精锐特工与突击队员渗透到了德国。他们的最高机密任务,就是搜寻希特勒所谓的“神奇武器”,以及制造这些武器的科学家们。这些科学家包括纳粹原子弹计划的带头人、火箭工程师、导弹的制造者、新型火箭发动机的发明人。他们在战争后期是如何被抓到,最后的归宿又都怎样?
随着战事的发展,德国大部分地区已落入盟军手中。前苏联红军包围了柏林,并在向市区推进,六十英里外,美国和前苏联部队首次在易北河会师。在镜头前,双方似乎是最好的朋友,但在幕后,抢夺德国战利品之争、已经到了白热化的程度。双方都知道,最有价值的猎物是希特勒那些优秀的科学家,他们逃到了德国南部的巴伐利亚山区。
核物理学家维尔纳·海森堡与火箭工程师维尔纳·冯·布劳恩来到这里,躲避北方激烈的战事,但不久,他们都落入了美军的手里。
英国、美国和前苏联接管各自的占领区之后,各同盟国之间的关系进入了低谷。英国的30突击队在柏林市区执行任务时,受到了前苏联人的冷遇。前苏联人的敌意是可以理解的。30突击队在柏林执行的不可能是和平任务,他们的特工此时正深入前苏联占领区,暗中将被捕科学家的妻子和家人偷偷送往西方。
和家人团聚之后,重要的德国科学家接着被送往英国。发明ME186战斗机火箭发动机的赫尔穆特·瓦尔特来到英国北部,继续和全部由德国人组成的科学家团队一起工作。
同时,大量的德国科学技术和研究材料在幕后被装箱送往英国、美国和前苏联。至于奥索斯任务在海格尔洛赫等地扣押的铀,有1000多吨被运到了美国,投入“曼哈顿计划”,美国也在累积大量原料,以便研发原子弹。
奥索斯的头号目标、维尔纳·海森堡及其它9名德国物理学家被软禁在英国一处乡间住宅中。为了挖掘更多纳粹原子弹计划的内幕,屋内到处藏有麦克风,窃听这些德国人的对话。科学家透露的信息很少,直到他们听到1945年8月6日的广播,日本被美国投掷了原子弹,才吓得吐露实情。
隐藏的麦克风录下了海森堡的讨论。他为战争设计的原子弹需要数千公斤铀,而投放到广岛的原子弹只使用了56公斤。监听录音带的英美人士终于明白了德国原子弹计划为何没有成功。
不久,海森堡获释回到德国,他不再被视为构成威胁的人物。
战争结束了,但利用德国技术的竞赛仍在进行。对日作战胜利日后几周,英国人驾驶德国飞机回国,这架ME262型战机将对冷战产生重大的影响。
ME262的时速比盟军的任何飞机都快100多英里,这架飞机的最高时速是568英里,而当时盟军最好的战斗机,最高时速是446英里。从446英里到568英里,这的确是一个巨大的飞跃。
262型战斗机有可能改变战争的进程,但是对纳粹而言,它来得太迟了,它必定会对未来的冲突产生影响。
军事分析家罗伯特·休森说:“有一个著名的故事,讲的是北美飞机的航空动力学主设计者,为了明白阅读材料的意思,他去夜校学习德语,接着,他的设计小组得到了一架262型战斗机。观察了实际的飞机和设计之后,他们完全放弃了自己的XP86设计,重新设计成经典的35度后掠式机翼的飞机。这就是军刀,当时最伟大的喷气式战斗机。”
军刀战斗机问世,美国人自以为造出了世界上最先进的飞机。他们有所不知,前苏联人也找到了相同的德国数据,用来打造他们的后掠式机翼喷气机,那就是米格15。
1950年12月,两种飞机在朝鲜战场初次交手。第一架前苏联的米格15出现在朝鲜上空时,美国飞行员震惊不已,以为受到了本国飞机的攻击。交战初期,这种情况一直困扰着美军。飞行员不敢相信自己的眼睛,米格战机和F86军刀几乎一模一样。毫无疑问,前苏联人和美国人阅读过相同的文件,这一点十分明显。
火箭科技领域也是如此。自从被带到美国之后,维尔纳·冯·布劳恩和他的V2工作小组一直在努力为美国建造火箭。100多名德国火箭研究员承诺对美国工程师毫无保留。美国政府对雇用前纳粹党羽有严格的规定,类似冯·布劳恩党卫军身份等难看的事实,被刻意隐瞒了。
上万份有关德国火箭研究员的文件被转移,其中许多至今仍未公开。有冯·布劳恩站在自己这一边,美国充满自信,认为自己一定能领先世界,但到了1957年10月4日,他们的信心瓦解了。
前苏联的R7导弹搭载全球第一颗人造卫星进入太空,美国也收到了“卫星”号环绕地球时发出的强烈信号。如果前苏联人能将物体发射进入轨道,也就能对美国发射核弹头。
美国向冯·布劳恩求助。到了上世纪60年代中期,美国与苏联各有数千颗导弹瞄准对方,这些都来自冯·布劳恩最初的V2设计。冯·布劳恩的最高成就是领导美国国家航空航天局的“阿波罗计划”,将人类送上了月球。
美国与前苏联的太空计划,都是以德国科学为基础的。由于急于利用纳粹的技术,双方都选择了忘记科学家的过去。
1、产品的质感很棒,微星B450MPRO-M2V2设计细腻精致很大气,很显高级感,日常使用上也很方便,因此很好。
2、性价比高。在同价位的其他产品中,微星b450mprom2v2的质量最好,因此很好。
1、全城10v2外观设计还是挺抢眼的,鞋身整体以白色为主,选用紫色和蓝色装点,鞋面选用轻质、透气的COOLSHELL科技打造而成。
2、中底配置也很给力,涉及Lightfoam双层缓震材料搭配SAS稳定框架及内置抗扭片无一不在彰显实力。
离・合体による自由度の高い运用のできるVガンダムを元に、
以通过离/合体而做到的超高的使用自由度的V高达为原型
エネルギーを直接推进力に変换する革新的な推进装置ミノフスキードライブを搭载した机体。
搭载了跨时代的能将能量直接转换为推力的推进装置“米诺夫斯基-DRIVE”的机体
元々ミノフスキードライブはVガンダム用のオプション装备として开発されていたが、
虽然原来的“米诺夫斯基-DRIVE”是作为V高达的选择式装备开发的
技术的に搭载が困难である事が判明し、新规にV2ガンダムを设计した。
但由于从技术上判定了难以装备到V高达上,所以从新设计了V2高达。
先行量产された2机が登场し、オリファー・イノエとウッソ・エヴィンがそれぞれ搭乗した。
首先量产出来的两台集体登场后分别由オリファー・イノエ(没看过V2,不认识……看读法是“奥利弗”不知V中有无此人……)和ウッソ・エヴィン(有哈喽的那个)搭乘,
なお、オリファー机は早い段阶で失われたため、剧中ではウッソ机の活跃が目立った。
现在由于オリファー的机体在早期就失去了,所以剧中主要是ウッソ的机体在人们眼前活跃着。
光の翼
光翼
V2ガンダムの最大の特徴としてミノフスキードライブの出力上升とともに背部に出现する「光の翼」がある。
和“米诺夫斯基-DRIVE”的推力上升一起出现的的“光翼”是V2高达最大的特征。
これはミノフスキードライブで供给したエネルギーが推进力に変换しきれずに余剰エネルギーを排出することで発生する。
这是由于为“米诺夫斯基-DRIVE”供给的能量没有全部变换成推力而导致多余的能量直接排出造成的。
剧中ではこれを利用して敌モビルスーツや戦舰を両断したり、広域に展开してシールド代わりに用いられた。
在剧中曾利用这个将敌方的 MS和战舰拦腰削断,或者是张开很大的面积作为盾使用。
ビームシールドと一体化させて机体全体を覆うこともできる。
它还可以与光束盾一体化将机体周围全部覆盖。
コア・ファイター
核心战机
分离时はVガンダムと同じくコア・ファイター内部に头部が格纳されるが、Vガンダムは头部の半分程度が露出する机构になっているのに対し、V2では全て隠れるようになっている。
虽然分离时核心战机同V高达一样将头部收纳在核心战机里,但与V高达不同的是,V高达将头部露出一半,而V2高达则全部收纳在核心战机里。
カバー部を展开することで、头部バルカンを撃つ事は可能。
可以通过打开保护盖,用头部的近距离机关炮射击。
コア・ファイターの形状は航空机としては异质で、翼は垂直尾翼のみで他の翼は一切付いていない、これはミノフスキードライブの扬力を利用したためである。
核心战机的形状与一般战斗机不同的是,机翼除垂直尾翼外没有一个机翼。这是由于它利用了“米诺夫斯基-DRIVE”提供的升力。
そのため非常に直线的なフォルムを持つ。理论上は亜光速まで加速することが可能。
为此它有着非常平滑的外形。理论上它能一直加速到亚光速。
嫌看得累的话看下面的
以通过离/合体而做到的超高的使用自由度的V高达为原型,搭载了跨时代的能将能量直接转换为推力的推进装置“米诺夫斯基-DRIVE”的机体。虽然原来的“米诺夫斯基-DRIVE”是作为V高达的选择式装备开发的,但由于从技术上判定了难以装备到V高达上,所以从新设计了V2高达。首先量产出来的两台集体登场后分别由オリファー・イノエ(没看过V2,不认识……看读法是“奥利弗”不知V中有无此人……)和ウッソ・エヴィン(有哈喽的那个)搭乘,现在由于オリファー的机体在早期就失去了,所以剧中主要是ウッソ的机体在人们眼前活跃着。
光翼
和“米诺夫斯基-DRIVE”的推力上升一起出现的的“光翼”是V2高达最大的特征。这是由于为“米诺夫斯基-DRIVE”供给的能量没有全部变换成推力而导致多余的能量直接排出造成的。在剧中曾利用这个将敌方的 MS和战舰拦腰削断,或者是张开很大的面积作为盾使用。它还可以与光束盾一体化将机体周围全部覆盖。
核心战机
虽然分离时核心战机同V高达一样将头部收纳在核心战机里,但与V高达不同的是,V高达将头部露出一半,而V2高达则全部收纳在核心战机里。可以通过打开保护盖,用头部的近距离机关炮射击。核心战机的形状与一般战斗机不同的是,机翼除垂直尾翼外没有一个机翼。这是由于它利用了“米诺夫斯基-DRIVE”提供的升力。为此它有着非常平滑的外形。理论上它能一直加速到亚光速。