To top
Products Products

Шифрование с помощью алгоритма «Blurry Box»

Поделиться

Принцип Керкгоффса

Auguste Kerckhoffs

Auguste Kerckhoffs
Image Source: Wikipedia.org

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

Компания Wibu-Systems придерживалась этого принципа на протяжении многих лет. В сравнении с другими существующими на рынке аппаратными ключами, которые работали на основе проприетарных алгоритмов, ключи Wibu-Systems уже поддерживали открытый алгоритм FEAL. Он был опубликован в документации WibuBox еще в 1992, когда были выпущены WibuKey. В то время как некоторые неопубликованные системы были скомпрометированы на ранних этапах, ключи WibuKey долгое время не поддавались атакам, пока длина ключа в 40 бит не стала слишком мала. Текущая версия ключей WibuBox использует 64-битные ключи. Они так и не были взломаны. В 2003 году были выпущены ключи CodeMeter с поддержкой алгоритма AES и длиной ключа 128 бит. Эти ключи и по сей день остаются устойчивыми ко взлому.

Концепция

Существует так называемый принцип «Безопасность через неясность» (Security by Obscurity). Его основная идея в том, чтобы использовать никому неизвестные внутренние процессы и алгоритмы в рамках конкретной системы. Это противоречит основному принципу Киркгоффса. Закрытые алгоритмы нельзя протестировать или сравнить с другими. В свою очередь, Wibu-Systems предлагает возможность обсудить методы и функциональность пакета разработчика CodeMeter во время проводимых мероприятий.

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

Основной принцип Blurry Box заключается в двух ключевых моментах: использование одного или нескольких секретных (закрытых) ключей и факта того, что программное обеспечение зачастую является сложным. Цель – сделать так, чтобы взлом программного обеспечения (ПО) занимал больше времени, чем написание кода с нуля.

Методы

Blurry Box включает в себя семь алгоритмов (механизмов защиты), которые значительно увеличат время и количество усилий, необходимых для взлома ПО. Это приведет к тому, что будет проще заново разработать приложение.  

Images shows the seven methods of Blurry Box

Создание вариантов

Чтобы увеличить сложность ПО, его функции должны иметь различные варианты исполнения. Интерфейсная функция (wrapper function) выбирает вариант для запуска, используя заданные входные параметры.

Изменение вариантов

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

Шифрование вариантов

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

Применение ловушек

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

Выбор варианта в ключе

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

Проверка состояний в ключе

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

Задержка расшифрования

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

Заключение

Алгоритм Blurry Box использует семь открытых методов, которые значительно увеличивают сложность и время, необходимые для совершения атаки. В конце концов, для потенциального злоумышленника будет проще и дешевле разработать подобное программное обеспечение с нуля.

Алгоритм Blurry Box может быть скомбинирован с антиотладочными и методами обфускации из пакета разработчика CodeMeter. Blurry Box значительно увеличивает уровень защиты программного обеспечения, больше нет нужды использовать слепое доверие. Вы можете приобрести решение, которое прошло многоуровневые проверки и применяется экспертами в данной области.