Lavorando con Excel capita spesso di dover creare macro, utilizzare funzioni all'interno delle celle o scrivere codice VBA che implementi particolari funzioni non presenti tra quelle proposte di default o comunque specifiche del proprio lavoro.
Con l'architettura proposta è possibile proteggere il proprio lavoro in modo che tali funzionalità non possano essere eseguite senza la presenta di un dispositivo xCore: sarà infatti il device ad eseguire parti importanti delle funzioni scritte in VBA.
Nell'esempio descritto di seguito viene mostrato quanto sia semplice e nel contempo quanto sia elevata la protezione raggiungibile proprio grazie al fatto che, in assenza del dispositivo, mancherebbero proprio le funzioni implementate.
Consideriamo la somma del contenuto di due celle: normalmente utilizzeremmo la funzione SOMMA(). Volendo ad esempio sommare le celle A1 ed A2 e mettere il risultato nella cella A5, dovremo scrivere =SOMMA(A1;A2) nella cella A5 (cfr. immagine seguente). Scrivendo poi dei valori numerici in A1 ed A2 otterremo in A5 la somma voluta.
Nel caso si voglia proteggere questa funzionalità, potremo sostituire la funzione SOMMA() con una nostra funzione, per es. MySum(..) implementata i VBA (cfr. figura seguente), che chiamerà a sua volta l'esecuzione del codice eseguito runtime del dispositivo xCore. Sarà quindi necessario possedere il dispositivo in quanto sarà proprio xCore ad eseguire la funzione richiesta.
Ovviamente questo esempio è banale ma mostra chiaramente alcuni aspetti fondamentali:
le funzioni implementate in questo modo non sono eseguite dal PC ma dal dispositivo e quindi non sarà possibile eseguire il reverse engineering: l'utilizzatore non potrà vedere cosa esegue il dispositivo xCore;
la mancanza del dispositivo xCore implica la mancanza delle funzioni utilizzate e quindi Excel non sarà in grado di processare i dati come richiesto;
Il codice eseguito a bordo del dispositivo viene inviato runtime ed è criptato con chiavi di crittografia che solo il dispositivo e lo sviluppatore conoscono. Tale codice contiene anche informazioni che lo identificano in modo che sia il dispositivo a decidere se la licenza d'esecuzione è valida o per es, è scaduta.
In tal modo lo sviluppatore si garantirà non solo il controllo di quanto viene eseguito a bordo di xCore (ovvero nel foglio Excel), ma anche la possibilità di decidere e gestire scadenze e rinnovi delle licenze legate al dispositivo xCore.
Ogni dispositivo xCore potrà essere abilitato per alcuni scripts ma non per altri, alcuni script potranno avere data di scadenza, etc. La gestione complessiva di tali caratteristiche potrà essere effettuata in maniera semplificata grazie al codice ed ai tools dedicati forniti da OxySec.
Nella figura riportata di seguito è possibile vedere il file Excel XCoreDemo.xlsm fornito come esempio: alcune funzioni sono implementate in VBA e vengono eseguite dal dispositivo xCore.
Foglio Excel dell'esempio
Dall'area tecnica è possibile scaricare anche un esempio con funzioni VBA che permettono di gestire le licenze degli script unitamente al programma host XCRScriptHost.exe che verrà utilizzato dallo sviluppatore per impostare le licenze specifiche di ciascun dispositivo xCore.
Grazie a tale esempio sarà possibile attivare, disattivare, impostare una data di scadenza per ciascuno degli 4096 script gestibili dal dispositivo.
Foglio di gestione delle licenze degli script
Finestra VBA di gestione delle licenze degli script
Programma XCRScriptHost.exe