Secondo me, ciò che stai proponendo è esattamente corretto. Svela solo ciò che è necessario.
Da un punto di vista della sicurezza se consideri un "attaccante" che prova ad imparare da perché la licenza è sbagliata il modo corretto di gestire la situazione è di non perdere informazioni . Ad esempio, se si tenta di "ottimizzare" l'esperienza dell'utente, essendo gentile e dicendo all'utente che "Sembra che la licenza sia valida, ma gli ultimi caratteri contengono un errore. Ricontrolla e riprova!" è molto ovvio che questo dia informazioni sull'attaccante che possono essere utilizzate per sconfiggere la procedura di licenza, in quanto è in grado di indovinare una licenza corretta.
A volte le possibili considerazioni sulla sicurezza non riguardano solo la protezione del proprio prodotto / servizio ma anche la sicurezza di quella dei tuoi clienti. Ad esempio, considera questo: ho concesso in licenza il tuo software con il mio nome utente + licenza. Ora, se il tuo software è abbastanza "gentile" da far sapere all'utente se il nome utente è errato o se il digest della licenza non è corretto, il software perde informazioni. Un utente malintenzionato potrebbe utilizzare questa funzione per determinare se io come il tuo cliente usa o quanto meno ha concesso in licenza il tuo software. Questo è un potenziale problema di sicurezza contro di me, il tuo cliente piuttosto che contro te o il tuo servizio. "Stranamente" abbastanza, qualcosa di simile ha portato al divorzio per le coppie sposate quando il sospetto è stato in grado di capire se il loro partner si è registrato su un sito di appuntamenti con la loro email personale.
Esistono anche altre forme di fuga di informazioni, ma sono attacchi ai canali laterali come la misurazione del consumo energetico o tempo necessario per verificare una determinata licenza e provare a modificarlo in modo che dando una licenza un po 'diversa produca informazioni di temporizzazione diverse e come tale possa eventualmente rivelare se le modifiche modificano la licenza di input verso una versione legittima o meno. Per contrastare tali attacchi di canale laterali è necessario essere in grado di creare una tale implementazione della misura di convalida della licenza che non perda queste informazioni. Ad esempio, la convalida richiede un tempo costante (con precisione di un nanosecondo, intendiamoci, quindi stiamo parlando della quantità esatta identica di cicli della CPU, ad esempio) indipendentemente dal fatto che la licenza data per la validazione sia valida o meno.