使用 openssl FIPS 投诉加密较大文件

使用 openssl FIPS 投诉加密较大文件

我想加密 10MB-20MB 这样的大文件。理想情况下,如果我像下面这样单独加密文件,这种方法就很好用。

 openssl enc -aes-256-cbc -salt -in file.txt -out RAW.gpg

现在我想使用私钥和公钥实现相同的目的。因此我使用以下命令创建了一个密钥对。

openssl genpkey -algorithm RSA -aes256 -out private.key
openssl rsa -in private.key -out public.key -pubout

现在,如果我尝试加密该文件。

 openssl pkeyutl -encrypt -in test.txt -out text.bin -inkey public.key -pubin

我看到这个错误

Public Key operation error
80021D98EE7F0000:error:0200006E:rsa routines:ossl_rsa_padding_add_PKCS1_type_2_ex:data too large for key size:crypto/rsa/rsa_pk1.c:129:

答案1

您不能直接使用 RSA 加密大量数据,而且实际上没有人以这种方式使用它。(我思考限制是“密钥大小的 1/2”或类似的?)

通常,这是通过使用随机生成的密钥,使用对称算法(例如相同的 AES)加密文件,然后加密仅 AES 密钥使用 RSA。这种“混合”加密在 GnuPG、TLS、SSH 和其他地方都有使用。

使用 OpenSSL CLI,您可以openssl cms根据 PKCS#7 或 S/MIME 标准进行混合加密。(如果您在需要符合 FIPS 要求的系统上执行此操作,则很可能确实应该使用标准格式,而不是发明自己的加密方法。

相关内容