SafeG란?
SafeG은 동일 하드웨어 플랫폼상에서, 범용OS와 RTOS를 안전하게 동시 실행할 수 있는
고신뢰 듀얼OS모니터입니다. SafeG에서는 범용OS와 RTOS의 동시 실행을 실현하기 위해서,
ARM프로세서의 TrustZone보안 확장 기능을 이용합니다.
-
ARM TrustZone이 구현된 프로세서에서는, 프로세서에 트러스트 상태,
비 트러스트 상태의 2개의 상태의 개념이 추가됩니다. 각상태에는 독립적으로
특권·비특권 수준이 존재합니다
- 트러스트 상태는, 일반적인 ARM프로세서의 특권 수준 및 비특권 수준과 같은 기능을 제공합니다.
- 한편, 비 트러스트 상태로 움직이고 있는 프로그램은, 가령 특권 수준이라도, 트러스트용 메모리나
디바이스로의 접근이 금지됩니다. 또, 일부의 명령은 비 트러스트 상태에서는 실행할 수 없습니다.
트러스트 상태/비 트러스트 상태를 제어하기 위해서, monitor mode라고 하는 새로운 모드가 추가되어 있습니다.
SafeG는 인터럽트 금지 상태와 동시에 monitor mode에서, 트러스트 상태와 비 트러스트 상태를 교환합니다.
Fig.1 SafeG의 구조
SafeG의 특징
- 싱글 프로세서에서 범용OS와 RTOS의 동시 실행을 실현합니다.
범용OS는 비 트러스트 상태로, RTOS는 트러스트 상태로 실행됩니다.
- 범용OS가 잘못된 접근으로부터 RTOS용 메모리와 디바이스를 보호합니다.
RTOS용 메모리와 디바이스는, 트러스트 상태의 프로세서로부터만 접근 할 수 있게 설정되어 있습니다.
나머지 자원은 어느쪽의 프로세서 상태로부터도 액세스할 수 있습니다.
- RTOS의 실시간성을 보증합니다. RTOS의 실시간성의 보증 때문에 각상태로 다른 인터럽트 요구 라인을 사용합니다.
- FIQ는 RTOS에서 사용됩니다.
- IRQ는 범용OS에서 사용됩니다.
트러스트 상태에서는 IRQ인터럽트가 금지되어 있습니다. 따라서 범용OS의 인터럽트가 RTOS의 실행에 영향을 주지 않습니다.
한편, 비 트러스트 상태에서는 언제든지 RTOS에 프로세서의 제어를 넘겨 줄 수 있게 항상 FIQ인터럽트가 허가되어 있습니다.
또, 비 트러스트 상태로 FIQ인터럽트를 금지할 수 없도록 설정되어 있습니다.따라서 RTOS의 인터럽트를 범용 OS가 금지할 수 없습니다.
- 하드웨어의 가상화 지원 기능을 사용하고 있기 때문에, 낮은 오버헤드에서 2개의 OS가 동시에 실행될 수 있습니다.
- 범용OS는 조금의 변경으로 적용가능합니다. 필요한 변경 점은 메모리와 디바이스에 관한 환경설정 뿐입니다.
- 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
- Non-Trust OS
- NT-ASP 1.6
- Linux 2.6.24
- Linux 2.6.33
- IDEA6410 (Samsung S3C410 chip)
- Trust OS:
- 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내의 프로젝트 관리 툴로 시행되고 있습니다. 사용자용 패키지는 여기에서 다운로드할 수 있습니다.
이후의 예정
- RTOS와 범용OS의 우선도의 안전한 혼합을 가능하게 하는 글로벌 스케줄링의 구현
- RTOS간의 통신 기능 추가
- 멀티프로세서의 대응
개발 스탭
SafeG 개발에 참가하고 있는 개발 스탭은 다음과 같습니다. (소속은 참가한 시점).
이름 |
소속 |
기간 |
高田広章 |
나고야 대학 정보 과학 연구과 |
2009년~ |
本田晋也 |
나고야 대학 정보 과학 연구과 |
2009년~ |
Daniel Sangorrín López |
나고야 대학 정보 과학 연구과 |
2009년~ |
太田貴也 |
나고야 대학 정보 과학 연구과 |
2010년~ |
※ 개발 스탭의 이름은 게재를 승락한 사람만 기재되어있습니다.
논문소개
- "セキュリティ支援ハードウェアによるハイブリッドOSシステムの高信頼化",
中嶋 健一郎, 本田 晋也, 手嶋 茂晴, 高田 広章. The IEICE Transactions on
Information Systems, 93(2):7585, 2010-02-01
- "Dual Operating System Architecture for Real-Time Embedded Systems",
Daniel SANGORRIN, Shinya HONDA, Hiroaki TAKADA. OSPERT 2010 Brussels (Belgium)
- "Integrated Scheduling in a Real-Time Embedded Hypervisor",
Daniel Sangorrin, Shinya Honda and Hiroaki Takada, 18th SIGEMB,
Hakodate Mirai University, Aug 2010.