视频: Диакритические знаки во французском. Accent aigu, accent grave, accent circonflexe. Видеоурок 1. (十一月 2024)
数字签名未损坏
对文档或文件进行数字签名的全部目的是证明文件没有被修改。 该过程使用一种公共密钥加密形式。 您可以通过使用私钥对文件进行加密来对文件进行数字签名。 可以使用您的公共密钥对加密文件进行解密的事实证明没有篡改。 BlueBox是否找到了一种在不更改其数字签名的情况下实际修改文件的方法,这对整个加密行业来说都是一个巨大的打击。 但是他们没有。
BlueBox将在几周内的Black Hat会议上报告其研究的全部详细信息。 但是,ViaForensics研究人员Pau Oliva Fora发布了概念证明代码,以说明所采用的方法。
实际上,这非常非常简单。 使用广泛的ZIP存档算法的版本打包APK文件。 大多数ZIP实施都不允许在一个存档中包含两个同名文件,但是算法本身并不禁止这种可能性。 在检查应用程序的数字签名时,Android OS会查看第一个匹配的文件,但是在实际执行和启动文件时,它将捕获 最后 一个文件。 然后,要对应用程序进行木马化,您所要做的就是使用应用程序中已经存在的名称将恶意代码插入其中。 Fora的演示仅是几十行Java代码。
另一次结构性攻击
一位名叫Android Security Squad的中国研究人员在博客上发现了该演示的有趣之处,并开始寻找其他方法来颠覆验证过程。 阅读经过谷歌翻译的帖子有些困难,但看来攻击依赖于计算机科学101级的概念。
计算机程序将计数数字存储在固定大小的位集合中。 例如,使用8位可以表示0到255之间的数字。如果必须表示负数,则长期以来的惯例是,最左边的位表示负数。 然后,使用8位,您还可以表示-128到127之间的数字。二进制数字11111111表示255或-1,具体取决于它是打算用作无符号数字还是有符号数字。
Android安全小队仔细研究了APK文件头格式,发现了一个数据字段,该数据字段假定为正偏移量,但已存储为有符号整数。 将此字段强制为特定的负值会导致APK加载程序执行恶意代码,而不是已验证的数字签名代码。 好的,这有点复杂,但是大致就是这样。
坚持使用Google Play
这些黑客实际上都没有颠覆Android数字签名机制。 相反,它们都利用APK结构中的怪癖来使数字签名变得无关紧要。 此外,它们都无法使Trojanized应用程序偷偷经过Google的分析。 Google专门更新了Google Play,以使用“主密钥”攻击过滤掉木马应用程序; 即使没有这一步,标准安全性也几乎可以肯定会阻止这两种木马应用程序。
这课很清楚。 始终从合法来源获取您的应用程序,始终检查以确保开发人员名称有效,并配置您的手机,使其不允许从“未知来源”安装应用程序。 请注意应用程序请求的权限,并准备中止看起来可疑的安装。 如果您的运营商提供了Android更新,请务必进行安装。 这只是常识!