首页 » Web前端 » 防伪码php技巧_若何识别文件的真假

防伪码php技巧_若何识别文件的真假

duote123 2024-11-22 0

扫一扫用手机浏览

文章目录 [+]

本文就来谈谈如何识别文件的真假。

一、XcodeGhost 事宜

我们从一件真实的事宜提及。

防伪码php技巧_若何识别文件的真假

2015 年 9 月,苹果手机的一些 App 被创造[1]向可疑网站发送数据。
进一步调查确认,可疑代码是 Xcode 打包时植入的。
也便是说,开拓者的编程工具 Xcode 被动过手脚了。

防伪码php技巧_若何识别文件的真假
(图片来自网络侵删)

腾讯的安全团队公布调查报告[2],运用商店的前 5000 名运用有 76 个被传染。
360 运用商店检讨后创造[3],共有 1076 个 App 被传染,包括微信、网易云音乐、滴滴打车、高德舆图、12306、同花顺等热门运用。
苹果公司将所有被传染的版本,都从官方软件商店下架了。
这个事宜就称为 XcodeGhost 事宜[4]。

国家互联网应急中央专门发出了预警关照。

追查下去,那些动过手脚的 Xcode 都不是从官方渠道下载的,而是来自网盘或下载站。
一个网名“coderfun”的人,在各种 iOS 开拓者论坛或者微博留言,领导其他开拓者下载修正过的 Xcode,版本从 Xcode 6.1 到 6.4

事后,这位 coderfun 发出报歉公告,表示这只是自己的一次实验,没有恶意。
但是,这个事宜足以引起当心,任何下载的文件都不一定安全,很可能被修正过或植入恶意代码。

二、软件的防伪方法

为了防止来源不明的软件,很多平台都有署名机制。
软件发布必须由认证过的开拓商,利用平台的密钥署名。
如果用户安装未署名的软件,平台会弹出警告,阻挡安装。
下面便是 MacOS 的警告。

但是,不可能所有开拓者都去认证,尤其是认证要收费。
而且,用户对这种警告不在乎,一样平常都会忽略或手动关闭。
以是,这种做法的效果不明显。

目前的常用做法是,软件发布时,同时给出哈希码和署名文件。
前者担保没有被第三方修正,后者担保确实出自原始作者。

举例来说,Linux 的发行版 Manjaro 除了供应原始的 iso 文件,还供应其余三个文件:sha1 哈希文件、sha 256 哈希文件和 sig 署名文件。
它们担保了软件的真实性。

三、哈希码验证

哈希码指的是,文件内容经由哈希函数的打算,会返回一个独一无二的字符串。
哪怕原始内容只改动一个字节,哈希码也会完备不同。
用户下载软件后,只要打算一下哈希码,再跟作者给出的哈希码比较一下,就会知道软件有没有被改动。

目前,常用的三种哈希函数是 MD5、SHA1 和 SHA256。
个中,SHA256 最安全,SHA1 次之,MD5 垫底。
一样平常来说,软件至少会供应个中一种哈希码。

下面是哈希码的验证方法。

(1)Linux 系统

Linux 系统直接用md5sumsha1sumsha256sum这三个命令,打算哈希码。

$ md5sum foo.zip$ sha1sum foo.zip$ sha256sum foo.zip

上面命令返回文件foo.zip的三种哈希码。
用户再跟作者给出的哈希码比对。
如果不一致,文件便是被改动了,或者没有完全下载。

有时,就像前面 Manjaro 的例子,哈希码不是写在网页上,而是作为一个单独的文本文件下载。
这时可以利用-c参数。

$ md5sum -c foo.zip.md5file$ sha1sum -c foo.zip.sha1file$ sha256sum -c foo.zip.sha256file

上面命令会返回哈希码的比对结果,直接见告用户是否同等。

(2)Mac 系统

MacOS 的验证命令须要自己安装。

$ brew install md5sha1sum

实行上面命令往后,md5sumsha1sum就可以利用了。
至于sha256sum要用shasum -a256命令代替。

(3)Windows 系统

Windows 可以下载安装免费软件 Quick hash[5]或者 Raymond’s MD5 & SHA Checksum Utility[6]。
个中,Quich hash 是跨平台的,还支持 Linux 和 MacOS。

四、署名验证

哈希码只能担保文件内容没有修正,但是哈希码本身也有可能仿冒,完备可能连带原始文件一起造假。

文件署名能办理这个问题。
软件发布时,作者用自己的私钥,对发布的软件天生一个署名文件(Manjaro 例子的 sig 文件),用户利用作者的公钥验证署名文件。

第一步,下载公钥。

软件的官网一样平常都会给出作者公钥的下载方法。
比如,Manjaro 就可以从 GitHub 仓库下载公钥。

$ wget github.com/manjaro/packages-core/raw/master/manjaro-keyring/manjaro.gpg

公钥也有可能放在专门的公钥做事器,这时可以利用gpg命令在从公钥做事器下载。

$ gpg --keyserver hkp://eu.pool.sks-keyservers.net --search-keys [公钥 ID]

上面命令会列出搜索结果,让你选择是否下载某一个公钥。
--keyserver参数指定公钥做事器,search-keys参数给出搜索参数,可以是作者的名称,也可以是公钥的指纹。

gpg命令在 Linux 下可以直策应用,MacOS 和 Windows 须要安装 GnuPG[7]。

第二步,导入公钥。

下载得到公钥后,将其导入操作系统。

$ gpg --import [公钥文件]

如果有完全的公钥指纹,gpg命令的--recv-key参数可以直接从做事器导入公钥。

$ gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key \"大众27DE B156 44C6 B3CF 3BD7 D291 300F 846B A25B AE09\公众

第三步,验证署名。

导入公钥往后,就可以验证署名文件(后缀名为 sig的 文件)了。

# 用法一$ gpg --verify [署名文件]# 用法二$ gpg --verify [署名文件] [原始文件]

上面命令的两种用法,效果是一样的。
但是,用法一哀求原始文件与署名文件同名,且在一个目录下。
比如,署名文件是foo.iso.sig,原始文件必须是同目录下的foo.iso

署名文件一样平常包括完全的公钥指纹,以是也可以跳过上面的第一步和第二步,直接从公钥做事器获取公钥,验证署名。

$ gpg --keyserver-options auto-key-retrieve --verify [署名文件]

(完)

参考资料

[1]

创造: https://web.archive.org/web/20150920191633/http://drops.wooyun.org/news/8864

[2]

调查报告: https://security.tencent.com/index.php/blog/msg/96

[3]

创造: https://www.anquanke.com/post/id/82436

[4]

XcodeGhost 事宜: https://zh.wikipedia.org/wiki/XcodeGhost%E9%A3%8E%E6%B3%A2

[5]

Quick hash: https://www.quickhash-gui.org/

[6]

Raymond’s MD5 & SHA Checksum Utility: https://download.cnet.com/MD5-SHA-Checksum-Utility/3000-2092_4-10911445.html

[7]

GnuPG: https://gnupg.org/download/index.html

标签:

相关文章

天刀自由摄像代码探索虚拟世界的无限可能

虚拟现实技术逐渐走进我们的生活。天刀自由摄像代码作为一款虚拟现实游戏《天涯明月刀》的辅助工具,为玩家们带来了全新的游戏体验。本文将...

Web前端 2025-02-18 阅读0 评论0

国君转债申购代码投资机遇与风险防范

可转债作为一种兼具债券和股票特性的金融工具,越来越受到投资者的关注。近期,国君转债申购代码的公布,再次引发了市场的热烈讨论。本文将...

Web前端 2025-02-18 阅读0 评论0

旺旺群社交新宠,如何成为年轻人的聚集地

社交平台层出不穷,而在这其中,旺旺群以其独特的魅力和功能,迅速成为年轻人的聚集地。本文将从旺旺群的发展历程、特点、优势等方面进行探...

Web前端 2025-02-18 阅读0 评论0