Выбрать главу

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

Система фирмы Canon была тотально скомпрометирована специалистами ЭлкомСофта ещё в ноябре прошлого года. Теперь же очередь дошла до Nikon, так что с подробностями о деталях проведённого анализа удобнее рассказать на этом, совсем свежем примере.

В случае системы Nikon, как показали исследования ЭлкомСофта, собственно данные снимка и сопровождающие его метаданные обрабатываются независимо — как два отдельных файла — и прогоняются через хеш-функцию SHA-1. Получаемые на выходе два стошестидесятибитных хеш-значения затем шифруются с помощью секретного ключа по стандартному алгоритму RSA-1024, в результате чего генерируется цифровая сигнатура снимка, составленная из двух частей. То есть на самом деле вычисляются две подписи длиной по 1024 бита (128 байт), которые добавляются в служебную часть файла (EXIF MakerNote tag 0×0097), в раздел параметров цветового баланса.

Впоследствии, когда подлинность фотоснимка Nikon проверяют с помощью фирменной программы Image Authentication Software, то эта программа сама вычисляет два хеш-значения SHA-1, как это делалось и в фотоаппарате. А затем с помощью известного открытого ключа программа расшифровывает те две сигнатуры, что хранятся для проверки в файле. Если фотография подлинная, то вычисленные программой хеши и значения, расшифрованные из снимка, должны полностью совпасть. Если же совпадения нет, значит, фотография подвергалась манипуляциям.

То есть в теории, казалось бы, обеспечена достаточно простая и при этом эффективно защищённая проверка. Однако на практике, увы, всё получилось не так красиво.

Фатальной уязвимостью системы стало то, что секретный криптографический ключ, хранимый внутри фотокамеры и используемый для формирования сигнатур снимков, не защищён должным образом. По этой причине аналитики ЭлкомСофта (а значит, и всякие грамотные злоумышленники) могут его выявлять в памяти аппарата, извлекать и далее использовать для фальсификации. Попросту говоря, при наличии такого секретного ключа уже нет никаких проблем с генерацией абсолютно валидных цифровых сигнатур для как угодно видоизменённых фотографий. А это соответственно означает, что система защиты Nikon Image Authentication System полностью скомпрометирована и никакого доверия к ней — в её нынешнем виде — быть не может...

Когда эту унылую новость стали обсуждать в околокриптографических блогах и форумах, то один из основополагающих (и довольно наивных) вопросов звучал примерно так: "Ну а в принципе возможно ли вообще надёжно и безопасно реализовать всё это дело как-то иначе, без хитростей типа «безопасность через неясность»? Ведь секретный ключ в любом случае должен быть каким-то образом доступен для фотокамеры, а если это так, то его соответственно можно и считывать из оперативной памяти или откуда-то ещё?"

Лучше всего, наверное, на этот резонный вопрос ответил один из компетентных зарубежных читателей [англоязычного] блога ЭлкомСофта. По его мнению, произошедшее с Canon и Nikon — это то самое, что обычно получается в ситуациях, когда далёкие от защиты информации компании пытаются реализовать криптографию собственными силами. Тогда как «в данной ситуации недорогим и куда более эффективным решением задачи было бы встраивание в фотокамеру стандартного порта ISO-7816 ID-000, в народе больше известного как слот SIM-карты в мобильных телефонах. На основе такой карточки легко и просто можно реализовать давно проверенный криптостандарт для применения асимметричных схем с секретным-открытым ключом (например, стандарт PKCS#11)».