最近披露Tripple Handshake Issue。無論是否禁用會話恢復都會緩解這個問題,這是another question的一個主題。讓我們假設我想禁止它出於任何原因(基本上是我的偏執狂)。如何禁用pyOpenSSL中的會話恢復?
在C禁用此功能,它看起來像一個應該使用這樣的:
SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
是否有人可以證實這一點?
但如何在pyopenssl中做到這一點?
最近披露Tripple Handshake Issue。無論是否禁用會話恢復都會緩解這個問題,這是another question的一個主題。讓我們假設我想禁止它出於任何原因(基本上是我的偏執狂)。如何禁用pyOpenSSL中的會話恢復?
在C禁用此功能,它看起來像一個應該使用這樣的:
SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
是否有人可以證實這一點?
但如何在pyopenssl中做到這一點?
有人可以確認嗎?
我相信Henson博士在OpenSSL User Mailing list回答了這個問題。
在https://secure-resumption.com/符所描述的攻擊也TLS 通道結合TLS-獨特RFC 5929
我仍然想使用TLS-獨特用於信道綁定中 SCRAM定義(RFC 5802) 。如果會話緩存被禁用,OpenSSL是否可用於通道綁定並保護 免受此攻擊?
SSL_CTX_set_session_cache_mode(CTX,SSL_SESS_CACHE_OFF)
是否有必要使用不同的功能禁用恢復?
您還需要禁用會話票據。
注意攻擊的初始階段要求攻擊者擁有私鑰和客戶端信任的證書。我很樂意知道在您的情況下如何發生這種情況。
因此,根據亨森博士,你還需要調用SSL_CTX_set_options
與SSL_OP_NO_TICKET
。請參閱 SSL_CTX_set_options(3)處的OpenSSL文檔。
雖然我不知道如何在Python中做到這一點。
與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)