Check List - Conax bootloader signing

1. AES / RSA KEY

  • Nagra에 RSA Public key 요청
  • ALi DDK의 FPK, AES0, AES1, RSA0, RSA1 KEY 변경
  • key_transfer.sh 스크립트 내용 참고

 

2. MarkID / Version Mask

  • BL_MERGE.cmd 파일의 MKT_ID & VER_ID 데이터를 아래와 같이 변경하도록 한다.
  • 이 데이터는 부트 각각의 영역에 정확히 삽입되었는지 확인하도록 한다.

 

3. Bootloader option check

  • DTS 최종 버전 확인 (MTD / Memory Map / etc)
    • ALi 1st bootloader에 DTB 포함되어 때문에 DTS 최종 버전인지 확인이 필요
  • ALi 1st bootloader debug 옵션 비활성화
    • ALi Starter / ALi Starter-Standalone 클린 빌드
  • bootloader 각 영역을 encrypt하기 위해 ABL_AES_FPK 설정
    • SE Lab에 Signing 요청한 bootcode.bin 파일을 제출해야 하기 때문에 원본 백업 (output/images)
  • Bootloader re-sign과 관련된 ALi Patch 적용 여부 확인

 

4. Bootloader Build

  • Bootloader binary 생성
    make post-build
  • Signing 파일 생성
    make post-build CA_SIGN=1
    • boot_code_area.bin / boot_param_area.bin / ext_rsa_pubkey_area.bin 파일이 생성
    • 생성된 위 3개의 파일을 Narga에 Signing 요청
  • postbuild/c3507/c0100a/signed_by_ca/to_ca_signed 생성된 파일을 Nagra에 전달
  • boot_param_area.bin 파일에서 [0x24:0x28] 구간의 데이터가 0x00 값인 것을 확인 후, Signing 요청할 것
    • 특정 값으로 설정되어 있을 경우 BL_ENCRYPT_EN 퓨징 상관없이 Encrypted boot 로딩 가능 (검증용)
    • Encrypted bootloader 검증을 위한 flag 값으로 Signing 요청시 0x00000000으로 설정되어 있어야 함

 

5. Signed bootloader 생성

  • ABL_AES_FPK 설정된 상태에서 Nagra Signature 파일 병합해야 Encrypted bootloader가 생성 됨
    make post-build CA_SIGN=2
  • 최종 bootloader 파일인 boot_total_area.abs 생성
  • boot_total_area.bin 파일의 0x150, 0x700, 0x7FF00 offset에 Signature가 정상적으로 삽입되었는지 확인

 

6. Signed bootloader 동작 확인

  • Signed bootloader 동작하려면 아래의 OTP Fusing이 필요하다.
    • eOTP_BL_ENCRYPT_FLOW
    • eOTP_CUSTOMER_ID
    • eOTP_BOOTROM_SIG_EN
  • eOTP_VER_REF 확인
    • 버전 확인 과정에서 stb가 벽돌되기 때문에 맨 UART / JTAG 퓨징처럼 맨 마지막에 할 것
  • eOTP_UBOOT_VERSION 확인