ST/개발 환경 및 구조

ST MCU/MPU Security Features

engineer4ever 2025. 3. 18. 00:04

 

- ST의 MCU(마이크로컨트롤러 유닛)에는 다양한 보안 기능이 탑재되어 디바이스와 애플리케이션을 보호

- ST의 보안 기능은 주로 소프트웨어 보호, 메모리 보호, 암호화, 부팅 보호 등을 포함

아래는 이러한 보안 기능을 요약한 표

 
기능
설명
적용 MCU 시리즈
RDP (Readout Protection)
MCU의 플래시 메모리에서 데이터를 읽어오는 것을 방지하는 기능
레벨 0, 1, 2로 구성되며, 레벨 2는 완전한 보안으로 디버깅 및 펌웨어 업그레이드 불가
STM32 전 제품군
PCROP (Proprietary Code Read-Out Protection)
플래시 메모리의 특정 섹터를 보호하여, 외부에서 접근할 수 없도록 하는 기능
메모리 보호와 동시에 코드 실행은 가능
STM32L4, STM32L5, STM32H7
TrustZone
프로세서를 "Secure" 영역과 "Non-secure" 영역으로 분리하여, 보안 애플리케이션이 실행되는 동안 민감한 데이터와 자원을 보호
STM32L5, STM32U5, STM32H7
Secure Boot
안전한 부팅을 보장하는 기능으로, 불법적으로 변경된 펌웨어를 실행하지 않도록 보호
Secure Boot와 TrustZone을 함께 사용하여 보안 강화 가능
STM32L5, STM32U5, STM32H7
AES (Advanced Encryption Standard)
AES 알고리즘을 하드웨어적으로 지원하여, 데이터 암호화 및 복호화 속도를 높이고, 전송되는 데이터의 무결성과 기밀성을 보호
STM32F7, STM32H7, STM32L4, STM32L5
PKA (Public Key Accelerator)
공개 키 암호화 작업을 가속화하여, ECC(Elliptic Curve Cryptography)와 같은 강력한 암호화 알고리즘을 보다 효율적으로 사용 가능
STM32L5, STM32U5, STM32H7
OTFDEC (On-The-Fly Decryption)
외부 메모리에서 직접 실행할 때 데이터를 실시간으로 암호 해독하여, 암호화된 데이터만 메모리에 저장하고, 불법 복제를 방지
STM32H7, STM32L5, STM32U5
Tamper Detection
외부에서 불법적인 조작이 시도될 경우 이를 감지하여, 시스템을 안전하게 보호. 이 기능은 보안 메모리 영역이나 보안 임베디드 기능과 함께 사용 가능
STM32L4, STM32L5, STM32U5
Firewall
지정된 메모리와 주변장치에 접근하는 것을 제한하여, 애플리케이션 레벨에서의 보안 강화. 특히 민감한 데이터나 중요한 기능을 보호하는 데 사용
STM32L4, STM32L5
HDPL (Hardware Development Protection Level)
하드웨어에서 개발 단계별 보호 레벨을 설정하여, 생산과정에서의 보안을 강화. 디버그 인터페이스를 차단하거나, 특정 기능을 잠금 설정
STM32L5, STM32H7, STM32U5
JTAG/SWD Lock
JTAG/SWD 디버그 인터페이스를 비활성화하여, 물리적 공격을 통한 디버깅과 정보 유출을 방지
STM32 전 제품군

 


1. RDP (Readout Protection)

세부 내용:

  • RDP는 STM32의 플래시 메모리의 읽기 접근을 제어합니다.
  • 레벨 1로 설정하면, 플래시 메모리와 디버깅 인터페이스에 대한 접근이 차단되며, 이 설정은 MCU의 펌웨어를 보호하는 데 유용합니다.
  • 레벨 2로 설정하면, 디버깅과 모든 플래시 메모리에 대한 접근이 차단되며, 이 상태는 영구적입니다. 펌웨어를 읽는 것이 불가능하게 됩니다.

사용법:

  • RDP를 설정하려면 STM32의 ST-Link Utility 또는 STM32CubeProgrammer와 같은 소프트웨어를 사용합니다.
  • 소프트웨어에서 RDP 설정을 선택하고 원하는 레벨을 적용합니다.
  • 레벨 1은 개발 중에 필요할 때 다시 변경할 수 있지만, 레벨 2는 변경할 수 없으므로 신중하게 결정해야 합니다.

 

2. PCROP (Proprietary Code Read-Out Protection)

세부 내용:

  • PCROP는 플래시 메모리의 특정 영역에 대해 읽기 보호를 설정할 수 있습니다.
  • 이 기능은 일반적으로 중요한 코드나 데이터를 보호하기 위해 사용되며, 설정된 영역의 데이터는 외부에서 읽을 수 없습니다.

사용법:

  • STM32의 STM32CubeMX 또는 STM32CubeProgrammer를 사용하여 PCROP 영역을 설정합니다.
  • 설정할 영역을 선택하고, 해당 영역에 대해 읽기 보호를 활성화합니다.
  • PCROP 설정 후, 영역의 내용은 외부에서 접근할 수 없으며, 소프트웨어에서 이를 확인할 수 있습니다.

 

3. TrustZone

세부 내용:

  • Arm TrustZone은 시스템을 두 개의 영역, 즉 신뢰 구역과 비신뢰 구역으로 나누어 보안을 강화합니다.
  • 신뢰 구역에서는 중요한 데이터와 코드가 실행되며, 비신뢰 구역에서는 일반 애플리케이션이 실행됩니다.
  • TrustZone 기술은 하드웨어적으로 두 영역을 분리하여, 하나의 영역에서의 코드가 다른 영역에 영향을 미치지 않도록 합니다.

사용법:

  • TrustZone을 활용하려면 Arm Cortex-M 시리즈 프로세서를 사용하고, 관련 소프트웨어 개발 도구에서 TrustZone 지원을 활성화합니다.
  • ARM Development Tools 또는 **MDK (Microcontroller Development Kit)**를 사용하여 TrustZone 기반의 애플리케이션을 개발합니다.
  • TrustZone 설정을 통해, 신뢰 구역에서 실행할 코드와 비신뢰 구역에서 실행할 코드를 나눕니다.

 

4. Secure Boot

세부 내용:

  • Secure Boot은 부팅 과정에서 펌웨어의 디지털 서명을 검증하여, 무결성이 확인된 펌웨어만 부팅됩니다.
  • 디지털 서명은 공개 키와 비밀 키를 사용하여 생성됩니다. 부팅 중에는 서명을 검증하여 펌웨어가 변조되지 않았는지 확인합니다.

사용법:

  • Secure Boot을 설정하려면 펌웨어를 서명하고, 이를 시스템의 부팅 프로세스에 통합합니다.
  • STM32CubeProgrammer에서 Secure Boot 설정을 활성화하고, 서명된 펌웨어를 업로드합니다.
  • 시스템이 부팅될 때, 서명 검증을 통해 무결성을 확인합니다.

 

5. AES (Advanced Encryption Standard)

세부 내용:

  • AES는 대칭 키 암호화 알고리즘으로, 데이터를 암호화하고 복호화하는 데 사용됩니다. 키 길이에 따라 AES-128, AES-192, AES-256이 있습니다.
  • 데이터 블록을 128비트 단위로 처리하며, 고속의 암호화 및 복호화를 제공합니다.

사용법:

  • STM32의 하드웨어 AES 모듈을 사용하여 암호화 및 복호화 작업을 수행합니다.
  • STM32CubeMX에서 AES 모듈을 활성화하고, 해당 기능을 코드에서 호출하여 데이터를 암호화하거나 복호화합니다.
  • HAL 라이브러리를 사용하여 AES 암호화 및 복호화 함수를 호출합니다.

 

6. PKA (Public Key Accelerator)

세부 내용:

  • PKA는 공개 키 암호화 알고리즘을 하드웨어적으로 가속화하여 빠른 연산을 지원합니다. RSA, ECC 등의 알고리즘을 지원합니다.
  • 공개 키 암호화는 데이터를 암호화하고 서명 검증을 수행하는 데 사용됩니다.

사용법:

  • PKA 모듈을 STM32CubeMX에서 활성화하고, 관련 API를 사용하여 공개 키 암호화 작업을 수행합니다.
  • HAL 라이브러리에서 PKA 함수들을 호출하여 RSA 또는 ECC 연산을 수행합니다.
  • 공개 키 암호화 연산을 하드웨어 가속을 통해 성능을 향상시킵니다.

 

7. OTFDEC (On-The-Fly Decryption)

세부 내용:

  • OTFDEC는 암호화된 데이터를 메모리에서 읽을 때 실시간으로 복호화하는 기능을 제공합니다.
  • 데이터가 메모리에 로드되기 전에 자동으로 복호화되며, 이로 인해 암호화된 데이터를 직접 사용할 수 있습니다.

사용법:

  • STM32의 OTFDEC 모듈을 활성화하고, 암호화된 데이터를 메모리에 저장한 후, OTFDEC를 사용하여 복호화합니다.
  • STM32CubeMX에서 OTFDEC 설정을 구성하고, 복호화 작업을 위한 API를 호출합니다.

 

8. Tamper Detection

세부 내용:

  • Tamper Detection은 물리적 공격이나 하드웨어 변조를 감지합니다. 침입이 감지되면 시스템을 보호하기 위해 특정 동작을 수행할 수 있습니다.
  • 보통 시스템의 물리적 보안 경계가 변경되거나 파괴된 경우에 경고를 발생시킵니다.

사용법:

  • STM32의 Tamper Detection 기능을 활성화하고, 감지된 변조에 대해 적절한 반응을 설정합니다.
  • Tamper 이벤트 발생 시, 시스템의 상태를 기록하거나 특정 동작(예: 시스템 재부팅, 데이터 삭제 등)을 수행합니다.

 

9. Firewall

세부 내용:

  • Firewall은 네트워크 트래픽을 필터링하고 모니터링하여 불법 접근을 차단합니다.
  • 외부에서의 무단 접근을 방지하고, 네트워크 보안을 강화합니다.

사용법:

  • STM32의 하드웨어 방화벽을 설정하여, 특정 주소나 포트를 통한 접근을 차단합니다.
  • STM32CubeMX에서 방화벽 설정을 구성하고, 필터링 규칙을 정의하여 시스템의 보안을 강화합니다.

 

10. HDPL (Hardware Development Protection Level)

세부 내용:

  • HDPL은 하드웨어 개발 과정에서의 보안을 강화하는 기능입니다. 개발 중에 코드나 데이터의 무단 접근을 방지합니다.
  • 개발 과정에서의 정보 유출을 방지하며, 개발 단계의 보안을 강화합니다.

사용법:

  • 개발 환경에서 HDPL 설정을 활성화하고, 코드와 데이터를 보호하기 위한 보안 정책을 적용합니다.
  • 개발 중에 보안성을 유지하기 위해 적절한 접근 제어와 보호 메커니즘을 설정합니다.

 

11. JTAG/SWD Lock

세부 내용:

  • JTAG/SWD Lock은 JTAG 및 Serial Wire Debug (SWD) 인터페이스를 잠궈 외부 디버거의 접근을 제한합니다.
  • 디버깅 기능을 비활성화하여, 펌웨어의 무단 접근이나 수정 방지.

사용법:

  • STM32의 JTAG/SWD Lock 설정을 활성화하여 디버깅 인터페이스를 잠급니다.
  • STM32CubeProgrammer 또는 ST-Link Utility에서 JTAG/SWD Lock 설정을 적용하여 보안을 강화합니다.

 

'ST > 개발 환경 및 구조' 카테고리의 다른 글

STM32F103x Core registers  (0) 2025.03.18
STM32F103x Memory map  (0) 2025.03.18
CMSIS  (0) 2025.03.18
STM32 CubeMX LL driver  (0) 2025.03.18
STM32 Driver(Library)  (0) 2025.03.18