Компиляция с ключом шифрования PCK

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

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

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

Предупреждение

Это не сработает, если вы используете официальные, предварительно скомпилированные шаблоны экспорта. Для использования шифрования PCK абсолютно необходимо скомпилировать собственные шаблоны экспорта.

Шаг за шагом

  1. Сгенерируйте 256-битный ключ AES в шестнадцатеричном формате. Вы можете использовать вариант aes-256-cbc из этой службы.

    Кроме того, вы можете сгенерировать его самостоятельно, используя OpenSSL инструменты командной строки:

    openssl rand -hex 32 > godot.gdkey
    

    Вывод в godot.gdkey должен быть похож на:

    # NOTE: Do not use the key below! Generate your own key instead.
    aeb1bc56aaf580cc31784e9c41551e9ed976ecba10d315db591e749f3f64890f
    

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

  2. Установите этот ключ как переменную среды в консоли, которую вы будете использовать для компиляции Godot, например так:

    export SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
    
  3. Скомпилируйте шаблоны экспорта Godot и установите их в качестве пользовательских шаблонов экспорта в параметрах предустановок экспорта.

  4. Установите ключ шифрования на вкладке Encryption предустановки экспорта:

    ../../../_images/encryption_key.png
  5. Добавьте фильтры для файлов/папок, которые нужно зашифровать. По умолчанию фильтры включения пусты и ничего не будет зашифровано.

  6. Экспортируйте проект. Теперь проект должен запуститься с зашифрованными файлами.

Устранение неполадок

Если вы получили ошибку, подобную приведённой ниже, это означает, что ключ не был корректно включён в вашу сборку Godot. Godot шифрует файл PCK во время экспорта, но не может прочитать его во время выполнения.

ERROR: open_and_parse: Condition "String::md5(md5.digest) != String::md5(md5d)" is true. Returning: ERR_FILE_CORRUPT
   At: core/io/file_access_encrypted.cpp:103