산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 클라우드 컴퓨팅

LPC5500의 Arm TrustZone 보안 기능을 활용하는 방법

LPC5500 시리즈용 Arm TrustZone 확장이 작동하는 방식과 맞춤형 보안 및 비보안 애플리케이션에서 안전 조치를 활용하는 방법에 대해 알아보세요.

연결 장치가 증가하고 해커가 정교해짐에 따라 NXP Semiconductors와 같은 많은 회사에서 대응책의 필요성을 인식하고 있습니다. NXP는 임베디드 프로젝트를 보호하는 데 사용할 수 있는 향상된 보안 기능과 함께 제공되는 LPC5500 MCU 시리즈를 개발했습니다.

NXP는 FIPS 호환 난수 생성기를 채택하고 "프린스" 복호화 알고리즘(코어가 대칭 암호화 코드를 실행하도록 허용)을 선택했으며 PUF 기술로 4096비트 임시 온칩 키를 구현했습니다. 온칩 암호화 하드웨어 가속기 'CASPER'와 결합된 LPC5500 MCU는 강력한 사이버 보안 대책과 전체 수명 주기 키 프로비저닝이 필요한 네트워크 에지 IoT 애플리케이션에 적합합니다.

또한 이 칩은 Cortex-M 기반 장치용 Arm TrustZone 기술을 활용합니다. 이 기사에서는 LPC5500 시리즈의 TrustZone 확장이 작동하는 방식과 맞춤형 애플리케이션에서 안전 조치를 활용하는 방법을 알아봅니다.

Cortex-M용 Arm TrustZone 기술이란 무엇입니까?

TrustZone의 핵심 원칙은 예를 통해 가장 잘 설명됩니다. MCU 제조업체는 보안 라이브러리, 부트로더 또는 마이크로컨트롤러의 ROM에 고속 DSP 알고리즘과 같은 맞춤형 독점 코드를 제공하는 경우가 많습니다. 그러나 이러한 응용 프로그램의 작성자는 종종 지적 재산을 보호해야 할 충분한 이유가 있습니다. 사용자나 경쟁업체가 알고리즘을 리버스 엔지니어링하기 위해 바이너리를 디컴파일하는 것을 원하지 않을 수도 있습니다.

한편으로 프로그래머는 이러한 사전 정의된 소프트웨어 라이브러리를 활용하기를 원합니다. 그러나 제조업체는 코드가 악의적인 당사자에게 노출되는 것을 원하지 않습니다.

그림 1. 비보안 사용자 코드와 보안 ROM 콘텐츠는 동일한 물리적 MCU에 있습니다.

공급자는 개발자가 기능에 액세스할 수 있도록 하면서 구현 세부 정보를 숨기기를 원합니다. 사용자 코드는 숨겨진 소프트웨어의 노출된 메서드를 호출할 수 있지만 보안 ROM이 소유한 메모리에 직접 액세스할 수는 없습니다. 결과는 두 개의 격리된 하위 시스템으로 구성된 구조입니다. 이 두 세계 간의 전환은 TrustZone 보안 확장에 의해 관리됩니다.

이는 TrustZone을 활용하는 마이크로컨트롤러가 두 개의 개별 프로젝트로 설계될 것임을 의미합니다. 첫 번째 프로젝트는 보안 상태에서 시작됩니다. 그런 다음 온칩 리소스에 대한 보안 속성을 구성하고 비보안 상태에서 액세스할 수 있는 테이블에 보안 기능을 게시할 수 있습니다. 두 번째 코드에는 비보안 코드가 포함되어 있으며 보안 세계의 노출된 기능에 대한 액세스가 제한되어 있습니다.

이전 아키텍처와의 차이점

Cortex-M3 및 -M4 코어는 스레드 모드와 핸들러 모드의 두 가지 프로세서 모드를 알고 있습니다. 응용 프로그램 소프트웨어는 스레드 모드에서 실행되고 핸들러 모드는 예외를 처리합니다. 코드는 특정 CPU 기능에 대한 액세스를 제어하는 ​​특권 수준 또는 비특권 수준에서 작동할 수 있습니다.

Cortex-M33 코어의 TrustZone 확장으로 위에서 논의한 것처럼 두 가지 새로운 상태가 도입되었습니다. 이러한 변경으로 인해 비보안 처리기, 보안 처리기 모드, 비보안 스레드 및 보안 스레드의 네 가지 프로세서 모드가 생성되었습니다.

그림 2. M33 코어의 TrustZone 확장은 4가지 프로세서 모드를 생성합니다.

다른 업데이트 외에도 새로운 상태와 함께 새로운 SysTick 타이머도 도입되었습니다. 이제 보안 상태와 비보안 상태에 대한 별도의 타이머가 있습니다.

메모리 파티션

앞서 언급했듯이 MCU의 메모리는 보안 영역과 비보안 영역으로 분할됩니다. MCU의 CPU 코어는 보안 모드 중 하나에서 작동하는 경우에만 보안 메모리 영역에 액세스할 수 있습니다. 다른 메모리 파티션에 있는 명령에 액세스할 수 없습니다. 그러나 데이터 RAM의 보안 및 비보안 세그먼트를 읽고 쓸 수 있습니다. CPU 코어가 비보안 상태인 경우 비보안 명령어 및 데이터 메모리 블록에만 액세스할 수 있습니다.

TrustZone은 보안 속성으로 메모리 맵의 주소 범위를 장식합니다. 보안 속성에는 보안(S), 비보안(NS), 비보안 호출 가능(NSC)의 세 가지 속성이 있습니다. 코어의 현재 보안 상태에 따라 각 메모리 영역에 대한 액세스가 허용되거나 거부됩니다.

그림 3. CPU는 보안 및 비보안 모드에서 서로 다른 영역에 액세스할 수 있습니다.

LPC55S69 장치에서 메모리는 주소에 따라 보안 세그먼트와 비보안 세그먼트로 분할되었습니다. 메모리 주소 비트 28이 LOW이면 메모리는 비보안입니다. 그렇지 않으면 안전합니다. 유일한 예외는 보안 속성을 통해 구성할 수 있는 프로그램 메모리입니다.

보안 애플리케이션의 빌딩 블록

비보안 코드는 애플리케이션의 보안 부분을 직접 호출할 수 없습니다. 대신 보안 부분은 사용자가 액세스할 수 있는 기능 목록을 노출합니다. 이 목록은 외부에서 볼 수 있지만 내부 세부 사항을 숨기는 매우 얇은 레이어이기 때문에 베니어 테이블이라는 이름이 붙여졌습니다. 베니어 테이블은 TrustZone 속성 NonSecure Callable이 있는 메모리 영역에 있습니다.

일반적으로 고정 부품의 출처는 보이지 않습니다. 대신 컴파일되어 개체 라이브러리와 베니어 테이블을 헤더 파일로 제공합니다. 이러한 파일에는 실제 지침이 포함되어 있지 않지만 함께 보안 기능을 호출하는 데 필요한 정보가 포함되어 있습니다. 베니어 테이블에는 게이트웨이와 실제 명령이 있는 보안 메모리 위치에 대한 분기 명령만 포함됩니다.

보안 기능과 비보안 기능 간 전환

TrustZone 확장이 있는 CPU는 보안 및 비보안 간 전환을 위한 두 가지 새로운 기능인 SG 및 BXNS 명령을 지원합니다.

사용자 코드가 보안 기능을 원할 때 메모리의 NSC 부분에 있는 비니어 테이블을 통해 호출합니다. 그런 다음 SG 명령은 CPU를 보안 모드로 전환하는 데 활용됩니다. 실행이 완료되면 컨트롤이 BXNS 명령어를 사용하여 사용자 코드로 반환됩니다.

그림 4. 사용자 코드는 TrustZone 게이트키퍼를 통해 보안 기능을 호출해야 합니다.

사용자가 보호 영역에 직접 접근하는 등 불법적인 보안 관련 조작을 시도하면 Secure Fault 예외가 발생합니다.

보안 Hello World의 예

LPCXpresso55S69용 SDK는 MCUXpresso에 로드할 수 있는 몇 가지 TrustZone 예제와 함께 제공됩니다. 앞서 언급했듯이 이러한 예제는 보안 부분과 비보안 사용자 코드라는 두 개의 개별 프로젝트로 구성됩니다.

보안 부분은 다른 MCUXpresso 프로젝트와 거의 똑같습니다. 그러나 다음과 같은 함수 호출이라는 차이점이 있습니다.

이 함수는 가능한 한 빨리 호출되어야 합니다. 그 후 메모리와 비보안 프로젝트를 구성하는 것은 보안 프로젝트의 책임입니다.

보안 프로젝트가 모든 설정 호출을 처리하기 때문에 비보안 프로젝트는 그럴 필요가 없으므로 주요 기능은 짧습니다.

그러나 이 애플리케이션은 다른 프로젝트에서 정의된 보안 기능만 호출합니다. PRINTF_NSE 함수에 대한 다음 정의는 다음과 같습니다.

해당 정의를 따를 경우 보안 프로젝트에 정의된 베니어 테이블을 가리킵니다. 비보안 프로젝트는 베니어 테이블을 설명하는 헤더 파일만 알고 있다는 것을 기억하는 것이 중요합니다. 그러나 이 경우 소스 코드에서 해당 기능을 살펴볼 수 있습니다.

"__attribute__((cmse_nonsecure_entry))" 장식은 함수를 개체 파일로 내보내도록 합니다.

메모리 분할

보안 속성은 보안, NSC 또는 보안되지 않은 메모리 부분을 정의합니다. 액세스할 때마다 확인됩니다. 이를 위해 MCU는 이러한 검사를 처리하고 세 가지 논리 블록으로 구성된 하드웨어로 확장되었습니다.

<올>
  • 보안 속성 단위(SAU)
  • 구현 정의 속성 단위(IDAU)
  • 보안 속성 논리
  • SAU는 BOARD_InitTrustZone() 함수 내에서 보안 프로젝트에 의해 프로그래밍됩니다. 이를 통해 메모리를 보안 설정이 다른 8개 영역으로 분할할 수 있습니다. 명시적으로 설정되지 않은 모든 지역은 기본적으로 보안 상태를 유지합니다.

    IDAU를 통해 MCU 제조업체(이 경우 NXP)는 더 많은 사용자 지정 영역을 정의할 수 있습니다. 여기서 영역은 주소의 28번째 비트에 따라 달라집니다. LPC55S69 MCU에서 메모리 맵의 하단(0x0000_0000 ~ 0x2FFF_FFFF)은 기본적으로 비보안으로 설정되어 있으므로 SAU로 자유롭게 구성할 수 있습니다.

    중재자는 IDAU와 SAU 설정이 일치하는지 확인합니다. 메모리 영역이 비보안으로 표시되려면 두 논리 블록이 모두 비보안으로 설정되어야 합니다. 그렇지 않으면 메모리가 기본 보안 상태로 돌아갑니다. NSC 메모리 영역에도 동일하게 적용됩니다. 섹션이 NSC가 되려면 SAU가 NSC로 표시되어야 하고 IDAU가 비보안으로 설정되어야 합니다.

    MCUXpresso에는 사용자가 메모리 영역을 빠르고 쉽게 정의할 수 있는 도구가 있습니다. 도구에 액세스하려면 IDE의 기본 메뉴 모음을 사용하고 TEE Perspective를 엽니다.

    그림 5. 이 MCUXpresso 도구를 사용하면 MCU의 메모리 맵을 보고 편집할 수 있습니다.

    도구의 왼쪽에 있는 표는 메모리 영역의 보안 수준을 변경할 수 있습니다. 오른쪽의 메모리 맵은 메모리가 어떻게 분할되는지 보여줍니다.

    TrustZone은 필요한 보안 구성 요소를 제공합니다.

    TrustZone 기술이 적용된 LPC5500 MCU 시리즈에서 메모리는 보안 영역과 비보안 영역으로 분할됩니다. 사용자가 비보안 메모리의 일부에 액세스할 수 있도록 하고 보안 응용 프로그램을 작성하여 사용할 수도 있습니다. 다른 사람. TrustZone은 두 세계 사이의 게이트키퍼 역할을 하며 두 세계 간의 핵심 전환 방식을 관리합니다.

    이를 위해 두 가지 새로운 지침이 도입되었습니다. 보안 응용 프로그램은 비보안 컨텍스트에서 호출할 수 있는 기능을 노출하는 비니어 테이블을 제공합니다. MCU의 하드웨어는 잘못된 메모리 액세스 작업이 수행되지 않도록 합니다. 이 하드웨어는 메모리 맵의 영역을 구성하는 데에도 사용할 수 있습니다. 이를 위해 MCUXpresso는 TEE 관점을 제공합니다. LPC5500 시리즈 MCU에 제공되는 보안에 대한 더 깊은 이해는 더 나은 설계 경험을 가능하게 합니다. TrustZone에 대한 자세한 내용은 TrustZone:Calling the Secure World를 시청하여 확인할 수 있습니다.

    업계 기사는 업계 파트너가 편집 콘텐츠에 적합하지 않은 방식으로 All About Circuits 독자와 유용한 뉴스, 메시지 및 기술을 공유할 수 있는 콘텐츠 형식입니다. 모든 산업 기사는 독자에게 유용한 뉴스, 기술 전문 지식 또는 이야기를 제공하기 위해 엄격한 편집 지침을 따릅니다. 업계 기사에 표현된 관점과 의견은 파트너의 것이며 반드시 All About Circuits 또는 해당 작성자의 의견은 아닙니다.


    클라우드 컴퓨팅

    1. 클라우드와 클라우드가 IT 세계를 변화시키는 방식
    2. 클라우드 보안은 사이버 보안의 미래입니다
    3. 클라우드 보안 엔지니어가 되는 방법
    4. 클라우드 데이터 보안의 미래가 프로그래밍 가능한 이유
    5. 클라우드 기술을 보호하는 방법은 무엇입니까?
    6. 클라우드 보안 위험 관리 방법
    7. 해커가 클라우드를 해킹하는 방법; AWS를 사용하여 클라우드에 보안 강화
    8. Google Cloud Engineer 시험에 합격하는 방법
    9. 클라우드에 DevOps를 배포하는 방법
    10. ERP를 클라우드로 마이그레이션하는 방법