Эволюция идеи
Изначальная идея была проста до банальности: что если попробовать изменить правила игры? Информационная безопасность всегда оперировала ответами на угрозы. Появляется угроза — разрабатываем контрмеры. Это всегда игра от обороны, заведомо невыгодная позиция. Нельзя ли поменять условия, разработать некий слой безопасности, в котором правила диктовали бы мы: изначально разрешали бы приложениям делать только то, для чего они предназначены, и ничего сверх того?
Первое время речь даже не шла о самостоятельной системе — предполагалось взять какой-нибудь из дистрибутивов Linux и докрутить его под наши задачи. Но в процессе разработки стало очевидно, что это просто невозможно. Если мы будем строить слой безопасности поверх уже существующей ОС, то в любом случае останутся лазейки, через которые можно атаковать приложения.
В результате мы пришли к необходимости написания собственного ядра, на которое приложения могли бы опираться как на доверенную базу.
Тут надо сказать, что у нас не было желания изобретать велосипед. Мы далеко не первые задумались о создании доверенной среды: существует множество уже продуманных и обкатанных подходов к ее созданию. Однако мы взяли на себя смелость объединить несколько известных подходов и добавить немного своего, уникального. Наша команда тщательно изучила существующие наработки и проанализировала те из них, которые наиболее подходили для реализации наших задач. Например, один из известных архитектурных принципов Multiple Independent Levels of Security (MILS): в нем, в частности, заложено разделение среды на домены безопасности.
Так постепенно выкристаллизовалась современная архитектура системы: разделить среду на некие изолированные области, в каждой из которых исполняется определенный компонент системы, связать их между собой детализированными интерфейсами и жестко контролировать эти интерфейсы. Упрощенно говоря — все процессы запускаются в своеобразных песочницах или, если вам угодно, в контейнерах, а мы контролируем связи между ними.
Интересно, что в какой-то момент ключевой компонент системы получил собственную жизнь: мы увидели, что инструмент, который должен был контролировать те самые взаимодействия между доменами безопасности, можно применять не только в нашей ОС. А по большому счету не только в ОС в принципе! В результате в марте 2015 года мы выпустили платформу Kaspersky Security System (KSS) в качестве встраиваемого OEM-компонента для разработчиков комплексных решений.
Ведь сетевую инфраструктуру тоже можно рассматривать как набор доменов безопасности, взаимодействия между которыми необходимо контролировать. Или, например, можно присмотреться к процессору: в каждом из них может быть 30–40 IP-ядер (IP-блоков), каждое из которых предоставляет какой-то сервис для других компонентов внутри процессора. И эти блоки тоже взаимодействуют друг с другом, с операционной системой и приложениями, а это значит, что для создания доверенной среды их взаимодействия тоже необходимо контролировать. И для этих задач может использоваться все тот же наш KSS! Впрочем, тут я немного забегаю вперед — пока это лишь исследования, а не коммерческий продукт. Но подход приобретает все более четкие очертания!
В результате была проделана колоссальная работа, в 2006 году мы получили первый патент на технологию, используемую в ОС, а сейчас наша команда имеет уже 90 патентов. По большому счету то, что получилось в финале, приобрело новые черты и не похоже на то, как это виделось нам в начале пути.
Залог успеха разработки — предвидение проблем будущего
Пожалуй, самое сложное было доказать жизнеспособность нашей идеи. Повторюсь, в нее верили далеко не все даже внутри «Лаборатории». Наверное, эта проблема актуальна для всех новых разработок: есть некая идея, в которую верит небольшая группа единомышленников. Чтобы добиться реальных результатов, нужно предпринять максимум усилий, чтобы идея стала понятна для широкого круга людей. С этим было сложно, потому что 20 лет назад мало кто видел, насколько это все будет нужно сегодня.
Концепция вроде бы была на виду — предоставить доверенную среду для исполнения приложений, чтобы конечный пользователь мог доверять системе в целом. Но ценность такой среды была достаточно призрачной. Это сейчас доверие требуется в широком диапазоне решений и разработок. А тогда для того, чтобы начать работать над системой и доказать перспективность этой работы, надо было обладать чутьем. Для разработки любого прорывного продукта требуется время, а это значит, что он может родиться только в тот момент, когда его значимость очевидна далеко не всем. В противном случае — вы опоздали. Тут уже не над идеей надо размышлять, а конкурировать с другими продуктами.
И вот сейчас, когда информационные технологии можно встретить практически во всех сферах человеческой жизни, начиная с умных бытовых приборов и заканчивая инфраструктурами индустриальных гигантов, значимость безопасности и потребности в доверенной основе для любых применений технологий стала очевидной. Может быть, в промышленности — несколько в большей мере, но в ближайшем времени это станет очевидно и домашним пользователям.
Эволюция команды
Интересно посмотреть и на то, как развивалась команда разработки системы. Начиналось все с узкого кружка единомышленников, которые обсуждали теоретическую возможность разработки. В первое время никто не посвящал этому все рабочее время — в свободные минуты мы что-то прикидывали, размышляли, набрасывали схемы.
Когда стало очевидно, что системе — быть, появилась необходимость в людях, у которых разработка ОС была бы прописана в должностных обязанностях. Но в компании не было спецов, которые имели бы опыт такой разработки. Хотя, конечно, люди с опытом низкоуровневого программирования были — все-таки в защитных решениях без этого никак: невозможно создать инструмент для перехвата системных событий без написания драйверов. Впрочем, основные сложности представляло собой не написание драйверов, а создание ядра системы, которое бы задавало правила работы для этих самых драйверов. И вот именно таких экспертов пришлось искать. Но по факту основная сложность заключалась даже не в самом поиске, а в формировании команды, члены которой, с одной стороны, имели бы нужный нам опыт, а с другой — разделяли наши идеи и устремления.
Так постепенно нашли сначала одного человека, имевшего практический опыт разработки ОС. Это был Павел Дякин, впоследствии возглавивший отдел разработки безопасной платформы. Вместе с ним мы разработали новые подходы, методологию. Потом сформировали группу. И так шаг за шагом. Требовались специалисты по абсолютно разным языкам. Для написания микроядра нужны спецы по си и ассемблеру, для приложений — по C++ или, например, Perl и PHP. Мы используем и Haskell. В процессе работы родились и собственные языки — например, язык описания политик и язык описания компонентов. В рамках этого проекта мы взяли и первого в «Лаборатории» «чистого» математика — Стаса Моисеева.
Со временем команда трансформировалась. Дело в том, что разработка новых идей требует от человека навыков исследователя. Но когда продукт обретает зрелость, выходит на рынок, от команды требуется другое: предсказуемость результата и способность поддерживать и дорабатывать существующее решение. Впрочем, и исследователи без дела не сидят — специалисты из департамента Future Technologies продолжают трудиться над развитием продукта.
А в целом команда, занимающаяся KasperskyOS, разрослась до более чем трехсот человек — там не только отдельные группы разработчиков ядра, драйверов, приложений и сервисов, но и руководители проектов, люди, ответственные за взаимодействие с партнерами, менеджеры и так далее.
Дальнейшее развитие
Сейчас над проектом работает множество разных групп, и у каждой есть свое видение развития. И это прямо праздник какой-то! Разработанная базовая идея позволяет найти KasperskyOS кучу применений, развивать одновременно несколько направлений.
Например, есть идея развития концепции кибериммунитета, которая еще больше приблизит нас к оригинальному природному понятию иммунитета, то есть способности живых организмов не просто противостоять внешним угрозам, но и реагировать и изменяться в зависимости от окружающей среды. Мы пробуем заложить похожие алгоритмы и в нашу OS. Чтобы, в случае если один из доменов безопасности переставал работать корректно, согласно разработанным для него правилам, система могла проанализировать причину и адекватно прореагировать на изменившуюся ситуацию. Если нам удастся реализовать такие механизмы в KasperskyOS, то информационные системы, построенные на ее базе, приобретут принципиально новые качества.
Плюс у нас есть много нереализованных в силу разных причин идей (хотя они до сих пор кажутся нам небезынтересными). Мне, например, очень нравится идея использования KasperskyOS в высокопроизводительных сетевых устройствах. Их архитектура такова, что все их высокопроизводительные операции происходят на достаточно несложном, но зато очень быстром железе. И для них, по сути, операционная система и не нужна. Но внутри того же устройства работает полноценный компьютер с системой, которая нужна только для конфигурирования, логирования, вспомогательных операций. И основные требования по информационной безопасности предъявляются именно к этой системе. То есть мы имеем своеобразный симбиоз — специализированный процессор, который выполняет какую-то работу в интересах определенного индустриального направления, а рядом информационный или конфигурационный чип, который служит для связи с внешним миром. И я уверен, что использование KasperskyOS для работы вот такой коммуникационной части — крайне перспективно.
Но сейчас наш приоритет в том, чтобы донести до разработчиков, до сообщества программистов понимание того, что если им необходимо реализовывать функции безопасности, то на базе KasperskyOS это можно делать дешевле и надежнее, чем на других операционных системах. Платформа подходит для создания бизнес-приложений и информационных систем самой разной направленности: разработок для видеоконференций, систем документооборота, индустриальных систем для обеспечения безопасности технологических линий и других. И мы готовы взаимодействовать с партнерами, которые могли бы достигать своих собственных целей благодаря нашим технологиям: помогать, обучать, реализовывать какие-то компоненты своими силами или совместно.
Комментарии (32)
MrCleaner
11.11.2022 13:09+4Насколько я понимаю, основная проблема микроядерных ОС в том, что с ростом количества компонент сложность их без проблемного взаимодействия, как единого целого, растёт в геометрической прогрессии. На этом ещё GNU/Hurd споткнулись.
Как вы решаете данную проблему?mikhanoid
12.11.2022 17:17Hurd весьма громоздкое устаревшое микроядро. Я не знаю, как это у Касперского решено, но есть классические решения в Нейтрино (микроядро QNX) и в L4. Основная идея в том, чтобы сделать быстрые легковесные канады для IPC через домены общей памяти.
checkpoint
14.11.2022 00:59
4spirit Автор
13.11.2022 23:26Если делать систему общего назначения, да, так и есть. Количество компонентов растет, однако а каждом конкретном случае используется конкретный набор. Если из платформы и набора компонентов делать специализированные решения, такой проблемы нет. Стараемся в эту сторону идти
manyakRus
11.11.2022 13:39-10Ничего не понял. Понял только что оно не подходит ни для ПК, ни для сервера, ни для Смартфона. Подходит только для мелких устройств типа "интернет-вещей". В общем никому не нужно :-)
4spirit Автор
13.11.2022 23:28мелких устройств типа "интернет-вещей" уже сейчас в сотни раз больше, чем смартфонов, серверов и ПК вместе взятых. Не согласен, что никому не нужно
titbit
11.11.2022 14:03+5Система заточенная на безопасность с закрытыми исходниками? Хм...
4spirit Автор
13.11.2022 23:30открываем постепенно. планы большие. Кстати, открытые исходники совсем не означают безопасное ПО
checkpoint
14.11.2022 00:55Совершенно верно, открытый исходный код это необходимое, но не достаточное условие безопасности ОС.
zueve
11.11.2022 14:03+1Я, простите, не понял в чем тут ноу-хау. Контроль доступа? Но, я так понимаю, все, даже настольные ОС, к этому идут. Но и все понимают, что это не панацея и никак не меняет правила игры, а только усложняет проведение атак, разве нет?
BeLord
11.11.2022 17:24+1Мое видение, не претендую на истину. Система сделана с нуля, за счет этого не тащит за собой совместимость с динозаврами, что уже плюс. Производитель находится в РФ, что для определённой сферы применения дает свои плюсы. Система новая, следовательно, потенциально могла учесть опыт старых систем.
checkpoint
12.11.2022 01:42-1Весь миллиард библиотек они переписали с нуля в одинокого или все таки затащили их в свою ОС как есть ?
Судя по тому, что автор упоминает слова "доверенный контур", то могу предположить, что эта ОС представляет собой гипервизор в котором запускаются классические ОС, а гипервизор сидит и бдит за тем, что бы эти ОС не сделали чего лишнего. Но автор поленился предоставить какую либо техническую информацию на сей счет, зато не поленился упомянуть про 90 патентов.
4spirit Автор
13.11.2022 23:36это не гипервизор. изоляция доменов безопасности. за ними бдит ядро вместе с движком политик
checkpoint
14.11.2022 00:50Тогда начнем с начала: это POSIX совместимая ОС ? Где документация на ABI и перечень системных вызовов ?
4spirit Автор
13.11.2022 23:33+1ноу-хау в том, что доверие зависит от малой доли компонентов = дешевле доказать
0xd34df00d
11.11.2022 17:27+4Было бы крайне любопытно подробнее узнать, для чего вы используете хаскель.
victor_1212
11.11.2022 23:25> а рядом информационный или конфигурационный чип, который служит для связи с внешним миром. И я уверен, что использование KasperskyOS для работы вот такой коммуникационной части — крайне перспективно
это интересный момент, но могут быть вопросы, например назовем "fast path" через NPU и "slow path" через то что Вы называете "конфигурационный чип", конечно функциональность "slow path" это не только management типа cli, http, snmp и пр. но и поддержка сетевых протоколов типа BGP, IS-IS и тд., если используется linux, то его protocol implementations достаточно известны (+код доступен) , что существует на данный момент в составе KasperskyOS из сетевых протоколов (желательно номера rfc) ?
4spirit Автор
13.11.2022 23:39проект заморожен, ждет интересанта. хотя идея, конечно перспективная
victor_1212
14.11.2022 01:47спасибо понятно, посмотрел вашу документацию, достаточно интересно, тематика знакома
checkpoint
12.11.2022 01:35Где можно посмотреть на исходные коды операционной системы KasperskyOS ? Хочу изучить и понять, действительно у вас все так красиво как Вы пишите или это все из области "security because of obscurity" ?
Ну и традиционный вопрос - что делать с наследием.
4spirit Автор
13.11.2022 23:55Хочу изучить и понять
Вот это тема!
Приходите к нам на портал разработчикачто делать с наследием
известно что, портировать
checkpoint
14.11.2022 00:38-1Приходите к нам на портал разработчика
Зашел, попытался скачать, но перед этим решил заглянуть в EULA и тут же наткнулся на: 4.1. Вы не вправе декомпилировать, дизассемблировать, модифицировать ПО целиком или частично...
Моя цель как раз и состоит в том, что бы декомпилировать и дезассемблировать, или иным способом получить исходный код ядра операционной системы с целью изучения и выявления потенциальных уязвимостей, сравнить действительное расположение дел с хвалебными обещаниями. Без выполнения общественностью аудита ваша ОС будет рассматриваться как троян. Удачи!
dyadyaSerezha
12.11.2022 17:38-1Непонятно, совместима ли эта ОС с Linux, а если да, то на каком уровне. Если это вещь в себе, то кто же будет писать под нее прикладные программы? Ну и конечно же....
как достаточно абстрактная концепция воплощается в реальность в доверенном маршрутизируемом коммутаторе,
Автоматически возникает вопрос - доверенном кому? ФСБ?
4spirit Автор
14.11.2022 00:01а кому нужно было? ЦРУ? АНБ?
правильный ответ: доверенный тому, кто будет использовать
checkpoint
14.11.2022 00:44Чтобы вызвать у пользователя доверие к ОС необходимо две вещи: 1) опубликовать исходный код ОС, 2) провести независимый анонимный аудит исходного кода обещственностью. Соответственно, до тех пор пока эти условия не выполненны, данное изделие не можеть быть рассмотрено как "доверенная ОС" для конечного пользователя и с большой вероятностью может содержать бэкдоры доступные разработчику и аффилированных с ним лицам, позволяющие вести контроль за деятельностью пользователя.
victor_1212
14.11.2022 01:56+1> опубликовать исходный код ОС
к примеру, Вы исходный код NT видели? :)
> провести независимый анонимный аудит исходного кода обещственностью
общественность разная бывает, и не всегда по правилам играет, с вытекающими последствиями для безопасности, как Вы этот аспект видите?
4spirit Автор
14.11.2022 10:50что вызвать у пользователя доверие нужно доказать ему или лицам, которым он доверяет, что те факторы, которые он считает важными надежно реализуются. кому-то нужно код посмотреть, а кому-то модель угроз и как реализуются меры нейтрализации. кому-то просто сертификат нужен и достаточно. мир велик и многообразен.
код мы тоже открывать собираемся, постепенно.
а в ML приложениях, для нейросети тоже код будете спрашивать? или 20 млн сэмплов, на которых она обучалась?
винда, макос, андроид и пр доказано, что ведут контроль за действиями пользователя. и содержат уязвимости с помощью которых... и что?
dyadyaSerezha
14.11.2022 04:09ЦРУ или АНБ хотя бы не посадят за дискредитацию армии, фейки, призывы и прочее - вы знаете лучше меня. Так что уж лучше им.
BeLord
Кейсы нужны, понятные и простые.
Пример кейса - есть админ он аднимит Систему Х, заказчик, которого он обслуживает гос. компания, Система находится в облаке. Админу нужен удаленный доступ и как следствие возникают вопросы обеспечения безопасности доступа, аттестации АРМ админа и т.п.
Что можно предложить, коробку на базе однокристальной системы, на которой стоит KasperskyOS и которой прилагается готовый комплект документации по обеспечению мероприятий по обеспечению мер безопасности для доступа к системе по такому классу защищенности.
Что это дает админу - купил коробку, подключил к монитору, работай. Документация в соответствующие инстанции из коробки.
Что это дает бизнесу - оптимизацию времени и выполнение требований по ИБ из коробки для систем такого-то класса защищенности.
Что это дает вам - ассортимент коробочной продукции, ставь на поток и продавай.