Security and Going Open Source
Posted by Craig H on 23 March 2009
Out of interest, how would you deal with releasing the source code to “sensitive” parts of the combined Symbian OS/S60/UIQ/MOAP(S) codebase? Components involved with handling storing keys for DRM, certain hardware drivers, baseband/physical layer access code, and GSM, GPRS and UMTS radio stacks come to mind.
This is a very good question! We’re clear on our goal, which is that devices using the Symbian Foundation platform won’t rely on any “security by obscurity”. Although that can work (for a while) and can be a rational business decision in some circumstances, it’s not a long-term foundation for a good security architecture (especially not for one that’s going open source!). We’ve been clear on this from the outset in designing the Symbian OS Platform Security architecture, and security is not going to be an acceptable reason for blocking the publication of any of the source code.
That said, of course real life isn’t that clear cut! Many of the things you mention (DRM key storage, radio stack, etc.) need to work with the particular hardware platform in the device, and they aren’t (yet) standardised parts of the Symbian Foundation platform. There are some things that need to be protected more strongly than you can do in software alone (the IMEI for example) and today phone manufacturers typically write custom code to talk to their hardware when is then embedded in the boot code, radio stack, DRM agent and so on.
The architecturally pure way to fix that is to define hardware adaptation interfaces (HAIs) which abstract the common features of these hardware security services (but at the lowest possible level of abstraction) and then generic platform components can be provided which call those HAIs, and device integrators can provide simple adaptations for the hardware platform they choose.
Today we are probably missing some of those necessary HAIs, but we hope that we will, step by step, identify which are missing, agree the definition of the HAI, and thus be able to provide a functionally complete set of generic open source components which anyone can take and build a working, secure device with a minimal amount of hardware adaptation.
That’s a quick run through of some of the issues I’ve been thinking about recently, but what do you think?