我们在商业开发常常碰到这样的问题需要解决:
1> 在我们的商业开发中,我们需要加密保护我们发布的firmware , 不让竞争对手,甚至客户看到firmware的实际内容。
2> 用户在我们公司网站上download到一版firmware后, 如何知道这就是一个可以信任的firmware 呢? 或者说如何保证就是我们公司的firmware呢?而不是别人假冒的呢? (一旦别人假冒的话, 万一upgrade到自己的开发板子里面岂不是就瘫痪了(当然我们的upgrade的程序会进行判断的,不会发生那样的事情)
关于如何加密我们的bin file ,以确保不会被别人看到实际的内容。
为此, 我专门到google上搜索到 了两个软件 , 一个是 mcrypt ,另外就是 gpg 。
mcrypt 功能强大, 最适合用来加密linux下面的文件。
1> mcrypt , 他是UNIX上 crypt(1)的替代版本,
功能更强大, 支持的算法更多 。 而且可逆(这才是最重要的)
crypt(1) 因为美国的限制 ,而不能出口到别的国家, 因而有了mcrypt 。 我已经
porting到arm板子上来。 总共需要3个软件包。
它的用法如下: 比如 我们已经有了 file.tgz
加密: mcrypt file.tgz
输入密码: 12345
确认: 12345
OK .......... 生成 file.tgz.nc
解密: mcrypt -d file.tgz.nc
输入密码:12345
OK .............
需要的软件包:
mcrypt 和 libmcrypt
Note: libmcrypt用2.5.8 (当前最新的) , mcrypt用2.6.4, 不要最新的2.6.5在
Redhat和Fedora上面configure之后无法生成config.h 导致make有问题, 2.6.4就
ok,没有这个问题。
另外还需要mhash的软件
包:
目前的版本好:0.9.8.1
在实际操作中, 我们的产品提供一个web页面, 其中就有一个upgrade的界面, 后台有cgi的支持,
当然cgi里面的解密的密码是事先约定好的。 比如就是12345 。 当用户点击upgrade 按钮的时候 , 我们会把用户的firmware upload到板子上去,然后,用这个约定的密码进行解密,如果无法解密说明就不是我们公司发布的firmware,就会放弃当前的upgrade 操作, 并提示用户check这个firmware来源是否可靠,并联系我们公司的销售人员!
2> 要解决第二个问题就要利用数字签名的功能了:
但是我觉得PGP 对于改善我们的整个的firmware的版本发布,好处是巨大的。
比如 ,我们可以用pgp ,对每个发布的版本都用我们公司的 private key 进
行签名加密。 我们可以把我们的public key 放在网上,供用户下载,用户拿到我们
的firmware 后, 用我们公司的的public key 对其进行解密 ,因为只有public key才可
以解密成功, 这就说明了, 用户拿到的firmware一定是我们Sercomm自己发布的,否
则就不是。
下面是在pc上试验的结果:
对于 ,文件签名我只是在PC上试验了一下, 还不错, 因为有个文件使用汇编写的,
我不熟悉汇编, 所以没有成功porting到arm板子上去试验。
GPG即GNU Privacy Guard,它是加密工具PGP(Pretty Good Privacy )的非商业化版
本,用于对Email、文件及其他数据的收发进行加密与验证,确保通信数据的可靠性和
真实性。本文将对GPG技术及相关工具进行介绍,旨在帮助网上冲浪者之间“真诚”交
流。
用免费GPG加密收发Email
http://netsecurity.51cto.com/art/200512/15011.htm如何应用GPG加密使您的信息安全保障无忧
使用GnuPG对文件进行加密
下面是我在pc上试验的结果:
在bob 的pc上:
生成密钥:
gpg --gen-key
导出密钥:
gpg --export >bob.gpg 也可以加一个-a 参数以生成
ASCII 文件,而不是二进制的
然后发给对方(kate) , 可以利用ftp ,ssh等等。
Kate
导入bob的public key:
gpg --import bob.gpg
签名:
gpg --sign-key
此时, 如果bob用自己的private key 加密了一个文件。gpg --clearsign
mymessage.txt 会生成 mymessage.txt.asc
那么 kate如何解开呢?
$kate: gpg -d mymessage.txt.asc > mymessage.txt
---------现在kate 已经导入了 bob的 public key , 那么kate也可以加密数据,
只有bob能解开。 (用bob的public key加密 , 只有bob的private key能解开)
kate 加密: gpg -r -a --encrypt kate-bob.txt
然后, 会生成 kate-bob.txt.asc 文件 。
bob受到后, 解开: gpg -d kate-bob.txt.asc
输入自己的密码即可解开了。
阅读(2784) | 评论(0) | 转发(0) |