Краткое содержание
- 25 февраля 1991 года батарея Patriot в Дахране не смогла сопроводить и перехватить иракскую ракету «Скад». Генеральное контрольно-финансовое управление США (GAO) пришло к выводу, что программная ошибка в вычислителе управления вооружением привела к неточному расчёту сопровождения, который ухудшался по мере непрерывной работы. Ракета поразила армейскую казарму; по данным GAO, погибли 28 американцев.
- Технический механизм заключался в преобразовании времени с конечной точностью. Система вела счёт времени в десятых долях секунды и для расчётов строба дальности преобразовывала всё большее целочисленное значение счётчика времени. Точность этого преобразования ограничивалась 24-разрядными регистрами. После более чем 100 часов непрерывной работы батареи в Дахране накопленная ошибка времени составила около 0,3433 секунды, а расчётный строб дальности сместился примерно на 687 метров.
- Ошибка уже становилась видимой на институциональном уровне. Данные из Израиля, полученные 11 февраля, показали значительное смещение строба дальности после восьми часов работы. Компенсирующая модификация ПО была выпущена 16 февраля, а сообщение от 21 февраля предупреждало пользователей, что очень длительная работа может сместить строб дальности. Однако в предупреждении не было определения «очень долго»; официальные лица исходили из того, что батареи не будут работать достаточно долго, чтобы произошёл отказ, а модифицированное ПО прибыло в Дахран 26 февраля — на следующий день после удара.
- Подотчётность поэтому выходит за рамки арифметики. Она следует за контролем над числовым представлением, допущениями о длительности работы, анализом аномалий, операционными ограничениями, содержанием предупреждений, полномочиями на перезапуск, распространением ПО, конфигурацией подразделения и доказательством того, что корректирующее действие дошло до батареи до того, как оно понадобилось. Небольшая вычислительная ошибка стала катастрофической, потому что техническая и операционная система контроля не ограничила её в условиях развёртывания.
Дахран превратил время непрерывной работы в состояние, критичное для безопасности
Время безотказной работы ПО часто считают свидетельством надёжности. Система, которая остаётся доступной днями, может казаться более заслуживающей доверия, чем недавно перезапущенная. Отказ Patriot в Дахране вскрывает противоположную возможность: само истёкшее время может быть растущей опасностью. Если внутренний расчёт теряет точность по мере роста значения счётчика времени, продолжение работы не нейтрально. Оно меняет состояние системы, даже когда ни один компонент видимо не падает и оператор не видит тревоги.
В отчёте GAO от февраля 1992 года зафиксировано ключевое событие. 25 февраля 1991 года система противоракетной обороны Patriot, работавшая в Дахране (Саудовская Аравия), не смогла сопроводить и перехватить приближавшуюся ракету «Скад». Ракета поразила казарму армии США. По данным GAO, погибли 28 американцев. Проверка была заказана, чтобы установить, была ли задействована программная проблема, в чём она состояла и что было сделано для её исправления.
Ответ отчёта был прямым. Программная проблема в вычислителе управления вооружением привела к неточному расчёту сопровождения, который ухудшался тем сильнее, чем дольше работала система. На момент инцидента батарея непрерывно работала более 100 часов. Накопленная неточность привела к тому, что система искала приближающуюся цель не там, где нужно.
Это описание важно, потому что оно отличает данный случай от полного пропадания питания, зависшего экрана или обычного сбоя. Батарея Patriot оставалась работающей системой. Опасная деградация скрывалась внутри расчёта, который определял, где радиолокационная обработка должна искать дальше. Таким образом, система может быть работоспособной в административном смысле — включённой, укомплектованной персоналом и доступной, — но при этом операционно непригодной для конкретной функции безопасности.
Вопрос подотчётности не сводится к тому, почему компьютер неточно представил дробь. Двоичные машины обычно приближённо представляют величины, которые невозможно выразить точно заданным числом бит. Более сложный вопрос в том, почему приближению позволили накопиться сверх безопасного предела в реальной оборонительной задаче и почему организации, отвечавшие за ПО, эксплуатацию и полевую поддержку, не превратили известное ограничение в защиту развёрнутого подразделения.
Что установлено в официальных материалах
Отчёт GAO должен оставаться главным источником по выводу о программном сбое в Дахране. Это не ретроспективный учебный анекдот, собранный из устных преданий. GAO опросило должностных лиц, отвечавших за сопровождение ПО Patriot, изучило анализы армии, рассмотрело материалы по архитектуре и ассемблерному коду, проанализировало машинные инструкции, связанные с неточностью, проверило корректирующий расчёт и участвовало в моделировании в испытательном центре программного обеспечения Patriot. В отчёте сказано, что официальные лица в целом согласились с представленными фактами.
Это не значит, что отчёт закрывает все споры об эффективности Patriot в войну в Персидском заливе. Более широкая история перехватов системы стала предметом политических, технических и доказательственных споров. Утверждения о том, уничтожали ли другие перехваты приближавшиеся боеголовки, опираются на другие доказательства, определения и вопросы причинно-следственной связи. Эти дискуссии не следует переносить в дело о программном сбое в Дахране, как будто они взаимозаменяемы.
Применительно к этому инциденту GAO описало более узкую и хорошо подтверждённую цепочку. Вычислитель управления вооружением использовал данные о цели от радиолокатора. Алгоритм строба дальности рассчитывал область, в которой система должна в следующий раз искать предполагаемую ракету «Скад». Данные за пределами этой расчётной области отфильтровывались, а информация внутри неё использовалась для сопровождения, наведения и перехвата. Прогноз зависел от скорости цели и времени последнего обнаружения радиолокатором.
Системные часы хранили время в целых десятых долях секунды. Для расчётов сопровождения время и скорость должны были выражаться вещественными числами. Поскольку регистры компьютера имели длину 24 бита, преобразование значения времени приводило к потере точности. Эффект усиливался как с ростом длительности работы, так и с ростом скорости цели. Длительная работа смещала расчётный строб дальности относительно фактического положения цели.
Затем GAO связало расчёт с результатом на поле боя. Батарея Alpha непрерывно проработала более 100 часов. Строб дальности сместился настолько, что батарея не сопроводила приближающуюся ракету «Скад» и потому не открыла по ней огонь. Это официальная граница причинности для программного отказа. Анализ может извлечь из этого уроки управления, но не должен выдумывать дополнительные боевые приказы, личные мотивы или недокументированные решения.
Числовая ошибка была мала на каждый расчёт, но велика в контексте
Суть арифметики часто сжимают до фразы «ошибка округления». По направлению она верна, но институционально неполна. Она подразумевает безобидное расхождение в десятичных знаках или изолированную ошибку программиста. Реальный риск возник из взаимодействия представления чисел, накопления ошибки, скорости цели и непрерывного использования.
Система отсчитывала время единицами в одну десятую секунды. Десятая доля не имеет конечного точного представления в двоичной системе точно так же, как одна треть не имеет конечного точного представления в десятичной. Компьютер вынужден хранить приближение. Архитектура компьютера Patriot ограничивала точность преобразования, используемого в расчёте сопровождения. Каждое преобразование было близко к нужному значению, но не тождественно ему.
Истёкшее время представлялось целым числом, которое росло, пока система оставалась включённой. Когда это более крупное значение счётчика преобразовывалось с помощью приближения ограниченной точности, абсолютная разница между расчётным и фактическим временем также увеличивалась. Программе не нужно было становиться менее аккуратной от момента к моменту. Тот же метод представления давал большую операционную ошибку, потому что применялся к большему значению истёкшего времени.
В приложении к отчёту GAO эта прогрессия количественно описана. После одного часа расчётное время отставало примерно на 0,0034 секунды, что соответствовало смещению строба дальности примерно на семь метров. После восьми часов в отчёте указана неточность времени около 0,0275 секунды и смещение около 55 метров. После 20 часов неточность составляла около 0,0687 секунды, смещение — около 137 метров. На 100-м часу расчёт отставал примерно на 0,3433 секунды, а приблизительное смещение составляло 687 метров.
Эти цифры показывают, почему «всего лишь доля секунды» — неверная рамка оценки риска. Доля секунды должна оцениваться с учётом скорости цели и логики, которая потребляет значение времени. GAO описывало ракеты «Скад» в этом операционном контексте как летящие со скоростью примерно 5 Махов. Быстро движущаяся цель за короткий временной интервал покрывает существенное расстояние. Задача строба дальности состояла в том, чтобы ограничить область, в которой радиолокационная обработка ищет цель в следующий раз. Как только ошибка прогноза смещала этот строб достаточно далеко, реальная цель могла оказаться за пределами области, считавшейся значимой.
Результатом была не просто менее элегантная оценка. Изменилось то, что система могла распознать как цель. Расчёт помогал определить, опознан ли объект, сопровождается ли он и находится ли в зоне огня. Числовое приближение, таким образом, находилось внутри границы принятия решения с прямыми последствиями для боевого применения.
Это повторяющийся принцип безопасности. Величину ошибки нельзя оценивать в отрыве от передаточной функции между расчётом и действием. Небольшая ошибка времени может быть несущественна для расчёта зарплаты и катастрофична для предотвращения столкновений, дозирования лекарств, промышленного управления или сопровождения ракет. Инженерное обеспечение гарантий должно переводить числовую ошибку в эффект в предметной области при наиболее неблагоприятном достоверном режиме работы.
Конструкторское допущение стало необъявленным эксплуатационным ограничением
GAO сообщило, что Patriot изначально проектировалась как мобильная система противовоздушной обороны. В прежней концепции применения предполагалось перемещение и лишь несколько часов работы на одной позиции. Во время войны в Персидском заливе батареи размещались на относительно постоянных позициях для защиты объектов, личного состава и гражданских лиц от атак ракетами «Скад». Система также использовалась против класса целей и профиля полёта, которые не определяли её первоначальную миссию.
Это не доказательство того, что адаптация сама по себе была безответственной. Развёрнутые системы часто вынуждены отвечать изменившимся угрозам. Это свидетельство того, что гарантии, основанные на исходной эксплуатационной области, не могут молча перейти вместе с системой в другую область. Мобильная система, которая, как предполагалось, будет перезапускаться или перемещаться каждые несколько часов, может содержать переменные состояния, чьё поведение при длительной работе никогда не считалось критичным для безопасности. Батарея, остающаяся непрерывно доступной днями, создаёт иное требование к выносливости.
Дрейф часов был, таким образом, ещё и сбоем интерфейса между конструкторскими допущениями и полевой доктриной. В ПО было заложено допущение о том, насколько большим станет истёкшее время. Боевая практика создала гораздо большее значение. Ни одна из сторон сама по себе не определяет безопасность. Система безопасна только в том случае, если развёрнутый режим работы остаётся в пределах подтверждённой области или если ПО и процедуры изменены до расширения этой области.
Ограничение длительности работы, существующее лишь неявно в арифметике, не является действенным ограничением. Операторы не могут соблюдать порог, который им никогда не сообщали. Командиры не могут планировать смену расчётов, окна перезапуска или перекрывающееся прикрытие вокруг числа, которое не переведено в доктрину. Логистические команды не могут расставить приоритеты для модификации ПО, если им не сообщают, какие подразделения приближаются к опасному состоянию.
Дело Дахрана поэтому ставит вопрос о том, кто владел эксплуатационной областью. Специалисты по сопровождению ПО контролировали знание о расчёте. Проектный офис мог анализировать данные об аномалиях и менять код. Оперативные командования знали, как батареи фактически эксплуатируются. Развёрнутые подразделения контролировали немедленные действия по конфигурации и перезапуску в пределах данных им полномочий и условий угрозы. Старшее руководство армии контролировало систему распространения предупреждений и обновлений. Безопасность зависела от согласования этих позиций.
Соответствующее требование было не просто «сопровождать „Скады“». Оно было ближе к «сохранять требуемую точность сопровождения на протяжении самого длительного периода непрерывной работы, которого может потребовать боевое развёртывание». Будь это условие выносливости явным, анализ числовых ошибок, длительные испытания, полевые инструкции и отчётность о конфигурации можно было бы оценивать по одной и той же измеримой границе.
Данные Израиля сделали риск видимым до удара
О дефекте можно было узнать не только после Дахрана. GAO описало полевые данные, полученные до инцидента. 11 февраля 1991 года проектный офис Patriot получил израильские данные, выявившие смещение радиолокационного строба дальности на 20 процентов после восьми часов непрерывной работы. Системы, находившиеся под управлением Израиля, использовали внешние регистраторы данных, что дало информацию, полезную для анализа армии.
Представители проектного офиса заявили, что система не будет сопровождать ракету «Скад», когда смещение строба дальности достигнет 50 процентов и более. Поскольку смещение пропорционально времени работы, результат за восемь часов можно было экстраполировать. GAO сообщило, что примерно после 20 часов непрерывного использования неточный расчёт времени становился достаточно большим, чтобы радиолокатор искал в неверном месте.
Эта последовательность — классическая проверка эскалации аномалии. Данные существовали, но данные не защищают систему, пока не превращены в контролируемое решение. Первоначальное смещение в 20 процентов можно было описать как снижение запаса, а не немедленный отказ. Однако его значимость зависела от траектории ошибки. Растущая ошибка с известным порогом отказа требует прогнозирования, а не только наблюдения.
GAO сообщило, что армейские официальные лица первоначально считали израильский опыт нетипичным. Они исходили из того, что другие пользователи не эксплуатируют системы по восемь часов и более подряд. Это убеждение было операционным допущением, и оно оказалось неверным для батареи Alpha в Дахране. Подразделение в итоге оставалось в непрерывной работе более 100 часов.
Управленческий провал состоял не в том, что официальные лица проигнорировали все данные. Они проанализировали данные, подтвердили потерю точности и внесли изменение в ПО. Разрыв состоял в том, что аномалия не привела к полному и применимому на местах ответу по безопасности до того, как исправление дошло до каждого подверженного риску подразделения. GAO заявило, что официальные лица не использовали израильские данные для определения того, как долго Patriot может работать, прежде чем неточный расчёт сделает систему неэффективной.
Это различие важно. Разработка исправления и промежуточный контроль риска — отдельные обязанности. Когда патч уже готовится, организации могут вести себя так, будто проблема идёт к закрытию. Развёрнутое подразделение остаётся под угрозой, пока не установлена исправленная конфигурация или не действует эффективная мера снижения риска. Промежуток между подтверждением дефекта и установкой по всему парку — это управляемый опасный интервал.
Предупреждение не содержало порога, необходимого операторам
21 февраля проектный офис Patriot направил пользователям сообщение о том, что очень длительная работа может сместить строб дальности и сместить цель. В сообщении также говорилось, что для улучшения наведения направляется изменение ПО. GAO выявило решающую слабость: в сообщении не уточнялось, что считается «очень долгой» работой.
Качественный язык может передать обеспокоенность, но не дать возможности действовать. «Очень долго» для аналитика ПО может означать восемь часов, для командира — сутки, а для расчёта, работающего в условиях постоянной угрозы, — несколько дней. Операционное предупреждение должно связывать опасность с измеримым состоянием и требуемой реакцией. Оно должно говорить, когда риск становится неприемлемым, что должно сделать подразделение, кто может санкционировать действие и как фиксируется выполнение.
Армейские официальные лица сообщили GAO, что исходили из того, что пользователи не будут эксплуатировать батареи непрерывно достаточно долго для отказа, поэтому не считали более детальные указания необходимыми. Это предположение показывает, почему проектирование предупреждений не может опираться на то же допущение, которое содержится в самой опасности. Если полевая практика неопределённа, процесс предупреждения должен её проверить. Подтверждение должно включать текущее время работы подразделения, версию ПО и планируемые меры снижения риска, а не только подтверждение получения сообщения.
Фактическое состояние батареи в Дахране — более 100 часов непрерывной работы — не было незаметной границей вокруг прогнозируемой точки потери сопровождения на 20-м часу. Оно было далеко за ней. Система контроля, способная сопоставлять предупреждения с состоянием подразделения, должна была определить батарею Alpha как критически важную.
Именно здесь подотчётность становится доказательственной. Недостаточно показать, что штаб передал общее сообщение. Значимое доказательство — получило ли подверженное риску подразделение понятный предел по времени, поняло ли его последствия, имело ли полномочия и возможность действовать и отчиталось ли о выполнении. Журналы передачи доказывают лишь начало этой цепочки.
Предупреждения о критичном для безопасности ПО должны быть версионированными операционными директивами. Им нужны идентификатор дефекта, затронутые конфигурации, наблюдаемый триггер, максимальное безопасное состояние, мера снижения риска, ответственная роль, срок, подтверждение получения и доказательство закрытия. Когда порог зависит от времени, предупреждение также должно требовать сообщения о текущем времени работы. Иначе центральная переменная риска остаётся невидимой для организации, которая пытается её контролировать.
Перезапуск был мерой снижения риска, но не полной системой контроля
GAO сообщило, что перезапуск системы Patriot каждые несколько часов мог устранять значительные смещения строба дальности, поскольку счётчик времени компьютера возвращался к нулю. Перезапуск описывался как занимающий примерно 60–90 секунд. В чисто техническом смысле это была простая мера против накопленной ошибки истёкшего времени.
Операционно «просто перезапустите» не выполняется само собой. Батарея противовоздушной обороны существует для непрерывной защиты. Даже короткое прерывание может требовать координации с текущими тревогами, прикрытием со стороны других батарей, полномочиями командования и загрузкой расчёта. В том же отчёте отмечалось, что установка модификаций ПО требовала остановки систем по меньшей мере на один-два часа — гораздо более длительного прерывания с очевидными последствиями для планирования.
Это не доказывает, что перезапуск в конкретный момент был невозможен или что операторы отказались выполнить доступный приказ. Открытые данные из набора источников не подтверждают такого утверждения. Это показывает, почему мера снижения риска должна быть переведена в доктрину, прежде чем её можно засчитывать как контроль.
Надёжный контроль перезапуска определял бы максимальное время работы ниже опасного порога, предупреждал бы при приближении к пределу, указывал, кто отдаёт приказ о перезапуске, координировал временное прикрытие, проверял, что счётчик времени сброшен, и фиксировал новое время запуска. Если непрерывная защита делает перезапуск неприемлемым, организация должна обеспечить перекрывающую ёмкость или ускорить установку исправленного ПО. Опасностью нельзя управлять, надеясь, что полевые расчёты выведут процедуру из неточного предупреждения.
Существование технически простой меры иногда может ослабить институциональную реакцию. Лица, принимающие решения, могут предположить, что кто-то рядом с системой решит проблему неформально. Это допущение передаёт ответственность без передачи инструкций, полномочий или доказательств. В обосновании безопасности мера засчитывается только тогда, когда она выполнима в операционных условиях и подтверждённо реализована.
Исправление ПО существовало до удара, но прибыло после него
Проанализировав израильские данные, проектный офис Patriot разработал изменение ПО, чтобы компенсировать неточный расчёт времени и допустить длительную работу. GAO сообщило, что модифицированная версия была выпущена 16 февраля 1991 года. В Дахран она прибыла 26 февраля — на следующий день после смертоносного удара.
Армейские официальные лица объяснили задержку распространения временем, необходимым для организации авиационных и наземных перевозок во все расположения Patriot в условиях военного времени. Этот контекст значим. Доставка физических носителей ПО, технической поддержки или контролируемых изменений конфигурации через театр военных действий — не то же самое, что распространение рядового потребительского обновления. Но операционные трудности не устраняют подверженность риску. Они определяют логистическое требование, которым должен управлять процесс безопасности.
Девятидневный интервал между выпуском и инцидентом в Дахране следует рассматривать как окно конфигурационного риска. В течение этого окна некоторые подразделения оставались на ПО, о котором было известно, что оно имеет зависимую от длительности работы проблему сопровождения. Зрелый процесс вёл бы актуальный реестр затронутых батарей, их версий ПО, текущего времени работы, критичности задачи, статуса отправки обновления и промежуточных мер снижения риска.
Приоритет должен следовать за риском, а не просто за стандартной очерёдностью распространения. Подразделение, уже вышедшее за прогнозируемую безопасную длительность работы, требовало бы немедленного внимания. Если исправленная версия не могла прибыть быстро, система командования должна была обеспечить соблюдение графика перезапусков или другой утверждённой меры. Каждое подразделение должно проходить через явные состояния: затронуто, предупреждено, приняты меры, обновление отправлено, обновление получено, установлено, функционально проверено, закрыто.
Дело Дахрана предшествует сетевым поставкам ПО в том виде, в каком их сейчас обычно понимают, но проблема подотчётности остаётся актуальной. Вендор или проектный офис может выпустить исправление, пока установленная база остаётся уязвимой. «Патч доступен» — не то же самое, что «риск устранён». Организации, отвечающие за системы с высокими последствиями, нуждаются в доказательствах на последней миле.
Та же логика применима к больницам, промышленным предприятиям, сетям общественной безопасности и критической инфраструктуре. Корректирующий код, лежащий в штаб-квартире, не защищает удалённую систему. Безопасность зависит от времени доставки, местных полномочий, возможности установки, проверки совместимости и доказательства итоговой конфигурации.
Ограниченная запись параметров ослабила возможность обучения
GAO также описало ограничение в доказательной базе. У Patriot не было встроенного внутреннего регистратора данных, сохранявшего детальную информацию о работе. Портативные внешние регистраторы были доступны, но американские командиры решили их не использовать из-за опасения, что регистраторы могут вызвать непредвиденную остановку системы. Израильские командиры использовали регистраторы и предоставили данные, которые помогли выявить аномалию строба дальности.
Это решение представляет собой реальный компромисс в области безопасности. Добавление средств измерений в действующую систему вооружения создаёт собственный риск. Регистратор, способный нарушить работу, нельзя считать безвредным. Однако отказ от сбора данных тоже имеет цену: деградация может оставаться невидимой, анализ аномалий замедляется, а реконструкция событий становится менее определённой.
Ответственная инженерия требует, чтобы этот компромисс был сделан явно. Если предпочтительный регистратор слишком рискован для регулярного использования, нужен альтернативный путь получения данных. Это может включать независимо проверенную пассивную инструментовку, плановый сбор диагностики, лабораторное воспроизведение с использованием репрезентативных длительных состояний, резервную запись на отдельных батареях или формальный план сбора данных об аномалиях без вмешательства в боевую работу.
Важный момент не в том, что командиры всегда должны выбирать больше телеметрии. А в том, что системе с высокими последствиями, адаптирующейся к новой цели и новому режиму работы, нужна определённая система обучения. Во время операции «Буря в пустыне» ПО неоднократно модифицировалось по мере накопления боевого опыта. GAO сообщило о шести модификациях ПО с августа 1990 года по февраль 1991 года. Быстрая адаптация повышает важность достоверных данных о работе и отслеживаемости конфигураций.
Без хороших записей организации сильнее полагаются на сообщения пользователей, предположения и единичные наблюдения. Это облегчает списание аномалии как нетипичной и затрудняет определение того, сработало ли изменение по всему парку. Сбор данных, таким образом, является частью системы защиты, а не просто ресурсом для историков после отказа.
Подотчётность следует за практическим контролем
Ни одна роль не контролировала все звенья цепочки в Дахране. Именно поэтому необходима модель системной подотчётности. Распределённая ответственность не должна превращаться в размытую ответственность.
Инженеры ПО и аппаратного обеспечения контролировали выбор представления чисел, знание 24-разрядных ограничений, корректирующий алгоритм и проверку модифицированного расчёта. Их обязанность состояла не в гарантии математического совершенства, а в определении границы ошибки во всём достоверном диапазоне работы и в доказательстве того, что сопровождение остаётся в требуемых пределах.
Проектный офис Patriot контролировал анализ аномалий, сопровождение ПО и важные части предупреждения и распространения. Когда израильские данные показали деградацию, офис имел возможность превратить наблюдение в эксплуатационное ограничение, исправленную версию и приоритетные полевые действия. Из описания GAO следует, что исправление было разработано и предупреждение доведено. Анализ подотчётности спрашивает, почему эти действия не стали своевременной защитой в Дахране.
Операционное руководство контролировало доктрину и знание о том, как батареи фактически используются. Если системы оставались непрерывно активными днями, этот факт должен был дойти до людей, оценивавших допущения о выносливости. Командования также контролировали возможность планирования перезапусков, простоев для обновлений и перекрывающейся защиты.
Цепочка распространения ПО и театральной поддержки контролировала движение модифицированной версии к развёрнутым расположениям. В условиях военного времени задержки транспортировки могут быть понятны, но они остаются частью риска системы. Эффективность логистики должна оцениваться с учётом срочности опасности.
Руководство подразделений и операторы контролировали местные действия в пределах доступных им приказов, информации и полномочий. Им не следует приписывать единственную вину за то, что они не вывели необъявленный порог. С другой стороны, процесс безопасности должен определять, какие доказательства требуются на уровне подразделения: журналы времени работы, подтверждение предупреждения, запись перезапуска, установленная версия и функциональная проверка.
Армейское и оборонное руководство контролировало более широкую систему управления: критерии готовности, каналы отчётности, полномочия на развёртывание, независимый контроль и баланс между доступностью и простоем для исправлений. Институциональная подотчётность находится на этом уровне, потому что местные команды не могут самостоятельно создать видимость конфигураций по всему парку или переписать политику предупреждений.
Роль производителя также должна ограничиваться доказательствами. Имеющиеся источники позволяют говорить о сопровождении ПО и техническом исправлении, но не дают оснований считать одного программиста или одну компанию полной причиной. Операционный отказ возник из-за технического дефекта, взаимодействовавшего с архитектурой системы, изменившимися условиями задачи, допущениями о времени работы, неполным содержанием предупреждения и задержкой развёртывания исправления.
Такое многоуровневое распределение требовательнее, чем назначение виновного. Оно требует, чтобы каждый владелец представил доказательства по тому контролю, которым располагал. Инженерия предоставляет анализ ошибок и результаты испытаний. Проектный офис — решения об опасности и записи о выпуске. Командование — операционную доктрину и видимость состояния подразделений. Логистика — доказательства доставки. Подразделения — подтверждение конфигурации и мер снижения риска. Надзор проверяет, что цепочка замыкается, прежде чем подверженность риску продолжается.
Это дело не является приговором каждому перехвату Patriot
Более широкая эффективность Patriot в войну в Персидском заливе оспаривалась. Показания GAO, анализ технической политики и более поздние публикации ставили под сомнение официальные заявления об успехах и рассматривали сложность подтверждения уничтожения боеголовок. Другие стороны защищали показатели системы. Эти дискуссии — значимый контекст для оценки качества доказательств, но они не нужны для раздувания вывода о дрейфе часов в Дахране.
У конкретного дела есть собственный официальный материал: одна батарея не смогла сопроводить и поразить приближающуюся ракету «Скад», потому что неточный расчёт времени вырос за время длительной работы. Сохранение узких границ повышает подотчётность. Оно не позволяет задокументированному программному сбою стать риторическим заменителем любого утверждения о системе вооружения.
Та же дисциплина применима к данным о потерях. Отчёт GAO по Дахрану указывает, что «Скад» поразил армейскую казарму и убил 28 американцев. Эту цифру можно атрибутировать GAO. Статья не должна добавлять точное число раненых, детальную последовательность событий внутри казармы или утверждения о действиях отдельных людей, если их не подтверждают столь же надёжные доказательства.
Материалы не устанавливают и умышленного правонарушения. Доказательства поддерживают выводы о допущениях, пределах расчёта, конкретности предупреждения и сроках обновления. Они не подтверждают утверждений о саботаже, уголовном деянии или сознательном решении подвергнуть подразделение известному смертельному исходу.
Важно также не описывать каждый расчёт с конечной точностью как дефект. Приближение неотъемлемо от вычислений. Дефект состоит в использовании приближения, чья накопленная ошибка превышает допустимый предел системы в достоверных условиях работы без эффективного обнаружения или контроля.
Наконец, дело не следует сводить к ошибке оператора. GAO сообщило, что официальные лица исходили из того, что пользователи не будут эксплуатировать батареи очень долго, тогда как полевая реальность в Дахране составила более 100 часов непрерывной работы. Это несоответствие — проблема институционального интерфейса. Операторы — часть системы, но они не могут соблюдать предел, который инженерия и командование не сделали явным и выполнимым.
Что потребовала бы более сильная система контроля
Самые полезные уроки Дахрана конкретны. «Используйте большую точность» — это одно исправление, но не полная программа управления.
Определить числовой допуск в операционных терминах
Требования должны указывать максимально допустимую ошибку прогноза при наибольшем достоверном времени работы и наибольшей значимой скорости цели. Они должны определять точку, в которой строб дальности перестаёт обеспечивать требуемую вероятность сопровождения. Решение о разрядности становится проверяемым только при переводе в физический эффект.
Инженеры должны рассчитывать наихудшую накопленную ошибку, а не только ошибку на одно преобразование. Испытания должны прорабатывать счётчики времени вблизи и за пределами пределов выносливости. Если ПО использует истёкшее время в нескольких функциях, для каждого пути нужен бюджет ошибки.
Сделать эксплуатационную область явной
Подтверждённая область должна включать длительность непрерывной работы, характеристики целей, допущения о перезапуске, версию ПО и условия окружающей среды. Когда развёртывание меняется с мобильного кратковременного использования на стационарную непрерывную готовность, это изменение должно запускать формальную переоценку.
Предел времени работы должен быть в технических инструкциях, на дисплеях операторов, в панелях готовности и в планировании командования. Он не должен оставаться обнаружимым только через позднейший анализ ассемблерных инструкций.
Оснастить контроль времени работы и запаса
Система должна раскрывать важное для безопасности состояние. Операторам и обеспечивающим командованиям нужна точная мера непрерывного времени работы и ясный показатель остающегося запаса сопровождения. Предупреждения должны нарастать до предела, а не после того, как расчёт становится неэффективным.
Средства измерений сами должны испытываться на отсутствие помех. Если запись создаёт неприемлемый риск, программе нужен другой подтверждённый механизм получения данных. Отказ от записи не может означать отказ от обучения.
Отделить разработку исправления от промежуточных мер снижения риска
Пока разрабатывается постоянное изменение ПО, у промежуточного контроля опасности должен быть владелец. Мерами могут быть плановый перезапуск, снижение максимального времени работы, перекрывающееся прикрытие, ограниченный режим задачи или другая инженерная мера. Необходимы документально подтверждённая выполнимость и доказательство завершения.
Риск остаётся открытым, пока не защищено каждое затронутое подразделение, а не просто пока выпущен код.
Использовать количественные предупреждения
Сообщения о безопасности должны заменять фразы вроде «очень долго» порогами. Они должны указывать затронутые версии, описывать последствие, требовать конкретного действия и называть должностное лицо, ответственное за это действие. Если порог зависит от текущего состояния, подразделения должны сообщать это состояние вместе с подтверждением.
Сообщение не считается закрытым, когда оно покинуло штаб. Для закрытия требуются получение, понимание, действие и проверка.
Поддерживать видимость конфигураций по всему парку
Руководители программы и операционные руководители должны знать, какая версия ПО установлена на каждой батарее, когда она последний раз перезапускалась, какие предупреждения она подтвердила и прошло ли корректирующее изменение локальную функциональную проверку. Этот реестр должен быть достаточно актуальным, чтобы расставлять приоритеты риска во время быстро меняющихся операций.
Записи о конфигурации также предотвращают распространённый вид отказа, при котором организации предполагают, что опубликованное исправление устранило подверженность риску везде.
Планировать безопасные окна обслуживания
Перезапуск или установка ПО может прервать защиту. Это создаёт законную операционную проблему, а не повод оставить опасность неуправляемой. Командования должны планировать перекрывающееся прикрытие, поэтапное обслуживание или другую меру непрерывности. Полномочия принять кратковременный риск обслуживания против растущего риска расчёта должны быть явными.
Испытывать фактически выполняемую задачу
Испытания на выносливость должны отражать непрерывную боевую работу, а не только короткие сеансы, предполагавшиеся в исходной концепции. Модели целей должны отражать скорость и поведение угроз, для отражения которых назначена система. Испытания должны охватывать взаимодействие времени работы, числового представления и логики строба дальности.
GAO сообщило, что позже было проведено испытание на выносливость, чтобы убедиться, что длительная работа не создаёт других проблем системы. Устойчивый контроль — сделать такой класс испытаний регулярным до того, как условия развёртывания вскроют предел.
Сохранять независимую проверку
Критичные для безопасности исправления должны независимо проверяться на соответствие заявленной границе ошибки и операционному сценарию. GAO само пересчитало исправление в рамках своей проверки. Программы не должны нуждаться в послетаварийном аудите, чтобы обнаружить, оценивалась ли арифметика длительной работы.
Независимый контроль должен также оценивать адекватность предупреждений, полевое распространение и закрытие конфигураций. Одна лишь верификация ПО не может показать, что исправленная версия дошла до подверженной риску системы.
Контрфактические сценарии проясняют контроль, но не переписывают историю
Несколько контрфактических сценариев помогают выявить отсутствовавшие контроли. Если бы преобразование времени сохраняло достаточную точность на 100-м часу, конкретное смещение строба дальности, описанное GAO, не развилось бы тем же образом. Если бы батарея была перезапущена в пределах контролируемого безопасного интервала, внутренний счётчик времени вернулся бы к нулю, а накопленная ошибка уменьшилась бы. Если бы модифицированное ПО прибыло и было установлено до 25 февраля, компенсирующий расчёт, возможно, устранил бы известную проблему.
Это утверждения, ориентированные на контроль, а не заявления о том, что любое отдельное изменение наверняка предотвратило бы все последствия удара. Перехват — сложный физический и операционный процесс. Открытые данные устанавливают, почему батарея Alpha не сопроводила и не поразила эту ракету «Скад»; они не дают оснований гарантировать результат гипотетического перехвата.
Ещё один контрфактический сценарий касается содержания предупреждения. Количественная директива, выпущенная 21 февраля, сопоставленная с текущим временем работы каждого затронутого подразделения и подкреплённая полномочиями на перезапуск, сделала бы риск более управляемым. Была бы ли она исполнена в Дахране, зависит от фактов, которые здесь полностью не установлены. Урок в том, что фактическое качественное предупреждение не дало операторам необходимого порога.
Цель контрфактического анализа — связать каждую точку отказа с проверяемым контролем. Его не следует использовать для создания определённости задним числом или для стирания ограничений военных операций.
Современные системы по-прежнему накапливают невидимый риск времени
Архитектура из отчёта GAO отражает свою эпоху, но структура риска современна. Долго работающие системы накапливают состояние: счётчики растут, часы переполняются, аренды истекают, сертификаты стареют, смещения дрейфуют, очереди углубляются, а числовые приближения накапливаются. Сервис может проходить короткие тесты и всё же отказать после дней или месяцев работы.
Современное аппаратное обеспечение предлагает более широкие регистры и большую точность, но одна лишь разрядность не гарантирует безопасность. ПО по-прежнему преобразует единицы времени, часовые домены и числовые типы. Распределённые системы сочетают часы реального времени, монотонные часы и удалённые метки времени. Встраиваемые устройства могут экономить память или вычислительную мощность. Безопасность зависит от анализа фактического представления и длительности задачи.
Операционные допущения также продолжают меняться быстрее систем. Платформа, спроектированная для периодического использования, может стать непрерывно доступной инфраструктурой. Резервный инструмент может стать основным сервисом. Региональное развёртывание может стать глобальным. Система, созданная для одной нагрузки, может оказаться в более быстрой или более изменчивой среде. Каждое изменение может аннулировать неявный предел.
Проблема цепочки предупреждений столь же актуальна. Команды безопасности и защиты регулярно публикуют предупреждения, пока удалённые операторы остаются на уязвимых версиях. Панели могут показывать, что патч существует, не подтверждая установку. Сообщения могут описывать риск качественно, без указания срока или затронутого состояния. Дахран показывает, почему доказательства на последней миле важны.
Самый глубокий урок — время должно управляться как данные. Его единица, точность, эпоха, максимальное значение, поведение сброса и путь преобразования являются требованиями интерфейса. Время работы — это входные данные для обоснования безопасности. Если ошибка растёт со временем, каждый час работы расходует запас.
Вопросы для надзора и руководства
Лидеры, отвечающие за ПО с высокими последствиями, должны уметь ответить на компактный набор вопросов.
Каково наибольшее достоверное время непрерывной работы, и испытана ли система сверх него? Какие расчёты накапливают ошибку со временем? Каков физический или сервисный эффект от наихудшей ошибки? Где документирована максимальная безопасная длительность?
Кто получает данные об аномалиях с мест, и кто решает, меняют ли они эксплуатационную область? Когда опасность подтверждена, кто отвечает за промежуточные меры снижения риска, пока разрабатывается постоянное исправление? Может ли этот человек приказать перезапуск или прерывание сервиса?
Содержит ли предупреждение измеримый порог, затронутые версии и требуемое действие? Сообщает ли подтверждение фактическое состояние подразделения? Есть ли доказательства, что действие произошло?
Может ли руководство определить каждую развёрнутую конфигурацию, текущее время работы и статус обновления? Сколько времени требуется корректирующему ПО, чтобы добраться до самого удалённого объекта? Связан ли приоритет распространения с подверженностью риску?
Какие данные собираются во время работы? Были ли средства измерений испытаны на отсутствие помех? Если прямая запись небезопасна, какая альтернатива поддерживает обнаружение аномалий и независимую реконструкцию?
Кто независимо проверяет не только изменение кода, но и закрытие на местах? Какое условие переводит статус из «исправление выпущено» в «риск устранён»?
Эти вопросы превращают известную историю о ПО в подотчётную операционную модель. Они требуют артефактов, владельцев и порогов, а не заявлений об уверенности.
Заключение
Отказ Patriot в Дахране был вызван программной проблемой времени, но «ошибка округления» — слишком мелкое описание институционального провала. Ограниченная точность создала ошибку, которая росла со временем работы. Изменившиеся условия развёртывания вывели систему далеко за пределы длительности работы, предполагавшейся официальными лицами. Полевые данные вскрыли деградацию. Корректирующее ПО было выпущено, предупреждение отправлено, но в предупреждении не было применимого временного порога, а исправленная версия прибыла в Дахран после удара.
Материалы GAO поддерживают дисциплинированное распределение ответственности. Инженерия отвечала за числовое поведение и его проверку. Проектный офис отвечал за преобразование аномалий, предупреждение и исправление. Операционное руководство отвечало за доктрину и видимость непрерывной эксплуатации. Логистика отвечала за доставку изменённой конфигурации. Развёрнутым подразделениям нужны были явные полномочия и инструкции по мерам снижения риска. Старшее руководство отвечало за систему доказательств, связывающую эти контроли.
Устойчивый урок не в том, что компьютеры должны избегать приближений. А в том, что организации должны ограничивать приближения в значимых условиях. Истёкшее время, версия ПО, получение предупреждения и корректирующее действие должны стать видимыми объектами контроля. В системе, защищающей человеческие жизни, предел безопасности не может оставаться скрытым в двоичном разложении дроби.
Источники
- https://www.gao.gov/products/imtec-92-26
- https://www.gao.gov/assets/imtec-92-26.pdf
- https://cs.nyu.edu/~exact/resource/mirror/patriot.htm
- https://www.cs.unc.edu/~smp/COMP205/LECTURES/ERROR/lec23/node4.html
- https://gao.justia.com/department-of-defense/1992/2/patriot-missile-defense-imtec-92-26/
- https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA344865.xhtml
- https://www.gao.gov/assets/t-nsiad-92-27.pdf
- https://scienceandglobalsecurity.org/archive/sgs08sullivan.pdf
- https://babel.hathitrust.org/cgi/pt?id=pur1.32754076883812
- https://onlinebooks.library.upenn.edu/webbin/book/lookupid?key=ha011339545
- https://ocwitic.epsem.upc.edu/assignatures/se/recursos/patriot-dharan-skeel-siam.pdf
- https://www-users.cse.umn.edu/~arnold/disasters/Patriot-dharan-skeel-siam.pdf
- https://publikationen.bibliothek.kit.edu/1000181916
- https://publikationen.bibliothek.kit.edu/1000181916/160370039
- https://barrgroup.com/sites/default/files/case-study-patriot-missile-defects.pdf
- https://www.pbs.org/wgbh/pages/frontline/gulf/weapons/patriot.html
- https://gulflink.health.mil/scud_info/scud_info_refs/n41en182/patriot.htm

