openssl 中的安全内存块
Secure memory block in openssl
OpenSSL 中是否有任何方法等同于 Crypto++ 的 SecByteBlock?
在释放内存之前清除内存的东西,其中包括用敏感信息保护内存块。有什么方法可以保护内存中的 RSA 结构吗?
Is there any method in OpenSSL which is an equivalent of Crypto++'s SecByteBlock?
A SecByteBlock
是一个 class,它通过将数据与对数据执行操作的操作相结合来利用 OOP(大量的手动操作)。 OpenSSL 是一个 C 库,它没有大部分与 OOP 相关的好东西。
在 OpenSSL 中,您将使用 OPENSSL_cleanse
。以下是它在 OpenSSL 中的一些单行用法:
$ grep -R cleanse * | grep -v doc
...
apps/apps.c: OPENSSL_cleanse(buff, (unsigned int)bufsiz);
apps/apps.c: OPENSSL_cleanse(buf, (unsigned int)bufsiz);
apps/apps.c: OPENSSL_cleanse(buf, (unsigned int)bufsiz);
apps/ca.c: OPENSSL_cleanse(key, strlen(key));
apps/dgst.c: OPENSSL_cleanse(buf, BUFSIZE);
apps/enc.c: OPENSSL_cleanse(str, SIZE);
apps/enc.c: OPENSSL_cleanse(str, strlen(str));
...
Is there any way of securing the RSA struct in memory?
RSA_free
在内部调用 OPENSSL_cleanse
。因此,结构在被丢弃时被归零。根据 RSA_new
和 RSA_free
上的 OpenSSL man page:
RSA_free()
frees the RSA structure and its components. The key is erased before the memory is returned to the system.
但是您可能应该为 "secure in memory." 定义您的要求 如果您的要求包括包装,那么不,OpenSSL 不提供它。但 Crypto++ 也没有。
OpenSSL 中是否有任何方法等同于 Crypto++ 的 SecByteBlock?
在释放内存之前清除内存的东西,其中包括用敏感信息保护内存块。有什么方法可以保护内存中的 RSA 结构吗?
Is there any method in OpenSSL which is an equivalent of Crypto++'s SecByteBlock?
A SecByteBlock
是一个 class,它通过将数据与对数据执行操作的操作相结合来利用 OOP(大量的手动操作)。 OpenSSL 是一个 C 库,它没有大部分与 OOP 相关的好东西。
在 OpenSSL 中,您将使用 OPENSSL_cleanse
。以下是它在 OpenSSL 中的一些单行用法:
$ grep -R cleanse * | grep -v doc
...
apps/apps.c: OPENSSL_cleanse(buff, (unsigned int)bufsiz);
apps/apps.c: OPENSSL_cleanse(buf, (unsigned int)bufsiz);
apps/apps.c: OPENSSL_cleanse(buf, (unsigned int)bufsiz);
apps/ca.c: OPENSSL_cleanse(key, strlen(key));
apps/dgst.c: OPENSSL_cleanse(buf, BUFSIZE);
apps/enc.c: OPENSSL_cleanse(str, SIZE);
apps/enc.c: OPENSSL_cleanse(str, strlen(str));
...
Is there any way of securing the RSA struct in memory?
RSA_free
在内部调用 OPENSSL_cleanse
。因此,结构在被丢弃时被归零。根据 RSA_new
和 RSA_free
上的 OpenSSL man page:
RSA_free()
frees the RSA structure and its components. The key is erased before the memory is returned to the system.
但是您可能应该为 "secure in memory." 定义您的要求 如果您的要求包括包装,那么不,OpenSSL 不提供它。但 Crypto++ 也没有。