Перейти к основному содержанию
Прямой эфир
Озвучить текст
Выделить главное
вкл
выкл

Очень часто я слышу призывы к созданию отечественной операционной системы без привлечения open source — программного обеспечения с открытым исходным кодом, доступным для просмотра программистами со всего мира. Многие уверены, что только так мы сможем создать надежную систему без «закладок» — специально внедренных уязвимостей, которые часто замаскированы под ошибки и позволяют захватывать управление, а также похищать данные.

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

Основная проблема кибербезопасности в наши дни — именно случайные ошибки в программном обеспечении. Это неотъемлемая часть любых систем, которые нас окружают. Даже у самого лучшего и надежного программиста в коде всё равно остаются уязвимости, которые потенциально можно эксплуатировать. Неважно, пишете ли вы программу в закрытой команде или используете open source — ошибки всё равно будут! И это касается любого языка программирования. Однако в случае использования компонентов промышленного открытого кода есть шанс своевременно отловить эти ошибки, не дожидаясь, пока их использует в преступных целях какой-нибудь злоумышленник.

Создание с нуля имеет смысл для небольших операционных систем на несколько тысяч строк кода. Их можно формально верифицировать. Но масштабная универсальная операционная система — это десятки и сотни миллионов строк. Просмотреть такой код глазами команды или проверить его только собственным тестированием практически невозможно. Поэтому на данный момент для создания большой системы с нуля оптимально использовать open source.

Есть и еще один очень важный момент, о котором редко говорят. Даже если в исходном коде в каком-то месте не было ошибки, во время компиляции она может появиться! И не потому, что ее внедрили специально. Просто так устроена оптимизация в системах программирования. Поэтому нужен целый ряд инструментов, которые позволяют во время разработки находить «подозрительные места» в коде, а также предотвращают эксплуатацию ошибок во время выполнения. Если представители самых разных стран и компаний проверят код с помощью различных технологий анализа и поиска уязвимостей, высока вероятность, что ошибка (или кем-то внедренная закладка!) будет обнаружена. А работа в закрытой команде, изоляция от мирового сообщества разработчиков и излишняя секретность здесь не помогут.

Даже закрытые операционные системы самых передовых IT-корпораций с многолетней историей постоянно проходят проверку на уязвимости. Существует огромное количество так называемых «баунти-программ» по раздаче вознаграждений за обнаруженные ошибки. Например, в 2016 году Apple объявила о вознаграждении до $200 тыс. разработчикам, которые найдут уязвимости в ее продуктах. Обширная баунти-программа существует и у Microsoft.

Если в России решат с нуля создать операционную систему закрытого типа, то на этапе разработки и собственного тестирования многие ошибки могут просто остаться ненайденными, а когда система поступит в эксплуатацию, кто-то намеренно их найдет и тайно начнет использовать. Традиционные методы защиты по периметру, антивирусы и тому подобные средства эти проблемы не решат. А уж если речь об интернете вещей, то там такую защиту вообще нельзя использовать в силу ограниченности ресурсов и резкого увеличения стоимости устройств.

Конечно, open source — не панацея. Иногда действительно нужны закрытые системы—– например, для каких-то нужд государственного управления. Однако даже их можно и нужно создавать на основе открытых компонентов.

В любом случае, главное сейчас — развивать технологии, которые своевременно выявляют ошибки либо затрудняют и ограничивают их эксплуатацию. Именно это значительно повышает уровень безопасности. Такие технологии уже есть, и в основном они американские. Однако у нас работы по их созданию тоже ведутся. Например, в нашем Институте системного программирования им. В.П. Иванникова РАН создана технология, которая запутывает код на стадии использования, что препятствует злоумышленникам в поиске и эксплуатации уязвимостей. Она основана на результатах фундаментальных исследований, которые мы проводили последние 15 лет.

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

И, конечно, нельзя забывать об обратной связи от потребителей, которые используют открытое ПО. В конце концов, только правильная обратная связь позволяет создать качественный продукт. В закрытом режиме это сделать практически невозможно.

Автор — член-корреспондент РАН, директор Института системного программирования РАН

Мнение автора может не совпадать с позицией редакции

 

Прямой эфир

Загрузка...