Несмотря на отдельные недоразумения, виной которым, откровенно говоря, более человек, чем техника, популяризация автомобиля с частичным и полным самоуправлением продолжается. И на очередной воображаемой ступени, куда мы взобрались, стало модным винить их в чрезмерной осторожности. Люди, сидевшие, например, в гугловских робокарах, как и имевшие удовольствие встретиться с ними на настоящих дорогах, сетуют, что (цитирую) «робокар водит как бабуля». Он следует правилам до последней точки — и это, бывает, ставит его когда в смешные, а когда и опасные ситуации. Ну, вроде той, о которой все наверняка недавно слышали, о парализованном гуглокаре, вставшем на одном перекрёстке с велосипедом: велосипедист балансировал на месте, но — смеха ради! — подвигался на сантиметр всякий раз, когда и робокар намеревался двинуться, и тем заставлял «глупую железку» прекращать движение.
Так что в смысле соблюдения правил самоуправляемый автомобиль непревзойдён. Но, как теперь выясняется, на дорогах очень важно учитывать ещё и правила неписаные, то есть культуру поведения водителей, которая часто меняется от региона к региону. Живому водителю важность этого объяснять не требуется. Он по опыту знает, что, к примеру, манера проезжать светофоры в крупных городах отличается от городов небольших, что машины, припаркованные на краю дороги, вовсе не обязательно будут стоять идеально ровно, что, в зависимости от настроения, человек может подъехать к стоящему перекрёстку аккуратно, а может и на полном ходу, ударив по тормозам только в крайний момент.
А вот робокар таких отклонений не понимает и буквально пугается. Опыт эксплуатации гугловских робоавто, в частности, показал, что в последнем из приведённых примеров робокар может резко двинуть на обочину, стремясь избежать неминуемого (на его взгляд) удара сзади. Вот почему в западных СМИ в последние недели открытым текстом звучит предложение дать робоавтомобилю больше свободы, научить его быть агрессивным и в меру неправильным: это, как ни парадоксально, должно сделать его более безопасным.
Но вот какая засада: чем дальше, тем очевидней, что желание «развязать» робокару «руки» входит в противоречие с перспективой злоумышленных действий со стороны окружающих. Робокар — «умная» вещь, а на всякую такую вещь, как показывает печальный опыт интернет-подключенных бытовых устройств, найдётся не один желающий её сломать. И речь не только о классической атаке на бортовой компьютер. На днях для робоавто обозначился свой, уникальный вектор атак, направленный на самый важный и самый же до сих пор уязвимый его элемент: на его глаза — лидар.
Лидар, если попросту, это лазерный радар. Он так же освещает пространство перед собой, принимает отражённый сигнал и по задержке судит о дистанции до объектов. На деле, конечно, всё сложней: используется не один, а несколько лазеров разных цветов (что позволяет составить суждение о сканируемой поверхности), лазеры часто сочетаются с хитрым механическим устройством и зеркалами для кругового обзора (хоть последние разработки и упрощают механическую часть, удешевляя весь комплекс почти на порядок), лазер действует не постоянно, а импульсами и т.д. Но в общем и целом лидар остаётся дорогим и необходимым элементом самоуправляемой повозки — ибо ничто другое не позволяет строить карту прилегающего пространства так же быстро и с такой точностью.
И вот что важно: никто пока не задумывался о защите лидаров от несанкционированного использования, просто потому, что сама технология пока ещё слишком молода. И это не моё мнение. Так считает ирландец Джонатан Петит, обещающий изложить на ноябрьской конференции Black Hat Europe свою работу, посвящённую обману лидара.
Вы, конечно, помните, как в детстве пускали солнечных зайчиков в проезжающие автомобили. Петит использовал ту же идею. Он взял дешёвый лазер (чуть ли не от лазерной указки), оснастил его таким же дешёвым блоком цифрового управления, позволяющим точно выдержать частоту и порядок импульсов (он говорит, что в качестве контроллера идеально подойдут Raspberry Pi или Arduino), и — направил на робокар. Поскольку тот видит мир через лазерные отражения, то, сгенерировав импульсы того же цвета и с нужной частотой следования, можно не просто ослепить машину как человека, а и заставить видеть то, чего на самом деле не существует: препятствия на дороге! Играя с лазером, можно симулировать «отражение» человека, другого автомобиля, стены, на разных расстояниях, неподвижные или движущиеся с любой скоростью.
Петит, правда, экспериментировал не на настоящем робоавтомобиле, а на отдельно взятом лидаре (IBEO). Но этого достаточно, уверяет он (а работу он проводил как научную, при университете), чтобы проделать то же самое с любым другим лидаром из имеющихся на рынке: их производители пока попросту не озадачились проблемой чёрного хака. «Узрев» в двадцати метрах перед собой внезапно выросшую стену, робокар не станет задумываться, откуда она взялась, а ударит по тормозам и, возможно, попытается сместиться в сторону. Легко представить, чем это чревато для пассажиров робоавто и других участников движения.
Вопрос, можно ли защититься от такой атаки, напрашивается сам собой — но ответ на него и порадует и расстроит вас одновременно. Схема защиты очевидна: формировать лазерные импульсы особого типа и принимать только их. Модулировать можно цветом, длительностью, задержкой между импульсами. Лучше всего даже не просто генерировать всегда одну и ту же последовательность, а шифровать её стойким криптоалгоритмом. Тогда злоумышленнику не удастся или по крайней мере будет очень сложно симулировать отражения. К сожалению, сложно — не значит невозможно. Код можно украсть или подобрать, а ещё лидар всегда можно попробовать грубо ослепить (аналог атаки DoS). То есть гарантии не будет, всё снова сведётся к противостоянию щита и меча.
И в свете такой перспективы — задайтесь ещё раз вопросом: а хорошая ли это идея, дать робокару больше самостоятельности, научить его быть агрессивным? Сто лошадиных сил с мозгом котёнка и без упряжки — хорошая идея?
P.S. В статье использованы иллюстрации Google, Steve Jurvetson.