Пример Secure Login

Пример Secure Login демонстрирует использование паттерна Information Obscurity. Пример демонстрирует возможность передачи критической для системы информации через недоверенную среду.

Архитектура примера

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

С точки зрения архитектуры в таких системах можно выделить следующие субъекты:

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

  1. Выработать между источником данных и подсистемой обработки информации общий секрет.
  2. Использовать этот секрет для шифрования информации на стороне источника данных и расшифровки на стороне подсистемы обработки информации.

Очевидно, что защищенная подобным образом информация не может быть скомпрометирована в точке коммуникации.

Пример Secure Login содержит две сущности:

Процесс аутентификации пользователя происходит по следующей схеме:

  1. Пользователь открывает в веб-браузере страницу localhost:1106.
  2. Веб-сервер Civetweb, запущенный в сущности WebServer, отображает страницу index.html, содержащую приглашение к аутентификации.
  3. Пользователь нажимает на кнопку Log in.
  4. Сущность WebServer обращается к сущности AuthService по IPC для получения страницы, содержащей форму ввода имени пользователя и пароля.
  5. Сущность AuthService:
    • использует протокол Диффи-Хеллмана для создания ключей шифрования;
    • создает страницу auth.html, содержащую форму ввода имени пользователя и пароля, а также открытый ключ шифрования;
    • передает полученную страницу сущности WebServer по IPC.
  6. Веб-сервер Civetweb, запущенный в сущности WebServer, отображает страницу auth.html, содержащую форму ввода имени пользователя и пароля.
  7. Пользователь заполняет форму и нажимает на кнопку Submit.
  8. Код, содержащийся в странице auth.html, исполняется на стороне браузера и производит шифрование данных с помощью шифра XOR.
  9. Сущность WebServer обращается к сущности AuthService по IPC для получения страницы, содержащей результат аутентификации, передавая зашифрованные данные.
  10. Сущность AuthService: расшифровывает данные и в зависимости от результата аутентификации возвращает страницу result_err.html или страницу result_ok.html.

Таким образом, конфиденциальные данные передаются через веб-сервер только в зашифрованном виде. Для передачи данных используются взаимодействия по IPC, которые контролируются модулем Kaspersky Security Module.

Сборка примера

Сборка примера осуществляется с помощью системы сборки CMake, входящей в состав KasperskyOS Community Edition.

Файлы, содержащие код примера и скрипты для сборки, находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/examples/secure_login

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

/opt/KasperskyOS-Community-Edition-<version>/examples/secure_login/cross-build.sh

В этом разделе

Файлы описаний в примере Secure Login

Заголовочные файлы сущности AuthService в примере Secure Login

Реализация сущности AuthService в примере Secure Login

Заголовочные файлы сущности WebServer в примере Secure Login

Реализация сущности WebServer в примере Secure Login

Общие заголовочные файлы в примере Secure Login

В начало