White Box криптография

Традиционно криптография предлагает средства для передачи конфиденциальной информации, делая ее неразборчивой для всех, кроме получателя сообщения. Криптография, которая использовалась в древние библейские времена, предполагала метод, при котором текст вручную заменялся в сообщении на “текст подмены” для сокрытия его исходного содержания. Много лет спустя, во время Второй мировой войны, криптография широко использовалась в электромеханических машинах (для примера машина Enigma). В настоящее время криптография становится все более распространенной, в значительной степени опираясь на вычислительную мощность компьютер и надежную математическую базу. Криптография, как следует из названия, пытается скрыть данные от злоумышленников, используя различные методы. Теоретически концепция звучит идеально, но реальный жизненный опыт доказал, что в игру вступает множество факторов и аспектов окружающей среды, которые негативно влияют на прочность криптографического алгоритма. Обычные средства не в состоянии обеспечить надёжное решение того, как реагировать на различные сценарии атак, пытающихся использовать присущие криптографии уязвимости. Профессор Питер Г. Нейманн, специалист в области информационной безопасности, говорил: «Если вы думаете, что криптография - это решение вашей проблемы, вы не знаете, в чем заключается ваша проблема». В этой статье рассматриваются традиционные методы криптографии, с акцентом на внедрении White Box шифрования.

В типичных реализациях DRM (Digital Rights Management - управление правами на электронные продукты), где криптографические алгоритмы являются частью решения по обеспечению безопасности, используется известный надежный алгоритм базирующийся на секретности криптографического ключа. Такое решение не подходит в большинстве случаев, поскольку платформы, на которых выполняются эти приложений, находятся под контролем потенциально враждебных конечных пользователей. Традиционное исходное предположение для криптографии - это Black Box надстройка (черный ящик), которая предполагает, что злоумышленник не имеет доступа к ключу шифрования, может контролировать только входные данные шифрования (открытый текст) и имеет доступ к полученным выходным данным (зашифрованный текст). Долгое время это считалось верным и для электронных устройств, таких как смарт-карты, но были разработаны злонамеренные атаки, использующие утечку информации из Black Box (такие как Differential Power Analysis - дифференциальные атаки по энергопотреблению), позволяющие хакерам получить секретные ключи, используемые внутри Black Box.

Необходимость White Box криптографии

Популярные криптографические алгоритмы, такие как симметричный алгоритм шифрования - AES, не предназначены для работы в средах, где можно наблюдать за их выполнением. На самом деле стандартные криптографические модели предполагают, что конечным точкам обработки информации нужно доверять. Если эти конечные точки находятся в потенциально враждебной среде, то криптографические ключи могут быть непосредственно видны злоумышленникам, отслеживающим выполнение приложения, и привести к попытке извлечь эти ключи, встроенные или созданные приложением, из памяти.

Это общая проблема для программ, работающих на компьютерах, мобильных устройствах, телевизионных приставках IPTV и другом оборудовании, использующем данные, защищённые DRM. Активно отслеживая стандартные криптографические API-интерфейсы или дампы памяти, хакеры могут извлекать криптографические ключи всякий раз, когда они используются. Один из примеров успешной атаки на извлечение ключей на основе памяти позволил инструменту BackupHDDVD скопировать содержимое защищенного DVD-диска и удалить DRM из защищенного мультимедийного содержимого.

Сложности создания White Box криптографии

Требование чтобы ценная информация, такая как данные о лицензировании и другие коммерческие тайны, должна быть скрыта при работе в полностью прозрачной среде, создает различные проблемы:
• Как зашифровать или дешифровать контент без непосредственного раскрытия криптографического ключа или данных?
• Как реализовать надежные механизмы шифрования, зная, что хакеры могут наблюдать или изменять код во время выполнения?

Традиционная Black Box криптография

Сценарий Black Box, являясь традиционной моделью, предполагает, что злоумышленник не имеет физического доступа к ключу (алгоритму, выполняющему шифрование или дешифрование), а может только наблюдать за внешней информацией и поведением. Эта информация состоит из открытого текста (входных данных) или зашифрованного текста (выходных данных). Система предполагая нулевую видимость выполнения кода и операций динамического шифрования, что может быть крайне редко достижимо на практике.
Криптография по методу черного ящика


Gray Box криптография

Сценарий Gray Box предполагает, что злоумышленник имеет частичный физический доступ к ключу или что есть «утечка» так называемой информации о побочном канале. Атаки по побочным каналам (SCA) используют информацию, просочившуюся из физической реализации криптографической системы. Утечка пассивно наблюдается через информацию о времени выполнения алгоритма, потреблении энергии, электромагнитном излучении и так далее. Защита от атак по побочным каналам важна, потому что атаки могут быть реализованы быстро и с низкими затратами. Публично доступная информация, получаемая по побочным каналам, позволяет хакерам эффективно раскрывать части ключа и, как следствие, резко снижать его криптографическую эффективность и общую надежность системы.

Gray Box криптография фактически является побочным продуктом традиционной реализации Black Box криптографии. Даже смарт-карты, воспринимаемые как устройства, способные обеспечить надежную защиту и выполняющие внутреннюю криптографию, в действительности пропускают информацию во внешний мир. Понятно, что сценарии, предполагаемые как Black Box, в действительности являются лишь частными случаями Gray Box криптографии.
Криптография по методу серого ящика


Концепция White Box криптографии

White Box криптография идет вразрез с вышеупомянутыми традиционными моделями безопасности. В отличие от предыдущих реализаций, когда злоумышленнику был предоставлен только Black Box, то есть доступ ко входным и выходным данным, а также к криптографическому алгоритму, подвергающемуся атаке, и он предполагал нулевую видимость внутренних операций, White Box вместо этого обеспечивает полную видимость. Криптографические методы White Box направлены на защиту программных реализаций криптографических алгоритмов от восстановления ключа, даже если злоумышленник имеет полный контроль над машиной, выполняющей шифрование, что особенно полезно в сфере DRM защиты.
Криптография по методу White Box


White Box криптография

Сценарий White Box, в отличие от ранее описанных сценариев, охватывает гораздо более серьезные угрозы, предполагая, что хакеры имеют полную видимость и контроль над всеми операциями в системе. Хакеры могут свободно наблюдать за динамическим выполнением кода (в котором используются экземпляры криптографических ключей), а детали внутреннего алгоритма полностью видны и могут изменяться по желанию. Несмотря на эту полностью прозрачную методологию, White Box криптография интегрирует шифрование таким образом, чтобы не раскрывать криптографические ключи. Очевидно, что алгоритмы, построенные для моделей как Black Box, так Gray Box, нецелесообразны в условиях работы в ненадежных средах. Хакеры не будут пытаться взломать шифр, используя только средства, доступные в сценариях Black Box и Gray Box, вместо этого они будут наблюдать за выполнением кода и при использовании незащищенного ключа получать к нему доступ. Традиционные алгоритмы криптографии, представленные в сценарии White Box, предполагают наличие ключа как неотъемлемой части реализации алгоритма. Алгоритм шифрования защищен в сценарии White Box, так как ключ шифрования отсутствует в памяти и не может быть извлечен, даже динамически. Поэтому выбор наиболее подходящей и наиболее безопасной криптографической модели является единственной линией защиты от злонамеренных угроз.

Методология реализации White Box

Как тогда можно надежно «спрятать» ключ в исполняемом коде, предполагая, что его можно полностью контролировать и изменять? Абстрактно это достигается путем объединения эффекта секретного ключа вместе с данными, специфичными для реализации и использованием математической операции, в которой гарантируется, что операцию практически невозможно инвертировать. В качестве примера, большой внутренний запас прочности асимметричного алгоритма RSA стал возможен благодаря простому перемножению больших простых целых чисел, так как инвертировать такую математическую операцию - это весьма сложная и ресурсоемкая задача (разложить конечный результат на его изначальные множители - простые целые числа). Кроме того, реализация алгоритма криптографии типа White Box может только шифровать или дешифровать данные. Реализация, как упоминалось ранее, основана на математической операции, которую чрезвычайно трудно инвертировать. Этот факт позволяет построить систему, которая работает аналогично полной схеме асимметричного шифрования (с открытым и закрытым ключами), но на уровне производительности гораздо ближе к стандартному симметричному шифру.

Функция дешифрования может быть реализована внутри приложения, но ключ не может быть извлечен, и дешифрование не может быть обращено вспять. Злоумышленник не имеет возможности создать правильные зашифрованные данные, которые были бы расшифрованы обратно корректно.

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

Решение проблемы

Хотя сценарий работы в полностью прозрачной среде считается непригодным для задач, связанных с безопасностью, White Box криптография перетасовывает все карты и обеспечивает высокозащищенный механизм для выполнения шифрования при работе в столь непростых условиях. И хотя операции шифрования и дешифрования полностью прозрачны, они позволяют обрабатывать конфиденциальные данные без раскрытия каких-либо частей ключа или самих данных. Кроме того, White Box криптография позволяет использовать надежные механизмы шифрования (в сочетании с другими методами), зная, что злоумышленники могут наблюдать за кодом во время его выполнения.

White Box в продуктах Gemalto

Защищенный канал связи, предоставляемый продуктами Gemalto Sentinel, гарантирует, что связь между защищенным приложением и аппаратным ключом защиты зашифрована и не может быть скомпрометирована. В отличие от предыдущей реализации, целью которой было скрыть ключ шифрования, новая реализация сосредоточена на White Box криптографии, где предполагается, что злоумышленник может отследить защищенное приложение и среду выполнения при поиске ключа шифрования. Принимая это предположение в качестве части проекта, алгоритм и ключи шифрования заменяются специальными библиотеками API конкретного поставщика, которые реализуют то же самое шифрование, но встраивают ключи шифрования как часть алгоритма таким образом, чтобы гарантировать, что они никогда не присутствует в памяти и, следовательно, не могут быть извлечены. Генерация специфичных для поставщика библиотек выполняется на серверах Gemalto с использованием многоуровневой системы обеспечения безопасности. Кроме того, каждая библиотека генерируется индивидуально и защищается (шифруется и обфусцируется) уникальным образом для каждого поставщика программного обеспечения, что делает практически невозможным общий взлом.

Gemalto является первым и единственным поставщиком, предложившим White Box криптографию как неотъемлемую часть своего портфеля решений Sentinel по монетизации программного обеспечения. Эта новая технология позволяет защищать криптографический ключ, а не разбивать его и открывать только фрагмент за раз. С точки зрения безопасности это гарантирует, что защищенный ключ остается скрытым от хакеров и, следовательно, не подвержен реконструкции во время потенциальной атаки.

White Box криптография является дополнительным важным компонентом, который позволяет разработчикам защищать свои приложения от обратного инжиниринга, взлома и создания эмуляторов. Методология White Box криптографии Gemalto интегрируется в процесс разработки программного обеспечения, позволяя внедрить дополнительный уровень защиты непосредственно на уровне исходного кода, что обеспечивает высокоэффективный подход к защите программного обеспечения.

Заключение

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

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


Дополнительные материалы для изучения:
1. Towards Security Notions for White box Cryptography https://cosic.esat.kuleuven.be/publications/article-1260.pdf
2. White box Cryptography: Formal Notions and (Im) possibility Results https://eprint.iacr.org/2008/273.pdf
3. White box (software engineering) on Wikipedia https://en.wikipedia.org/wiki/White_box_(software_engineering)
4. What is a white-box implementation of a cryptographic algorithm? https://crypto.stackexchange.com/questions/241/what-is-a-white-box-implementation-of-a-cryptographicalgorithm