From Java applets to agent-based systems to executable content and network distribution of software, it is no longer possible to completely trust the integrity of code being executed on our systems or even be aware of its existence. As agents are dispatched to remote systems to do work on our behalf we are likewise unable to verify the integrity of the results returned. Inherent survivability is addressing both aspects of this problem. In PCC, the code producer is required to submit a mathematical proof that the code conforms to a safety or security policy dictated by the code consumer. The proof is easily and quickly checked by the code consumer prior to accepting the code for execution.
Many software vulnerabilities are at the component interfaces.
Current interface technologies specify the number and syntax of parameters but fail to capture semantic information such as the importance of each parameter, what precision is necessary, etc. The goal of the Tolerant Software thrust is to develop innovative software interfacing technologies that, by analogy with the concept of tolerance in mechanical part assembly, allows components to interact productively, even when there are minor mismatches in expectations. Such technology will permit a software component to tolerate attacks and make progress even when components on which it depends are compromised or unavailable. Any vulnerability in such a widely deployed system will be replicated across thousands of sites. One approach to mitigating these shared vulnerabilities is to artificially introduce controlled diversity into these systems.