首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用openssl进行TLS 1.3 PSK?

如何使用openssl进行TLS 1.3 PSK?
EN

Stack Overflow用户
提问于 2019-11-05 21:17:14
回答 2查看 5.1K关注 0票数 2

我正在开发一个客户机/服务器软件,并试图找出如何使用openssl设置TLS1.3PSK连接。显然,与TLS1.2(和更低的版本)相比,回调是不同的,但是openssl文档非常糟糕,我无法真正理解完整的流程。

有人能提供如何在这些回调中返回信息的示例代码吗?

代码语言:javascript
运行
复制
int SSL_psk_use_session_cb_func(SSL *ssl, const EVP_MD *md,const unsigned char **id,size_t *idlen,SSL_SESSION **sess);   

int (*SSL_psk_find_session_cb_func)(SSL *ssl,const unsigned char *identity,size_t identity_len,SSL_SESSION **sess);
  1. 我的理解是,在TLS1.3中,标识提示是空的,那么为什么这些TLS1.3特定的回调在它们中有标识字段?
  2. 请阅读TLS1.3有一组不同的密件,用于PSK AES256和PSK CHACHA20的密码套件的名称是什么?
  3. 在我的示例中,服务器将只接受一种连接,即P2P数据链路。我是否仍必须让一方充当服务器,即使用find_session_cb而不是use_session_cb?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-06 09:35:35

有人能提供如何在这些回调中返回信息的示例代码吗?

您可以在这里查看s_client是如何做到的:

C#L 183-L 243

下面是s_server是如何做到的:

Server.c#L 185-L 232

我的理解是,在TLS1.3中,标识提示是空的,那么为什么这些TLS1.3特定的回调在它们中有标识字段?

身份暗示和身份是两种不同的事物。在TLSv1.2中,服务器可以向客户机提供一个提示,以允许客户端为该服务器选择正确的标识。在TLSv1.3中,PSKs的工作方式完全不同。客户端在第一条消息中将标识发送到服务器,因此没有机会接收提示。在实践中,提示通常并不那么有用。

在PSK的上下文中,您可以认为身份有点像用户名(这实际上有点过于简化--但对于我们这里的目的来说已经足够了)

请阅读TLS1.3有一组不同的密件,用于PSK AES256和PSK CHACHA20的密码套件的名称是什么?

在TLSv1.2中,您需要使用特殊的PSK密码套件。在TLSv1.3中,情况不再如此。密码套件的工作方式非常不同,没有特殊的PSK密码的概念。你只需要用普通的密匙。要注意的是,在TLSv1.3中,PSK总是与散列相关联(例如,SHA256)。无论您使用什么加密套件,都必须与该哈希兼容,例如,对于SHA256,您可以使用TLS_CHACHA20_POLY1305_SHA256或TLS_AES_128_GCM_SHA256。

在我的示例中,服务器将只接受一种连接,即P2P数据链路。我是否仍必须让一方充当服务器,即使用find_session_cb而不是use_session_cb?

在TLS中,客户端定义为发起通信的对等点,服务器是接收传入连接的对等点。因此,始终存在一个客户机和一个服务器角色。因此,是的,一方必须使用find_session_cb,另一方必须使用use_session_cb

票数 5
EN

Stack Overflow用户

发布于 2020-04-19 15:55:49

我希望您的意思是外部建立PSK (带外PSK键和ID)与TLSv1.3。为此,您可以直接使用旧回调psk_client_callbackpsk_server_callback。使用这些回调,默认情况下使用AES_128_GCM_WITH_SHA256加密套件。

TLSv1.3PSK 客户端,本存储库中的服务器示例

在这里,ClientHello msg用PSK_ID发送pre_shared_key扩展,而ServerHello用选择的PSK_ID索引作为0来响应pre_shared_key扩展。

如果您需要使用不同的密件,那么您需要使用psk_use_session_cbpsk_find_session_cb

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58719595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档