Состояние соединения TLS является операционной средой протокола записей TLS. Оно специфицирует алгоритмы сжатия, шифрования и MAC. Кроме того, известны параметры этих алгоритмов: секретный код MAC, а также ключи шифрования и IV соединения для направлений чтения и записи. Логически существует четыре состояния соединения: текущие состояния чтения и записи, и отложенные состояния чтения и записи. Все записи обрабатываются в текущих состояниях чтения или записи. Параметры безопасности для отложенных состояний могут быть установлены протоколом диалога TLS. Протокол диалога может селективно переводить любое отложенное состояние в текущее, при этом соответствующее текущее состояние становится отложенным. Не допускается формировать состояние, которое не инициализировано с учетом параметров безопасности текущего состояния. Исходное текущее состояние всегда специфицировано без компрессии, шифрования или MAC. Параметры безопасности для состояния чтения и записи соединения TLS задаются путем определения следующих величин:
| Конец соединения | Клиент или сервер участник соединения. |
| Алгоритм массового шифрования | Алгоритм, используемый для массового шифрования. Эта спецификация включает размер ключа алгоритма, степень секретности ключа, является ли этот шифр блочным или поточным, размер блока и является ли шифр экспортным. |
| Алгоритм MAC | Алгоритм аутентификации сообщений. Эта спецификация включает размер хэша, который возвращается алгоритмом MAC. |
| Алгоритм сжатия | Алгоритм сжатия данных. Эта спецификация должна включать всю информацию, необходимую для выполнения компрессии. |
| Секретный код сервера (master secret) | 48 байтовый секретный код, общий для обоих партеров в соединении. |
| Случайный код клиента | 32 байтный код, предоставляемый клиентом. |
| Случайный код сервера | 32 байтный код, предоставляемый сервером. |
Эти параметры определены в языке представления в виде:
enum { server, client } ConnectionEnd;
enum { null, rc4, rc2, des, 3des, des40 } BulkCipherAlgorithm;
enum { stream, block } CipherType;
enum { true, false } IsExportable;
enum { null, md5, sha } MACAlgorithm;
enum { null(0), (255) } CompressionMethod;
/* Алгоритмы, специфицированные в CompressionMethod, BulkCipherAlgorithm и MACAlgorithm могут быть добавлены. */
| struct { | ConnectionEnd | entity; |
| BulkCipherAlgorithm | bulk_cipher_algorithm; | |
| CipherType | cipher_type; | |
| uint8 | key_size; | |
| uint8 | key_material_length; | |
| IsExportable | is_exportable; | |
| MACAlgorithm | mac_algorithm; | |
| uint8 | hash_size; | |
| CompressionMethod | compression_algorithm; | |
| Opaque | master_secret[48]; | |
| opaque | client_random[32]; | |
| opaque | server_random[32];} SecurityParameters; |
| Состояние сжатия | Текущее состояние алгоритма сжатия. |
| Состояние шифра | Текущее состояние алгоритма шифрования. Оно состоит из текущего ключа для данного соединения. Кроме того, для блочного шифра, работающего в режиме CBC (единственный режим, специфицированный в TLS), оно в исходный момент содержит IV для данного состояния соединения и должно актуализоваться, чтобы содержать текст последнего шифрованного или дешифрованного блока. Для поточных шифров, оно содержит всю необходимую информацию для продолжения шифрования или дешифрования данных. |
| Секретный код MAC | Секретный код MAC для данного соединения. |
| Номер по порядку | Каждое состояние соединения содержит номер по порядку, который поддерживается независимо для состояний чтения и записи. Номер по порядку должен быть установлен равным нулю, как только соединение переведено в активное состояние. Номера по порядку имеют тип uint64 и не может превышать 264-1. Номер по порядку инкрементируется после прихода каждой записи: в частности, первая запись, передаваемая через некоторое соединение, имеет порядковый номер 0. |