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

Экспертов в особенности беспокоит безопасность устройств из сферы Интернета вещей (IoT). По подсчётам McKinsey, к 2025 г. количество IoT-устройств будет исчисляться десятками миллиардов, что определённо не останется без внимания злоумышленников.

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

Под назревающие потребности рынка подстраиваются производители процессоров и встраиваемых компьютеров. Intel в этом году выпустила системы на кристалле Atom E3900 «Apollo Lake» для интернет-шлюзов. Подобная разработка имеется и у Samsung — 64-разрядный чип Artik7 COM для Linux-систем, а для систем доступа в режиме реального времени (RTOS) имеется Artik0 на базе ядра Cortex-M4. ARM анонсировала ядра Cortex-M23 и Cortex-M33 для оконечных точек IoT с поддержкой архитектуры ARMv8-M и технологии TrustZone security.

Не меньшую готовность проявляют производители антивирусов и других продуктов для обеспечения безопасности. Недавние события с ботнетом Mirai, который посредством атаки на провайдера Dyn вывел из строя значительную часть интернет-инфраструктуры США, продемонстрировали степень опасности, которую несут объединенные в сеть IoT-устройства. Предпринятые ИБ-экспертами шаги помогли смягчить последствия DDOS-атаки, но сделанные ими вывод позволяет говорить о том, что, как и компьютеры, IoT-устройства тоже могут быть заражены разного рода вирусами и подчиняться воле злонамеренных командных серверов.

Хорошо защищённые промышленные IoT сети — вот настоящая цель хакеров, предпринятые ими ранее атаки на домашние сети нужно воспринимать в качестве разминки. Пока что они тренируются на устройствах из серии «умного» дома, большинство таких гаджетов лишено комплексной защиты — её внедрение повысит стоимость продукта — и представляют относительно лёгкую добычу для хакеров. Возникает вопрос: а как же защититься от хакеров? Эрик Браун на портале Linux.com заявляет, что проблему безопасности подключаемых устройств помогут разрешить контейнеры. Помимо этого контейнеры помогут устранить барьеры, препятствующие разработчикам писать совместимый код для взаимодействия IoT-устройств.

Из перспективных разработок в этой области он называет ОС Ubuntu Core и её контейнерное окружение Snaps, а также основанную на контейнерной технологии систему ResinOS.

Snappy Ubuntu Core

Canonical, известная по разработке настольной Ubuntu и её серверной редакции, вовремя прочувствовала IoT-тренд и подготовила ещё одну версию своей системы — Snappy Ubuntu Core. Эта ОС имеет собственную систему управления пакетами (формат установочных пакетов называется snap) и собственный магазин приложений. Пользователь может самостоятельно добавлять сервисы и программы по своему вкусу. Ради обеспечения безопасности поддерживается запуск приложений в «песочнице». Зоны ответственности разделены: сама Canonical отвечает за основную часть Ubuntu Core, а сторонние разработчики — за приложения для нее. Все это позволяет снять с производителей оборудования ответственность за обновление прошивок, а значит — ускорить выход обновлений.

В случае с Ubuntu Core операционная система «живёт» в дисковом разделе с доступом только для чтения и под ограничениями AppArmor. Изолированные приложения в контейнерах минимизируют риски безопасности и сокращают время установки данных приложений. Это достигается за счёт того, что данные уже заранее развёрнуты в соответствующих контейнерах. Обновления выпускаются регулярно, доставляются в режиме ОТА («по воздуху») и синхронизированы с составом пакетов Ubuntu Linux.

В ноябре Canonical опубликовала новый выпуск Ubuntu Core 16, в котором была усовершенствована проверка сертификатов приложений, а служба обновления получила обновлённый механизм для блокировки несанкционированных приложений. Помимо этого компания поделилась технологией snap с Linux-сообществом. Ubuntu Core работает на широком спектре оборудования, в числе которого одноплатный компьютер Gumstix, дроны Erle Robotics, шлюзы Dell Edge Gateways, Nextcloud Box, LimeSDR, хаб для домашней автоматизации Mycroft, микрокомпьютер Intel Joule и платы, совместимые со спецификациями Linaro 96Boards. Canonical сотрудничает с организациями Linaro IoT и Embedded (LITE) Segment Group для разработки IoT-редакции 96Boards. Первоначально одноплатные компьютеры типа BLE Carbon (производства Seeed) работали на базе 96Boards IE и ядра Cortex-M4, в перспективе диапазон поддерживаемых ими ОС должен пополниться Ubuntu Core.

«Связка Ubuntu Core и snap-пакетов обеспечивает перемещение данных от сетевых шлюзов к облаку. Пакеты snap могут работать на любом дистрибутиве, включая Ubuntu Server и Ubuntu for Cloud; возможность транзакционного обновления гарантирует отказоустойчивость системы — непрерывная доставка обновлений безопасности, исправлений или новых функций является необходимым условием в работе экосистемы IoT», — сказал вице-президент Ubuntu Client Platform Оливер Райс.

По его словам, snap-пакеты Ubuntu содержат саму программу, а также все ее зависимости. Это имеет несколько преимуществ перед обычными deb- или rpm-пакетами, обрабатывающими зависимости. И главное из них — разработчик может быть уверен, что изменения версий библиотек не вызовет в системе регрессий. Технология snap также сокращает время разработки, сказал Райс: «Формируя snap-пакеты, разработчики могут использовать любые необходимые библиотеки и версии компонентов без оглядки на состав дистрибутива. Такой подход позволяет поставлять самые свежие версии программ и обеспечить их предсказуемое поведение независимо от состава и конфигурации системы. При обновлении snap-контейнер заменяется целиком, без раздельного обновления составных частей».

Кроме Ubuntu возможность использования пакетов snap теперь предоставлена для Fedora, Arch Linux, Debian и Gentoo Linux, а сам snap позиционируется в качестве универсального формата пакетов для поставки приложений, не связанных зависимостями с остальными компонентами дистрибутива. В стадии проверки находится реализация snap для CentOS, Elementary, Gentoo, Mint, OpenSUSE, OpenWrt и RHEL.

ResinOS: Контейнер для IoT

За разработку ResinOS отвечает компания Resin.io. Она выпускает коммерческий дистрибутив для IoT, но недавно запустила Open Source-проект ResinOS 2.0, в основе которого лежит Yocto Linux. В отличие от Ubuntu Core, где технология контейнеризации работает внутри пакетов snap, ResinOS использует её на веб-сервере. ResinOS — минималистичная ОС, избавляющая разработчиков от необходимости вникать в код Yocto Linux и достаточно просто разворачивать контейнеры Docker.

Подобно CoreOS, для управления сетевыми службами и службами контроля в ОС Resin используется systemd, что позволяет обеспечить развертывание обновленных приложений в гетерогенной сети. Тем не менее, ResinOS предназначена для запуска на устройствах с ограниченными ресурсами (одноплатные ARM-компьютеры), тогда как CoreOS и другие ОС, ориентированные на работу с контейнерными технологиями, рассчитаны на работу с архитектурой x86 и производительными серверами. К таким ОС можно отнести, например, Project Atomic, являющийся разработкой компании Red Hat. В настоящее время ResinOS совместима с более чем 20 устройствами на Linux, включая Raspberry Pi, BeagleBone и Odroid-C1.

«Мы считаем, что контейнеры Linux для встраиваемых систем даже более важны, чем для облачных. Если для облака контейнеры можно рассматривать как эволюционную технологию, оптимизирующую процессы, то для встраиваемых систем — это революция, которая привнесла в мир встроенных решений виртуализацию», — говорит соучредитель Resin.io Александрос Маринос. Может показаться странным, но мощные корпоративные виртуальные машины в применении к IoT показали себя не лучшим образом: отсутствие прямого доступа к оборудованию влечёт за собой проблемы с производительностью, что не лучшим образом сказывается на работе IoT-приложений. По словам Мариноса, для IoT можно было бы использовать мобильные виртуальные машины наподобие OSGi или Dalvik Android, но их использование подразумевает ряд ограничений, в том числе касающихся Java.

Использование Docker корпоративными разработчиками является неотъемлемой частью написания кода, но программисты, которые пишут софт для одноплатных компьютеров, не спешат это делать. Маринос полагает, что для того, чтобы прочувствовать преимущества контейнеров, требуется время. «ResinOS оптимизирована для работы с IoT и контейнерами. В отличие от других технологий контейнеры лучше справляются с отказами системы: даже если в какой-то из программ обнаружен дефект, веб-серверная ОС продолжит функционировать. Чтобы в полной мере восстановить её работоспособность, вы можете либо перезапустить контейнер, либо обновить приложение без перезагрузки — отказоустойчивость в режиме реального времени снижает риски поломок оборудования и повышает безопасность IoT-систем».

Ещё одно преимущество ResinOS — связь с облаком. Это даёт возможность выстроить единую парадигму взаимодействия данных начиная от оконечных точек и заканчивая ЦОДами, легко переносить технологии, рабочие процессы, инфраструктуры и приложения. При этом не стоит забывать и о других технологиях безопасности, которые имеются в контейнерах. «Сообщество Docker требует подписания образов. Естественно, что эта дополнительная мера защиты имеется в ResinOS. И само собой разумеется, что улучшения ядра Linux для контейнеров — будь-то в части безопасности или в управлении ресурсами — всё это незамедлительно внедряется в ОС», — сказал Маринос.

По его мнению, контейнеры хорошо сочетаются c открытым исходным кодом в рамках IoT. «Контейнеры Linux просты. Их можно использовать наряду с почти бесконечным разнообразием протоколов, приложений, языков и библиотек», — говорит Маринос. Он также добавил, что Resin.io была членом AllSeen Alliance и сотрудничала с партнёрами, которые используют протоколы IoTivity и Thread.

Будущее IoT: «умные» шлюзы и оконечные точки

Незрелость концепции IoT, что, впрочем, характерно для любой быстроразвивающейся технологии, пока что не позволяет очертить рамки её развития, но, по мнению Райса и Мариноса, некоторые наброски сделать можно. Во-первых, на смену оригинальной концепция IoT, которая подразумевает использование MCU для связи оконечных точек и облака для обработки данных, приходит туманная вычислительная архитектура (fog computing architecture). Предполагается, что для обеспечения её работы потребуется создание интеллектуальных шлюзов, возможности которых не будут ограничиваться агрегацией данных и переключением сигналов между ZigBee и Wi-Fi.

Во-вторых, шлюзам и оконечным устройствам, которые, к слову, становятся всё более «умными», в будущем придётся работать с разнородными приложениями. Уже сейчас некоторые «умные» домашние хабы поставляются с встроенными приложениями для решения аналитических задач. В-третьих, огромное количество данных, генерируемое IoT-устройствами. По оценкам экспертов, к 2025 г. в мире будет насчитываться 50 млрд. подключаемых к сети устройств.

Интеллектуальные шлюзы примут на себя часть функций по управлению и обработке данных, то есть то, что раньше выполнялось на облачных серверах. Глава Resin.io полагает, что это даст повышенный толчок для развития контейнеризации — эта технология станет частью рабочих процессов, апдейты безопасности для контейнеров пользователи будут получать через облако. Райс уверен, что платформы типа Ubuntu Core «станут центром притяжения для разработчиков, желающих писать софт для шлюзов». Он считает, что пользователям придётся по вкусу запуск нескольких приложений на одном устройстве, что пока что затруднено из-за налагаемых той или иной ОС ограничений.

Нужно заметить, что не только шлюзы, но и оконечные точки становятся умнее. «У некоторых может создаться впечатление, что все оконечные точки работают на микроконтроллерах. — сказал Маринос. — Мы удивились, какое большое количество оконечных точек работает на Linux: цифровые вывески, беспилотные летательные аппараты, а также промышленное оборудование. Мы называем это „тенью IoT“». Его коллега соглашается, что понятие IoT как минималистской технологии — слишком однобоко и не отражает сути IoT, которая развивается очень быстро и помимо «лёгких» датчиков, таких как датчики температуры или акселерометры, включает всё больший спектр оборудования.

Это, к примеру, т. н. устройства ввода-вывода (input/output device), которые могут как передавать данные на компьютер, так и получать их от компьютера. «Это просто другой вид периферии. Если сенсоры обмениваются незначительными потоками данных, то периферийные устройства — мультимедиа-данными. На поверку такие устройства ничем не отличаются от традиционных IoT-устройств типа датчиков или антенн Bluetooth», — сказал Райс.