All Projects → tzvisor → ltzvisor

tzvisor / ltzvisor

Licence: other
LTZVisor: a Lightweight TrustZone-assisted Hypervisor

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
Makefile
30231 projects

Projects that are alternatives of or similar to ltzvisor

Vmmfuzzer
A hypervisor or virtual machine monitor (VMM) fuzzer.
Stars: ✭ 83 (+29.69%)
Mutual labels:  hypervisor
Hdk
(unofficial) Hyper-V® Development Kit
Stars: ✭ 166 (+159.38%)
Mutual labels:  hypervisor
sonar
A Type-1 hypervisor aimed to implement kernel hotswapping
Stars: ✭ 23 (-64.06%)
Mutual labels:  hypervisor
Diosix
A lightweight, secure, multiprocessor bare-metal hypervisor written in Rust for RISC-V
Stars: ✭ 116 (+81.25%)
Mutual labels:  hypervisor
Kvm Vmi
KVM-based Virtual Machine Introspection
Stars: ✭ 153 (+139.06%)
Mutual labels:  hypervisor
Shadow Box For X86
Shadow-Box: Lightweight and Practical Kernel Protector for x86 (Presented at BlackHat Asia 2017/2018, beVX 2018 and HITBSecConf 2017)
Stars: ✭ 178 (+178.13%)
Mutual labels:  hypervisor
Zpp hypervisor
A very simple hypervisor for learning experience.
Stars: ✭ 78 (+21.88%)
Mutual labels:  hypervisor
bitvisor-gdb
gdbserver implementation on BitVisor
Stars: ✭ 23 (-64.06%)
Mutual labels:  hypervisor
Simplesvmhook
SimpleSvmHook is a research purpose hypervisor for Windows on AMD processors.
Stars: ✭ 159 (+148.44%)
Mutual labels:  hypervisor
Invtero.net
inVtero.net: A high speed (Gbps) Forensics, Memory integrity & assurance. Includes offensive & defensive memory capabilities. Find/Extract processes, hypervisors (including nested) in memory dumps using microarchitechture independent Virtual Machiene Introspection techniques
Stars: ✭ 237 (+270.31%)
Mutual labels:  hypervisor
Napoca
Lightweight type-1 hypervisor offering a foundation for building advanced security-focused functionality.
Stars: ✭ 135 (+110.94%)
Mutual labels:  hypervisor
Simplesvm
A minimalistic educational hypervisor for Windows on AMD processors.
Stars: ✭ 152 (+137.5%)
Mutual labels:  hypervisor
Vsock
Package vsock provides access to Linux VM sockets (AF_VSOCK) for communication between a hypervisor and its virtual machines. MIT Licensed.
Stars: ✭ 181 (+182.81%)
Mutual labels:  hypervisor
Jailhouse
Linux-based partitioning hypervisor
Stars: ✭ 1,324 (+1968.75%)
Mutual labels:  hypervisor
vmdashboard
web-based open source virtualization management interface for QEMU and KVM virtual machines
Stars: ✭ 66 (+3.13%)
Mutual labels:  hypervisor
Hyperwin
A native hypervisor designed for the Windows operating system
Stars: ✭ 80 (+25%)
Mutual labels:  hypervisor
Hyperd
HyperContainer Daemon
Stars: ✭ 1,980 (+2993.75%)
Mutual labels:  hypervisor
mTower
mTower is Trusted Execution Environment specially designed to be used on MicroController Units (MCUs) supporting ARM TrustZone technology (e.g., Cortex-M23/33/35p). mTower operates well under restrictions typical for such environment – small RAM and ROM sizes, relatively low performance, absence of rich OSes providing variety of services availab…
Stars: ✭ 34 (-46.87%)
Mutual labels:  trustzone
frakti
The hypervisor-based container runtime for Kubernetes.
Stars: ✭ 669 (+945.31%)
Mutual labels:  hypervisor
Noirvisor
Hardware-Accelerated Hypervisor solution for complex functions and purposes.
Stars: ✭ 186 (+190.63%)
Mutual labels:  hypervisor

LTZVisor

Introduction

LTZVisor is a lightweight TrustZone-assisted hypervisor. It allows the consolidation of two virtual machines (VMs), running each of them in an independent virtual world (secure and non-secure) supported by TrustZone-enabled processors. The secure world is tipically used for running a small TCB size VM, while the non-secure world is used for running a rich environment.

For the Cortex-A series a tipical configuration encompasses running a RTOS as secure VM and a GPOS as non-secure VM. For the new generation Cortex-M microcontrollers it can be used for running a bare metal application or a lightweight RTOS as secure VM side by side with a RTOS or an embedded OS for IoT as non-secure VM.

NOTE: This is work in progress! Don't expect things to be complete. Use at your own risk.

Community Resources

Project website:

Project home:

LTZVisor source code:

Mailing list:

Frequently Asked Questions (FAQ):

Contributing:

Hardware requirements

LTZVisor is limited by design to TrustZone-enabled ARM processors, which include all Cortex-A series (ARMv7-A and ARMv8-A) and the new generation Cortex-M series (ARMv8-M):

  • ARM Cortex-A5 (ARMv7-A)

  • ARM Cortex-A7 (ARMv7-A)

  • ARM Cortex-A8 (ARMv7-A)

  • ARM Cortex-A9 (ARMv7-A)

  • ARM Cortex-A15 (ARMv7-A)

  • ARM Cortex-A17 (ARMv7-A)

  • ARM Cortex-A32 (ARMv8-A)

  • ARM Cortex-A35 (ARMv8-A)

  • ARM Cortex-A53 (ARMv8-A)

  • ARM Cortex-A57 (ARMv8-A)

  • ARM Cortex-A72 (ARMv8-A)

  • ARM Cortex-A73 (ARMv8-A)

  • ARM Cortex-M23 (ARMv8-M)

  • ARM Cortex-M33 (ARMv8-M)

LTZVisor has support for the following boards:

  • ARMv7-A

    • Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit
    • ZedBoard Zynq-7000 ARM/FPGA SoC Development Board
    • Zybo Zynq-7000 ARM/FPGA SoC Trainer Board
    • PYNQ-Z1 Python Productivity for Zynq (on going)
    • i.MX 6QuadPlus SABRE Development Board (on going)
  • ARMv8-A

    • Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit (on going)

Software requirements

For building LTZVisor a host system should exist. The host system must be endowed with an Operating Systems supporting a compilation toolchain. We strongly recommend the use of Linaro GNU Toolchain:

  • Ubuntu 12.04 and Linaro GNU Toolchain (7.1.1-2017.08)
    • arm-eabi-gcc 7.1.1
    • arm-eabi-as 2.28.2
    • arm-none-eabi-ld 2.28.2
    • arm-none-eabi-objcopy 2.28.2

Download: https://releases.linaro.org/components/toolchain/binaries/7.1-2017.08/arm-eabi/

LTZVisor was also tested under the following host configurations:

  • Ubuntu 12.04 and Sourcery G++ Lite Toolchain (2011.03-42)
    • arm-none-eabi-gcc 4.5.2
    • arm-none-eabi-as 2.20.51
    • arm-none-eabi-ld 2.20.51
    • arm-none-eabi-objcopy 2.20.51

For Xilinx-based platforms LTZVisor was also tested under the following host configurations:

  • Ubuntu 12.04 and Sourcery CodeBench Lite Toolchain (2012.09-105)

    • arm-xilinx-eabi-gcc 4.7.2
    • arm-xilinx-eabi-as 2.23.51
    • arm-xilinx-eabi-ld 2.23.51
    • arm-xilinx-eabi-objcopy 2.23.51
  • Windows 10 and Sourcery CodeBench Lite Toolchain (2015.05-16)

    • arm-xilinx-eabi-gcc 4.9.2
    • arm-xilinx-eabi-as 2.24.51
    • arm-xilinx-eabi-ld 2.24.51
    • arm-xilinx-eabi-objcopy 2.24.51

Guest Operating Systems

LTZVisor supports the following guest operating systems:

  • Secure: FreeRTOS, bare metal
  • Non-secure: Linux, bare metal

Build & Compile

For build LTZVisor, just run make:

make 

The default configuration targets the ZedBoard platform, uses the Sourcery G++ Lite Toolchain, and setup ups a system with two bare metal VMs.

Optionally it is possible to specify the target board:

  • Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit:

    make BOARD=ZC702

  • ZedBoard Zynq-7000 ARM/FPGA SoC Development Board

    make BOARD=ZEDBOARD

  • Zybo Zynq-7000 ARM/FPGA SoC Trainer Board

    make BOARD=ZYBO

It is also possible to specify the cross compile toolchain as well as the VMs configuration:

make [BOARD=ZC702] [CROSS_COMPILE=arm-xilinx-eabi-] [S_GUEST=BARE_METAL] [NS_GUEST=BARE_METAL]

(Instructions explaining how to run FreeRTOS as secure guest-OS and Linux as non-secure guest-OS will be added soon).

Demonstration

Before power-on your board, please make sure that you copy the bootloader and LTZVisor binary images to the SD card . The bootloader is provided in the LTZVisor source project under the folder "bootloader". Each board as a specific bootloader. Also, please make sure that your board is configured to boot from the SD card.

  1. Power-on your board;

  2. Run any terminal and setup the serial port for 115200 bps (baud rate);

  3. Stop the autoboot by hitting any key;

  4. Type the following sequence of commands:

    • Xilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit:

      mmcinfo

      fatload mmc 0 0x3C000000 LTZVisor.bin

      go 0x3C000000

    • ZedBoard Zynq-7000 ARM/FPGA SoC Development Board:

      mmcinfo

      fatload mmc 0 0x1C000000 LTZVisor.bin

      go 0x1C000000

    • Zybo Zynq-7000 ARM/FPGA SoC Trainer Board:

      mmcinfo

      fatload mmc 0 0x1C000000 LTZVisor.bin

      go 0x1C000000

LTZVisor shall start immediately running! For the default system configuration (two bare metal VMs) the secure VM shall blink a set of LEDs every second, while the non-secure VM shall print "Hello World" messages.

References

  1. Sandro Pinto, Jorge Pereira, Tiago Gomes, Adriano Tavares, and Jorge Cabral. "LTZVisor: TrustZone is the Key." In LIPIcs-Leibniz International Proceedings in Informatics, vol. 76. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.

  2. Sandro Pinto, Daniel Oliveira, Jorge Pereira, Nuno Cardoso, Mongkol Ekpanyapong, Jorge Cabral, and Adriano Tavares. "Towards a lightweight embedded virtualization architecture exploiting ARM TrustZone." In Emerging Technology and Factory Automation (ETFA), IEEE, pp. 1-4., 2014.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].