3

三重握手问题最近被披露。禁用会话恢复是否会减轻这种情况,是另一个问题的主题。让我们假设我想出于任何原因禁用它(基本上是我的偏执狂)。

要在 C 中禁用它,似乎应该使用这个:

SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);

有人可以确认一下吗?

但是如何在 pyopenssl 中做到这一点?

4

2 回答 2

4

从 pyOpenSSL 0.14 开始,这是可能的:

from OpenSSL.SSL import TLSv1_2_METHOD SESS_CACHE_OFF, Context, Connection

ctx = Context(TLSv1_2_METHOD)
ctx.set_session_cache_mode(SESS_CACHE_OFF)

conn = Connection(ctx, ...)

pyOpenSSL 的早期版本不公开这些 API。

如果您还需要关闭会话票证,则:

from OpenSSL.SSL import OP_NO_TICKET

...

ctx.set_options(OP_NO_TICKET)
于 2014-03-16T14:06:00.587 回答
1

有人可以确认一下吗?

我相信 Henson 博士在OpenSSL 用户邮件列表中回答了这个问题。

https://secure-resumption.com/中描述的攻击也破坏了 tls 通道绑定 tls-unique RFC 5929。

我仍然想使用 tls-unique 进行 SCRAM (RFC 5802) 中定义的通道绑定。如果会话缓存被禁用,OpenSSL 是否可以用于通道绑定并防止这种攻击?

SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF)

是否有必要使用其他功能禁用恢复?

您还需要禁用会话票证。

请注意,攻击的初始阶段要求攻击者拥有客户端信任的私钥和证书。我很想知道在您的情况下会发生这种情况。

因此,根据 Henson 博士的说法,您还需要SSL_CTX_set_options使用SSL_OP_NO_TICKET. 请参阅SSL_CTX_set_options(3)上的 OpenSSL 文档。

不过,我不知道如何在 Python 中做到这一点。

于 2014-03-13T14:45:25.530 回答