[테크월드=정환용 기자] 임베디드 시스템의 보안은 나중에 생각할 것도 아니고, 추가로 혹은 그저 있으면 좋은 기능으로 생각해서도 안 된다. 보안은 임베디드 프로세서에 설계되어 전원이 처음 공급됐을 때부터 디바이스가 의도한대로 또는 그렇지 않은 상태로 작동하는데, 그렇지 않은 경우에는 문제가 생길 수 있다.

물론 보안과 같은 복잡한 문제가 발생했을 때, 일반적으로 설계자가 묻는 첫 번째 질문은 어디에서 시작해야 할까라는 것이다. 강력한 기반이 없으면 임베디드 시스템의 보안 서브시스템은 사상누각과 같다. 시스템의 보안 기능이나 능력은 그 기반만큼이나 단단하고 효과적이어야 하며, 강력한 보안 기반을 구축하는 것은 시스템을 부팅했을 때 시작된다.

이번 백서에서는 TI의 ‘Sitara’ 프로세서와 이를 뒷받침하는 인프라에 대한 보안 부팅 프로세서가 어떻게 설계돼 있는지, 이러한 설계 기능들이 설계자가 원하는 보안 목표를 충족하기 위해 보안 서브시스템을 구축할 수 있는 지에 대한 신뢰 기반(root-of-trust)을 어떻게 제공하게 되는지를 설명하고자 한다.

 

보안 부팅이란 무엇인가?
시스템 부팅 프로세스는 시스템이 리셋되거나 전원을 켜지 않는 시스템에 전원을 공급될 때마다 발생된다. 부팅 프로세스의 목적은 시스템이 작동할 수 있도록 필요한 하드웨어 및 펌웨어를 모두 초기화하는 것이다. 일반적으로 임베디드 멀티코어 프로세서는 on-chip ROM(read-only memory)에서 부팅을 시작하는데, 기본 디바이스를 초기화한 후 부팅 코드와 소프트웨어에 접근하면 전체 프로세스가 시작된다. 일반적인 멀티코어 임베디드 시스템에서 이 부팅 펌웨어는 프로세서 외부의 플래시 메모리 같은 비휘발성 메모리에 저장된다.

시스템의 보안이 손상될 수 있는 첫 번째 가능한 지점은 시스템이 작동할 때 부팅 프로세스 중에 있다. 이 프로세스가 안전하지 않다면, 시스템에서 실행되는 이후의 다른 프로세스들도 안전하다고 볼 수 없다. 즉, 보안 부팅 프로세스가 없다면 시스템에 대한 어떠한 신뢰 기반(root-of-trust)도 형성될 수 없다. 따라서 부팅 프로세스를 보호하기 위해, 메모리에 저장된 부팅 펌웨어가 확실한 보안과 인증을 거쳐야만 한다.

해커가 부팅 코드를 변조했다면, 시스템을 완전히 도용하거나 지적 재산권(IP)를 다운로드하며 의심하지 않는 사용자를 염탐하는 등의 악의적인 행동을 취할 수 있는 멀웨어를 삽입했을 수 있다. 부팅 프로세스의 보안을 유지하는데 사용되는 기본 기술 중 하나가 암호화인데, 허가 받은 사용자만 부팅 코드에 접근할 수 있게 하고, 메모리에서 프로세서로 부팅 코드를 전송되는 코드를 보안하며, 부팅 코드가 도착해 처리될 때 진위를 인증하는데 사용될 수 있다.

 

암호화의 핵심
보안 키는 대다수 보안 설계에서 중요한 역할을 한다. 임베디드 시스템에서 부팅 프로세스를 보호하는데 가장 많이 사용되는 중요한 프로세싱 기법 두 가지는 비대칭, 그리고 대칭 암호화다. 이러한 기법은 무작위 숫자 생성과 해싱 같은 다른 암호화 요소에 종종 의존한다. 무작위 숫자는 현재 업계에서 일반적인 대다수 암호화 알고리즘의 기초로 사용되고 있다. 해싱 엔진은 데이터 블록에서 계산을 실행해 숫자를 생성하는데, 그 데이터와 연동되고 다이제스트로 불린다. 데이터에 대한 우연한 또는 우발적인 변경은 이 해시 값을 변경시키므로, 누군가 그 데이터를 변조한 보안 시스템에 경고하는 것이다. 해싱은 특히 디지털 서명, 데이터 무결성, 부인 방지(non-repudiation), 메시지 인증, 기타 등등의 특정 암호 연산에서 유용하다.

▶ 비대칭 암호화
비대칭 암호화는 공개 및 비공개 두 개의 키를 하나의 세트로 매칭시킨다. 공개 키는 말 그대로 공개된다. 누구나 이용 가능하지만, 코드나 데이터처럼 공개 키에 의해 암호화된 것은 비공개 키를 가진 사람만이 해독할 수 있다. 마찬가지로 비공개 키로 서명된 데이터는 공개 키로 검증할 수 있다.

공개 키는 공개된 것이기 때문에 보안성은 없지만, 디지털 서명된 데이터의 진위를 인증하는데 사용될 수 있다. 서명된 데이터를 공개 키로 검증할 수 있다면, 그 데이터는 그 데이터에 서명한 비공개 키 소유자에게만 나올 수 있기 때문에 출처를 알 수 있다. 이러한 기법은 임베디드 프로세서가 외부 메모리에 저장된 부팅 코드를 인증할 때, 그것이 변경되거나 해킹되지 않았는지를 확인하는데 사용할 수 있다.

 

그림 1. 비대칭 암호화

▶ 대칭 암호화
이 암호화 기법에는 암호화 및 해독 모두를 위한 단 하나의 키만 포함된다. 키의 크기는 56bit에서 256bit까지 다양하며, 키의 크기가 클수록 보안도 커진다. AES, DES, 3DES 같은 여러 보안 알고리즘은 서로 다른 길이의 키를 필요로 한다. 보안은 오직 하나의 키에만 의존하기 때문에, 고객이 최대한 이를 보호해야 한다.

대칭 키는 IP 보호라는 목적을 달성해 코드 및 데이터의 기밀성을 유지하기 위해 보안 부팅 흐름에서 사용되는데, 코드 및 데이터는 외부 플래시에 있는 동안 대칭 키로 암호화된다.

그림 2. 대칭 암호화

 

보안 부팅의 키 관리
키 관리는 보안 부팅에 사용되는 키를 보안하는데 중요한 것이다. TI의 Sitara 프로세서는 역할 기반의 핵심 정의와 관련 관리를 용이하게 하기 위해 일반적인 공개 키 인프라 개념을 유지하도록 설계됐다. 일반적으로 고객들은 키를 보호하기 위해 하드웨어 보안 모듈은 키들을 보호하는데 사용하고, 키 관리를 위해 공개 키 인프라를 사용한다.

Sitara AM335x, AM43x, AM57x 프로세서는 고객이 Rot(root-of-trust)로 동작하는 루트 보안 키(공개 키)를 지정할 수 있게 하고 디바이스에 융합된다. 일단 융합되면 이 루트 보안 키는 뒤집거나 약화시킬 수 없다.

이 루트 보안 키는 일반적으로 제조사의 보안 분야 최고 기술 책임자에게 맡겨진다. 최고 기술 책임자(CTO)는 자기 조직의 개발 팀을 위해 복수의 공개 키를 더 묶을 수 있으며, 이러한 키를 루트 공개 키와 암호로 연동시킬 수 있다. 이러한 키는 시스템의 부팅 코드나 회사의 다양한 제품 라인에서 작업하는 개발 조직 내 여러 소프트웨어 개발 팀들에게 할당된 공개 키들을 포함하는 열쇠고리와 비슷하다. CTO의 재량에 따라, 필요하면 이러한 공개 키 중 어느 것이라도 언제든지 취소할 수 있다.

그림 3. 디바이스 키 위임

하드웨어에 키 공급
디바이스에서 보안 부팅의 첫 걸음은 암호 키를 생성하고, 생성된 키를 하드웨어에 제공하는 것이다. 하드웨어 보안 모듈을 사용하는 것은 부팅 키를 생성하고 보호하기 위한 업계의 일반적인 관행이다.

TI는 평가 모듈(EVM), 소프트웨어 개발 키트(SDK), 툴과 문서를 제공해 키 생성 방법과 부팅 키를 디바이스에 공급하는 절차를 보여준다. 이러한 자료는 키 공급을 미리 평가하도록 설계돼 있고, 고객이 개발에서 대량 생산으로 전환할 수 있도록 지원한다.

그림 4. 디바이스 키 관리

코드 암호화와 서명
보안 부팅의 또 다른 요소는 코드 및 소프트웨어를 디바이스에 공급된 키들과 암호적으로 연동시켜 디바이스가 신뢰할 수 있는 코드만 로딩과 실행하도록 하는 것이다. 그러면 신뢰할 수 있는 코드는 생산 라인에서 시스템의 비휘발성 메모리에 다운로드 된다.

부트로더, 커널, 파일 시스템 등을 구성하는 코드 및 소프트웨어는 디바이스에 공급된 연동 키들로 서명 및 암호화된다. 일반적인 시나리오에서, 이 단계에는 하드웨어 보안 모듈처럼 코드를 보안 시스템에 삽입하고, 그 코드에 암호 서명을 하는 것이다. 암호화 옵션을 사용하는 경우, 이 코드 및 소프트웨어도 연동 부팅 키들로 암호화된다.

그림 5. 코드 서명과 암호화

보안 부팅
테이크오버 방지(인증)=보안 부팅의 가장 중요한 기능은 테이크오버를 방지하는 것으로, 이것이 적절하게 구성된 경우 고객은 디바이스가 인증 코드를 실행하고 인증되지 않은 코드는 거부하도록 시스템을 설계하는 도움을 줄 수 있다. Sitara 프로세서는 변경이 불가능한 보안 부팅 아키텍처와 함께 암호화 기능을 사용해, 디바이스가 부팅 과정에서 언제나 테이크오버 방지 검사를 하도록 한다.

보안 부팅은 리셋 시에 시작되며, 보안 부팅의 일부로 디바이스는 서명과 암호화된 소프트웨어 및 코드를 부팅 미디어에서 수신하기 위해 자체적으로 초기화된다. 이 단계에서 on-chip SRAM의 보안 파티션이 생성되고, 하드웨어 암호화 엔진이 초기화되며, 안전 CPU 모드로 전환돼 디바이스 내 여러 가지 컨트롤 구성하고 보안 환경을 만든다.

그런 다음, 디바이스 on-chip ROM은 외부 미디어에서 보안 부팅 인증서와 함께 첫 번째 코드를 가져와 보안 SRAM에 로딩한다. 그리고 on-chip ROM은 루트 공개 키를 인증서에서 추출하고 디바이스에서 프로그램 된 값과 비교하는데, 루트 공개 키가 일치하면 그 인증서는 신뢰할 수 있는 것으로 본다. 그러면 on-chip ROM은 루트 공개 키를 사용해 더 많은 키들이 담겨 있는 키 링 데이터 구조를 암호로 인증한다. 키 링에 대한 인증을 통과하면 키 링의 모든 키들을 신뢰할 수 있는 것으로 보고, 이후의 소프트웨어 컴포넌트들을 인증하는데 사용할 수 있다.

또한, 디바이스 on-chip ROM은 루트 공개 키나 키 링의 키들 중 하나를 사용해 부트로더 및 기타 소프트웨어 컴포넌트들과 인증서들을 가져온다. 이 디바이스는 신뢰할 수 있는 소프트웨어에 의해 작동되는 애플리케이션 프로그래밍 인터페이스도 제공하는데, 다음 소프트웨어를 인증하고 그 다음 소프트웨어에 통제권을 전달한다.

IP 보호(기밀성)
IP 보호는 시스템 제조사가 외부 부트 미디어에 있는 자체 IP 및 코드를 암호화할 수 있는 방법을 제공한다. IP 보호는 특정 보안 인증에 필요할 경우도 있다. Sitara 프로세서는 외부 부팅 미디어의 코드 및 소프트웨어가 암호화된 IP 보호를 지원한다. 보안 부팅의 일부로 Sitara 프로세서는 디바이스에 공급된 키들을 사용해 코드 및 소프트웨어를 해독하기도 한다.
 
결론
보안 부팅은 적절하게 구성되면 RoT(root-of-trust) 공급에 대한 기반이고 시스템 보안의 필수 요소이다. Sitara 프로세서는 하드웨어와 강력한 암호화 알고리즘, 보안 부팅을 지원하는데 필요한 지원 인프라를 갖추고 있으며, 설계자는 이를 통해 보안 목표를 충족하는 보안 서브시스템을 구축할 수 있다.

 

글 | 암리트 문드라(Amrit Mundra) 보안 설계자 및 시스템 엔지니어
홍 구안(Hong Guan) 보안 애플리케이션 엔지니어
자료제공 | 텍사스 인스트루먼트

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지