SafeG란?

SafeG은 동일 하드웨어 플랫폼상에서, 범용OS와 RTOS를 안전하게 동시 실행할 수 있는 고신뢰 듀얼OS모니터입니다. SafeG에서는 범용OS와 RTOS의 동시 실행을 실현하기 위해서, ARM프로세서의 TrustZone보안 확장 기능을 이용합니다.

  • ARM TrustZone이 구현된 프로세서에서는, 프로세서에 트러스트 상태, 비 트러스트 상태의 2개의 상태의 개념이 추가됩니다. 각상태에는 독립적으로 특권·비특권 수준이 존재합니다
  • 트러스트 상태는, 일반적인 ARM프로세서의 특권 수준 및 비특권 수준과 같은 기능을 제공합니다.
  • 한편, 비 트러스트 상태로 움직이고 있는 프로그램은, 가령 특권 수준이라도, 트러스트용 메모리나 디바이스로의 접근이 금지됩니다. 또, 일부의 명령은 비 트러스트 상태에서는 실행할 수 없습니다.

트러스트 상태/비 트러스트 상태를 제어하기 위해서, monitor mode라고 하는 새로운 모드가 추가되어 있습니다. SafeG는 인터럽트 금지 상태와 동시에 monitor mode에서, 트러스트 상태와 비 트러스트 상태를 교환합니다.

Fig.1 SafeG의 구조

SafeG의 특징

  1. 싱글 프로세서에서 범용OS와 RTOS의 동시 실행을 실현합니다. 범용OS는 비 트러스트 상태로, RTOS는 트러스트 상태로 실행됩니다.
  2. 범용OS가 잘못된 접근으로부터 RTOS용 메모리와 디바이스를 보호합니다. RTOS용 메모리와 디바이스는, 트러스트 상태의 프로세서로부터만 접근 할 수 있게 설정되어 있습니다. 나머지 자원은 어느쪽의 프로세서 상태로부터도 액세스할 수 있습니다.
  3. RTOS의 실시간성을 보증합니다. RTOS의 실시간성의 보증 때문에 각상태로 다른 인터럽트 요구 라인을 사용합니다.
    • FIQ는 RTOS에서 사용됩니다.
    • IRQ는 범용OS에서 사용됩니다.

    트러스트 상태에서는 IRQ인터럽트가 금지되어 있습니다. 따라서 범용OS의 인터럽트가 RTOS의 실행에 영향을 주지 않습니다.

    한편, 비 트러스트 상태에서는 언제든지 RTOS에 프로세서의 제어를 넘겨 줄 수 있게 항상 FIQ인터럽트가 허가되어 있습니다. 또, 비 트러스트 상태로 FIQ인터럽트를 금지할 수 없도록 설정되어 있습니다.따라서 RTOS의 인터럽트를 범용 OS가 금지할 수 없습니다.

  4. 하드웨어의 가상화 지원 기능을 사용하고 있기 때문에, 낮은 오버헤드에서 2개의 OS가 동시에 실행될 수 있습니다.
  5. 범용OS는 조금의 변경으로 적용가능합니다. 필요한 변경 점은 메모리와 디바이스에 관한 환경설정 뿐입니다.
  6. SafeG의 코드는 아주 작은 규모인 동시에 인터럽트 금지상태로 동작하기 때문에 검증이 쉽게 되어있습니다.

대응 하드웨어·OS

SafeG의 실행에는 TrustZone탑재 프로세서가 필요합니다. TrustZone탑재 프로세서에는 다음과 같은 것이 있습니다.

  • ARM Cortex-A9
  • ARM Cortex-A8
  • ARM Cortex-A5
  • ARM1176

더욱이 대상 하드웨어에는 아래의 TrustZone서포트가 필요합니다.

  • 메모리와 디바이스를 트러스트쪽과 비 트러스트쪽으로 분리 가능
  • 트러스트와 비 트러스트 인터럽트가 구별 가능

최신 릴리즈에서는 다음 보드 및 게스트OS에 대응하고 있습니다 (T=Trust, NT=Non-Trust).

  • ARM PB1176JZF-S RealView Platform Baseboard (ARM1176-JZF dev chip)
    • Trust OS
      • T-ASP 1.6
    • Non-Trust OS
      • NT-ASP 1.6
      • Linux 2.6.24
      • Linux 2.6.33
  • IDEA6410 (Samsung S3C410 chip)
    • Trust OS:
      • T-ASP 1.6
    • Non-Trust OS:
      • NT-ASP 1.6
      • Linux 2.6.33
      • Android 2.1

SafeG을 빌드하기 위해 GNU툴 체인이 필요합니다. 테스트를 실행한 환경은 아래와 같습니다.

  • Ubuntu 10.04
    • GNU Make 3.81
      • CodeSourcery G++ Lite ARM toolchain
        • arm-none-eabi-gcc 4.2.0
        • arm-none-eabi-ld 2.17
        • arm-none-eabi-as 2.17

다운로드

SafeG 개발은 나고야 대학 정보 과학 연구과의 TOPPERS멤버에 의해 TOPPERS내의 프로젝트 관리 툴로 시행되고 있습니다. 사용자용 패키지는 여기에서 다운로드할 수 있습니다.

최신 릴리즈
패키지 릴리즈 사이즈 릴리즈 일
safeg-0.2-10jun2011-src.tar.gz 0.2 4.1MB 2011-06-08
safeg-0.2-10jun2011-bin.tar.gz 7.0MB

이후의 예정

  • RTOS와 범용OS의 우선도의 안전한 혼합을 가능하게 하는 글로벌 스케줄링의 구현
  • RTOS간의 통신 기능 추가
  • 멀티프로세서의 대응

개발 스탭

SafeG 개발에 참가하고 있는 개발 스탭은 다음과 같습니다. (소속은 참가한 시점).

이름 소속 기간
高田広章 나고야 대학 정보 과학 연구과 2009년~
本田晋也 나고야 대학 정보 과학 연구과 2009년~
Daniel Sangorrín López 나고야 대학 정보 과학 연구과 2009년~
太田貴也 나고야 대학 정보 과학 연구과 2010년~

※ 개발 스탭의 이름은 게재를 승락한 사람만 기재되어있습니다.

논문소개

  1. "セキュリティ支援ハードウェアによるハイブリッドOSシステムの高信頼化", 中嶋 健一郎, 本田 晋也, 手嶋 茂晴, 高田 広章. The IEICE Transactions on Information Systems, 93(2):7585, 2010-02-01
  2. "Dual Operating System Architecture for Real-Time Embedded Systems", Daniel SANGORRIN, Shinya HONDA, Hiroaki TAKADA. OSPERT 2010 Brussels (Belgium)
  3. "Integrated Scheduling in a Real-Time Embedded Hypervisor", Daniel Sangorrin, Shinya Honda and Hiroaki Takada, 18th SIGEMB, Hakodate Mirai University, Aug 2010.