https://master.d2s409snhlt74e.amplifyapp.com/
(원본, 이 파일이 열리지 않을 것 같아 따로 정리해둔 것입니다)

Ex1. ② STM SECURE BOOT
( 태그 : AWS_IoT_FreeRTOS, AWS_IoT )
Root of Trust 서비스를 시작 하며 저장되어 실행되는 코드는 변경이 불가능 합니다.
Platform 무결성을 검증 합니다. Clock 설정, Register 구성, 메모리 보호 등에 대해 검증 합니다.

1. ‘Secure Boot’ Project

1-1. Secure Boot Feature
- Secure Boot는 System Reset될 때 실행되는 변경되지 않는 코드 입니다.
- STM32의 protection을 점검하여 runtime 보호를 활성화 합니다.
- 애플리케이션 코드의 신뢰성과 무결성을 확인하여 유효하지 않은지 확인하고 악성 코드 실행을 차단 합니다.
- 보호되고 격리 된 환경에서 실행되는 PKCS #11 API (KEY ID 기반 API)를 통해 사용자 애플리케이션에 암호화 서비스를 제공합니다.
- 인증 확인, 데이터 복호화 및 데이터 무결성 확인에 사용되는 사용자 애플리케이션 Key는 보호되고 격리 된 환경에 저장됩니다.
1-2. Pre-Build & Post-Build
- Prebuild 단게에서는 Postbuild를 위해 elf 파일을 제거 합니다.
- STSAFE-A110과의 pairing key를 생성합니다.
- Pre-Build script : STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE/prebuild.sh
- Postbuild 단게에서는 BootLoader와 Application을 묶어 단일 Image를 생성 합니다.
- FW Image와 Application에 대한 Header와 encryption된 binary를 생성합니다.
- Post-Build script : STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE/postbuild.sh
1-3. Image preparation
- Windows OS에서는 사전 빌드된 Image Preparation tool을 사용합니다.
- STM32CubeExapnasion_Cloud_AWS_V2.0.0/Middleware/ST/STM32_Secure_Engine/Utiltities/KeysAndimages/win/ prepareimage.exe
- MAC이나 Linux OS에서는 Python script로 준비된 Image Preparation 코드를 사용합니다.
- STM32CubeExapnasion_Cloud_AWS_V2.0.0/Middleware/ST/STM32_Secure_Engine/Utiltities/KeysAndimages/prepareimage.py
- Secure Boot 동작은 다음과 같이 진행됩니다.

2. Build ‘Secure Boot’ Project
- ‘B-L4S5I-IOT01_2_Image_SECoreBin’ project를 선택한 후 Build Project를 실행합니다. 이전 Build 산출물을 제거하고 싶으면 Clean Project를 먼저 진행한 후 Build Project를 실행합니다.
- Build 산출물은 SECoreBin.bin 파일 입니다.

arm-none-eabi-objcopy -O binary SECoreBin.elf "SECoreBin.bin"
Finished building: **SECoreBin.bin**
- SECoreBin.bin 파일이 저장되는 위치는 ‘STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE/B-L4S5I-IOT01_2_Image_SECoreBin/Debug/’ 입니다.

- MAC OS에서 Build 오류 발생할 경우 다음 링크에서 확인하시기 바랍니다.
3. ‘Secure FW Update’ Project
- 두 개의 Image area에서 유효한 Image를 확인하여 실행 합니다.
- FW Upgrade시 Image의 유효한 Key 검증을 진행하게 됩니다.

4. Build ‘Secure FW Update’ Project
- ‘B-L4S5I-IOT01_2_Image_SBSFU’ project를 선택한 후 Build Project를 실행합니다. 이전 Build 산출물을 제거하고 싶으면 Clean Project를 먼저 진행한 후 Build Project를 실행합니다.

- Build 산출물은 SBSFU.bin 파일 입니다.

- SBSFU.bin 파일이 저장되는 위치는 ‘STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SBSFU/STM32CubeIDE/B-L4S5I-IOT01_2_Image_SBSFU/Debug/’ 입니다.

5. Programming SBSFU.bin
- CSTM32CubeProgrammer 우축 상단의 Connect 버튼을 눌러 디바이스를 연결 합니다.
- Erasing & programming Tab을 선택합니다.
- Browse 버튼을 눌러 Build한 ‘STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SBSFU/STM32CubeIDE/B-L4S5I-IOT01_2_Image_SBSFU/Debug/SBSFU.bin’ 파일을 선택합니다.
- Programming 시작 주소는 기본값인 0x08000000 입니다. 변경하지 않고 유지합니다.
- Programming option은 Verfiy programming을 선택합니다.
- Start Programming 버튼을 클릭하여 bin 파일을 writing 합니다.
- Programming이 완료되면 MCU 보드의 리셋 버튼으로 재 부팅 합니다.
- Terminal 프로그램을 통해 로그를 확인할 수 있습니다.


Build Error Fix
Images_SECoreBin Build Error - MAC OS
/bin/sh: ../../prebuild.sh: Permission denied
- STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Images_SECoreBin/STM32CubeIDE/prebuild.sh 파일에 실행 권한을 설정 합니다.
chmod +x prebuild.sh
ImportError: No module named Cryptodome.Cipher
- prebuild.sh에서 실행하는 prepareimage.py는 requirements.txt에 정의된 pycryptodome, pycryptodomex, ecdsa, pyelftools, numpy, lief를 사용하는데 이중 pycryptodomex library가 정상적으로 import 되지 않는 문제입니다.
- 다음과 같이 python을 venv에서 실행되도록 환경을 구성 합니다.
- 수정 파일 : STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/BootLoader_STSAFE/2_Image_SECoreBin/STM32CubeIDE/prebuild.sh
- 변경 전

- 변경 후

Credits
Korean version Jongwoo Lee (rainny@) Sejun Kim (sejun@) Albert Lee (sehyul@)
Original Contents Author
Vanitha Ramaswami (rvanitha@)
© 2020 Amazon Web Services, Inc. or its Affiliates. All rights reserved.
메이커스페이스 G·캠프에서 만든 콘텐츠가 아니며, 서울하드웨어해커톤에서 강의가 진행될 예정입니다.
'Toolkit > Service_Clouds' 카테고리의 다른 글
| Ex1. ④ AWS IOT CORE 연결 (0) | 2021.11.03 |
|---|---|
| Ex1. ③ AWS IOT APPLICATION (0) | 2021.11.03 |
| Ex1. ① STSAFE PROVISIOING (0) | 2021.11.03 |
| Ex1. PREPARATION ON BOTH DEVICE AND AWS PLATFORM (0) | 2021.11.03 |
| Ex0. ⑤ STM32 CUBEMONITOR 설치 (0) | 2021.11.03 |
