안녕하세요, topst 매니저입니다.
D3-G 보드에 OPTEE를 사용함에 있어 질문주신 내용에 답변 드립니다.
추가 질문은 해당 게시물에 남겨주시면 됩니다.
A. TrustZone / OP-TEE 지원 및 부팅 체인 구성 가능 여부
-
D3-G에서 ARM TrustZone을 실제로 활성화해 사용할 수 있나요?
→ 네, 가능합니다. D3-G에 탑재된 Cortex-A 프로세서는 하드웨어 수준에서 ARM TrustZone 기능을 이미 내장하고 활성화되어 있으므로, 별도의 추가 조치 없이 즉시 사용하실 수 있습니다. -
단순 CPU 기능 차원이 아니라, Secure World 부팅 및 TA 실행까지 가능한가요?
→ Secure World 부팅 및 TA 실행까지 가능합니다. -
ATF + OP-TEE + U-Boot + Linux/Android 부팅 체인 구성이 가능한가요?
→ BL1/Bl2 → BL31(TF-A) → BL32(OP-TEE) → BL33(U-Boot) → Linux/Android 구성으로 지원하고 있습니다. 현재 TOPST D3-G 보드는 Linux 환경에 가장 최적화되어 있습니다. 따라서 안정적인 개발을 위해 Android보다는 Linux 기반으로 부팅 체인을 구성하시는 것을 적극 권장합니다. -
Secure Monitor Call(SMC) 경로와 secure/non-secure 메모리 구성이 이미 준비되어 있나요?
→ 네, 이미 준비되어 있습니다. TF-A(Trusted Firmware-A) 내의 OP-TEE Dispatcher를 통해 Secure World와 Non-secure World 간의 SMC 통신 경로가 확립되어 있습니다.
B. TEE 연동 구조 및 CA–TA 통신 지원 여부
-
Linux 또는 Android BSP에서 TEE Client API 사용이 가능한가요?
→ 네, 가능합니다. OP-TEE 스택의 표준 구조인 사용자 공간의 OP-TEE client (libteec) 와 커널 공간의 OP-TEE 드라이버를 통해, Linux와 Android 환경 모두에서 TEE Client API(GlobalPlatform) 사용 가능 합니다. -
CA(Client Application) ↔ TA(Trusted Application) 통신 예제가 있나요?
→ 예제의 경우 OP-TEE git 에서 확인 가능합니다.
linaro-swg/optee_examples: OP-TEE Sample Applications -
shared memory 기반 파라미터 전달, 세션 생성, command invoke 흐름 예제가 있나요?
→ 네, 앞서 안내해 드린 OP-TEE 공식 예제들에서 해당 흐름을 구체적으로 확인하실 수 있습니다. 통신은 다음의 시퀀스로 진행됩니다.TEEC_InitializeContext -> OpenSession -> InvokeCommand -> CloseSession -
호출 latency나 성능 제약이 어느 정도인지 자료가 있나요?
→ 관련 자료는 따로 없습니다. -
secure storage, RPMB, key handling 같은 기능도 함께 지원하나요?
→ OP-TEE 표준 기능으로, Secure Storage(REE-FS/RPMB-FS), RPMB(eMMC 기반), key handling(PTA crypto, HUK 기반 key derivation)을 지원합니다.
C. IVI / Cluster 통합 구조에서의 격리 수준
-
D3-G 하나의 SoC 내에서 IVI와 Cluster를 논리적으로 분리할 수 있나요?
→ 칩셋 하드웨어 구조상 Main-core와 Sub-core를 분리하여 IVI와 Cluster에 각각 할당할 수 있습니다. 하지만 현재 제공되는 D3-G 보드 환경은 Main-core 단일 운영만을 지원하고 있으므로, 하나의 SoC 내에서 두 시스템을 논리적으로 완벽히 분리하여 구동하는 것은 어렵습니다. -
Hypervisor 또는 domain partitioning을 지원하나요?
→ D3-G의 경우 “Hypervisor-less” 구조라 기본 제공되지는 않습니다. -
메모리, CPU 코어, 장치 접근 권한을 domain별로 나눌 수 있나요?
→ 현재 지원 구조상 불가능합니다. 보안 영역인 Secure World는 TF-A의 OP-TEE Dispatcher(opteed)를 통해 단일 도메인으로 구성되어 있습니다. 또한, 앞서 말씀드린 대로 D3-G 환경 자체가 Main-core 단일 지원 구조를 띠고 있어, 메모리나 CPU 코어, 하드웨어 디바이스에 대한 접근 권한을 개별 도메인별로 세분화하여 할당하는 것은 제약이 따릅니다. -
display path 분리 또는 trusted display path 구성이 가능한가요?
→ 시스템 차원에서의 개념적/물리적인 구성 자체는 가능합니다만, 벤더 차원에서 제공되는 기본 솔루션이나 가이드는 없습니다. -
IVI가 compromise된 상황에서도 Cluster 출력을 보호할 수 있는 권장 구조가 있나요?
→ 출력장치에 대한 권한 제어를 해야 하는 것이라 OPTEE만 사용해 보호할 수 있는 방안은 제약적입니다.
다만, TA를 적절히 개발 운영하면 Compromise된 상황을 detect 하고 추가 조치를 할 수 있는 방안은 생각해 볼 수 있을 것 같습니다.
D. OS별 지원 우선순위
-
D3-G에서 가장 안정적으로 제공되는 Normal World OS는 무엇인가요?
→ 현재 D3-G 보드에서 가장 안정적으로 제공 및 구동되는 Normal World OS는 Linux입니다. Android OS는 공식적으로 지원하고 있지 않습니다. -
Linux / AAOS / QNX 각각의 BSP 지원 수준은 어느 정도인가요?
→ TOPST 개발자 커뮤니티를 통해 관련 기술 지원 및 가이드를 제공해 드리고 있습니다. AAOS(Android Automotive OS) 및 QNX에 대한 BSP는 현재 지원하지 않습니다. -
OP-TEE와 연동할 때 가장 현실적인 조합은 무엇인가요?
→ ‘OP-TEE 업스트림(공식 GitHub) + Linux OS’ 조합으로 구성하는 것이 가장 현실적이고 안정적인 개발 환경입니다. -
QNX와 Secure World 연동 사례가 있는지 궁금합니다.
→ 앞서 말씀드린 바와 같이 현재 D3-G 보드에서는 QNX 운영체제를 지원하지 않기 때문에, QNX 환경에서의 Secure World 연동 사례나 제공 가능한 레퍼런스는 존재하지 않습니다.
E. 포팅 / 디버깅 지원 범위
-
벤더 차원에서 OP-TEE 포팅 자체를 지원하나요?
→ 아니요, 벤더 차원의 별도 포팅 지원은 제공하지 않습니다. D3-G 보드는 OP-TEE 공식 업스트림 코드를 직접 가져와 적용할 수 있는 환경이므로, 제공된 기반 환경 위에서 오픈소스를 활용해 직접 포팅 및 빌드를 진행해 주셔야 합니다. -
UART / JTAG / early boot log / secure world log 확인 방법이 제공되나요?
→ 보드에 마련된 UART 인터페이스를 통해 시스템 디버깅 로그 자체는 정상적으로 출력되며 확인이 가능합니다. 다만, 해당 로그를 분석하거나 디버깅하는 방법에 대한 벤더 측의 별도 가이드 문서는 제공되지 않습니다. -
TA 개발, 배포, 디버깅 절차 문서가 있나요?
→ 벤더에서 자체적으로 작성한 TA 개발, 배포, 디버깅 전용 매뉴얼은 따로 없습니다. TA 관련 개발은 앞서 안내해 드린 OP-TEE 공식 GitHub의 예제(Examples) 코드들을 레퍼런스로 삼아 진행해 주시기를 바랍니다. -
secure boot / ATF / OP-TEE 단계별 로그 분석 지원이 가능한가요?
→ 부팅 단계별 세부 로그 분석 및 트러블슈팅에 대한 기술 지원은 제공해 드리기 어렵습니다. -
기술 문서, BSP 소스, 보안 문서 제공에 NDA가 필요한지 궁금합니다.
→ 관련 문서는 NDA가 필요합니다. OP-TEE 관련 자료는 OP-TEE 홈페이지와 Github를 통해서 받을 수 있으며, 아래 자료를 참고하시면 됩니다.
문서: OP-TEE Documentation — OP-TEE documentation documentation
소스: OP-TEE · GitHub
개발을 위해서는 공식 GitHub의 OP-TEE 코드를 빌드하고, 생성된 이미지를 보드에 플래싱(FWDN, Firmware Download)하는 과정이 필요하실 것으로 생각됩니다.
FWDN은 내부에서 확인 후 댓글에 추가로 가이드 드리도록 하겠습니다.
감사합니다.