mbed connect 2016 참관 후기

Posted by 카이젠8501 카이젠8501
2016.11.03 16:42 IT 개발/기타

mbed connect

mbed connect 일정동안 keynote 발표를 들으면서, ARM이 강조하고 싶은 2 Keyword는 mbed os, Security 라는 생각이 들었습니다.

특히 아래 그림에서 볼 수 있듯이, ARM에서는 TrustZone 기능이 추가/보완 된 ARM-v8M 아키텍쳐 기반의 H/W를 사용하고 그 위에 mbed os 를 S/W로 사용하면 보안에 강력한 임베디드 디바이스를 구성 할 수 있다고 설명하고 있습니다.

01_mbedconnect

Security

현재 보안이 매우 중요해지고 있음에도 불구하고, 소형 임베디드 디바이스는 제한적인 보호 상태이거나, 개발자에게 높은 전문 기술 지식을 요구하는 소프트웨어 관리 보안 시스템에만 의존하고 있는 상황이라고 합니다. 이에 마이크 뮬러(Mike Muller) ARM 최고기술책임자(CTO)는 ARMv8-M에 구현된 하드웨어 아키텍처 보안을 적용시킴으로써 훨씬 더 쉽게 보안을 구축하고 효율적으로 실행할 수 있도록 도울 수 있다고 설명하였습니다.

ARMv6-M & ARMv7-M 대비 ARMv8-M의 특징은 아래와 같습니다. 아직까지는 ARMv8-M 아키텍처 기반의 Core(예, Cortex-M0,M0+ ….)는 존재하지 않으나, Cortex-M0,M0+와 대응되는 제품군을 ARMv8-M baseline으로 Cortex-M3,M4,M7과 대응되는 제품군을 ARMv8-M mainline으로 전환 할 것으로 보입니다.

02_mbedconnect

기존 아키텍처(ARMv6-M,ARMv7-M)와 가장 큰 특징적인 차이는 ARM TrustZone 기능의 추가 이며, TrustZone은 여러 방식으로 변이되는 소프트웨어 공격 및 일반 하드웨어 공격을 막아 낼 수 있는 향상된 기술을 저렴한 비용으로 구현하기 위해 개발 되었다고 합니다.
TrustZone은 아래 그림과 같이 Non-secure state(RTOS와 Application)와 암호화 및 Key 매지니먼트, 무결성 검사와 같은 민감한 작업을 처리하는 Secure state 사이에 독립성을 제공합니다.

03_mbedconnect

이 아키텍처의 가장 큰 핵심은 별도의 보안 구역(trusted)을 만들어 이 안에서 작업을 한 후 정보를 박스에 넣고 열쇠를 채워 비신뢰 보드로 넘기게 되는데, 이 비신뢰 모드에서는 이 박스가 어떻게 생겼고 열쇠가 어떻게 잠겼으며 그 안에 어떤 내용이 채워져 있는지 볼 수 없게 하는 방식 입니다.

간단하게 정리하면, ARM은 ARMv8-M 아키텍처를 사용하여 SoC 레벨에서 Security를 위한 기능을 제공하고 있으며 기존 Software 레벨에서 제공하는 보안 기술(ex, SSL/TLS)와 같이 사용하여 보다 더 강화된 보안을 보다 더 쉽게 사용 할 수 있다고 강조 하고 있습니다.

하지만 아직 ARMv8-M 아키텍처를 이용한 Core가 시중에 나와 있지 않은 관계로, 위즈네트에서는 조금 더 시간을 가지고 ARMv8-M 아키텍처를 사용한 Core들의 동향을 지켜 봐야 할 것 같습니다.

mbed OS

이전 mbed OS 2(“Classic”), mbed OS 3 (“Eventing OS”)와 비교하여 가장 큰 차이점은, mbed OS 5에는 RTOS, connectivity, security component가 maintenance core로 포함되었다는 것입니다. 이전에는 분리 되어 있던 Network Stack과 mbed cloud client가 포함되고, 보안을 위한 mbed TLS, Security APIs(mbed uVisor)가 추가 된 것을 볼 수 있습니다.
Network Stack에는 Ethernet, BLE, Wi-Fi, 6LoWPAN, Thread 등이 있습니다.

05_mbedconnect

mbed OS 또한 Security를 강조하고 있으며, 이를 반영하기 위해 mbed OS의 구조를 조금씩 업그레이드 하고 있음을 확인 하였습니다. 앞에서 설명한 내용은 Hardware(SoC) 측면에서 보안 기술을 적용하는 반면, mbed OS는 mbed TLS, mbed uVisor를 이용하여 Software 측면에서 보안 기술을 개발하고 적용하였습니다.

04_mbedconnect

mbed OS에서는 Security code compartment, Communication security, Lifecycle security로 나누어서 IoT 단말의 보안을 관리 합니다.

06_mbedconnect

Security code compartment ( uVisor )

먼저 Security code compartment를 위해서는 uVisor라는 기술을 사용하는데, mbed uVisor는 OS에서 가장 하위 계층에 위치하며, MPU(Memory Protection Unit)을 통해 Cortex-M3, M4, M7 Core 상에 ‘boxes’라고 명 명하는 격리된 보안 영역(예, 샌드박스)을 생성하는 일종의 하이퍼바이저 로써 기기 자체 보호 기능 입니다.

uVisor의 주요 기능은 ACLs(Access Control Lists)이며, 아래 그림을 보면 ACLs의 개념을 쉽게 이해 할 수 있습니다. User는 uVisor를 통해 Application 혹은 Task를 Box로 묶어서 관리 할 수 있고, 해당 Box만 접근 할 수 있는 MCU의 Peripheral 들을 지정 할 수 있습니다. 예를 들어 User가 Box1이라고 지정한 Application에서는 Timer와 UART만 사용할 수 있도록 설정해 놓았는데, Flash나 I2C와 같은 Peripheral을 사용하려면 Memory Fault와 같은 Error를 발생시켜 OS 내에 악성코드나 외부의 공격 코드로부터 훼손된 시스템 컴퍼넌트, 드라이버로 부터 Box를 보호 할 수 있다는 개념입니다.

08_mbedconnect

Communication Security

SSL은 안전하지 않은 데이터를 암호화 하여 안전하게 전달하기 위해 사용 합니다. SSL 버전 1은 실제로 발표 되지 않았었고, SSL 버전 2가 공개 적으로 발표되었는데 많은 보안 취약점이 있었다고 합니다. 그래서 그것을 보완한 버전이 SSL 버전 3이며 공식적으로 표준화 한 이름이 TLS 입니다. 이를 같이 묶어서 SSL/TLS라고 부릅니다.
mbed에서는 mbedTLS를 지원 함으로써 데이터를 암호화 하여 송/수신 할 수 있는 기능을 제공하고 있습니다.

Lifecycle Security

mbed cloud client에서는 Key Value, Device ID 및 특정 설정 값들을 이용하여 Device의 상태를 관리 하거나 제어 할 수 있는 기능을 제공합니다. 또한 Device의 Firmware도 원격에서 Upgrade 및 Downgrade 하는 기능도 제공합니다.

Conculution

mbed OS를 사용하여 mbed에서 추구하는 보안 기능을 사용하기에는 W7500, W7500P의 한계를 확인 할 수 있었습니다. 우선 Cortex M0/M0+에서는 MPU(Memory Protected Unit)을 지원하지 않기 때문에 Secure code를 보장하기 위한 uVisor 기능을 사용할 수 없습니다.
또한 W7500, W7500P는 RAM size가 부족하여 mbed TLS와 같은 Communication Security의 사용도 어려운 것으로 판단 됩니다.

IoT 서비스가 활성화 되면서 경량 기기에 대한 다양한 기능적 요구가 증가함에 따라 OS 운영이 불가피하게 되었고, 인터넷 연결 특성으로 인한 보안 위협에 대한 대비도 강조되고 있습니다. 이에 위즈네트는 mbed OS와 mbed Security 및 mbed 이외의 다른 RTOS 및 Security를 사용할 수 있을 만큼의 퍼포먼스를 가진 MCU 라인업을 구축 하기 위한 방안을 장기적으로 고려 해 봐야 될 것 같습니다.

그래도 Connectivity 쪽으로 접근하면 희망적으로 WIZnet과 ARM mbed가 공생할 수 있는 포인트들이 있다고 생각합니다. 예를 들어, ST, Freescale 등 다른 회사의 MCU에 mbed OS를 사용하고 Wi-Fi 및 Ethernet Interface를 사용하고 싶은 경우 WizFi250/WizFi310 및 WIznet의 Ethernet Module들을 활용 할 수 있도록 가이드 할 수 있습니다.

단, 위의 모듈들이 mbed OS를 활용하는 고객들을 만족시키기 위해서는, WIZnet 모듈에 대한 mbed OS 라이브러리 지원 및 유지 보수 작업에 지금 보다 더 많은 시간을 투자 해야 한다고 생각합니다.
( *참고 : 이미 WizFi250과 Ethernet Module을 mbed platform 에서 사용할 수 있도록 라이브러리나 드라이버가 준비되어 있지만, 이는 상위 버전(ex, mbed OS5)과 호환이 안됨. 즉, mbed OS5를 위한 갱신된 라이브리 필요. )


참고자료 

- http://aqwerf.tistory.com/12

- http://www.insightsemicon.com/news/article.html?no=128289

- http://m.autoelectronics.co.kr/article/articleView.asp?idx=1904

- https://gigglehd.com/zbxe/newsreport/13542447

- http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Idbt&articleno=7593753&categoryId=404972&regdt=20151005145502




저작자 표시
신고
이 댓글을 비밀 댓글로