Compilazione con chiave di crittografia PCK

La finestra di dialogo di esportazione offre la possibilità di crittografare il file PCK con una chiave AES a 256 bit quando si rilascia il progetto. Ciò garantirà che scene, script e altre risorse non siano archiviati in testo semplice e non si possano facilmente copiare da qualche script kiddie.

Naturalmente, la chiave deve essere memorizzata nel binario, ma se è compilata, ottimizzata e senza simboli, ci vorrebbe un certo sforzo per trovarla.

Affinché questo funzioni, è necessario creare i modelli di esportazione dalla sorgente, con la stessa chiave.

Avvertimento

Questo non funzionerà se si utilizzano modelli di esportazione ufficiali precompilati. È assolutamente necessario compilare i propri modelli di esportazione per utilizzare la crittografia PCK.

Passo dopo passo

  1. Generare una chiave AES a 256 bit in formato esadecimale. È possibile utilizzare la variante aes-256-cbc da questo servizio.

    In alternativa, si può generare manualmente attraverso gli strumenti da riga di comando OpenSSL:

    openssl rand -hex 32 > godot.gdkey
    

    L'output in godot.gdkey dovrebbe essere simile a:

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

    È possibile generare la chiave senza reindirizzare l'output a un file, ma in questo modo si riduce al minimo il rischio di esporre la chiave.

  2. Impostare questa chiave come variabile d'ambiente nella console che sarà utilizzata per compilare Godot, in questo modo:

    export SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
    
  3. Compile Godot export templates and set them as custom export templates in the export preset options.

  4. Imposta la chiave di crittografia nella scheda Crittografia della preimpostazione di esportazione:

    ../../../_images/encryption_key.png
  5. Aggiungi filtri per i file o cartelle da crittografare. Come predefinito, i filtri di inclusione sono vuoti e nulla verrà crittografato.

  6. Esportare il progetto. Il progetto dovrebbe ora essere eseguito con i file crittografati.

Risoluzione dei problemi

Se si verifica un errore come quello seguente, significa che la chiave non è stata inclusa correttamente nella build di Godot. Godot sta crittografando il file PCK durante l'esportazione, ma non riesce a leggerlo durante l'esecuzione.

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