Секреты и ложь. Безопасность данных в цифровом мире

ОглавлениеДобавить в закладки К обложке

Глава 13Надежность программного обеспечения

Системные меры безопасности (ядра безопасности, меры контроля доступа, криптография и т. д.) в комплексе с хорошими сетевыми мерами безопасности (брандмауэрами, системами обнаружения вторжения, механизмами проверки) создают впечатление достаточной компьютерной безопасности. Почему же тогда и компьютеры, и сети так ненадежны? Почему мы так часто становимся свидетелями уязвимости компьютеров и почему не происходит изменение в лучшую сторону?

Проблема в том, что такие меры безопасности, как шифрование, ядра безопасности, брандмауэры и прочие, лучше работают в теории, нежели на практике. Другими словами, изъяны системы безопасности значительно чаще случаются при вводе ее в действие, и они намного более серьезны, чем те, что возникают при ее разработке. До сих пор во второй части данной книги говорилось о разработке. В этой главе речь пойдет о вводе в действие.

Дефектный код

В июле 1996 года вследствие ошибки в программе вскоре после запуска взорвалась ракета «Ариан 5» Европейского космического агентства: программа пыталась поместить 64-разрядное число в 16-разрядное пространство, вызвав переполнение. Этот урок особенно важен для понимания проблем компьютерной безопасности. По существу, проблема была связана с фрагментом кода, обрабатывавшего данные о скорости бокового ветра, написанного еще для ракеты «Ариан 4». Через 36,7 секунды после запуска управляющий компьютер попытался преобразовать значение скорости из 64-разрядного формата в 16-разрядный. Число оказалось слишком большим, что и вызвало ошибку. Обычно используется дополнительный код, который отслеживает ошибки такого рода и исправляет их. Но в данном случае программисты-разработчики решили не беспокоиться о подобном коде, так как величина скорости никогда не достигала таких больших значений, чтобы создавать проблемы. Возможно, это было верно для «Ариан 4», но «Ариан 5» – более быстрая ракета. Но хуже всего то, что эти вычисления, содержащие ошибку, не имели смысла с того момента, когда ракета оказывалась в воздухе. Программа, их производящая, была нужна лишь для того, чтобы отладить систему перед запуском, и после этого ее надо было бы сразу отключить. Но инженеры еще при разработке более ранней модели ракеты решили использовать эту функцию в течение первых 40 секунд полета, чтобы облегчить перезапуск системы в случае задержки запуска в последний момент перед стартом. Была резервная система, предназначенная дублировать основную в случае ее отказа, но она работала с тем же самым программным обеспечением, содержавшим те же самые ошибки.

В результате всех этих событий работа системы управления, полностью запутавшей бортовой компьютер «Ариан 5», была прекращена. Это привело к ненужной корректировке курса ракеты и повлекло ее самоуничтожение.

Три года спустя во время сложных маневров исчез искусственный спутник планеты Марс, запущенный NASA. Это не было делом рук марсианской противовоздушной обороны, а произошло вследствие ошибки преобразования данных. Инженеры NASA неудачно перевели значение силы сопротивления из английской системы мер в метрическую. Значения различаются в 4,45 раза: этого оказалось достаточно, чтобы научно-исследовательская станция опустилась на 50 миль ниже и сгорела в марсианской атмосфере.

Эти две катастрофы не связаны с компьютерной безопасностью, но они могут служить для пояснения того, насколько сложно разработать и ввести в действие код без ошибок. И Европейское космическое агентство, и NASA располагают достаточно большими средствами и сильно заинтересованы в том, чтобы обеспечить качество программного обеспечения. Но они до сих пор не в состоянии сделать это.

У других дела обстоят не лучше. В 1999 году eBay потеряла 22 часа из-за связанных с программным обеспечением ошибок в коде, полученном от Sun Microsystems. Выявление ошибки задержало выпуск карманных компьютеров Visor. А в 1998 году дефект в коммутаторах, произведенных компанией Cisco Systems, привел в нерабочее состояние передающую сеть компании AT&T Interspan, что отразилось на работе 6600 клиентов.

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


Логин
Пароль
Запомнить меня