我正在为无线和传感器网络安全实施加密解决方案。因此,在该实现的一个步骤中,传感器节点具有CA的证书。传感器应该生成对称密钥并使用CA的公钥对其进行加密并将其发送给CA.
我使用openssl进行证书和密钥生成。我使用AES和128位密钥作为对称密钥。目前的问题是我无法按如下方式加密128位数据,因为它会给出“数据太大”的错误。
openssl rsautl -encrypt -inkey id_rsa.pub.pem -pubin -in key1.bin -out key1.bin.enc
所以看起来我需要使用其他方式加密128位密钥,或者我可以使用较小的密钥,这在传感器网络环境中不会成为问题。
我的问题是“是否存在使用较小密钥的对称密钥加密,或者我是否有办法直接使用证书加密128位密钥”
P.S
这是我生成密钥的方式。
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
openssl rand 128 > key1.bin
谢谢
答案 0 :(得分:1)
来自openssl rsautl documentation页面:
rsautl因为它直接使用RSA算法只能用于 签署或验证小块数据。
因此,不要期望能够使用RSA密钥加密大量数据。
然而,RSA算法经常用于完成您提出的建议......加密AES密钥,然后用于加密更大的文件。
您应该能够(几乎)加密到您的公钥大小。所以这里似乎有些不对劲。对于2048位(256字节)的公钥大小,我可以在您的问题中使用相同的openssl命令加密1960位(245字节)文件。对于1024位公钥,我可以加密936位(117字节)。
所以让我们检查这些项目,看看是否可以找到问题:
首先,您的RSA公钥有多大? (注意不要混淆位和字节。)它应该是1024位或更高。
接下来,您的AES密钥有多大? (再次,确保检查位与字节。)根据您的问题,它应该是128位。
如果两个密钥的大小都是正确的,那么使用RSA密钥加密AES密钥应该没有问题。