经常在网上下载各种安装包,但也没有深究过安装包是否是官方的、是否是安全没有被篡改的。
最近在用elasticsearch做移动端在线日志收集,本地安装ES的时候,发现下载文件有两个,下面是下载命令:
1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.zip
2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.zip.sha512
3. shasum -a 512 -c elasticsearch-6.2.4.zip.sha512
- 1是下载es安装包;
- 2是下载校验包(签名文件);
- 3是用签名文件校验网络下载的安装包是否完整
原理
这里用到了哈希算法和非对称加密串,哈希算法是为了验证原始数据(ES安装包)是否被篡改;对称加密是为了验证签名文件是不是官方发出的(安装包和签名文件都有可能被替换)。
哈希算法:
同一个文件包,通过哈希得到的哈希码是一样的。如果安装包活签名文件被替换了,哈希码就对不上了。
非对称加密:
软件发布时,作者用自己的私钥,对发布的软件生成一个签名文件,用户使用作者的公钥验证签名文件。
生成签名
Linux 系统可以用md5sum、sha1sum、sha256sum这三个命令,计算哈希码
md5sum foo.zip
sha1sum foo.zip
sha256sum foo.zip
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。