Openssl 重复使用RSA、EVP_PKEY等结构安全吗?

Openssl 重复使用RSA、EVP_PKEY等结构安全吗?,openssl,Openssl,给定一个openssl函数,如 int RSA_private_decrypt(int flen, unsigned char *from, unsigned char *to, RSA *rsa, int padding); 似乎“unsigned char*from”实际上可能是“const unsigned char*from” 但是RSA呢?除了源代码之外,是否有其他文档说明此函数和类似函数是否可以修改传入的RSA 使用相同的RSA调用RSA_private_decrypt(通过相同

给定一个openssl函数,如

int RSA_private_decrypt(int flen, unsigned char *from,
 unsigned char *to, RSA *rsa, int padding);
似乎“unsigned char*from”实际上可能是“const unsigned char*from”

但是RSA呢?除了源代码之外,是否有其他文档说明此函数和类似函数是否可以修改传入的RSA

使用相同的RSA调用RSA_private_decrypt(通过相同的RSA再次解密)安全吗

阅读源代码来确定这一点似乎有点令人担忧——它显示了我正在查看的版本是否安全,但由于API没有声明const,因此其行为可以随时更改。

事实上,“from”参数在OpenSSL 1.1.0和1.0.2中都声明为const,但文档中存在一个bug。我刚刚提出了一个PR来修复它:

RSA绝对不是常数。可对其进行修改(例如,用于致盲目的)


是的,您可以在随后的调用中使用相同的RSA对象。

我相信OpenSSL现在在const ness做得更好。您使用的库的哪个版本?我的应用程序使用的是1.0.2。但是API在1.1.0中是相同的,并且上面的PR现在是git的,所以文档将在下一个版本中修复。如果RSA可能会被修改,您如何断定重用它是安全的?此外,问题中还有EVP_PKEY。修改主要是由于缓存某些值以进行盲处理。实际键值和参数不变。RSA对象是为重用而设计的。EVP_PKEY也可重复使用。