4 research outputs found

    A Tool for the Certification of Sequential Function Chart based System Specifications

    Get PDF

    MMP

    Get PDF
    Thesis (Ph. D.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2004.Includes bibliographical references (p. 129-135).Reliability and security are quickly becoming users' biggest concern due to the increasing reliance on computers in all areas of society. Hardware-enforced, fine-grained memory protection can increase the reliability and security of computer systems, but will be adopted only if the protection mechanism does not compromise performance, and if the hardware mechanism can be used easily by existing software. Mondriaan memory protection (MMP) provides fine-grained memory protection for a linear address space, while supporting an efficient hardware implementation. MMP's use of linear addressing makes it compatible with current software programming models and program binaries, and it is also backwards compatible with current operating systems and instruction sets. MMP can be implemented efficiently because it separates protection information from program data, allowing protection information to be compressed and cached efficiently. This organization is similar to paging hardware, where the translation information for a page of data bytes is compressed to a single translation value and cached in the TLB. MMP stores protection information in tables in protected system memory, just as paging hardware stores translation information in page tables. MMP is well suited to improve the robustness of modern software. Modern software development favors modules (or plugins) as a way to structure and provide extensibility for large systems, like operating systems, web servers and web clients. Protection between modules written in unsafe languages is currently provided only by programmer convention, reducing system stability.(cont.) Device drivers, which are implemented as loadable modules, are now the most frequent source of operating system crashes (e.g., 85% of Windows XP crashes in one study [SBL03]). MMP provides a mechanism to enforce module boundaries, increasing system robustness by isolating modules from each other and making all memory sharing explicit. We implement the MMP hardware in a simulator and modify a version of the Linux 2.4.19 operating system to use it. Linux loads its device drivers as kernel module extensions, and MMP enforces the module boundaries, only allowing the device drivers access to the memory they need to function. The memory isolation provided by MMP increases Linux's resistance to programmer error, and exposed two kernel bugs in common, heavily-tested drivers. Experiments with several benchmarks where MMP was used extensively indicate the space taken by the MMP data structures is less than 11% of the memory used by the kernel, and the kernel's runtime, according to a simple performance model, increases less than 12% (relative to an unmodified kernel).by Emmett Jethro Witchel.Ph.D

    A Syntactic Approach to Foundational Proof-Carrying Code

    Get PDF
    Certified code technology and type systems research has reached a point where it is now possible to certify advanced safety and security properties of low-level systems code. Type systems are a common programming language feature today, allowing fast and easy verification of basic safety properties for application developers. Although verifi-able bytecode and typed common intermediate languages have made significant contri-butions in the area of secure computing, a considerable amount of further (unverified) compilation and optimization is required before programs written in such languages can run on actual hardware. To address this issue, research in the past decade has turned to the use of type systems and logic to verify properties of low-level code. Much of this work focuses only on carrying through the compilation of high-level languages down to verifiable machine code. There has not been significant progress in combining such com-pilation with verification and certification of that code which is only written at the systems programming and assembly code level. Indeed, providing security guarantees for such infrastructure code has become a dire need. This thesis aims at a framework to certify “the whole code. ” It presents an approac
    corecore