- 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 |