【问题标题】:Symmetric encryption with a key size less than 128bit密钥大小小于 128 位的对称加密
【发布时间】:2013-08-11 04:44:38
【问题描述】:

我正在为无线和传感器网络安全实施加密解决方案。因此,在此实现的一个步骤中,传感器节点具有 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

谢谢

【问题讨论】:

    标签: openssl aes sensors public-key-encryption


    【解决方案1】:

    来自openssl rsautl documentation 页面:

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

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

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

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

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

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

    接下来,您的 AES 密钥有多大? (同样,请务必检查位与字节。)根据您的问题,它应该是 128 位。

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

    【讨论】:

    • 我的公钥是 1024 位。这应该是问题所在。
    • 您应该能够使用 1024 位公钥加密多达 117 个字节(936 位)。这对于 128 位 AES 密钥来说已经绰绰有余了。尝试加密包含大约 16 个字符的文本文件,以证明您可以加密 128 位。然后增加文本文件,直到长度过长。这应该发生在 936 位左右。
    • 我的错我使用 openssl rand 生成 128 字节。感谢您的帮助。
    猜你喜欢
    • 2014-02-21
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多