На проходившей не так давно в Гамбурге конференции Chaos Communication Congress два IT-эксперта — Феликс Домке и Даниель Ланге (бывший глава отдела IT-стратегии в BMW) прочитали доклад о том, в чем состояло и как было реализовано жульничество с результатами экологических тестов дизельных автомобилей Volkswagen.
За последние несколько месяцев на тему «Дизельгейта» в различных изданиях вышла масса публикаций. Однако в большинстве случаев они не позволяли понять, что же в действительности произошло: как именно работал обман и кто ответственен за его реализацию. Поэтому настолько интересно посмотреть на исследование, проведенное независимыми экспертами, которые попытались докопаться до истины.
Почему вообще эти тесты можно обмануть?
Самая большая проблема тестов на содержание выхлопа автомобилей состоит в том, что они всегда проводятся с использованием одной из стандартных искусственных моделей. Например, в Европе все тестируется в так называемом NEDC (New European Driving Cycle).
Эта модель состоит из нескольких коротких циклов разгона-торможения и одного длинного, с более высокими скоростями. Первая часть изображает городское движение, вторая — движение по шоссе. В реальной жизни никто так не ездит, и уж совершенно точно никто не ездит именно так.
Однако для тестов всегда используется одна и та же модель, и инженеры в автомобильных компаниях могут применять те или иные трюки, чтобы улучшить результаты. Почему они так делают? Все очень просто: потому что это дешевле, чем реально что-то улучшать. А если у большой корпорации есть возможность сделать что-то более дешевым способом, то она обязательно выберет именно его — просто так работает бизнес.
«Жульничество в этих тестах — обычное дело, — рассказывает Даниель Ланге. — Какие трюки используют инженеры, чтобы улучшить показатели? Например, они поднимают давление в шинах на три атмосферы выше, чем их накачивают в реальной жизни. Шина практически не сминается даже под весом автомобиля, пятно контакта с поверхностью становится минимальным, и это позволяет снизить потери на трение».
«Они добавляют дизель в моторное масло, что опять-таки позволяет снизить трение. Они убирают боковое зеркало на пассажирской стороне, поскольку в требованиях не прописано, что оно должно там быть. Это позволяет снизить сопротивление воздуха. Они заклеивают скотчем все щели, чтобы воздух лучше обтекал кузов автомобиля, и тем самым опять-таки снижают сопротивление. И все эти вещи либо считаются нормальными, либо находятся где-то на границе приемлемости. И они делают это — вот так на самом деле проводятся экологические тесты», — рассказывает Ланге.
Результат всех подобных трюков очень прост: измеренные величины не имеют практически ничего общего с тем, что происходит в реальной жизни. И об этом прекрасно знает вся автоиндустрия. Возможно, все производители используют точно такие же программные трюки, какие использовал Volkswagen. Например, 15 лет назад BMW попалась на использовании очень похожего жульничества в одной из моделей мотоциклов.
Но как именно работают такие программные фокусы? Чтобы это понять, нам придется уделить некоторое время исследованию того, как работают электронные системы автомобилей.
Что внутри ящика машины?
Электронное устройство, напрямую отвечающее за все, что происходит с двигателем автомобиля, в том числе и с его выхлопной системой, называется Engine Control Unit (ECU). В России эту штуку нередко именуют «мозгами», и, пожалуй, весьма метко — это действительно сложное и критичное для работы автомобиля устройство.
Автомобильные компании сами не производят ECU, они закупают их у других корпораций, которые специализируются на подобной электронике. Производителей ECU не так много, и если говорить о Германии, то лидером рынка, безусловно, является Bosch.
«Возможно, Volkswagen не умрёт»: что может случиться с компанией из-за скандала с занижением данных о выхлопах https://t.co/4ac9wfPnzL
— TJ (@tjournal) September 23, 2015
Прошивка ECU также всегда разрабатывается не автомобильной компанией, а производителем этой непростой электроники. И поскольку это весьма важное устройство, код прошивки всегда проверяется и перепроверяется максимально тщательно.
Ланге говорит: «Работа этой штуки постоянно симулируется и тестируется, до потери пульса. Потому что это действительно крайне важно. Потому что код управляет машиной мощностью 200 лошадиных сил, и если что-то пойдет не так, то все это может взорваться, и взорваться очень мощно. Так что прошивка ECU — это один из наиболее тщательно протестированных кусков кода, какие вы когда-либо встретите».
Котировки Volkswagen обрушились уже больше чем на 20% из-за экологического скандала http://t.co/WpCsz71LFn
— Ведомости (@Vedomosti) September 21, 2015
Автомобильные компании не имеют возможности менять прошивку ECU сами. В то же время одинаковые или очень похожие ECU могут использоваться различными автопроизводителями в самых разных моделях автомобилей и двигателей. И для того чтобы ECU были совместимы с разными машинами, прошивка должна быть настраиваемой. Для этого производители ECU используют переменные, которые автопроизводители задают так, чтобы устройство правильно работало с той или иной моделью автомобиля.
К примеру, в прошивке Bosch EDC17C46, одной из моделей ECU, использовавшихся в автомобилях, которые участвовали в «Дизельгейте», таких переменных порядка 20 тыс. Если бы эту кучу ползунков и переключателей можно было каким-то образом материализовать, это определенно был бы самый большой пульт управления в мире.
Подведем итоги: жульнические функции в программной прошивке ECU не могут быть разработаны самим автопроизводителем, они делаются поставщиком электроники по запросу автомобильной компании. И поскольку все подобные модификации оставляют по-настоящему длинный «бумажный след», поставщики, вероятно, предупреждают автопроизводителей о том, что подобные трюки незаконны.
Соответственно, финальное решение остается за производителем автомобилей: чтобы воспользоваться мошеннической функцией, инженерам автомобильной компании надо определенным образом задать некоторые из вышеупомянутых переменных. Но как именно все это работает?
Правда — в коде
Чтобы установить это, Феликс Домке для собственного Volkswagen Sharan (подпадающего под отзыв VW) приобрел на eBay запасной блок ECU и изучил, как же это устройство работает. Для начала он использовал аппаратную уязвимость в чипе ECU, чтобы извлечь 2-мегабайтную прошивку из его флеш-памяти. Это дало ему неплохое понимание того, насколько сложно устроены процессы в автомобильной электронике.
К примеру, оказалось, что даже такая незамысловатая штука, как тахометр, вовсе не показывает количество оборотов двигателя в минуту напрямую. То, что выводится на тахометр, на самом деле зависит от показаний более чем двух десятков различных датчиков и обрабатывается 12 Кб весьма насыщенного кода (если что, это очень много кода).
«На этом этапе отлично осознаешь, что внутри данного устройства может происходить сколько угодно жульничества и никто этого не заметит, — говорит Домке. — После этого ты уже не веришь, что спидометр в твоей машине показывает реальную скорость. Он показывает что-то, связанное со скоростью».
Часть прошивки, отвечающая за работу выхлопной системы, еще более сложная и гибко настраиваемая. Однако идея, которая лежит в основе снижения концентрации оксидов азота в выхлопных газах, на самом деле довольно проста. Для того чтобы очистить выхлоп от NOx, в него надо добавить вещество, которое называется мочевина (VW придумал для него название AdBlue). Под действием высокой температуры это вещество превращается в аммиак, реагирует с оксидами азота, а на выходе получаются восхитительно безвредные азот и вода.
Однако если добавить слишком много мочевины, то избыток аммиака останется в выхлопе. И это не очень хорошо как для людей, так и для автомобиля. Поэтому в нормальной ситуации лучше «недосолить», чем «пересолить» (конечно, лучше всего отмерить точное количество вещества, но это не так-то просто сделать). Проблема в том, что при «недосоле» результаты экологических тестов будут не очень хорошие. И вот поэтому-то автопроизводителям и приходится хитрить.
Вот как работал данный трюк в случае Volkswagen. В коде прошивки, ответственном за работу выхлопа, были предусмотрены два режима работы: стандартный, в котором дозировка мочевины была весьма щедрой, и альтернативный, в котором вещества добавлялось недостаточно много. Как выяснил Домке, 75% времени его автомобиль работал в альтернативном режиме, и почти все оставшееся время мочевина не добавлялась вовсе.
Анализ кода прошивки показал, что условия для перехода в стандартный режим (а они редко, но все же достигались) помимо всяких простых вещей вроде определенной температуры и давления двигателя и топлива включали еще один интересный критерий. Стандартный режим включался, если график пройденного автомобилем расстояния в зависимости от времени попадал между двумя кривыми, определяющими некие минимум и максимум.
#Исследование #Дизельгейта: на #32C3 хакеры рассказывают, что же именно произошло с вредными выбросами дизельных двигателей
Tweet
Забавно, но, как оказалось, одна из пар этих кривых была задана таким образом, чтобы между ними очень аккуратно попадал соответствующий график при работе в упомянутой в начале этой статьи тестовой модели New European Driving Cycle. В этом случае программа включала стандартный режим работы, мочевина добавлялась щедро, и концентрация оксидов азота в выхлопе оказывалась настолько низкой, что двигатель удовлетворял весьма жестким европейским стандартам. Это, собственно, и есть основная идея мошенничества с прошивкой, которое делал Volkswagen.
Из всей этой истории можно сделать целую кучу разных выводов, но есть один, который может быть особенно интересен для представителей IT-сферы. Цифровые технологии становятся все более и более важными для нашего мира, и тем самым они делают тех людей, которые с ними связаны, все более влиятельными и более важными для компаний.
С одной стороны, такие люди могут помочь обмануть систему тестов и замаскировать какой-то недостаток в том или ином продукте. С другой стороны, они также могут обнаружить трюки и фокусы, как это сделали двое исследователей в случае с «Дизельгейтом».