【发布时间】:2023-04-01 02:05:01
【问题描述】:
我正在迈出进入 OpenSSL 库的第一步,感觉有点失落。我的机器是Linux操作系统的多线程(至强系列,如果有人需要可以分享更多信息)。
应用程序构建是 SSL-Proxy,因此我需要尽可能快地处理多个 TCP 流,这意味着我希望尽可能无锁地运行 lib。
在crypto/crypto.h里面看了一点之后,主要是这个部分:
# ifndef OPENSSL_NO_LOCKING
# ifndef CRYPTO_w_lock
# define CRYPTO_w_lock(type) \
CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
# define CRYPTO_w_unlock(type) \
CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
# define CRYPTO_r_lock(type) \
CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__)
# define CRYPTO_r_unlock(type) \
CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__)
# define CRYPTO_add(addr,amount,type) \
CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__)
# endif
我试图挖掘代码/API 并迷失了方向。我的问题是:
- OpenSSL 库对多核/线程应用程序有哪些支持?
- lib 的哪些部分只能有一个实例(单例)?
【问题讨论】:
-
这个问题似乎与安全无关。你最好在 Stackoverflow 中询问。
-
你也许是对的,我也会去那里,虽然我认为根据我在这里读到的问题,我也可以在这里得到一些答案
-
这可以通过想知道在不同的处理器上运行时是否存在可能有问题的关键部分来构成一个安全问题。例如:是否使用 MMX 扩展(但这仅适用于 intel x86-32,而不是 Xeon)。您想知道如何使其尽可能无锁,这将是一个 SO 问题。