使用 OpenSSL 的 PSK 提示

Posted

技术标签:

【中文标题】使用 OpenSSL 的 PSK 提示【英文标题】:PSK Hint with OpenSSL 【发布时间】:2012-01-30 11:33:43 【问题描述】:

PSK Hint 在 OpenSSL 中的具体作用是什么? 我认为这是对客户端的一种服务器标识,但我没有发现任何具体的内容。

【问题讨论】:

【参考方案1】:

PSK 身份提示定义不明确(请参阅RFC 4279)。在预共享密钥 (PSK) 方案中,客户端和服务器都必须能够派生相同的一组加密密钥。身份提示是服务器提供的,用于告诉客户端如何派生密钥。

由于每个服务器都可以有自己独特的生成密钥的方式,因此客户端必须了解有关服务器的一些信息才能知道如何处理 PSK 身份提示。并且每个实现都以不同的方式使用提示。

例如,NETCONF 在生成 PSK 时直接使用提示(其中+ 表示连接):

PSK = SHA-1(SHA-1(psk_identity + "Key Pad for Netconf" + password) +  
            psk_identity_hint) 

而 Symbian 安全用户平面位置 (SUPL) 协议使用它来显示协议版本并提供客户端可以使用的 PSK 生成器列表。

在 PSK-TLS 中使用的密钥标识符必须采用 RAND@SLP 的形式,其中 SLP 是 FQDN 格式,而 RAND 是一个 128 位的数字。下列 为 SUPL 1.0 定义了密钥标识符:

...

PSK_H-SLP_Master_Key 和 PSK_SPC_Key 必须是 128 位或 256 位 长。 PSK-TLS 协议中使用的 Key Hints 必须设置为“3GPP2 SUPL 1.0 密钥

同样,EMV smart cards 的 TLS-PSK 使用身份提示来确定如何计算 PSK。

当参数 psk-identity-hint 未由 服务器,选择默认模式。此默认模式适用于 静态 PSK。否则 psk-identity-hint 确定一个特定的 xCDOL1 值和 PSK 计算的配置文件。

如您所见,如果您从服务器获得 PSK 提示,您已经必须知道它提供了哪些信息以及如何处理它,否则您将无法生成与服务器相同的密钥集服务器生成。

脚注:诺基亚负责 PSK-TLS 草案 RFC 4279 和 submitted the patch 到 OpenSSL 实施规范。

【讨论】:

以上是关于使用 OpenSSL 的 PSK 提示的主要内容,如果未能解决你的问题,请参考以下文章

OpenSSL TLS/DTLS PSK

Linux里面openss-devel是啥?

OpenSSL 1.1.1 PSK TLS1.3 - TLS_256_GCM_SHA384 密码套件没有合适的签名算法错误

加密技术---openss 理论

Openssl证书工具使用手册

macOS Big Sur下pecl安装swoole报需要openssl库解决方法