Защищаем приватные ключи от кражи из vps сервер windows с тестовым периодом

info_bez

В этой статье мы исследовали улучшение реализации виртуального Hardware Security Module или HSM.info bez Защищаем приватные ключи от кражи из vps сервер windows с тестовым периодом

Vps сервер windows с тестовым периодом и приватные ключи

Что такое HSM

Представьте себе приложение, которое подписывает всю отправляемую на сервер информацию при помощи специального приватного ключа. Пускай утеря этого ключа для его собственника неприемлема. Как защитить подобный крайне ценный ключ от утечки из-за удаленного взлома системы?

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

Все операции над информацией выполняются внутри HSM. Пользователь имеет доступ исключительно к результатам таких операций. Внутренняя память этого устройства защищена от взлома и физического доступа. При любой попытке проникновения вся секретная информация уничтожается.

Для того, чтобы начать пользоваться HSM, пользователь должен аутентифицировать себя. Если аутентификация осуществляется через программу-клиент HSM, которая работает в наиболее уязвимой части системы, то вполне возможен перехват пароля HSM хакером.

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

Основной барьер в применении HSM — их высокая цена. В зависимости от типа устройства стоимость варьироваться может от 10$ (smart карты, USB токены) до 30000+$ (девайсы с защитой от взлома, аппаратным ускорением криптографии, high availability опциями).

Провайдеры облачных решений также не оставили без внимания сегодняшний рынок HSM. К примеру, Amazon продает облачный HSM по средней стоимости 1373$ в месяц.

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

Следует заметить, что отдельные инстансы (контейнеры, виртуальные машины), в облаке хорошо изолированы друг от друга, потому если вынести все функции HSM за пределы наиболее уязвимого инстанса в иной изолированный от мира инстанс, мы довольно точно воспроизведем общую функциональность физического HSM. Подобный подход был назван Virtual HSM или VHSM.

Что такое OpenVZ

OpenVZ – одна из современных технологий для запуска множества изолированных операционных систем Linux на одном ядре ОС Linux. При этом говорят, что каждая операционная система Linux функционирует в отдельном контейнере. Если очень упрощать, то в ядро Linux фактически встроена функциональность, позволяющая изолировать приложения, которые приписаны различным контейнерам таким образом, чтобы они о существовании друг друга не подозревали.

Приложения не в состоянии сменить собственный контейнер. Для лучшей безопасности и изоляции коммуникация между приложениями из различных контейнеров с помощью IPC запрещена. Она обычно осуществляется при помощи сетевых соединений. В результате мы видим сильное сходство контейнеров с “простыми” виртуальными машинами.

OpenVZ, а также технологии на ее базе популярны у хостеров для создания vps сервер windows с тестовым периодом. Вполне логичной стала реализация VHSM для OpenVZ.

Архитектура Virtual HSM

f60f83e5118143d4a052ad348c6713e4 800x554 Защищаем приватные ключи от кражи из vps сервер windows с тестовым периодом

  • Client VE – это контейнер OpenVZ, где выполняются все пользовательские приложения, которые для своей работы требуют криптографические сервисы, такие как подпись, шифрование. Контейнер вполне доступен для различных удаленных атак для кражи цифровых ключей.
  • VHSM virtual environment или VHSM VE — это контейнер OpenVZ, где запущен VHSM server – инструмент, который принимает команды от различных приложений в Client VE и исполняет их. Никаких прочих приложений в VHSM VE не включено. VHSM VE полностью изолирован от простых пользовательских контейнеров с помощью OpenVZ. У контейнера нет никаких сетевых интерфейсов, он не доступен по сети.
  • Transport – это модуль ядра ОС Linux, который предназначен для передачи всех сообщений из Client VE в VHSM VE, а также обратно.
  • VHSM API – это библиотека, которая реализует часть стандартного для HSM интерфейса PKCS #11, передает разнообразные команды приложений из ClientVE в VHSM server с помощью Transport, и возвращает результат выполнения определенной команды приложению в ClientVE.

Рассмотрим каждый из компонентов более детально.

VHSM Virtual Environment

Сервер VHSM ответственен за аутентификацию пользователей, полноценное взаимодействие с хранилищем тайной информации и выполнение разнообразных криптографических операций. Кроме самого сервера VHSM, VHSM VE содержит в себе Secure Storage – БД, хранящую важные данные в зашифрованной форме.

У каждого пользователя VHSM есть свой мастер ключ, которым и шифруются его данные. Такой мастер ключ всегда генерируется из пароля пользователя с помощью опции PBKDF2. Передаваемая ей на вход соль всегда хранится в незашифрованной форме в БД. VHSM не хранит мастер ключ пользователя в базе данных, а использование PBKDF2 значительно снижает скорость перебора пароля пользователя при краже базы данных.

Пользователь регистрируется на сервере VHSM администратором. В роли последнего может выступать и человек, и программа. VHSM при регистрации пользователя генерирует 256-битный ключ аутентификации, шифрует его мастер ключом при помощи AES-GCM. Затем, перед применением VHSM, пользователь аутентифицирует себя специальной парой логин-пароль. В момент аутентификации, мастер-ключ, созданный из соли и пароля, используется для расшифровки ключа аутентификации пользователя.

Применение GCM дает возможность проверить верность мастер-ключа во время расшифровки. Мастер-ключ получается здесь из пароля пользователя, и поэтому проверка его правильности дает возможность проверить и сам пароль пользователя, который был передан при аутентификации. После удачной аутентификации пользователю становятся полностью доступны специальные криптографические сервисы, применяющие цифровые ключи пользователя, хранящиеся в VHSM.

VHSM требует выбора контейнеров, из которых определенный пользователь может работать с VHSM. Сведения о контейнере, из которых была получена команда пользователя, здесь предоставляется OpenVZ.

VHSM API

Это особая C-библиотека, которая находится в пользовательских контейнерах и реализует часть типичного для HSM интерфейса PKCS#11, который позволяет управлять ключами, сессиями, данными, цифровой подписью и шифрованием. Рассмотрим конкретный пример применения VHSM API:

  • В пользовательском контейнере приложению нужно подписать отправляемое сообщение.
  • С помощью VHSM API приложение генерирует специальную пару открытый-закрытый ключ, а затем получает ID закрытого ключа, а также открытый ключ.
  • Приложение передает специальное сообщение в VHSM API для подписывания закрытым ключом с необходимым ID. VHSM API возвращает уже подписанное сообщение.
  • Подписанное сообщение вместе с открытым ключом передаются получателю сообщения. Закрытый ключ клиентскому контейнеру при этом не доступен.

В клиентской части проекта были также реализованы PAM-модуль и OpenSSL engine, позволяющие нормально работать с VHSM в существующих приложениях, которые используют PAM и OpenSSL. Но эта часть проекта проработана слабо и собой представляет скорее Proof of concept.

uslugi hostinga Защищаем приватные ключи от кражи из vps сервер windows с тестовым периодом

VHSM Transport

Как было сказано чуть выше, приложения, которые исполняются в различных контейнерах, не могут друг с другом взаимодействовать с помощью механизмов IPC Linux. Потому для транспортировки всех сообщений от клиентов к серверу, а также обратно был реализован специальный загружаемый модуль ядра ОС Linux. Модуль запускает специальный сервер Netlink в ядре. VHSM-сервер и VHSM-клиенты соединяются с ним.

Netlink-сервер ответственен за передачу сообщений от источника (то есть клиента VHSM) к приемнику (то есть к серверу VHSM) и обратно. К сообщениям попутно добавляется ID контейнера источника сообщения для того, чтобы, к примеру, сервер мог отклонить какие-то запросы от контейнеров, из которых определенному пользователю использовать VHSM запрещено.

Заключение

Главная цель создания VHSM — исключение самой возможности кражи секретных ключей из памяти приложений пользователей, которые работают в пользовательском контейнере. Данная цель была достигнута, поскольку секретная информация доступна исключительно в изолированном контейнере (VHSM VE). Сама изоляция реализована с помощью OpenVZ.

Утечка базы данных из VHSM VE не приведет к быстрой утрате секретной информации, так как они хранятся в особом зашифрованном виде. Сам ключ шифрования в БД не хранится, а генерируется из пользовательского пароля, который передается при его аутентификации.

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


Поделитесь с друзьями



Оставить комментарий

apteka mujchine for man ukonkemerovo woditely driver.