Roberto Brunetti Mobile Blog

Bridging the Mobility Gap !

Recent Posts

Tags

Community

Email Notifications

.NET Blogs

Archives

Windows Mobile 5.0 Security

Nelle ultime 3 settimane ho ricevuto questa domanda varie volte: ma una applicazione VS 2003 gira su Windows Mobile 5.0. Allargando il discorso ho pensato di ripubblicare un mio articolo week.it anche sul nostro sito:

Con Windows Mobile 5.0 finisce l’era del “Creo nuovo progetto mobile, aggiungo pulsante e faccio F5”. Come accadeva già su Windows Mobile 2003 for SmartPhone, anche per Pocket PC, basati su Windows Mobile 5.0, dobbiamo fare i conti con diversi settaggi di sicurezza presenti a livello di sistema operativo.

Per prima cosa occorre capire la configurazione dal punto di vista della sicurezza del device o dei device dove l’applicazione dovrà girare per poi dedicarsi alla firma dell’applicazione con il certificato che consentirà all’applicazione stessa di girare con i permessi d’accesso corretti.

Dobbiamo fare i conti con le seguenti terminologie: un processo trusted può invocare qualunque API e scrivere nel registry, mentre ad un processo normal non è consentita la scrittura del registry e l’invocazione di alcune API. L’elenco delle API trusted si trova nell’SDK relativo alla piattaforma target. Vi sono device One-Tier e Two-Tier: sui device one-tier esiste un solo livello di esecuzione, mentre sui device two-tier esistono due livelli di esecuzione: normal e trusted appunto.

 

Vi sono poi tre livelli base per distinguere le applicazioni sul device: unsigned, unpriviledged, priviledged. Un’applicazione unsigned non viene firmata, un’applicazione priviledged viene firmata durante lo sviluppo con la chiave privata di un certificato rilasciato da una Certificate Authority conosciuta dal device: il certificato della Certificate Authority deve essere memorizzato sul device nel priviledged certificate store. Un’applicazione unpriviledged viene invece firmata con un certificato rilasciato da una Certificate Authority il cui certificato deve essere presente nel unpriviledge certificate store del device. I device, a seconda del produttore e dell’operatore, vengono rilasciati sul mercato con due store distinti di certificati: priviledged e unpriviledged; in base alle impostazioni di security del device sarà possibile far girare un’applicazione firmata con un “certificato priviledged” a livello trusted e un’applicazione firmata con un “certificato unpriviledged” a livello normal.

Lo stesso ragionamento si applica ai CAB per l’installazione delle applicazioni: anch’essi devono essere firmati.

 

Alcuni device vengono denominati prompt: viene infatti richiesto all’utente se vuole eseguire comunque un’applicazione non firmata, oppure se l’utente consente che un’applicazione che gira a livello normal possa accedere al registry o chiamare alcune API.

 

Visual Studio 2005 contiene due certificati di test: uno destinato allo store unpriviledged e uno destinato allo store priviledged con cui firmare il codice (exe e dll) durante le fasi di test. Visual Studio 2005 consente anche di installare il certificato di test durante la normale operazione di debug o run dell’applicazione (tasto F5 per capirci): questa operazione viene chiamata provisioning del device.

 

Infine non tutti i device consentono l’installazione di certificati esterni: questo significa che non si può installare un certificato di una nostra certificate authority ne tantomeno i certificati di test di Visual Studio 2005. Questi device vengono comunemente chiamati Locked. E’ possibile installare certificati su questi device sbloccando il device stesso con un Registry Editor che giri a livello trusted cioè un RegEdit firmato con un certificato presente nel priviledged certificate store (altrimenti non potrebbe accedere al registry).

 

Per ottenere maggiori informazioni sulle chiavi di registry da modificare, i prodotti che consentono di fare unlock dei device, e come si firmano i cab si veda http://thinkmobile.it/forums/5187/ShowPost.aspx#5187.

 

Comments

Roberto Brunetti said:

Mini articolo pubblicato su thinkmobile (http://thinkmobile.it/blogs/rob/archive/2006/08/11/5701.aspx)...
# August 11, 2006 6:06 AM