Современная электроника №2/2019
СОВРЕМЕННЫЕ ТЕХНОЛОГИИ 22 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2019 Простота и надёжность встраиваемых систем В статье обсуждаются достоинства и недостатки архитектур современных операционных систем с точки зрения надёжности. Рассмотрен подход с использованием виртуализации, а также микроядерная архитектура и её модификации. Роман Филиппов (filippov.r@prosoft.ru) При современном широком распро- странении встроенных систем в про- мышленной автоматизации и транспор- те значение надёжности и безопасности этих систем трудно переоценить. Необ- ходимо учитывать также тот факт, что многие из этих устройств управляются дистанционно, а значит, их отказымогут быть спровоцированыне только случай- ностьюили недостаточным тестирова- нием, но также и намеренными действи- ями злоумышленников и вредоносного программного обеспечения (ПО). Встроенное ПО, реализующее основ- ные функции устройства, может быть достаточно компактным и тщательно протестированным, но помимо него устройство обычно содержит также большое количество инфраструктурно- гокода, от котороготакже зависитнадёж- ность устройства вцелом. Вкачествепри- меров таких инфраструктурных компо- нентовможнопривестиразличные стеки коммуникационныхпротоколов, файло- вые системыитомуподобное. Из-за слож- ностиибольшихобъёмов кода, содержа- щихся в современных операционных системах (ОС), разработчик встроенно- го ПО нередко использует ОС и прочие программные компонентыкак «чёрный ящик», что может привести к ситуации, когда сделанныеприразработке допуще- ния оказываются неверными. Главный тезис данной статьи заклю- чается в том, что средством обеспече- ния надёжности и безопасности встро- енных систем является их простота и детальное понимание разработчиком всех аспектов работы системы. Это позволяет предвидеть многие векто- ры атак и заранее предпринять меры, затрудняющие использование уязвимо- стей. Кроме того, простую и понятную систему проще тестировать, модифи- цировать и поддерживать. Если обратиться к истории, то имен- но борьба со сложностью является основной движущей силой програм- мирования как инженерной дисци- плины. Стремление добиться просто- ты во многом привело к созданию ОС UNIX, которая изначально появилась как попытка избавиться от чрезмер- ной сложности системыMultics. Изна- чально UNIX была простой в освоении системой, но сегодняшние реализации UNIX-подобных ОС уже не могут похва- статься простотой своего прародителя. П РОБЛЕМА РАЗВИТИЯ ОС Наиболее широко используемой ОС во встроенных системах (если не рас- сматривать микроконтроллеры) явля- ются различные варианты Linux – как с RT-расширениями, так и без них. Linux является достаточно зрелойОС, которая разрабатывается уже более двух десяти- летий. Однако, несмотря на долгое раз- витие и стабильность проекта, в ней до сих пор находят уязвимости [1]. Пара- доксально, но главной проблемой явля- ется именно развитие проекта. По мере развития в ОС добавляется много нового кода, содержащего новые ошибки. Эти ошибки исправляются, но к этому вре- мени добавляется уже новыйфункцио- нал и так далее. Эти два состязающих- ся между собой процесса: исправления ошибок и внесения новых, могут прин- ципиально не сходиться к надёжной системе. В среднем, количество оши- бок и связанных с ними уязвимостей плавно возрастает от версии к версии. Дополнительной проблемой явля- ется большой объём кода и необходи- мость использования в виде «чёрно- го ящика» не только самого ядра, но также и всех драйверов. Полностью разобраться в исходных текстах ядра довольно затруднительно из-за высо- кой степени асинхронности его кода и сложной синхронизации. Встроенные системыне всегда имеют доступкИнтернету, поэтомуобновления не всегдамогут быть установленывовре- мя, даже в томслучае, есливновойверсии ядраошибкибылиисправлены. К томуже и сам переход на новую версию ядра зачастую требует дополнительных уси- лий от разработчиков встроенного ПО. Фактически, это приводит к тому, что если не используется самая актуальная версия ядра в любой момент времени, то система является потенциально уязви- мой для внешней эксплуатации, так как ошибки публикуются в централизован- ной базе данных CVE. Эксплуатация про- исходит практически пошаблону: опре- делить версию используемой ОС; най- ти подходящие уязвимости этой версии в базе CVE; разработать или даже взять готовый эксплоит. Всё это даёт основа- ния заключить, что монолитные систе- мы, такие как Linux, несмотря на все свои достоинства, всё-таки разрабаты- вались не для этого и плохо подходят для ответственных встроенных систем. В ИРТУАЛИЗАЦИЯ Большинство используемых сегод- ня ОС начали разрабатываться в конце прошлого века, поэтому их архитектура во многом продиктована соображени- ями эффективности в ущерб надёжно- сти. В частности, Linux имеет монолит- нуюархитектуру ядра, в томчисле пото- му, что с другой архитектурой было бы сложно добиться приемлемого уров- ня производительности на аппарату- ре начала 90-х годов. Сегодня, когда проблема надёжности и безопасности может быть важнее производительности, однимиз вариантов решения проблемы унаследованного кода является исполь- зование виртуализациии гипервизоров. Технологии аппаратной виртуали- зации позволяют запускать несколько экземпляров ОС на одномфизическом процессоре, что позволяет рассматри- вать ОС вместе со всеми её приложе- ниями в виде одного большого «при- ложения», управляемого гипервизо- ром, который можно рассматривать как «ядро». Если приложение с особыми требованиями к надёжности и потен- циально ненадёжная ОС, содержащая инфраструктурные компоненты, реа- лизованы в виде отдельных виртуаль- ных машин, то гипервизор обеспечива- ет их надёжную изоляцию друг от друга. Данное решение в большинстве случа- ев вполне приемлемо, но нельзя не отме- тить следующие недостатки: повышение сложности из-за дополнительных слоёв ПО, в которых также могут содержаться ошибки; необходимость использования довольно продвинутых и дорогих про-
RkJQdWJsaXNoZXIy MTQ4NjUy