Crittografia / occultamento chiave

0

Ho ottenuto un programma GUI, che carica la logica da un server web se la chiave di licenza inserita è valida.

La stringa di connessione effettiva I hexed e xor 'd con una chiave segreta . (che è sfortunatamente statico) Lo stesso Webservice autentica SASLandSCRAM-SHA-1

Per Clearification:

Person A non vuole comprare una licenza. Quindi prova a decodificarlo:

  • Immette la chiave falso casuale - nessun dato dal servizio Web.

A mio avviso, l'unica possibilità di bruteforce in realtà è di crackare la chiave segreta. Il mio pensiero stava creando uno dinamicamente. Oltre a ciò, quali altri approcci ci sono?

    
posta 0x45 06.12.2018 - 11:31
fonte

1 risposta

0

Questo non è un approccio sicuro.

Per utilizzare la stringa di connessione, il client deve decodificarlo. Per decifrarlo, deve avere il possesso della chiave segreta, almeno temporaneamente. Durante questo periodo, un hacker può eseguire il debug del programma ed estrarre la chiave dalla memoria. Per questo motivo, una chiave segreta globale non dovrebbe mai lasciare il tuo centro dati.

Un approccio più tipico sarebbe quello di emettere un codice di licenza difficile da indovinare e semplicemente memorizzarlo sul server. Il chiamante dovrebbe inviare il codice insieme alla richiesta di utilizzare il servizio e il servizio verificherà che sia valido. Se si scopre che il codice è stato compromesso (ad esempio condiviso), puoi semplicemente rimuoverlo dal server.

Un approccio meno centralizzato sarebbe quello di emettere un documento di licenza (ad esempio un file XML) e firmarlo digitalmente prima di fornirlo al cliente. In questo modo il client o altri client potrebbero convalidare la licenza indipendentemente dal server (e ovviamente il server può ancora convalidarlo).

    
risposta data 06.12.2018 - 22:02
fonte