본문 바로가기

Toolkit/Service_Clouds

Ex1. ② STM SECURE BOOT

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·캠프에서 만든 콘텐츠가 아니며, 서울하드웨어해커톤에서 강의가 진행될 예정입니다.   

https://master.d2s409snhlt74e.amplifyapp.com/                                                                         

'Toolkit > Service_Clouds' 카테고리의 다른 글


 
서울시 금천구 디지털로 9길 90
https://seoulhackathon2.tistory.com   
tel : (해커톤 문의) 김세준 책임 02-2135-5754, (시제품제작 3D모델링, 기구파트) 070-4070-8603, (시제품제작 전자파트) 070-4070-8604, (시제품제작 CNC 가공파트) 070-4070-8605
Copyright 2021 by Seoul Businsss Agency. All Rights Reserved. (Powered by Tistory)