제퍼넷 로고

Zynq MPSoC 보안 1: 부팅 시간 보안 도입

시간

Xilinx® 장치의 편재성이 증가함에 따라 장치에서 처리되는 데이터를 보호하는 것만큼 장치 내의 지적 재산(IP)을 보호하는 것이 중요해졌습니다. 최신 인증 방법을 통한 보안 부팅이 지원되어 승인되지 않거나 수정된 ​​코드가 Xilinx 장치에서 실행되는 것을 방지하고 승인된 프로그램만 이미지에 액세스하여 다양한 암호화 기술을 로드할 수 있습니다.

안에 Zynq® UltraScale+™ MPSoC 장치에서 보안 부팅은 모든 부팅 또는 구성 파일을 암호화하는 방법도 제공하는 하드웨어 루트 오브 트러스트 부팅 메커니즘을 사용하여 수행됩니다. 이 아키텍처는 가장 안전한 애플리케이션을 호스팅하는 데 필요한 기밀성, 무결성 및 인증을 제공합니다.

Zynq UltraScale+ MPSoC에는 부팅 이미지의 기밀성을 지원하는 AES-GCM 하드웨어 엔진이 있으며 부팅 후 사용자 데이터를 암호화 및 해독하는 데 사용할 수도 있습니다.

Zynq UltraScale+ MPSoC 하드웨어 신뢰 루트는 SHA-4096/3와 함께 RSA-384 비대칭 인증 알고리즘을 기반으로 합니다. Zynq UltraScale+ MPSoC에는 두 개의 키 쌍이 사용되며 결과적으로 두 가지 공개 키 유형인 기본 공개 키(PPK)와 보조 공개 키(SPK)가 있습니다.

AES 암호화 :

AES는 대칭 키 암호화 기술입니다. 암호화 및 암호 해독에 동일한 키를 사용합니다. 부팅 이미지를 암호화하는 데 사용되는 키는 장치가 해당 부팅 이미지로 부팅하는 동안 암호 해독 프로세스를 위해 장치에서 사용할 수 있어야 합니다. 일반적으로 키는 eFUSE 또는 BBRAM에 저장되며 BIF 속성을 통해 부팅 이미지 생성 중에 키 소스를 선택할 수 있습니다. ZynqMP를 사용하면 키를 일반 텍스트 키(빨간색 키), 난독화된 키(회색 ​​키) 및 암호화된 키(검정색 키)의 세 가지 형식으로 저장할 수 있습니다. 

암호화 프로세스:

부팅 이미지 파티션은 사용자가 제공한 암호화 명령과 BIF 파일의 속성을 기반으로 암호화됩니다. Bootgen 도구는 파티션을 암호화하는 데 사용되며 .bif 파일이 입력됩니다.

savula_0-1631055883731.png

그림: 암호화 프로세스

암호 해독 프로세스:

Xilinx SoC 장치의 경우 BootROM과 FSBL은 부팅 주기 동안 파티션을 해독합니다. BootROM은 플래시에서 FSBL을 읽고, 암호를 해독하고, 로드하고, 컨트롤을 전달합니다. FSBL이 실행을 시작한 후 나머지 파티션을 읽고 암호를 해독하고 로드합니다. 파티션을 해독하는 데 필요한 AES 키는 eFUSE 또는 BBRAM에서 검색할 수 있습니다.

savula_1-1631055883735.png

그림: 암호 해독 프로세스

핵심 관리:

AES 암호화 엔진은 다양한 키 소스 세트에 액세스할 수 있습니다. 비휘발성 키 소스에는 eFUSE, BBRAM, PUF 키 암호화 키(KEK) 및 패밀리 키가 포함됩니다. 이 키는 장치의 전원이 꺼진 경우에도 값을 유지합니다. 휘발성 키 소스에는 작동 키와 키 업데이트 등록 키가 포함됩니다.

빨간 열쇠:

빨간색 키는 암호화되지 않은 키(일반 텍스트 키)이며 eFUSE/BBRAM에 저장할 수 있습니다. red 키는 bootgen에서 이미지를 암호화하는 데 사용되며 ZynqMP는 부팅 과정에서 이미지를 해독하는 데 빨간색 키를 사용합니다.

블랙 키:

블랙 키는 ZynqMP SoC의 PUF(Physical Unclonable Function) 모듈에서 생성된 KEK(Key Encryption Key)로 암호화된 AES 키입니다. 생성된 이미지의 eFUSE/boot 헤더에 저장할 수 있습니다.

회색/난독화 키:

난독화된 키는 ZynqMP SoC의 패밀리 키로 암호화(난독화)된 AES 키입니다. 패밀리 키는 디바이스에 내장된 전용 키이며 디바이스 패밀리 내의 모든 디바이스에 동일한 키가 사용됩니다. 난독화된 키는 이미지의 eFUSE/부팅 헤더에 저장할 수 있습니다.

작동 키:

OP 키는 부팅 이미지의 보안 헤더에서 해독된 키를 보유하는 레지스터입니다. 좋은 키 관리 방법에는 비밀 키나 개인 키의 사용을 최소화하는 것이 포함됩니다. 이것은 Bootgen에서 활성화된 작동 키 옵션을 사용하여 수행할 수 있습니다.

활성화되면 FSBL의 암호화된 보안 헤더에는 사용자가 지정한 OP 키와 구성 파일의 첫 번째 블록에 필요한 초기화 벡터(IV)만 포함됩니다. 그 결과 BBRAM 또는 eFUSE에 있는 장치에 저장된 AES 키가 384비트에만 사용되므로 사이드 채널 공격에 대한 노출이 크게 제한됩니다.

savula_2-1631055883740.png

그림: 작동 키

롤링 키:

AES_GCM 롤링 키 기능은 더 작은 AES 암호화 블록/모듈 측면에서 전체 암호화된 이미지를 나타냅니다. 각 모듈은 고유한 키를 사용하여 암호화됩니다. 초기 키는 장치의 키 소스에 저장되고 각 연속 모듈의 키는 이전 모듈에서 암호화(래핑)됩니다.

RSA 인증:

RSA는 비대칭 알고리즘입니다. 즉, 검증할 키가 서명에 사용된 것과 동일한 키가 아닙니다. 인증을 위해서는 한 쌍의 키가 필요합니다. Secret Key/Private Key를 사용하여 서명하고 Public Key를 사용하여 Verification을 수행합니다.

Xilinx SoC에서는 기본 및 보조의 두 쌍의 공개 키와 비밀 키가 사용됩니다. 기본 공개/비밀 키 쌍의 기능은 보조 공개/비밀 키 쌍을 인증하는 것입니다. 보조 키의 기능은 파티션에 서명/확인하는 것입니다.

명음:

Bootgen은 비밀 키를 사용하여 파티션에 서명합니다. 서명 프로세스는 다음 단계로 설명됩니다.

  • PPK 및 SPK는 인증 인증서(AC)에 저장됩니다.
  • SPK는 AC의 일부로 저장되는 SPK 서명을 얻기 위해 PSK를 사용하여 서명됩니다.
  • 파티션은 AC에 채워지는 파티션 서명을 얻기 위해 SSK를 사용하여 서명됩니다.
  • AC는 장치에 따라 인증을 위해 선택한 각 파티션에 추가되거나 추가됩니다.
  • PPK는 해시되어 eFUSE에 저장됩니다.

확인 :

장치에서 BootROM은 FSBL을 확인하고 FSBL 또는 U-Boot는 공개 키를 사용하여 후속 파티션을 확인합니다.

  1. PPK 확인: 이 단계는 보조 키를 인증하는 데 사용되는 기본 키의 신뢰성을 설정합니다.
    1. PPK는 부팅 이미지의 AC에서 읽습니다.
    2. PPK 해시 생성
    3. 해시된 PPK는 eFUSE에서 검색된 PPK 해시와 비교됩니다.
    4. 동일하면 기본 키를 신뢰할 수 있습니다. 그렇지 않으면 보안 부팅이 실패합니다
  2. XNUMX차 키 확인: 이 단계는 파티션을 인증하는 데 사용되는 XNUMX차 키의 신뢰성을 설정합니다.
    1. SPK는 부팅 이미지의 AC에서 읽습니다.
    2. 해시된 SPK 생성
    3. PPK를 사용하여 AC에 저장된 SPK 서명을 확인하여 SPK 해시 가져오기
    4. (b) 단계와 (c) 단계의 해시를 비교합니다.
    5. 동일하면 보조 키를 신뢰할 수 있습니다. 그렇지 않으면 보안 부팅이 실패합니다
  3. 파티션 확인: 이 단계는 부팅 중인 파티션의 신뢰성을 설정합니다.
    1. 부팅 이미지에서 파티션을 읽습니다.
    2. 파티션의 해시 생성
    3. SPK를 사용하여 AC에 저장된 파티션 서명을 확인하여 파티션 해시 가져오기
    4. (b) 단계와 (c) 단계의 해시를 비교합니다.
    5. 동일하면 파티션을 신뢰할 수 있습니다. 그렇지 않으면 보안 부팅이 실패합니다

참조 : 

1. https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf

2. https://www.xilinx.com/support/documentation/user_guides/ug1137-zynq-ultrascale-mpsoc-swdev.pdf

3. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_1/ug1283-bootgen-user-guide.pdf

4. https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841708/Zynq+Ultrascale+MPSoC+Security+Features

PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Zynq-MPSoC-Security-1-Introduction-of-Boot-Time-Security/ba-p/1285779

spot_img

최신 인텔리전스

spot_img