1

我正在为无线和传感器网络安全实施加密解决方案。因此,在此实现的一个步骤中,传感器节点具有 CA 证书。传感器应该生成一个对称密钥并使用 CA 的公钥对其进行加密并将其发送给 CA。

我使用 openssl 生成证书和密钥。我虽然使用带有 128 位密钥的 AES 作为对称密钥。目前的问题是我无法按如下方式加密 128 位数据,因为它会给出“数据太大”错误。

openssl rsautl -encrypt -inkey id_rsa.pub.pem -pubin -in key1.bin -out key1.bin.enc 

所以看起来我需要使用另一种方式加密 128 位密钥,或者我可以使用较小的密钥,这在传感器网络环境中不会有问题。

我的问题是“是否有任何具有较小密钥的对称密钥加密,或者我是否有办法直接使用证书加密 128 位密钥”

附言

这就是我生成密钥的方式。

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
openssl rand 128 > key1.bin

谢谢

4

1 回答 1

1

openssl rsautl 文档页面:

rsautl 因为它直接使用 RSA 算法,所以只能用于对小块数据进行签名或验证。

所以不要指望能够使用 RSA 密钥加密大量数据。

但是,RSA 算法经常用于完全按照您的建议执行...加密 AES 密钥,然后用于加密较大的文件。

您应该能够(几乎)加密到您的公钥大小。所以这里似乎有些不对劲。对于 2048 位(256 字节)的公钥大小,我可以在您的问题中使用相同的 openssl 命令加密 1960 位(245 字节)文件。对于 1024 位公钥,我可以加密 936 位(117 字节)。

那么让我们检查这些项目,看看是否可以找到问题:

首先,您的 RSA 公钥有多大?(注意不要混淆位和字节。)它应该是 1024 位或更高。

接下来,您的 AES 密钥有多大?(再次,确保检查位与字节。)根据您的问题,它应该是 128 位。

如果两个密钥的大小都正确,则使用 RSA 密钥加密 AES 密钥应该没有问题。

于 2013-08-13T02:52:21.940 回答