Application factoring or partitioning is used to integrate secure features
into a conventional application. An application's functionality is
partitioned into two sets according to whether a given action does, or
does not, involve the handling of sensitive data. Separate software
objects (processors) are created to perform these two sets of actions. A
trusted processor handles secure data and runs in a high-assurance
environment. When another processor encounters secure data, that data is
sent to the trusted processor. The data is wrapped in such a way that
allows it to be routed to the trusted processor, and prevents the data
from being deciphered by any entity other than the trusted processor. An
infrastructure is provided that wraps objects, routes them to the correct
processor, and allows their integrity to be attested through a chain of
trust leading back to base component that is known to be trustworthy.