Владислав Безсмертный
Humanware: почему системы ломаются о человека

Предисловие от автора

В начале XXI века, когда мир стремительно обрастал технологиями, казалось, что будущее – за машинами, программами и искусственным интеллектом. С каждым днём компьютерные системы становились всё умнее, а мы – всё зависимее от них. Мы мечтали о безошибочных алгоритмах, мгновенном принятии решений и полнейшей автоматизации. Всё, что оставалось человеку – нажать кнопку и наблюдать, как железо и код делают свою магию.

Но реальность оказалась куда сложнее и гораздо забавнее.

Самые совершенные киберсистемы оказываются уязвимы не из-за багов в коде или сложных алгоритмах. Их слабое место – человек. Да-да, именно тот самый человек с его настроением, привычками, стрессом и «я так всегда делал» – вот настоящий баг, который невозможно просто «патчить» обновлением.

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

Это не обвинение. Это констатация факта. Человек – это система с багами по умолчанию, но и с уникальными способностями, которые нельзя просто заменить машиной.

Вместе мы попробуем понять, как лучше строить системы, учитывая этот «человеческий фактор». Как уважать прошлое, не забывая о вызовах будущего. И почему иногда самая надёжная технология – это та, что умеет работать с нами, а не вместо нас.

И помните: никакой ИИ не спасёт систему, если её главный компонент – человек – останется «вне игры» или станет её слабым звеном.

Давайте разбираться. Поехали.

Введение.
Humanware: Тот, кто забыт между железом и кодом

В мире, где каждую неделю появляется новый фреймворк, каждый квартал – новая модель смартфона, а каждое утро – очередная новость о том, что искусственный интеллект «заменил» кого-то, есть один компонент, который обновляется крайне редко. Настолько редко, что чаще всего – вообще не обновляется. Он не логируется, не масштабируется, не документируется, и у него нет технической поддержки. Зато у него есть биоритмы, эмоции и слабые места, которых нет ни в одном даташите. Этот компонент – человек.

О нём не то, чтобы забыли. Его упоминают. Регулярно. В корпоративных отчётах как human factor, на планёрках как ключевой риск, в отчётах о сбоях как возможную точку отказа. Его учитывают в табличках Excel, когда закладывают коэффициенты корректировки. Но при этом – с ним почти никто всерьёз не работает. Не потому, что лень. А потому, что человек – не из мира инженерии. Его нельзя собрать по спецификации. Его нельзя протестировать под нагрузкой. Он не отлаживается, не тиражируется, не обновляется по протоколу OTA. Он не hardware – потому что не железо. Он и не software – потому что не код. Он – humanware.

Humanware – это промежуточный слой между машиной и программой. Только не пассивная прослойка. А активный, инициативный, хаотичный, но всё ещё решающий элемент. Это – центр принятия решений. Всё ещё. Несмотря на искусственный интеллект, RPA, автоматизацию, нейросети и цифровых двойников, именно человек нажимает на Enter, когда нужно запускать процесс. Он в итоге подтверждает транзакцию, шьёт протокол, подписывает приказ, интерпретирует отчёт, даёт команду или… не даёт. А иногда – даёт не ту.

И вот здесь начинается главная техническая проблема XXI века: всё чаще системы работают идеально, но реальность всё равно рушится. Потому что в этой идеальной системе оказался обычный человек. С головной болью, проблемами дома, недопитым кофе, и сомнением: «А точно ли я всё понял правильно?»

Если ломается железо – это видно. Если сбоит код – это логируется. Если рушится облако – срабатывает алерт. Но если бухгалтер перепутал платёж, оператор проигнорировал ошибку, врач отвлёкся, а инженер решил «обойти систему», потому что «всё равно сейчас потестим» – это становится видно только постфактум. Когда уже что-то пошло не так. Когда отчёт не сходится. Когда репутационные риски вышли из-под контроля. Когда убытки – миллионы. Или жизни. И самое важное: никто не называет это багом. Потому что это был человек.

Humanware – это не баг. Это полноценный компонент архитектуры. Просто с другой спецификацией. У него нет API, но есть настроение. Нет лог-файлов, но есть память, которая может забыть. Нет механизма самотестирования, но есть уязвимость к усталости, тревоге и переоценке своих способностей. И в отличие от кода, он не повторяет одно и то же дважды одинаково. Он меняется каждый день. Он непредсказуем. И – абсолютно незаменим.

Разработчики привыкли мыслить конструкциями: если ошибка – то фиксим. Если уязвимость – ставим firewall. Если баг – откат. Если тормоза – оптимизируем. Но как оптимизировать сотрудника, который не выспался? Как отловить race condition в мышлении, если человек одновременно думает о дедлайне и о проблемах с ребёнком? Как предсказать зависание, если пользователь просто растерялся, увидев новое поле в интерфейсе?

За последние два десятилетия мы сделали огромный технологический рывок. Инфраструктура стала масштабируемой. Системы – отказоустойчивыми. Интерфейсы – человекоориентированными. А вот сам человек – не изменился. Он по-прежнему остаётся сложным, эмоциональным, временами нелогичным существом. И как бы ни старалась индустрия, полностью исключить его из критических процессов пока невозможно. Да и не нужно.

Проблема в том, что мы строим системы, словно человек – это стабильно работающий модуль. Что он всегда логичен. Что он никогда не устанет. Что он всегда прочтёт инструкцию. И уж точно – что он точно знает, что делает. А потом этот человек сидит перед экраном, видит ошибку, не понимает, что с ней делать, и… нажимает пробел. Потому что это единственная клавиша, которую он помнит точно. И всё рушится.

Мы проектируем интерфейсы, как будто пользователь – идеален. Но человек не идеален. Он забывает. Он нервничает. Он нажимает не туда. Он может переоценить свои силы, сказать «да я быстро», и ошибиться. Он может уволиться. Может заболеть. Может просто выгореть и делать всё по инерции. Это не сбой. Это – часть системы.

Humanware – это не шутка про «проблему между клавиатурой и стулом». Это признание того, что между железом и кодом сидит кто-то, кто сам себя не до конца понимает. И если уж мы признаём его частью инфраструктуры, значит и проектировать системы надо с учётом его слабостей.

Это книга – не о критике человека. Не о том, как его заменить. И не о том, как ему объяснить, что он «всё делает не так». Это книга – о проектировании. О новой архитектуре, где человек не мешает системе, а встроен в неё правильно. Где его слабости – предусмотрены. Где его непредсказуемость – не проклятье, а инженерная переменная. Где риск не в том, что «он всё испортит», а в том, что мы не заложили под него поддержку.

Мы поговорим о реальных ошибках – не чтобы обвинить, а чтобы понять. Почему они случаются. Как предсказать сбой, когда сбой – это решение одного человека. Как проектировать интерфейсы, которые не доводят до паники. Как создавать процессы, которые не рушатся от одной невыспавшейся головы. Как перестать делать вид, что «human factor» – это исключение, а начать работать с ним, как с правилом.

Потому что в конечном счёте, какой бы ни была система – она всё равно заканчивается там, где начинается человек.

А он – не модуль. Он – ответственность.

Глава 1. Пользователь – первая уязвимость

В любой защищённой системе – с надёжными паролями, обновлёнными сертификатами, двухфакторной авторизацией, мониторингом сети и встроенной системой обнаружения вторжений – всегда есть одно слабое звено. Оно не обозначено в схеме инфраструктуры, не прописано в техдокументации и не проверяется при аудите. Но именно с него начинаются большинство атак. Это – человек, сидящий перед экраном. Тот самый пользователь, на которого в конечном счёте ложится ответственность за щелчок по вложению, ввод пароля на поддельной странице или игнорирование тревожного уведомления.

Взлом почти никогда не начинается с чего-то технически изощрённого. Он начинается с письма. С банального сообщения с темой вроде «Уточнение по документу» или «Изменения в зарплатном графике». С вложения, которое выглядит как безобидный PDF, но на самом деле – троян. С телефонного звонка от «службы поддержки» с вежливым голосом и убедительной просьбой подтвердить данные. Не сервер даёт сбой первым – первым ошибается человек. И этот сбой оказывается куда фатальнее технического.

Человеческий фактор – один из тех терминов, которые со временем утратили эмоциональный вес. Он звучит как нечто обыденное и почти нейтральное. Как если бы сбой был частью штатного процесса. Но за этими словами скрывается то, что и приводит к катастрофам: небрежность, усталость, рассеянность, гордость, пренебрежение, стремление сэкономить время, нежелание признать, что чего-то не знаешь. Никто не называет вещи своими именами, потому что так удобнее – оставить всё под мягким покрывалом «факторов». Только вот в реальности именно эти факторы становятся каналом проникновения в систему.

Можно инвестировать миллионы в корпоративную кибербезопасность, но один рассеянный клик – и вся система начинает рушиться. Не потому, что алгоритмы плохие, а потому что алгоритм человека не предсказуем. Он живой. У него бывают плохие дни, запарки, дедлайны и бессонные ночи. И в такие моменты он не думает в категориях угроз. Он просто торопится, он отвечает из вежливости, он считает, что «ничего страшного». Он не злоумышленник. Но он – врата.

Больше всего специалисты по безопасности боятся не внешних атак. Они боятся внутреннего доступа, который даёт сбой. Боятся секретаря, который отправляет файл не туда. Бухгалтера, который записал пароль на стикере. Техподдержку, которая забыла отключить VPN-сессию после настройки. Это не продуманные диверсии – это небрежность. И она работает на атакующего куда надёжнее, чем brute force. Потому что brute force требует времени и ресурсов. А человеческая ошибка – бесплатна. Её просто нужно дождаться.

Когда в 2017 году вирус WannaCry поразил сети по всему миру, пострадали не только старые незащищённые машины. Пострадали структуры с якобы надёжной защитой. Вирус не пробивал системы – он находил обходные пути через людей. Через тех, кто открыл вредоносный файл. Через тех, кто проигнорировал обновление. Через тех, кто посчитал, что это не его ответственность. И даже спустя годы, в ретроспективных отчётах, видно: виноваты были не только уязвимости в протоколах. Виноваты были уязвимости в головах.

Но самое интересное – даже не в том, как легко ломается система через человека. А в том, почему это происходит снова и снова. Мы продолжаем строить сложные архитектуры защиты, и при этом по-прежнему предполагаем, что пользователь будет действовать разумно, осознанно и дисциплинированно. Мы рассчитываем на идеального пользователя. На того, кто читал инструкции, прошёл курсы по кибергигиене, не открывает сомнительные письма, не доверяет звонкам, проверяет URL-адреса, использует менеджер паролей и вовремя сообщает об угрозах. Мы всё ещё проектируем безопасность под такого человека. Хотя такого человека почти не существует.

В реальности пользователи действуют иначе. Они используют один и тот же пароль для всего, потому что «так удобнее». Они не различают фишинговое письмо от настоящего, потому что «похоже». Они передают данные по телефону, потому что голос звучал вежливо и убедительно. Они забывают обновить систему, потому что «ещё не до этого». И не потому, что хотят нарушить правила. А потому что они живут. В рутине, в дедлайнах, в хаосе рабочих будней, в общей перегрузке. Они думают не о рисках, а о том, как закончить задачу и успеть домой. Они не злоумышленники. Но они делают то, чего от них ждёт злоумышленник.

Мы привыкли считать интерфейс – нейтральным. Он будто бы не несёт ответственности за действия человека. Но интерфейс, который не предупреждает, не останавливает, не объясняет – становится соучастником. Если письмо приходит без маркировки риска, если файл открывается без анализа, если система молчит, когда нужно бить тревогу – пользователь остаётся один на один с угрозой, к которой он не готов. И тогда происходит то, что происходит в тысячах организаций каждый год: один неверный клик – и дальше уже неважно, что было в бюджете на безопасность.

Обучение, конечно, важно. Но иллюзия, что курс по информационной гигиене раз в год решает проблему, – опасна. Люди забывают. Люди не применяют на практике то, что слышали на лекции. Люди учатся только тогда, когда система заставляет их задуматься в момент действия. Не потом. Не в теории. А прямо сейчас. Именно поэтому реальная защита должна проектироваться не вокруг технической логики, а вокруг человеческой. С учётом того, как человек ведёт себя, когда устал. Когда торопится. Когда доверяет. Когда думает, что «так будет быстрее». Именно тогда его поведение перестаёт быть рациональным – и именно тогда он становится идеальной точкой входа.

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

Взлом начинается не с первого байта, попавшего в сеть. Он начинается с момента, когда пользователь подумал, что всё под контролем. Когда он перестал сомневаться. Когда он поверил, что его действия – безопасны. Это и есть первая трещина. Именно туда и устремляется атака.

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

И, значит, если мы хотим надёжную инфраструктуру, нам нужно проектировать не вокруг машин. А вокруг людей.

Глава 2. Интерфейсы для мозга эпохи мамонтов

Человеческий мозг – продукт эпохи, которая закончилась задолго до появления первых интерфейсов. Он формировался в условиях, где информация передавалась голосом, решения принимались быстро, а угроза представляла собой не абстрактную цифровую схему, а хищника в кустах. В этом мире не было пиктограмм, вкладок, фреймов и всплывающих окон. Не было необходимости запоминать пароли, различать оттенки серого или кликать по правильной иконке, чтобы найти настройки Bluetooth. Наш мозг не создан для этого. Он не эволюционировал ради взаимодействия с интерфейсами. Он эволюционировал ради выживания. И сегодня он просто пытается справиться с реальностью, которая изменилась куда быстрее, чем он сам.

Каждый раз, когда мы сталкиваемся с новой программой, устройством или системой, мы оказываемся в ситуации, для которой наш мозг не имеет естественной стратегии. В природе не было кнопок «Сохранить» и «Отклонить», не было протоколов, инструкций и контекстных меню. Были реакция, инстинкт, опыт и привычка. Мы привыкли принимать решения на основе минимального количества информации. Привыкли судить по внешним признакам. Привыкли реагировать быстро, не тратя ресурсы на анализ, если можно обойтись интуицией. Всё, что выходило за рамки этого – считалось роскошью. Или, в условиях выживания, смертельной ошибкой.

Поэтому, когда нам показывают иконку, мы не анализируем её значение – мы узнаём её. Или не узнаём. Если узнаём – действуем. Если нет – игнорируем. Мы не читаем инструкции – потому что мозг настроен искать смысл, а не формулировки. Мы не вчитываемся в параметры – мы пробуем и смотрим, что получится. Именно по этой причине большинство пользователей учатся пользоваться интерфейсом не по мануалу, а методом проб и ошибок. Потому что так проще. Так ближе к естественному поведению.

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

Когда пользователь устал, мозг переходит в энергосберегающий режим. Это значит, что вместо медленного анализа включается быстрый инстинкт. Мы уже не думаем – мы реагируем. Мы ищем подсказки. Цвет, форма, расположение – всё, что может ускорить решение. Только вот проблема в том, что эти «подсказки» могут быть обманчивы. И если интерфейс сделан с предположением, что пользователь в фокусе и в ресурсе, – он подведёт. Потому что в реальности пользователь приходит к интерфейсу уставшим, отвлечённым, перегруженным. С телефоном в одной руке, кофе в другой и тысячей задач в голове. Он не в «боевом» режиме. Он в человеческом.

В этом контексте особенно важна тема цвета. Мы привыкли считать, что красный – это предупреждение, зелёный – подтверждение, синий – нейтральный. Но восприятие цвета – не универсально. Оно зависит от фона, от яркости экрана, от индивидуальных особенностей восприятия. И самое главное – от состояния человека. Уставший мозг перестаёт различать близкие оттенки. Он не видит разницы между чуть-чуть разными иконками. Он путает знакомое с похожим. Он делает выбор, который кажется «нормальным» – просто, потому что хочется поскорее завершить действие.

Это не глупость. Это биология. Так работает мозг, которому важно выжить, а не разобраться в логике приложения. Так работает тот самый мозг, который спасал нас в саванне и на стоянке у реки, но который теперь оказывается в ловушке цифрового лабиринта.

UX-дизайн сегодня – это не просто вопрос эстетики или удобства. Это борьба. Борьба с миллионами лет когнитивных искажений. С желанием мозга сэкономить усилие. С интуитивным стремлением действовать быстро, а неправильно. С усталостью, с отвлечённостью, с привычкой «делать по памяти». И именно поэтому хороший UX – не тот, что выглядит красиво, а тот, который предотвращает ошибку. Который понимает, как человек реально действует. Который создаёт среду, где интуитивное поведение не ведёт к катастрофе.

Плохой интерфейс – это интерфейс, который требует быть внимательным. Хороший интерфейс – тот, который позволяет быть рассеянным. Потому что именно таким человек и будет. Хотим мы того или нет.

Каждое подтверждение «Вы уверены?» – это признание того, что человек может не быть уверен. Каждое автоматическое сохранение – это допущение, что он забудет. Каждый шаг, который нельзя отменить, – это ловушка. Не потому, что человек не справится, а потому, что он может быть не в том состоянии, чтобы справиться. И если интерфейс не защищает от таких моментов – он не защищает вообще.

Разработчики привыкли говорить о пользовательском опыте как о чём-то поддающемся планированию. Но пользователь – не последовательный агент. Он импульсивен, он отвлекается, он ошибается. Он живой. Поэтому настоящий UX – это не про то, как провести пользователя по сценарию. А про то, как не дать ему сойти с ума, когда он от этого сценария отклоняется.

Мы всё ещё проектируем интерфейсы для людей будущего – собранных, внимательных, рациональных. А использовать их будут люди настоящего. Те, чей мозг до сих пор ищет тропу между деревьев. Те, для кого «красный значок» может быть не сигналом тревоги, а просто раздражающим пятном. Те, кто не будет читать инструкцию. И не потому, что не хочет. А потому что у него нет на это когнитивного бюджета.

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

Глава 3. Human override: «Кажется, система ошиблась»

Есть нечто почти трогательное в том, как мы, люди, умеем сомневаться в машинах. Мы создаём системы, способные контролировать траекторию полёта, следить за миллионами операций в секунду, предотвращать крушения и просчитывать поведение ветра за горизонтом. А потом – в самую критическую минуту – отодвигаем их в сторону. Потому что нам показалось, что они ошиблись.

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

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.