log_entry_039: компрометация целостности данных
Автор: Андрей Кварцевhttps://author.today/work/509687
Продолжаем разбор ИТ-концепций из "Заговорённых".
Цитата из книги:
"Строка зависла на миг, потом вспыхнула жёлтой ошибкой.
«ERROR_CODE: 7C-ALPHA-9. UNEXPECTED_PROTOCOL_BREAKDOWN. DATA_INTEGRITY_COMPROMISED. REBOOT_REQUIRED».
Вчитался в текст. Никогда не встречал такой ошибки. Не стандартный отказ в доступе из-за недостатка прав. Нарушение целостности. Отправленный им запрос вызвал внутреннее противоречие в самой архитектуре данных.
Терминал издал надсадный вой, компьютер застонал. Вентиляторы охлаждения процессора взвыли, разгоняясь до максимума, в попытке остудить чипы, перегруженные неразрешимой логической задачей. На соседних мониторах пошла рябь помех. Инстинктивно вжался в кресло, ожидая: сейчас сработает сирена и в зал ворвутся ликвидаторы. Но гул так же внезапно стих, как и появился."
Что видит оператор:
Ошибка возникает не из-за недостатка прав, а потому что запрос нарушает внутреннюю логику системы. Это не «ты не можешь это читать». Это «я не знаю, как это обработать».
Реальная предпосылка состоит в том, что в сетевых протоколах и базах данных действительно существуют понятие целостности как ключевого показателя, включающего в себя контрольные суммы, хэши и транзакции. Также реальной является ошибка protocol breakdown (aka protocol error или malformed packet), которая означает несоответствие входящих данным заданной спецификации. Классический пример из DDOS-атак 90ых годов: packet of death ("пинг смерти") - некорректный пакет, вызывающий переполнение буфера и крах узла.
Художественный домысел здесь во введённой гиперболе - ошибка возникает не от пакета, а от самих данных о беглеце. Система пытается найти его ID в реестре, не находит и вместо «NULL» или «Access Denied» впадает в критический сбой. В реальном мире такое означало бы, что объект имеет недопустимый формат идентификатора — например, поле содержит не число, а ссылку на функцию (такое тоже есть в романе - будет рассмотрено отдельно). Недопустимый формат - это круто для сюжета (контроль ослеплён не административно, а фундаментально. Система не может классифицировать, а значит — не может и удалить), но в реальном мире, конечно, сбой подобного уровня устраняется простейшим обработчиком, обычно встроенным на промежуточном уровне самой базы данных. Отсутствие ID просто не доведёт транзакцию до состояния ошибки, отбросив ещё на этапе регистрации. Можно предположить, что проверка ID вынесена на уровень фильтрации, а не встроена в транзакцию, но это уже антипаттерн, которого стараются избегать в реальных системах, кроме того, на обработках десятков миллионов операций в режиме реального времени он, разумеется, давал бы огромное количество сбоев.
Отдельно можно отметить, что в данной ситуации оператор рискует сильнее всего. Запрос в корневой реестр — это уже не шалость, а прикосновение к уровню режима Бога для системы. Логи по такому событию будут не просто детальны — они гарантированно вызовут проверку службой безопасности с правом «стереть оператора». Собственно, как оно и произойдёт в дальнейшем.
В мире «Заговорённых» предусмотрена чёткая градация грехов:
- нарушил режим работы — штраф,
- взломал дрона — увольнение
- полез в ядро — аннулирование личности.
Виэн перешёл последнюю черту ещё до того, как понял это сам.
Что хочется ешё отметить для внимательных читателей.
Данная глава показывает: проблема не в том, что Виэн плохой хакер или система глупая. Система слепа из-за собственной архитектурной травмы — столетнего артефакта, который никто не смел трогать. TIMESTAMP: 1471250477Z и узел «Ядро-01» без единого сбоя — это не баги. Это следы того, что контроль построен на фундаменте, которого сами создатели не понимают. В реальном ИТ такой узел заставил бы инженера схватиться за голову. В романе — это дверь к главной тайне. Технология здесь не фон, а двигатель сюжета.
Продолжение следует.
В следующем разборе: как работает слежка через температурные датчики или почему пульс 168 — это не просто число, а приговор.