Ох, в интересное время живем. С одной стороны история с санкциями США привела к тому, что поднялись активные дискуссии на тему того, что надо дескать отказываться от всего зарубежного и проприетарного и переходить на свое собственное и опенсорсное. С другой стороны история с Heartbleed дала конкретного пинка всем, кто выступал за то, что опенсорс гарантирует бОльшую безопасность и защиту от уязвимостей.
И вот все это натолкнуло меня на размышления на тему возможности включения недекларируемых возможностей (закладок) в программный код. В этой ситуации история с Heartbleed очень показательна, уязвимость появилась в одном из обновлений пакета OpenSSL несколько лет назад и с тех пор благополучно ждала своего часа чтобы быть открытой и наделать много шума. Кроме того, появляется информация что агентство NSA якобы знало про эту уязвимость (чему я склонен верить) и использовало ее в своих интересах (что тоже вполне логично).
Теперь давайте посмотрим с другой стороны, со стороны разработчика коммерческого программного обеспечения (в т.ч. и средств защиты информации). Практически никто сейчас не разрабатывает программное обеспечение с нуля в полном вакууме. В любом случае используются какие-то IDE, компиляторы, программные библиотеки, готовые компоненты, базы данных наконец. Возьмите любую более-менее сложную программную систему (или средство защиты) и вы увидите что в сердце него обязательно есть какая-то база данных (MS SQL, MySQL, Oracle и пр.). Помните этот вирус, который несколько лет назад наделал много шума среди разработчиков ? Вредонос заражал компилятор и в итоге все созданные с помощью этого компилятора программы становились носителями вируса. Неплохо ? Как знать, может быть это были полевые испытания ?
Таким образом мы имеем то, что практически в любой программный код можно встроить скрытую уязвимость (она же закладка) через сторонние компоненты, используемые при его разработке и/или функционировании. Можно ли от этого защититься ? Давайте рассмотрим типовые предложения:
1) Использовать только опенсорс ? Нет, не поможет. Хотя у нас вот уже сколько всего государственного все порываются создать на базе опенсорса (и отечественную ОС и вот теперь вроде как защищенные мобильники для госслужащих и проч.) Да только будет ли это действительно безопасно ? История с Heartbleed очень четко показала, что нет. Современные программные компоненты содержат такое количество кода, что никто либо не в состоянии его проанализировать, либо просто не готов тратить на это время / ресурсы и деньги наконец.
2) Сертифицировать продукт на отсутствие НДВ ? Тоже не поможет. Потому что сертификацию эту проводят тоже люди. Смогут они найти скрытую уязвимость (или несколько уязвимостей) в программном коде ? Да бьюсь об заклад что скорее всего нет. А если к этому еще прибавить то, как это в принципе делается у нас, то тут вообще без шансов.
Единственный выход (по крайней мере, как мне видится) это создание всех компонентов используемых при разработке и функционировании ПО с нуля. Но разве могут это позволить коммерческие компании ? Однозначно нет. Более того большинству частных потребителей (их клиентам) это и не нужно.
Я считаю что подобными разработками могут и должны заниматься специально созданные компании (ФГУПы или что-то подобное), причем их разработки должны быть предназначены в первую очередь для военных целей (включая вопросы защиты гостайны и проч.). Такие компании за счет финансирования государства смогут себе позволить вести разработки с нуля. Более того они могли бы привлекать к этим разработкам существующие в России ВУЗы, обучающие по направлению информационной безопасности, прикладной математики, программирования. Т.е получится что-то вроде военных заводов, если проводить аналогию с разработкой оружия, только по производству программного обеспечения. При этом результат их разработки можно будет продавать и коммерческим структурам, которые посчитают для себя угрозу внедрения скрытых уязвимостей / закладок недопустимой и требующей минимизации. Вот куда лучше потратить деньги, а не на переделку под защиту гостайны очередной модификации Android или Linux. Но это если конечно мы хотим добиться реального результата, а не просто освоить бюджет.
Есть у нас подобные компании? Я не слышал, возможно и есть, но в лучшем случае они разрабатывают средства защиты каналов связи. Но ведь есть еще антивирусы, средства контроля доступа, системы фильтрации трафика и проч. А надеяться, что коммерческая компания разработает программную систему или средство защиты для широкого рынка, а потом за счет сертификации полностью исключит все скрытые уязвимости, просто наивно (хотя именно так сейчас это и "работает").