TLS握手协议的服务器hello消息是否加密?



在阅读有关TLS握手协议的内容时,我了解到从服务器到客户端的第一个响应消息是服务器hello,其中包括会话ID,后者将用于标识下一个连接的用户。我读到会话ID信息应该保密以避免会话劫持的危险,那么服务器hello消息是加密的吗?如果是这样,怎么知道用于加密的对称密钥还没有准备好呢?

我搜索了论坛,并查看了教程,以清楚地了解TLS握手协议,但我没有找到对我的问题的回应。

源自RFC 5246:

当客户端和服务器决定恢复之前的会话或复制现有会话(而不是协商新的安全性)参数),消息流如下:

客户端使用会话的Session ID发送一个ClientHello被恢复。然后,服务器检查其会话缓存是否匹配。如果找到匹配,并且服务器愿意重新建立连接在指定的会话状态下,它将发送一个会话ID值相同的ServerHello。

ClientHello和ServerHello在TLS 1.2中不加密。

警告:因为SessionID传输时没有加密或立即MAC保护,服务器绝对不能放置机密信息在会话标识符中还是让内容造假会话标识符会导致对安全性的任何破坏。(请注意握手作为一个整体的内容,包括SessionID的结尾交换的Finished消息保护握手。)

SessionID本身只是随机字节。客户端和服务器在某处存储每个会话ID的协商密钥。如果您知道会话ID,则无法从攻击方执行任何特定操作。

最新更新