我正在寻找安全的软件更新程序,我正在维护运行Linux的设备。我想生成更新包内容的md5sum,然后使用私钥加密该哈希值,然后再将其发送给客户。当他们加载更新时,设备应该解密哈希,验证它,然后继续安装包。
我正在尝试使用OpenSSL和RSA。我发现this线程,并且气馁。然后我找到了this线程,并想知道Perl是如何解决这一切所谓的不可能性的。我在C中这样做,所以也许某个地方的SSL库中有一个并行函数?
所以我的问题是:我可以强制命令行Linux将公钥作为解密输入,还是使用C来规避该限制?
提前致谢,所有。
答案 0 :(得分:10)
假设您使用openssl genrsa
生成了公共和私有RSA密钥:
$ openssl genrsa -out mykey
Generating RSA private key, 512 bit long modulus
...++++++++++++
..........++++++++++++
e is 65537 (0x10001)
$ openssl rsa -in mykey -pubout -out mykey.pub
writing RSA key
您可以使用私钥对此进行签名:
$ md5sum myfile | openssl rsautl -inkey mykey -sign > checksum.signed
您可以使用公钥验证此数据:
$ openssl rsautl -inkey mykey.pub -pubin -in checksum.signed
df713741d8e92b15977ccd6e019730a5 myfile
这是你要找的吗?