Стандартизация TLS

Для защиты соединений между клиентом и сервером в сети Интернет в большинстве случаев применяется протокол TLS (Transport Layer Security). TLS обеспечивает взаимную аутентификацию сторон протокола, конфиденциальность и контроль целостности передаваемых между сторонами данных. Последняя на сегодняшний день редакция TLS определена в RFC 5246. Стандартизация этой редакции завершается сейчас в Республике Беларусь. Предполагается, что в текущем году будет введен в действие стандарт, определяющий как собственно TLS, так и использование в TLS отечественных криптографических алгоритмов. Рабочее название стандарта – BTLS.

TLS является объединением нескольких субпротоколов, разбитых на два уровня. На нижнем уровне действует протокол Record, обеспечивающий шифрование и имитозащиту данных. На верхнем уровне действуют 3 протокола, основным из них является протокол Handshake. С помощью Handshake стороны согласуют применение определенных криптографических алгоритмов, формируют общий ключ, строят ключи для протокола Record, проводят аутентификацию друг друга. Применяемые алгоритмы оформляются в TLS в виде криптонабора (cipher suite). В TLS предусмотрено расширение перечня криптонаборов и методов аутентификации сторон.

BTLS определяет следующие семейства дополнительных криптонаборов:

  • RDPFOK_WITH_GOST – два криптонабора на основе алгоритмов ГОСТ 28147 (шифрование, имитозащита), СТБ 1176.1 (хэширование), СТБ 1176.2 (ЭЦП) и протоколов формирования общего ключа в простых полях;
  • BIGN_WITH_BELT – девять криптонаборов на основе алгоритмов СТБ 34.101.31 (шифрование, имитозащита, хэширование), СТБ 34.101.45 (ЭЦП, транспорт ключа).

Обсудим криптонаборы BIGN_WITH_BELT и связанные с ними методы аутентификации.

Криптонаборы

Криптонабор определяет, какие алгоритмы шифрования, имитозащиты, генерации псевдослучайных данных и формирования общего ключа будут использоваться в сессии TLS.

Алгоритмы шифрования. В TLS могут использоваться алгоритмы шифрования трех типов: поточные алгоритмы, блочные алгоритмы и алгоритмы одновременного шифрования и имитозащиты (или AEAD-алгоритмы). В криптонаборах BIGN_WITH_BELT поддержаны все эти типы:

  • алгоритм шифрования СТБ 34.101.31 в режиме счетчика (belt-ctr) используется в качестве поточного;
  • алгоритмы шифрования СТБ 34.101.31 в режиме сцепления блоков (belt-cbc) используются в качестве блочных;
  • алгоритмы одновременного шифрования и имитозащиты СТБ 34.101.31 (belt datawrap) используются как AEAD-алгоритмы.

Алгоритм имитозащиты. В TLS данные, зашифрованные с помощью поточных или блочных алгоритмов, должны сопровождаться имитовставками. В BIGN_WITH_BELT в необходимых случаях применяется алгоритм вычисления имитовставки, определенный в СТБ 34.101.31 (belt-mac).

Алгоритм генерации псевдослучайных данных. В TLS алгоритм генерации псевдослучайных чисел (PRF-алгоритм в обозначениях RFC) используется для построения ключей и синхропосылок, а также для верификации сообщений протокола Handshake. Стандартный PRF-алгоритм последней редакции TLS строится на основе алгоритма HMAC, который, в свою очередь, строится на некотором алгоритме хэширования. Во всех криптонаборах BIGN_WITH_BELT используется стандартный PRF-алгоритм c алгоритмом хэширования СТБ 34.101.31 (belt-hash).

Алгоритмы формирования общего ключа. В протоколе TLS имеется определенная свобода выбора алгоритма (или, точнее, механизма) формирования общего ключа. Тем не менее, в RFC 5246 описаны четыре типа таких алгоритмов, которые применяются в большинстве существующих на сегодняшний день решений. Алгоритмы двух типов не обеспечивают защиту от атак типа «противник посередине» и «чтение назад». Поэтому в BTLS были включены алгоритмы только двух оставшихся типов:

  • dht-bign – транспорт ключа на основе СТБ 34.101.45 (bign-keytransport);
  • dhe-bign – протокол Диффи – Хэллмана с эфемерными ключами, которые подписываются с помощью алгоритмов СТБ 34.101.45 (bign-sign).

Дополнительно в BTLS определен  алгоритм формирования общего ключа, соответствующий RFC 4279:

  • dht-psk-bign – транспорт ключа типа DHT_BIGN с использованием предварительно распределенных общих секретов.

В перечисленных алгоритмах формирования общего ключа используется сертификат сервера с открытым ключом СТБ 34.101.45 (bign-pubkey).

Обязательный криптонабор. Любая реализация BTLS должна поддерживать криптонабор с алгоритмом шифрования belt-ctr, алгоритмом имитозащиты belt-mac и алгоритмом формирования общего ключа dht-bign. Поддержка остальных 8 криптонаборов является необязательной.

Аутентификация

Аутентификация в BTLS основана на проверке действительности сертификатов открытых ключей сторон и на проверке знания сторонами соответствующих личных ключей. Для криптонаборов с алгоритмом формирования общего ключа dht-psk-bign дополнительная аутентификация состоит в проверке знания общего секрета (предполагается, что этот секрет был надежно передан сторонам протокола, подлинность которых была предварительно проверена). При аутентификации используются сертификаты, в которых фиксируются открытые ключи алгоритмов СТБ 34.101.45 (bign-pubkey).

Аутентификация сервера. В протоколе Handshake сервер передает клиенту сертификат, который при использовании алгоритма dhe-bign содержит открытый ключ электронной цифровой подписи, а при использовании алгоритмов dht-bign и dht-psk-bign – открытый ключ транспорта. Последующее успешное завершение Handshake означает, что аутентификация сервера проведена успешно.

Аутентификация клиента. В протоколе Handshake сервер запрашивает у клиента его сертификат. В этом запросе указываются возможные типы сертификатов, который должен предоставить клиент, а также типы пар (алгоритм хэширования, алгоритм ЭЦП), которые разрешается использовать при проверке подписи сертификата. Разрешается использовать сертификаты открытых ключей типа bign-pubkey и пару алгоритмов (belt-hash, bign-sign). Сервер может запросить сертификат клиента только после предъявления своего сертификата. Успешное завершение Handshake означает, что аутентификация клиента проведена успешна.

Новости
20.10.2019
План семинара осень 2019
01.10.2019
XII Международная научная конференция
18.04.2019
Школа по компьютерным наукам
18.04.2019
Computer Science Summer
01.04.2019
AgatCTF-2019
07.03.2019
CDAM’2019
04.03.2019
План семинара весна 2019
12.09.2018
План семинара осень 2018
20.02.2018
План семинара весна 2018