Среди крупных технологических компаний давно зреет новый тренд – операционные системы на микроядрах. Последнее время они спускаются из промышленного и военного секторов в консьюмерский. Самыми яркими представителями на сегодня являются Harmony OS от Huawei, Fuchsia OS от Google и внезапно Kaspersky OS от «Лаборатории Касперского». Тренд на них подогревается приближением повсеместного IoT и вытекающим из этого растущим запросом на информационную безопасность. О том, как маленькие «оси» способны увеличить безопасность, при чём тут IoT и, в конце концов, что такое микроядро, предлагаю поговорить. С меня, надеюсь, доступное объяснение ситуации, с вас – доводы за и против.
IoT – новый поворот
В случае с IoT ОС на микроядрах полезны тем, что они очень гибкие и относительно лёгкие, что позволяет их запускать на очень многих гаджетах вне зависимости от их форм-фактора. Таким образом, в мире, где IoT повсеместен, микроядерные операционки выступают общим интерфейсом для взаимодействия как со смартфоном, так и с автомобилем, телевизором, роботом-пылесосом, счётчиком электричества, датчиком движения и так далее.
Взаимопроникновение всего и вся в мире с IoT хорошо иллюстрирует знакомая вам кольцевая схема «1+8+N», с помощью которой Huawei и Honor на презентациях часто объясняют суть своей экосистемы. В центре неё – смартфон, в первом внешнем круге – гаджеты, которые мы часто используем в связке со смартфоном, а дальше – бесконечное множество сценариев использования этих и других устройств, объединённых различными сервисами.
С безопасностью тоже всё довольно просто. В мире информационной безопасности (ИБ) есть понятная аксиома: чем шире сеть пользовательских устройств, тем больше ландшафт угрозы. Если объяснять очень утрированно, то в сети с гаджетами от мала до велика взлом даже самого простого устройства потенциально компрометирует все остальные компоненты. В ОС с монолитными ядрами вроде Android, iOS и Windows нет абсолютной изоляции между различными её компонентами, которую обеспечивает микроядро. Люди знающие, конечно, возразят про «песочницы» и гипервизоры. Но эти же знающие люди согласятся, что и то, и другое – это костыли для инвалида, а не структура, построенная в первую очередь с оглядкой на безопасность.
Ядерная программа
Ядро – это множество строк кода, которые являются основным компонентом операционной системы и управляют её ресурсами. Ядро – это светофор на перекрёстке между аппаратной частью устройства (ЦПУ, память и подключенные девайсы) и пользовательскими программами или приложениями. Ядро определяет, когда и какие приложения могут обратиться к тому или иному аппаратному компоненту.
Особенностью монолитного ядра является то, что метафизический перекрёсток соединяет с аппаратными компонентами практически все пользовательские и системные программы. Как обязательные для работы ОС, так и необязательные. С точки зрения информационной безопасности – это плохо. Потому что нарушение изоляции на одной дороге перекрёстка позволяет программе «ездить» по всем остальным и получать из них информацию.
Собственно, хакерский «взлом» зачастую и подразумевает поиск места, где может быть нарушена целостность одной дороги. Программа, которая автоматизирует использование этого места, называется эксплоитом. Да простят мне IT-шники эти примитивные аналогии.
А теперь представьте, что из-за множества системных и пользовательских программ ядро превращается в суперперекрёсток из миллионов дорог. Каждую из них безопасникам нужно регулярно прочёсывать, чтобы исправлять слабые места. При всём желании что-то починить раньше, чем это что-то будет обнаружено злоумышленником, не удаётся.
А теперь представьте, что запускается пресловутый IoT и дорог становится не миллионы, а миллиарды. Вместе с ними становится и больше уязвимостей.
Как раз в этот момент самым практичным решением оказывается микроядро. «Микро» оно потому, что объединяет десятки дорог, а не миллионы. Разработчики микроядер умышленно оставляют в этом метафизическом пространстве только минимум дорог, системные функции, необходимые для поддержания работоспособности ОС. Пользовательские программы и функции в это пространство не допускаются. Таким образом, нарушение целостности пользовательской программы никак не повлияет на процессы в ядре.
Вместе с тем в микроядре остаются десятки или сотни тысяч строк, а не десятки и сотни миллионов, как в монолитном. Например, на конец 2020 года в Linux было порядка 40 миллионов строк кода. Так радикально сокращается ландшафт угроз. А то, что остаётся, безопасниками регулярно мониторится чуть ли не вручную.
Кто во что горазд
Стоит отметить, что вопрос безопасности сейчас стоит остро не только в компаниях Google и Huawei, которые разрабатывают собственные микроядерные ОС. Да и потом, разработать ОС – полбеды. Нужно заменить ею Android и iOS. Возможно ли это?
Некоторые разработчики уверены в том, что рано или поздно микроядерные ОС выйдут на передний план. Но при этом они осторожно предполагают, что случится это не раньше, чем в следующем десятилетии.
Во многом потому, что Android, iOS и Windows – это огромные рынки, лишаться которых ни Google, ни Apple, ни Microsoft не хотят. При этом все эти корпорации осознают важность информационной безопасности и растущие риски. Поэтому они пытаются отсрочить закат своих актуальных продуктов различными костылями, которых сейчас в подавляющем большинстве случаев хватает.
Например, Microsoft влепила в Windows гипервизор Hyper-V, изолированный доверенный контур в ядре, в котором выполняются критически важные операции и куда не допускаются все остальные. Для пущей надёжности корпорация планирует дополнять продукцию партнёров чипом безопасности Pluton, который, как я понимаю, и будет обслуживать Hyper-V. Чип безопасности нужен для того, чтобы доверенный контур был изолирован не только программно, но и физически. То есть обработка всех критически важных процессов будет вынесена не просто в гипервизор, но ещё и на отдельный процессор.
Занятный факт: чип Pluton, кстати, изначально был реализован в предпоследней серии Xbox. Во многом именно благодаря ему серию консолей One до сих пор толком не взломали.
Apple тоже не отстаёт. Корпорация разработала чип безопасности T2, на котором работает специальная Bridge OS (вероятнее всего, тоже построена на микроядре). Оба компонента служат в первую очередь для хранения и обработки биометрии. Что, в общем-то, понятно. Ведь, в отличие от пароля, биометрию не сменишь. Потеряв её раз, будешь уязвим всю жизнь.
Аналогичная разработка есть и у Samsung. Доверенный контур Knox служит для тех же целей: хранения и обработки суперчувствительной информации вроде биометрии. С недавних пор (а именно с выпуска Galaxy S20) Knox работает в связке с чипом безопасности Secure Element S3K250AF.
Google помимо Fuchsia тоже делает чипы безопасности – Titan. Самый новый из них, Titan M2, как вы знаете, будет реализован в рамках фирменного гугловского SoC Tensor в Google Pixel 6.
Резюмируя, хочется отметить, что тема безопасности в последние годы быстро набирает обороты. Заметить это можно хотя бы потому, что скучные рассказы про растущую надёжность смартфонов давно стали обязательной частью презентации всех ключевых игроков на рынке. При этом микроядерные ОС едва ли станут революцией, которую мы проспим. Скорее – плановой эволюцией, к которой готовятся все IT-гиганты. Результаты этой подготовки мы, вероятнее всего, увидим скоро: как только 5G и IoT перестанут казаться чем-то далёким и неосязаемым, а станут чем-то осязаемым для каждого.
Спасибо. Было интересно)
Монолитное ядро только у Linux и Android (просто потому что второй основан на первом). Что у Windows, что у iOS/MacOS используется промежуточный вариант между микро и монолитным — гибридное. Микроядро кстати тоже не предел — уже есть ещё более мелкие наноядро (и пикоядро тоже). Впрочем это лишь верхушка айсберга — помимо основной ОС в материнках интел живёт ещё одна, называется Minix (и ей глубоко по барабану что стоит сверху — windows, unix, linux или даже dos — она работает независимо от них. Подсистема называется Intel ME. У той же MacOS (да и iOS тоже, как производной) в основе тоже имеется более мелкая система с микроядром — Darwin. Ещё можно вспомнить чипы WiFi/BT которые управляются чем то вроде ОС реального времени (реально мелкая — весит килобайты) И она тоже прекрасно ломается. И мобилки, где симка это тоже целый компьютер — правильно, со своей OS, написанной на java (что для меня было новостью — думал это просто условное хранилище типа флэш карточки). И все эти ОС наслаиваются друг на друга, увеличивая количество точек отказа (и соответственно возможности для взлома). Прибавляем сюда желание связать все в единую глобальную сеть и получаем нынешнюю реальность; в которой ломается практически всё, что представляет достаточный финансовый интерес для хакеров. А будущее имхо за системами с парадигмой, отличной от юниксовского "всё есть файл" (такие есть уже сейчас, хоть их и не так много) — например за системами типа "всё есть объект" (IBM i, или что то наподобие Фантом ОС).
Если коротко то драйверы устройств, стеки протоколов, файловые системы и т.п. выкидывают из ядра на мороз в пользовательское пространство. Кстати что там слышно про Фучсию, китайцы то Гармонь уже в массы пустили.
Вот только зачем нам этот тренд на безопасность, если сами корпорации-производители харда и софта активно внедряют в свои продукты "следилки"? Если государства также стремятся поглубже залезть к пользователю в Z-ницу? То есть, взломщики могут взломать, а могут и не взломать, особенно конченных пользователей, особенно учитывая, что атаки на них теперь, в основном, производятся при помощи социальной инженерии, но при этом ты в любом случае будешь "под колпаком". Я думаю, это того не стоит. XP rulez, J2ME forever!
Для "все есть объект" файл тоже должен быть объектом. Интересно, есть ли такие файловые системы?
Микроядро — это надёжность в ущерб производительности. Эту проблему пытаются решить последние лет сорок. Всё это время микроядро является «будущим» операционных систем и будет им оставаться ещё длительное время.
К вопросам безопасности. А почему сейчас не делают как раньше: образ системы с необходимым софтом, который восстанавливается при перезагрузке? И что бы ты не делал, у тебя всегда чистенькая ОС без личных данных и тп.
При нормальной изоляции данных от "кода", образ не нужен. Для Андроида натыкался на такую модификацию. Вроде была связка из модифицированного загрузчика и скрипта/плагина для TWRP.
Ну дык, без этого никак)
Ну дык надо же чем-то последние драгоны/бионики занять. А то пишут, что флагманские процы избыточны, что средненького на все хватает с запасом. Вот и будет чем обосновать флагманы
Господи ну что за высер я здесь прочитал? Это не выглядит как статья заслуживающая внимания. Ни плюсов ни минусов я тут не встретил. Одно только любование и сравнение.
Так-то ядро windows не монолитное, а гибридное. С сильным смещением в сторону микроядра. И такое оно еще со времен первого релиза windows nt, я бог знает почему автор решил что оно монолит.
Формально да, в реале основные подсистемы — видео, сеть, диск — в ядре. А остальное… всё верно, любые крайности вредны, разумная середина — рулез.
Есть куча уровней представления информации. ФС может быть и на прикладном, и на логическом, на физическом. На каком из них долж
Поправочка, Darwin — не микроядро, это как раз уже готовая OS, на основе которой Apple построила уже свои системы. На ней же построена FreeBSD. Сам Darwin сделан на основе микроядра mach. Т.е. по факту Mac oS, iOS, watchOS — системы на микроядре.На freebsd работает более половины web серверов, все у нее хорошо с производительностью. Линус ошибся, сделав ядро линукса монолитным. Google пытается это исправить. Windows медленно но верно идет в могилу, ему уже ничего не поможет. Микрософту команда dec ( Написавшая digital unix для Aplha) сделала прекрасную систему на микроядре (Windows NT до 3.0 включительно) с прекрасной фаловой системой NTFS. Сама микрософт, конечно, не смола бы такое. Но они уже все испоганили начиная с NT 4.0, засунув туда графический стек, и понеслась. Сейчас уже там нужно все с нуля переписывать, что для Windows значит конец. Ну ему и так и так конец.
В Кемерове и Новосибирске это не «файл», а «мультифора» ))
Сложнее продумать архитектуру. Наращивать же на костяк мясо, подскажите, где искать сложность?