Application Factoring for Secure Data Handling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing systems face a challenge in balancing high security with extensive functionality, as large, complex programs are difficult to verify for secure behavior, leading to a tension between providing numerous features and ensuring security, especially when handling sensitive data.

Innovation Solution

The system partitions applications into secure and non-secure components, with the secure components running in a high-assurance environment and non-secure components in a low-assurance environment, using a base component to manage data routing and verification across environments, ensuring data integrity and trustworthiness.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a large, complex program is used to provide extensive functionality, then the number of functional features increases, but the ability to verify secure behavior decreases

Engineering Contradiction:
Improvefunctional featuresVSAvoidsecure behavior verification
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The application is divided into multiple partitions, with each partition handling specific functionality. Critical security functions are isolated into separate partitions that can be individually verified, while non-critical functions remain in other partitions. This segmentation allows the system to maintain extensive functionality while ensuring secure behavior in critical areas through targeted verification.

Inventive Principle:
Principle #1Segmentation

2Reliability

If a small, high-assurance program is used, then the degree of security increases, but the number of functional features decreases

Engineering Contradiction:
Improvesecurity assuranceVSAvoidfunctional features
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

A security manager component acts as an intermediary between high-assurance partitions and low-assurance partitions. The security manager handles security-critical operations in the high-assurance environment while delegating non-critical functionality to the low-assurance environment. This allows the system to provide extensive functionality through the low-assurance portion while maintaining security through the high-assurance portion and the security manager's coordination.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If two separate operating systems are run side by side, then security and functionality are provided in separate environments, but the integration and user experience deteriorate

Engineering Contradiction:
Improvesecurity assuranceVSAvoiduser experience integration
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

Multiple partitions with different security assurances are merged into a single unified application interface. The system presents a cohesive user experience by integrating high-assurance and low-assurance partitions under a common application framework, allowing users to interact with the system as a single application rather than separate operating systems. The security manager transparently coordinates between partitions to maintain this unified experience.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS7730318B2Integration of high-assurance features into an application through application factoring
Publication Date: 2010.06.01 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7730318B2 patent drawing
  • US7730318B2 patent drawing
  • US7730318B2 patent drawing

AI summary

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.