在使用 OpenSSL 的 EVP_PKEY_keygen 之前,我是否需要为任何随机数生成器设置种子?
Do I need to seed any random number generator before using EVP_PKEY_keygen of OpenSSL?
在名为 EVP Key and Parameter Generation 的 OpenSSL Wiki 页面上,它声明如下:
Since these functions use random numbers you should ensure that the random number generator is appropriately seeded
但是 EVP_PKEY_keygen 上没有任何地方提到随机数生成器的播种。它仅讨论用于生成密钥的非 EVP 函数的低级文档页面。
我也搜索过,到处都没有提到使用 EVP 函数时播种。
所以我的问题是;我可以假设播种是在更高级别的 EVP 功能中为我内部完成的吗?
如果我确实需要这样做,那么我必须查看哪些功能?
but nowhere on https://www.openssl.org/docs/crypto/EVP_PKEY_keygen.html it makes any mention of seeding a random number generator....
请参阅 OpenSSL 维基页面 Random Numbers。它会带您详细了解它。
... no mention is made of seeding when the EVP functions are used
EVP 函数使用库中使用的任何生成器。它可以是 md_rand
或 FIPS AES/CTR 生成器。为 EVP 函数(与其他函数相反)获取随机数没有什么特别之处。
May I assume that the seeding is done internally for me in the higher-level EVP functions?
是的,如果您没有自己为生成器播种。如果您为生成器播种并且有足够的熵,那么它不会自动为自己播种。
您应该避免让生成器自动为自己设定种子。有关详细信息,请参阅 OpenSSL wiki 页面 Random Numbers。
使用 EVP 接口时,seeding/auto-seeding 生成器没有什么特别之处。无论你做什么都适用。
If I do need to do it then which functions must I have a look at?
OpenSSL wiki 页面 Random Numbers 提供了更多详细信息,但您应该这样做:
int rc = RAND_load_file("/dev/urandom", 32);
if(rc != 32) {
/* RAND_load_file failed */
}
/* OK to proceed */
您想避免直接调用 RAND_poll
,并且您希望避免自动播种(在内部调用 RAND_poll
)。
在名为 EVP Key and Parameter Generation 的 OpenSSL Wiki 页面上,它声明如下:
Since these functions use random numbers you should ensure that the random number generator is appropriately seeded
但是 EVP_PKEY_keygen 上没有任何地方提到随机数生成器的播种。它仅讨论用于生成密钥的非 EVP 函数的低级文档页面。
我也搜索过,到处都没有提到使用 EVP 函数时播种。
所以我的问题是;我可以假设播种是在更高级别的 EVP 功能中为我内部完成的吗?
如果我确实需要这样做,那么我必须查看哪些功能?
but nowhere on https://www.openssl.org/docs/crypto/EVP_PKEY_keygen.html it makes any mention of seeding a random number generator....
请参阅 OpenSSL 维基页面 Random Numbers。它会带您详细了解它。
... no mention is made of seeding when the EVP functions are used
EVP 函数使用库中使用的任何生成器。它可以是 md_rand
或 FIPS AES/CTR 生成器。为 EVP 函数(与其他函数相反)获取随机数没有什么特别之处。
May I assume that the seeding is done internally for me in the higher-level EVP functions?
是的,如果您没有自己为生成器播种。如果您为生成器播种并且有足够的熵,那么它不会自动为自己播种。
您应该避免让生成器自动为自己设定种子。有关详细信息,请参阅 OpenSSL wiki 页面 Random Numbers。
使用 EVP 接口时,seeding/auto-seeding 生成器没有什么特别之处。无论你做什么都适用。
If I do need to do it then which functions must I have a look at?
OpenSSL wiki 页面 Random Numbers 提供了更多详细信息,但您应该这样做:
int rc = RAND_load_file("/dev/urandom", 32);
if(rc != 32) {
/* RAND_load_file failed */
}
/* OK to proceed */
您想避免直接调用 RAND_poll
,并且您希望避免自动播种(在内部调用 RAND_poll
)。