보안 부트 달성 시, 보안 마이크로컨트롤러의 중요성
보안 침해의 위험성
  • 2014-06-17
  • 김창수 기자, cskim@elec4.co.kr
  • 글 | 크리스토프 트램렛(Christophe Tremlet) 마케팅 매니저 맥심 인터그레이티드


보안 부트는 보안 위협을 방어할 수 있는 해결 방법으로 알려졌다. 보안 부트가 적절히 시행되는 동안, 보안 부트 프로세스가 특정한 시스템으로 허가되고 신뢰할 수 있는 소프트웨어만 실행해 모든 진행 사항에 멀웨어가 주입되지 않도록 방지하기 때문이다. 하지만 보안 부트 고유의 해결할 과제가 없는 것은 아니다. 이글은 보안 부트 구현을 효율적이고 높은 수준의 보안성을 보장하는 보안 마이크로컨트롤러에 대해 설명한다.

최근 임베디드 시스템의 보안 문제로 하루도 빠짐없이 새로운 사이버 공격이 발생하고 있다. 가장 염려스러운 점은 의료나 인명 안전에 관한 시스템에 대한 공격이다. 이 공격은 지구촌 어디에서나 발생할 수 있어 우리 모두가 피해자가 될 수 있다.

보안 침해의 위험성

통상적으로 보안 공격 시에는 시스템으로 멀웨어(악성 소프트웨어)가 주입된 것을 발견할 수 있다. 일단 공격자가 부정한 소프트웨어를 성공적으로 설치하면 허가되지 않은 소프트웨어로 다음과 같은 공격을 할 수 있다:

-- 기밀 데이터의 외부 유출을 들 수 있다. 예를 들어 환자의 개인 정보가 노출되었을 때의 파장을 생각해보자. 더욱 심각한 예로는 악의적 소프트웨어가 암호화 키를 유출해 훨씬 광범위한 범위로 파장을 몰고 올 수 있다.
-- 시스템 동작을 변화시켜 시스템이 예기치 않은 방식으로 동작할 수 있다. 실제로 2010년 6월 스턱스넷(Stuxnet) 바이러스는1 PLC(programmable logic controller)를 감염시켜 원심분리기를 구동하는 모터가 지정된 것과 다른 속도로 가동됐다.
-- 예기치 못한 동작을 유발하여 생명에 위협을 초래할 수 있다.


보안 부트를 이용한 보호

이러한 위협을 방어할 수 있는 해답은 보안 부트(secure boot)이다. 적절하게 시행되는 보안 부트 프로세스는 특정한 시스템으로 허가되고 신뢰할 수 있는 소프트웨어만 실행한다. 따라서 업데이트할 때를 비롯한 모든 진행 사항에 멀웨어가 주입되지 않도록 방지한다. 시스템 사용자가 시스템에 높은 수준의 시스템 신뢰도를 유지하기 위해서는 이러한 보안 부트 프로세스가 검증된 암호화 알고리즘을 이용해야 한다. 하지만 보안 부트는 자체로서 고유의 해결해야 할 과제를 가지고 있다.

-- 가장 적합한 알고리즘은 비대칭 알고리즘으로 이를 위해서는 집중적인 컴퓨팅 성능이 필요하다.
-- 이들 알고리즘에 이용되는 키를 보호하고 무결성을 유지해야 한다.
-- 구현상의 결함이 없어야 한다.

인증 및 디지털 서명

대상 임베디드 시스템이 허가된 소프트웨어만 실행하기 위해서는 해당 펌웨어를 인증해야 한다. 이러한 인증 프로세스를 이용함으로써 어떤 소프트웨어가 ‘정식(genuine)’으로 승인된 주체에 의해서 작성되거나 허가된 것임을 검증할 수 있다.

인증을 가능하게 하는 기법을 디지털 서명(digital signature)이라고 한다. 펌웨어로 디지털 서명을 추가하는 것은 서류 하단에 인지를 부착하거나 실제 서명을 하는 것에 비유할 수 있다. 제조 단계에서 로드하는 소프트웨어에 디지털 서명을 해야 하고 매 펌웨어 업데이트 시에도 이 프로세스를 적용해야 한다. 디지털 서명은 해당 장비의 작동 수명 전반에 걸쳐 시스템을 신뢰할 수 있게 한다.

강력한 디지털 서명을 달성하기 위해서는 암호화 알고리즘을 이용해야 한다. 최대의 보안성을 달성하기 위해선 알고리즘이 공개식이며 잘 검증된 것이어야 한다. 이제 비대칭 암호화 알고리즘, 특히 ECDSA(elliptic curve digital signature algorithm) 또는 RSA, 그리고 여기에 SHA를 결합적으로 이용하는 것에 대해 살펴보겠다. 시스템 펌웨어를 ECDSA나 RSA를 이용해서 인증하면 사용자가 그 펌웨어를 아주 높은 수준으로 신뢰할 수 있다. 그렇다면 어떻게 가능한지 알아보겠다.

비대칭 암호화를 기반으로 한 보안 부트

비대칭 암호화를 기반으로 한 보안 부트는 기본적인 한 가지 원칙을 전제로 한다. 소프트웨어 개발자는 서명에 이용하기 위한 비밀 키를 가지며, 임베디드 장비는 확인에 이용하기 위한 공개 키를 저장하고 있다는 것이다. 이러한 핸드쉐이킹 관계의 중요성은 아무리 강조해도 지나치지 않는다. 대칭 암호화와 비교해 비대칭 암호화의 가장 큰 장점은 기밀적 요소(비밀 키 등)가 현장에 구축되는 최종 제품에는 절대로 저장되지 않는다는 것이다.

따라서 ECDSA나 RSA 알고리즘을 적용하면 공격자가 아무리 정교한 침입 공격 기법을 동원하더라도 비밀 키를 알아낼 수 없다. 이유는 현장 시스템은 어디에도 비밀 키가 저장되어 있지 않기 때문이다. 공격자가 현장 장비로부터 알아낼 수 있는 것은 공개 키뿐이고 비대칭 암호화의 원리상 공개 키가 알려졌을 때는 비밀 키를 알아내는 것이 불가능하다.

그림 1은 비대칭 암호화를 이용한 보안 부트의 프로세스 절차를 보여준다. SHA-256 해쉬 알고리즘을 이용해 ECDSA 및 RSA 알고리즘을 효율적이고 안전하게 지원할 수 있다. 따라서 현재 달성할 수 있는 최고 수준의 보안 인증을 달성할 수 있다. 그렇다면 왜 SHA-256이 함께 필요한 것일까? 그것은 성능 상의 이유에서 전체적인 펌웨어를 디지털 서명하는 것이 실용적이지 않기 때문이다.

그 대신 SHA-256을 이용해 고유성을 보장하며 위조할 수 없는 다이제스트(‘해쉬’ 값이라고 함)를 처리하는 것이다. 이후 다이제스트를 ECDSA나 RSA를 이용해서 서명할 수 있다. 이러한 같은 프로세스는 펌웨어 업데이트에도 적용할 수 있다. 업데이트는 소프트웨어를 제조 설비에서 프로그램하는 것이 아닌 내려받는 것이지만, 디지털 서명 생성 및 검증은 같은 프로세스를 따른다. 이와 같은 3단계 절차를 처리할 때 비밀 키가 소프트웨어 설계 센터 바깥으로 절대로 벗어나지 않는다는 것을 알 수 있다.


보안 마이크로컨트롤러를 이용한 구현 과제 해결

비대칭 암호화는 근본적인 이점을 제공하지만, 더 많은 컴퓨팅 자원을 필요로 한다. 대형 소프트웨어에 SHA 알고리즘을 처리하는 것을 소프트웨어로 실시할 때는 많은 시간이 소요된다. RSA나 ECDSA 서명 확인은 특히 메인 시스템 마이크로컨트롤러가 곱셈기를 포함하지 않을 시에는 상당한 오버헤드를 필요하다.

또 다른 과제는 공용 키와 이에 대한 증명의 무결성을 보장하는 것이다. 용어에서 알 수 있듯이 공용 키는 비밀로 유지할 필요가 없다. 공용 키가 있어야만 확인할 수 있으므로 공용 키는 누구에게나 노출될 수 있다. 하지만 공격자는 원래 공용 키를 다른 공용 키로 바꾸려고 시도할 수 있다. 이러한 시도가 성공하면 해당 장비는 이제 공격자의 비밀 키를 이용해서 서명된 부정한 소프트웨어를 허가된 것으로 인증할 수 있다. 이 같은 시나리오가 발생하는 것을 방지하기 위해 공용 키가 수정되거나 교체되지 않았단 보장은 물론, 수정하거나 교체할 수 있도록 보장해야 한다. 다시 말해 공용 키의 무결성을 보호해야 한다.

중급형 마이크로컨트롤러로 실행되는 많은 시스템은 이와 같은 기본적인 요구를 충족하기가 수월하지 않다. 메인 시스템 마이크로컨트롤러를 변경하려면 전체적인 시스템 설계를 변경해야 하므로 바로 이럴 때는 보안 마이크로컨트롤러를 추가할 수 있다. 이러한 보안 마이크로컨트롤러는 보안 부트를 효율적으로 구현할 수 있어야 하고, 위에서 언급한 성능 요구를 충족해야 한다. 또한 공용 키를 보호하면서 매우 높은 수준의 보안성을 보장할 수 있어야 한다.

보안 부트를 지원하는 DeepCover 마이크로컨트롤러

바로 이 같은 보안 부트를 실행할 수 있는 마이크로컨트롤러가 최근에 출시되었다. 이 보안 마이크로컨트롤러는 위에서 열거한 모든 요구를 충족한다. 그림 2는 DeepCover MAXQ1050 마이크로컨트롤러를 이용함으로써 다양한 임베디드 장비로 보안 부트를 구현할 수 있다는 것을 보여준다.
MAXQ1050은 보안 해쉬 엔진을 포함함으로써 펌웨어 해쉬 연산을 가속화할 수 있는 성능을 제공한다.

이러한 해쉬 시간은 시스템의 부트 시간에 직접 영향을 미친다. 이 점은 아주 중요한 이점이다. 또한 모듈러 산술 연산에 이용하기 위한 MAA 하드웨어 가속화기를 포함해 고속으로 ECDSA 또는 RSA 서명 인증을 처리할 수 있다.

그림 1의 보안 부트 구현에서 현장 활용(Field Usage) 단계로 돌아가서 살펴보자. MAXQ1050이 이들 모든 단계를 실시하고 메인 시스템 마이크로컨트롤러와 PMIC(power management IC)로 펌웨어 인증 상태에 대해서 통보한다. 여기서는 보안을 처리하는 성능뿐만 아니라 애플리케이션의 유연성에 대해서도 알 수 있다.

예를 들어 MAXQ1050의 GPIO 중 하나를 이용해서 PMIC로 하여금 메인 시스템 마이크로컨트롤러를 구동하도록 할 수 있다. 또는 이들 GPIO 중의 하나를 메인 마이크로컨트롤러의 리셋 핀으로 연결함으로써 펌웨어가 인증되었을 때만 리셋이 일어나도록 할 수 있다. 이 밖에도 선택적으로 MAXQ1050의 GPIO가 특정한 시퀀스일 때 메인 마이크로컨트롤러가 스타트업하도록 할 수 있다.

마지막으로 다시 한 번 강조하지만, 공용 키 무결성의 중요성은 절대로 과소평가할 수 없다. 이 마이크로컨트롤러는 보안 저장을 특징으로 공용 키와 그에 수반되는 확인, 레퍼런스 해쉬 값 모두의 보안성을 보장한다.

적합한 보안성 수준의 선택

많은 경우, 특정한 시스템으로 어느 정도 보안성 수준이 있어야 하는지 결정하기가 어려울 수 있다. 가능한 아주 높은 수준의 보안성을 달성하기 위해서는 그만큼 개발 비용과 제조비용이 비싸진다. 따라서 디자이너 측에서나 사용자 측에서나 비용과 필요한 보안성 사이에 허용 가능한 절충점을 찾고자 한다.

이러한 의사결정에는 많은 요인이 영향을 미친다. ‘공격자의 능력 수준은 어느 정도인가, 공격이 전문적인가, 아니면 아마추어적인가, 공격자가 명성을 노리는 학생일 것인가, 아니면 위조품을 판매하고자 하는 상업적 조직인가, 공격이 성공한다면 재정적으로 어떤 영향을 미칠 것인가, 공격은 어느 정도 범위까지 파장을 미칠 것인가, 그리고 가장 중요한 점으로써 누가 피해자가 되고 얼마나 심각한 피해를 입을 것인가?’ 등이다.

따라서 초보적 수준과 중간 수준, 고도 수준의 세 가지 수준의 공격 가능성을 알아보고, MAXQ1050이 각각의 공격 수준에 대해서 적정한 보호 수준으로 대응하는지 살펴보겠다.

(1) 초보적 수준의 공격
이 공격은 시스템을 멀웨어 주입 등과 같이 소프트웨어만으로 공격하는 것이다. 이 공격자는 시스템의 물리적 특성을 변화시킬 수 있는 어떠한 물리적 공격을 할 수 있는 능력도 없으며 도구도 가지고 있지 않다. 이 경우에는 그림 2에서 제안하는 MAXQ1050을 이용해 추가적인 특정한 설계를 하지 않고도 충분한 보호를 제공할 수 있다.
NIST에서는 키 길이를 RSA는 2048비트 이상이 되도록 하고 ECDSA는 224비트 이상이 되도록 권고하고 있다 .
(2) 중간 수준 공격
이 수준의 공격은 소프트웨어 공격 이외에도 공격자가 PCB 트랙을 탐침해 신호를 읽거나, 디지털 핀의 레벨을 변화시키거나, PCB로부터 IC를 제거하는 등과 같이 물리적으로 하드웨어를 공격할 수 있다. 이 수준의 공격은 위에서 설명한 초보적 공격보다 훨씬 더 복잡하고 심각하다. 그림 2에서 설명한 표준적인 MAXQ1050 구현은 직렬 플래시를 위조품으로 교체하려는 등과 같이 범위가 한정적인 일부 물리적인 공격을 방어할 수 있다.
SHA-256과 ECDSA 또는 RSA를 결합한 보안 부트 시퀀스는 어떠한 위조 소프트웨어이든 감지할 수 있다. 개발 비용이나 제조비용을 상승시키지 않으면서 하드웨어 공격에 대한 시스템의 방어 능력을 향상하기 위해서는 레이아웃 상의 추가적인 예방조치를 취할 것을 권장한다. 이러한 몇 가지 예를 들면 다음과 같다:

-- MAXQ1050을 PMIC나 메인 시스템 마이크로컨트롤러로 연결하는 신호 트랙을 PCB의 내부 층으로 배선한다. 이렇게 하면 공격자가 탐침하고 신호를 전기적으로 변화시키기가 쉽지 않기 때문에 해당 신호로 쉽게 접근하는 것을 막을 수 있다.
-- 메인 마이크로컨트롤러로 부트가 성공적이라는 것을 통보할 때 펄스나 펄스 시퀀스 등과 같은 동적 신호를 이용한다. 이렇게 하면 공격자가 이들 신호 핀을 접지나 VDD같은 고정적 레벨로 연결할 수 없다.
-- 메인 컨트롤러로 부트가 성공적이라는 것을 통보할 때 최소한 2개의 다중 핀을 이용해서 각기 다른 동적 신호를 전달하도록 한다. 공격자가 동시에 이 두 핀을 제어하기가 어렵게 트랙을 배선한다.

높은 수준 공격: 높은 수준 공격일 때는 공격자가 IC 본딩 와이어 또는 IC 자체 내의 신호를 정교하게 탐침하는 것과 같은 고도로 침입적인 공격을 해올 수 있다. 이러한 고도로 정교한 공격을 방어하기 위해서는 FIPS 140-2 level 3 또는 4를 충족하는 구현이 필요하다.

이 구현의 기본적인 원리는 어떠한 물리적 무단조작 시도를 감지했을 시에 즉시 민감한 정보를 파괴하고 시스템을 작동 불능 상태로 만드는 것이다. 하지만 장비를 가동하도록 복구하기 위해서 상당한 유지보수 작업을 필요해 이 수준의 보호는 보안성이 시스템 가용성보다 더 중요한 경우에만 시행해야 할 것이다.

MAXQ1050은 자체 파괴 입력과 즉시 소거 가능한 NVSRAM을 포함해 최고 수준 보안 요구를 충족할 수 있다. 이 마이크로컨트롤러는 유연성이 뛰어나며 추가적인 구현 단계를 통해 최적의 구현을 달성할 수 있다. 
 
결론

신뢰할 만한 임베디드 시스템을 달성하기 위해서는 보안 부트가 반드시 필요하다. 비대칭 암호화와 보안 마이크로컨트롤러는 높은 유연성을 지원해 하드웨어 디자이너 및 소프트웨어 디자이너가 최대 수준의 보안을 달성하는 데 큰 도움을 준다. 

참고문헌
1. Symantec Security Response, W32.Stuxnet Dossier, Version 1.4(February 2011),http://www.symantec.com/content/en/us/enterprise/
media/security_response/whitepapers/w32_stuxnet_dossier.pdf
2.
http://csrc.nist.gov/publications/nistpusbs/800-131A/sp800-131A.pdf

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



  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP