A programmable electronic device (10) stores a number of cipher-text
software modules (14) to which access is granted after evaluating a
user's token (55, 80, 82), a software-restriction class (58) for a
requested software module (14), and/or a currently active access-control
model (60). Access-control models (60) span a range from uncontrolled to
highly restrictive. Models (60) become automatically activated and
deactivated as users are added to and deleted from the device (10). A
virtual internal user proxy that does not require users to provide tokens
(80, 82) is used to enable access to modules (16) classified in a global
software-restriction class (62) or when an uncontrolled-access-control
model (68) is active. Both licensed modules (76) and unlicensed modules
(18,78) may be loaded in the device (10). However, no keys are provided
to enable decryption of unlicensed modules (18,78).