uC/OS-II 운영체제의 보안 개선을 위한 자체 코드 무결성 검증 기법 - 한승재(Seungjae Han); 김규식(Gyoosik Kim); 조성제(Seong-je Cho) (정보과학회 컴퓨팅의 실제 논문지, 2019)
uC/OS-II는 실시간성을 지원하는 선점형 멀티태스크 임베디드 운영체제다. 본 논문에서는 uC/OS-II 운영체제의 보안을 개선하기 위해, 두 가지의 코드 무결성 검증 기법을 제안한다. 첫 번째는, 전체 실행코드 무결성 검증 기법으로 운영체제(펌웨어)의 텍스트 영역 전체에 대한 위변조 여부를 주기적으로 확인한다. 이 기법은 전체 코드의 무결성을 보장하여 안전하지만 계산 오버헤드가 크다. 두 번째는, 경량화된 실행코드 무결성 검증 기법으로 운영체제 텍스트 영역 내의 일부 함수들을 무작위로 선정하여, 선정된 함수들의 위변조 여부를 주기적으로 확인한다. 이 기법은 실행코드의 일부만 검증하는 대신 실행 오버헤드가 적다. 두 기법 모두 MD5와 같은 암호학적 해시 알고리즘을 사용하여 기존 체크섬 기반 검증기법보다 안전도를 높였다. 또한 외부 시스템의 도움 없이, 임베디드 시스템 내부에 구현하여 자체적으로 운영된다. 실제 임베디드 보드에 uC/OS-II 를 설치한 후, 제안한 두 기법을 주기 태스크로 구현하고 평가하여 유효성을 검증하였다. The uC/OS-II is a real-time and preemptive multitasking embedded operating system. In this paper, we propose two techniques for code integrity verification to improve the security of uC/OS-II operating system (OS). In order to verify the OS integrity, the first technique periodically evaluated whether or not the entire text area of the OS was illegally altered. This technique ensures the integrity of the entire code, however, it incurs a high computational overhead. The second technique is a lightweight one for verifying the integrity of execution code. It randomly selects specific functions in the OS text area and periodically evaluates whether or not the selected functions are altered. This technique requires limited execution overhead since it validates only a portion of the execution code. Both techniques use a cryptographic hash algorithm such as MD5, which is more secure than checksum-based integrity checks. Our proposed techniques are implemented on an embedded system and operate independently without the help of any external system. Following installation of uC/OS-II OS on a real embedded board, we implemented the two techniques as periodic tasks in the OS and demonstrated their effectiveness. KCI Citation Count: 0