I file di gioco crittografati potrebbero impedire modifiche indesiderate?

-1

Per quanto riguarda la mia comprensione di base, quando crittografate i file, avrete bisogno della chiave privata per accedervi e leggerli. Penso che Unreal Engine 4 lo faccia usando i file .pak e la chiave privata sia archiviata da qualche parte? Ho provato a leggere file da giochi come Fortnite e sembra impossibile senza la chiave.

Quindi le altre mie domande sono:

  1. Questo garantirebbe che i giocatori non possano modificare file di gioco e script?
  2. Se fosse così sarebbe possibile farlo per un principiante come me, e se si usa Unity?
posta Bureto 23.06.2018 - 20:55
fonte

1 risposta

3

La crittografia non è l'autenticazione.

La protezione del contenuto di un file dalla lettura e la protezione del contenuto di un file dalla modifica sono due attività separate. Ciò è particolarmente evidente quando si cerca di proteggere il contenuto dei file del gioco - il gioco deve decrittografarli, quindi deve avere il segreto ... il che significa che l'utente, che ha il controllo totale sulla propria macchina, ha anche il segreto ! Anche ignorandolo, i file devono ancora essere caricati in memoria senza crittografia su alcuni punti, quindi i dati possono essere visti.

L'autenticazione, d'altra parte, potrebbe essere fatta firmando i file del gioco con una chiave privata (che non lascia mai le grinfie dello sviluppatore), e poi verificandoli con una chiave pubblica (che è distribuita insieme al gioco).

Ora un avversario che può vedere tutto non è in grado di modificare i file del gioco. Non hanno nemmeno bisogno di essere crittografati; qualsiasi modifica causerà l'annullamento della firma.

... Sfortunatamente, naturalmente, l'utente finale può semplicemente risolvere la routine che verifica i file di gioco in primo luogo.

Questo diventa un gioco di gatto e topo. In definitiva, è una battaglia persa per lo sviluppatore; è come cercare di tenere fuori i ladri chiedendo loro molto gentilmente di stare alla larga.

Che cosa fare?

Il cliente è totalmente inaffidabile. Il cliente può mentire, imbrogliare e rubare finché le mucche non tornano a casa. Se la logica del tuo gioco vive sul lato del client, la logica del gioco può essere sovvertita.

D'altra parte, se il tuo gioco è ospitato su un controllo di tuo , hai un po 'di potere. Puoi decidere "hey, JimBob si è appena spostato di cinquanta miglia in due secondi, forse non è giusto". Il cliente può ancora essere un orrendo bugiardo e abusa ancora di informazioni che non dovrebbero avere (come vedere i nemici attraverso i muri), ma puoi almeno verificare che le loro azioni siano valide.

Lo stesso inquilino si trova in tutti i posti. Gli sviluppatori Web convalidano l'input ogni , anche se l'interfaccia utente non ti consente di dire che hai anni di patata.

Quindi, alla fine della giornata, fidati del client il meno possibile .

    
risposta data 23.06.2018 - 22:48
fonte

Leggi altre domande sui tag