Обфускация и шифрование весов модели

ONNX Runtime Web (ORT Web) предоставляет возможность запускать модели машинного обучения непосредственно в браузере на стороне клиента. Одной из важных задач при работе с моделями в веб-среде является защита интеллектуальной собственности: предотвращение несанкционированного доступа к весам модели и затруднение их обратного проектирования. Для этого применяются обфускация и шифрование весов модели.

Структура ONNX-модели и места для защиты

ONNX-модель представляет собой файл формата .onnx, содержащий:

  • Граф вычислений (Nodes и их связи).
  • Весовые параметры (tensors, представляющие обученные параметры сети).
  • Метаданные (информация о версиях, названиях входов и выходов, типах данных).

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

Методы обфускации весов

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

  1. Перемешивание и упаковка данных

    • Тензоры можно хранить в зашифрованной или закодированной форме, например, с использованием ArrayBuffer и последовательного применения побитовых операций XOR или сдвигов.
    • После загрузки в память происходит обратное преобразование, что позволяет модели использовать данные в исходном виде.
  2. Изменение структуры файла

    • Использование нестандартного порядка хранения весов или разбиение модели на несколько сегментов.
    • Комбинирование нескольких массивов данных в один и реконструкция на этапе инициализации.
  3. Псевдо-сжатие

    • Применение легкой компрессии с последующей декомпрессией в браузере (например, gzip, brotli) для усложнения прямого чтения бинарного файла.

Шифрование весов модели

Шифрование обеспечивает криптографическую защиту, при которой данные невозможно использовать без соответствующего ключа. На практике для ORT Web используют AES или ChaCha20:

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

Пример алгоритма шифрования и расшифровки:

// Расшифровка веса модели в браузере
async function decryptWeights(encryptedData, key, iv) {
    const cryptoKey = await crypto.subtle.importKey(
        "raw",
        key,
        { name: "AES-GCM" },
        false,
        ["decrypt"]
    );
    const decryptedBuffer = await crypto.subtle.decrypt(
        { name: "AES-GCM", iv },
        cryptoKey,
        encryptedData
    );
    return new Float32Array(decryptedBuffer);
}

Интеграция с ONNX Runtime Web

Для использования обфусцированных или зашифрованных весов с ORT Web необходимо:

  1. Загрузка и расшифровка

    • Модель хранится на сервере в зашифрованном виде.
    • Клиент загружает файл через fetch и применяет расшифровку и декодирование в ArrayBuffer.
  2. Создание сессии ORT

    • Используется ort.InferenceSession.create() с Uint8Array расшифрованных весов.
    • В случае модифицированной структуры файла необходимо предварительно реконструировать все тензоры перед передачей в ORT Web.
import * as ort from 'onnxruntime-web';

async function loadEncryptedModel(url, key, iv) {
    const response = await fetch(url);
    const encryptedData = await response.arrayBuffer();
    const weights = await decryptWeights(encryptedData, key, iv);
    
    // Создание сессии с использованием расшифрованных весов
    const session = await ort.InferenceSession.create(weights);
    return session;
}

Практические рекомендации

  • Обфускация и шифрование не должны сильно замедлять загрузку и выполнение модели, особенно при больших размерах тензоров. Используются легкие методы компрессии и быстрое шифрование.
  • Для повышения безопасности ключи шифрования не должны храниться в коде. Можно применять динамическую генерацию ключей или серверное распределение через безопасный протокол HTTPS.
  • В случае модификации весов важно корректно восстанавливать формат и порядок данных, чтобы не нарушить совместимость с ONNX Runtime Web.

Примеры использования

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

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