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
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.gdkeydovrebbe 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.
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"
set SCRIPT_AES256_ENCRYPTION_KEY=your_generated_key
$env:SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"Compile Godot export templates and set them as custom export templates in the export preset options.
Imposta la chiave di crittografia nella scheda Crittografia della preimpostazione di esportazione:
Aggiungi filtri per i file o cartelle da crittografare. Come predefinito, i filtri di inclusione sono vuoti e nulla verrà crittografato.
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