누구를 신뢰할 것인가?
  • 2015-08-03
  • 김언한 기자, unhankim@elec4.co.kr
  • 글|존 랄스턴(John Ralston) 시스템 아키텍트 프리스케일 반도체(Freescale Semiconductor)




얼마 전까지만 해도 공장의 정문을 닫고 문만 지키면 내부의 보안과 안전을 확보할 수 있었다. 그러나 상호 연결된 오늘날의 세계에서 동일한 수준의 보안을 확보하려면 공장 내외부의 전자통신을 세심하게 보호해야만 한다. IPsec 및 SSL과 같은 보안 프로토콜로 전자통신의 보안을 확보하는 것은 충분치 못하다.

USB 드라이브를 통한 트로이목마 악성 소프트웨어 설치나 독점 데이터 도난과 같은 내부자로 인한 우발적 또는 고의적 위협에 대해 공장을 방어해야 한다. 원격 및 내부자 위협을 완화하려면 디바이스 제어 및 데이터 액세스에 대한 보안 정책을 수립하고 이행해야 하며, 이 둘은 신뢰할 수 있는 컴퓨팅의 범주에 속한다.
신뢰할 수 있는 산업 플랫폼의 이해관계자는 다음과 같은 다양한 시나리오를 고려해야 한다.

1. 누구에게 디바이스를 제어하거나 데이터에 액세스할 권한을 부여할 것인가?
2. 디바이스를 신뢰할 수 있음을 어떻게 아는가?
a. 클론이 아님
b. 펌웨어와 OS가 손상되지 않음
c. 애플리케이션(타사 앱 포함)이 손상되지 않음
d. 사용자 데이터의 기밀성과 무결성 제공

신뢰할 수 있는 플랫폼은 순전히 소프트웨어로만 구축할 수 없으며, 하드웨어 내에 신뢰 근원(불변의 자격 증명)이 있어야 한다. 이러한 자격 증명을 통해 하드웨어에서 펌웨어, 애플리케이션, 통신 링크로 신뢰가 확대될 수 있다.

일부 임베디드 프로세서(SoC)는 하드웨어 RoT(신뢰 근원)의 역할을 할 수 있다. 이러한 SoC에는 OTP(원타임 프로그래머블) 퓨즈와 내장 ROM 기반 보안 부트 코드가 통합되어, CPU에서 소프트웨어가 실행되도록 허용하기 전에 SoC가 소프트웨어를 검증할 수 있다. CPU에서 실행될 권리를 획득하는 이외에도, 검증에 성공한(신뢰할 수 있는) 소프트웨어는 SoC에 통합된 비밀 키를 사용할 권리도 얻는다. 이 비밀 키를 사용하여 추가 자격 증명 및 키, 시스템 소프트웨어의 민감한 부분, 잠재적인 사용자 데이터를 비롯한 시스템 개발자가 중요하다고 생각하는 모든 것을 보호할 수 있다.

다음 절차는 임베디드 프로세서에 신뢰 근원을 프로비저닝하는 방법과 해당 신뢰 근원에서 신뢰 체인의 생성을 지원하는 방법을 보여준다.

a) 플랫폼 소유자가 비대칭 키 쌍(공개 및 개인 키)과 함께 비밀 대칭 키(예: AES)를 만든다.
b) 플랫폼 소유자가 SoC의 OTP 퓨즈에 공개 키와 비밀 대칭 키를 프로그래밍한다. 고유 ID 및 디버그 액세스 권한을 위해 추가 퓨즈를 프로그래밍할 수도 있다.
c) 플랫폼 소유자가 신뢰할 수 있는 부트로더를 생성하고, 해시를 적용한 다음, 비대칭 개인 키를 사용하여 해시를 암호화한다. 개인 키로 암호화된 해시를 디지털 서명이라고도 부른다. 디지털 서명이 첨부된 부트로더를 플래시에 프로그래밍해 넣는다.
d) 플랫폼 소유자가 추가 비대칭 및 대칭 키가 포함된 파일을 생성하고 비밀 대칭 키로 해당 파일을 암호화한다. 이 '키 파일'을 플래시에 프로그래밍해 넣는다. 참고: 예제를 간소화하고자 하나의 키 파일만 생성했지만, 여러 키 파일을 만들거나 키마다 하나의 파일을 만들 수도 있다.
e) 플랫폼 소유자가 다른 플랫폼 이해관계자에게 키 파일에서 선택한 키의 사본을 제공하여 애플리케이션 소프트웨어와 같은 다른 자산의 디지털 서명과 암호화를 수행할 수 있도록 한다. 이러한 추가 자산은 플랫폼을 현장으로 보내기 전에 플래시에 프로그래밍해 넣거나 또는 나중에 원격으로 설치할 수 있다.

시스템이 현장에 설치된 다음에는 다음과 같은 절차가 이어진다.

a) 플랫폼의 전원을 켜면 SoC가 내장 bootROM으로부터 부팅을 시작한다. 내장 bootROM은 퓨즈에 프로그래밍된 공개 키를 사용하여 부트로더의 디지털 서명을 검증한다.
b) 부트로더가 성공적으로 검증되면 신뢰할 수 있는 상태가 된다. CPU가 내장 bootROM 코드의 실행을 중단하고 신뢰할 수 있는 부트로더로 전환한다.
c) 비밀 대칭 키를 사용할 권한을 획득한 신뢰할 수 있는 부트로더가 키 파일을 복호화한다.
d) 신뢰할 수 있는 부트로더는 키 파일의 키를 사용하여 플래시에서 추가 소프트웨어를 검증 및 복호화하거나, 추가 소프트웨어를 다운로드할 수 있도록 프로비저닝 서버에 보안 터널을 만들거나, 신뢰할 수 있는 부트로더에서 지원하는 모든 범위의 보안 작업 또는 신뢰할 수 있는 부트로더에 의해 검증된 애플리케이션을 실행한다.

신뢰성 보장을 위해 플랫폼은 부팅 시기에 작동 중 악용되지 않음을 입증하며, 일부 보안 임베디드 프로세서의 경우 하드웨어 변조 감지, 런타임 무결성 검사, 보안 디버그 인터페이스, 보안 가상화를 위한 프로세서에서 실행되는 가상 머신에 대한 세밀한 메모리 액세스 제어 정책, 해당 가상 머신에서 사용되는 가속기 및 IO를 지원하기도 한다.
이는 프로세서에서 하드웨어를 통해 감지할 수 있다.

1) 소프트웨어 위반은 프로세서 내부의 다음 하드웨어 요소를 통해 감지할 수 있다.

a) 프로세서 내부의 CPU(코어) 요소
i) 사용자 모드, 관리자 모드, 하이퍼바이저 등 하드웨어로 이행되는 권한 및 신뢰 수준
ii) 각 코어에 할당된 MMU(메모리 관리 장치)를 통한 하드웨어 메모리 영역 보호
iii) 프로세서 설정 레지스터가 가장 높은 우선순위/신뢰 수준임
b) 인텔리전트 주변기기

하드웨어 메모리 보호는 각 주변기기에 할당된 MMU에 의해 수행된다. 이를 주변기기 또는 시스템 관리 장치라 부른다.

2) 외부 변조
    내부 하드웨어 블록은 외부 핀을 모니터링한다. 핀의 상 태가 예상과 다를 경우, 프로세서가 사전 정의된 신뢰할 수 있는 상태에 돌입한다.

3) 소프트웨어가 실행된 이후 메모리가 초기 값(기본적으로 변경되지 않아야 하는 코드 및/또는 고정 데이터)에서 변경되었는지 감지하려면 런타임 무결성 검사를 실행하는 하드웨어가 필요하다.

산업용 장비에 대해서는 다수의 비즈니스 모델을 적용할 수 있다. 위 설명의 플랫폼 소유자는 보드 제조업체, OS(운영체제) 공급업체 또는 미들웨어 공급업체가 될 수 있다.

신뢰할 수 있는 OS 공급업체의 경우,
1. 프로세서에 프로그래밍될 모든 키를 생성하고,
2. 부트로더를 구축하고 디지털 서명을 적용하며,
3. 플랫폼의 최종 사용자별로 키를 생성하고 해당 키를 최종 사용자에게 제공하며,
4. OS와 최종 사용자별 키가 암호화되고,
5. 신뢰할 수 있는 제3자를 사용하여 상기 1에서 생성한 프로세서 키를 프로세서에 프로그래밍해 넣으며,
6. 이 시점에서 프로세서, 부트로더, OS 번들을 제조시설에 제공할 수 있다.

OS에 암호화된 최종 사용자 데이터/코드를 로드할 수 있는 방법이 포함되어 있는 것으로 가정한다.
프리스케일의 보안 임베디드 프로세서 RoT(root of trust) 및 신뢰 체인 툴킷은 위 내용과 다른 시나리오를 수용하기에 충분히 유연하다.
그렇다면 공장과 장래의 산업용 네트워킹 애플리케이션의 보안 확보에서 누구를 신뢰할 것인가? 

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>


#보안  

  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP