Se ho una chiave privata con cui firmo il codice byte e una chiave pubblica con la quale posso decifrare il codice firmato per verificarne l'autenticità, posso proteggere il codice byte da decodificare e modificare come segue:
- Costruito una macchina astratta per interpretare il codice byte in testo semplice.
- Applicare tecniche di generazione del codice a questo per essere in grado di generare una macchina unica per ciascun utente finale, abbinata a una chiave pubblica per quell'utente, in modo tale che il codice byte verifichi il codice byte come ogni istruzione viene eseguita. Cioè, il verificatore è intessuto nella macchina.
- L'interprete bytecode stesso viene sovrascritto in modo non reversibile, utilizzando la tecnica delle reti di Petri-net.
- Firma il bytecode per ciascun utente crittografandolo con una chiave segreta, univoco per l'utente ma non accessibile a lui.
Ora il bytecode può essere facilmente decrittografato da ciascun utente con la sua chiave, ma non possiede una copia della macchina in chiaro per eseguirlo.
Se gli utenti modificano il codice, non possono firmarlo per l'esecuzione sul computer che hanno, dal momento che non possiedono la chiave segreta necessaria per farlo.
Forse questa tecnica è già ampiamente conosciuta e in uso?
Si noti che questa domanda non riguarda se ciò rende assolutamente impossibile il reverse engineering, poiché capisco che nessuna tecnica sarà mai perfetta e che ci sono buone ragioni per farlo. Voglio sapere se questo sarebbe un deterrente pratico e una tecnica praticabile, se tali tecniche sono già state esplorate / screditate o se ciò è considerato ragionevolmente buono, rispetto ad altre tecniche di protezione.