전체 글 60

spdm-emu 사용해보기

SPDM을 공부하다 보면 금방 부딪히는 벽이 있다. "그래서 이걸 실제로 어떻게 돌려보지?" SPDM은 Requester와 Responder가 메시지를 주고받는 프로토콜인데, 양쪽을 다 갖추려면 보통 인증서를 발급하고, 디바이스를 붙이고, transport를 깔아야 한다. 실리콘이나 보드 없이 노트북 한 대에서 전체 흐름을 끝까지 돌려볼 수는 없을까?그 답이 바로 DMTF의 spdm-emu다. SPDM 표준을 만든 단체가 직접 제공하는 레퍼런스 에뮬레이터로, OS 위에서 도는 두 개의 실행 파일 — spdm_requester_emu와 spdm_responder_emu — 을 띄워 두 프로세스가 실제 SPDM 핸드셰이크를 주고받게 한다. 펌웨어를 굽지 않고도 GET_VERSION부터 세션 수립까지 한 호흡..

임베디드 2026.06.03

SPDM 이란?

SPDM은 무엇이고, 왜 필요한가 서버 한 대 안에는 서로 다른 회사가 만든 칩 수십 개가 케이블로 엮여 있다. 그 부품들이 정품인지, 펌웨어가 손대지지 않았는지를 플랫폼은 어떻게 확신할까. SPDM은 그 확신을 암호로 만들어내는 표준이다. 믿을 근거가 없는 하드웨어 서버 한 대를 뜯어보면 CPU, GPU, 네트워크 카드, SSD, BMC, CXL 메모리, 거기에 각종 보안 칩까지 들어 있다. 문제는 이것들 대부분이 서로 다른 회사가, 다른 공장에서 만든 물건이라는 점이다. 보드에 꽂혀 있다고 해서 정품이라는 보장도, 펌웨어가 출고 그대로라는 보장도 없다. 그래서 플랫폼 입장에서는 곤란한 질문이 생긴다. 방금 연결된 이 장치, 정말 그 벤더가 만든 게 맞나? 펌웨어가 ..

임베디드 2026.06.03

NSC 게이트웨이의 실제

Non-secure에서 Secure 함수를 호출하기까지 — SG, BXNS, 그리고 컴파일러가 자동으로 박는 것들지난 편 끝에 빌드 시스템 관점에서 NSC 라이브러리(secure_nsclib.o)가 어떻게 만들어지고, NS 빌드가 어떻게 그걸 링크하는지를 봤다. 컴파일러 옵션 -mcmse와 --cmse-implib 두 개로 그 다리가 만들어진다는 이야기였다.빌드는 정적인 이야기다. 그럼 칩이 실제로 돌아갈 때는 무슨 일이 벌어지는가? Non-secure 코드가 secure_function()이라는 함수를 호출하는 순간 — 그 한 줄 뒤에서 CPU가 정확히 무엇을 하는가? 이번 편은 그 호출의 내부를 본다.01문제부터 정의하자NS 코드와 S 코드는 같은 주소 공간을 공유한다. 어떤 주소가 S에 속하는지 N..

임베디드 2026.05.26

STM32H573I-DK Secure Boot 해부 — Provisioning과 TrustZone 빌드

Provisioning과 TrustZone 빌드의 내부개발 환경의 키들이 어떻게 칩의 immutable 신뢰 체계로 옮겨지는가지난 두 편에서 부트 경로의 갈림길과 신뢰 전파 메커니즘을 다뤘다. 옵션 바이트가 부트 경로를 가르고, HDPL이 각 단계의 권한을 단방향으로 잘라낸다는 이야기였다.이번 편은 그 위에 실제로 무엇이 올라가는지를 본다. 펌웨어와 키가 어떻게 칩 안으로 들어가서 신뢰 체인의 일부가 되는가 — Provisioning의 내부다. 마지막에는 TrustZone 활성 상태에서 Secure와 NonSecure 두 빌드가 어떻게 연결되는지까지 짚는다.01Provisioning은 정확히 무엇을 하는가한 줄로 요약하면 "개발 환경의 키들을 칩의 immutable 신뢰 체계로 옮기는 작업"이다. 더 구..

카테고리 없음 2026.05.25

STM32H573I-DK의 Secure Boot 해부

이번에 우연히 STM32H573I-DK라는 보드를 쓸 기회가 생겼고, 그 특징에 대해 기록하려고 한다.Security:How to start with STiRoT on STM32H573 - stm32mcu Security:How to start with STiRoT on STM32H573 - stm32mcuMain navigation contains tabs, main links and MediaWiki sidebarwiki.st.com일반적인 MCU의 부팅은 한 줄로 설명할 수 있다. 리셋이 걸리면 정해진 주소에서 코드가 실행된다. 부트로더가 따로 있다 해도 그 위치와 동작은 단순하다.STM32H573은 그렇지 않다. 리셋 버튼을 누른 순간부터 사용자 애플리케이션이 실행되기까지, 칩 안에서는 여러 단계..

임베디드 2026.05.24

펌웨어 서명

지난 글에서 Secure Boot이 매 단계 다음 단계를 "검증한다"고 했다. 그 검증이 정확히 무슨 일을 하는지는 사실 일부러 미뤄두었다.서명이 보장하는 것은 두 가지다. 이 펌웨어가 누가 만든 것인지, 그리고 만들어진 뒤로 한 비트라도 손이 탔는지. 영어로는 authenticity와 integrity라고 부른다. 이 두 질문에 동시에 답하는 도구로 인류가 찾아낸 것이 비대칭 암호다.원리는 자물쇠 비유로 자주 설명된다. 잠그는 열쇠와 푸는 열쇠가 다르다. 잠그는 쪽은 비밀로 한 명만 가지고, 푸는 쪽은 공개로 누구나 가진다. 만든 사람만 아는 비밀키로 봉인하면, 누구나 가진 공개키로 풀어볼 수 있다. 풀어서 내용물이 멀쩡하게 나왔다면, 봉인한 사람이 그 비밀키 소유자라는 뜻이 된다.여기까지는 교과서다...

임베디드 2026.05.09

Secure Boot이란?

PC 전원 버튼을 누르면 검은 화면이 먼저 뜬다. 우리는 너무 익숙해진 나머지 그 짧은 몇 초를 그저 켜지는 시간으로만 받아들인다. 하지만 그 안에서는 작은 의식이 진행된다. 한 단계가 다음 단계의 신원을 묻고, 답을 듣고, 통과시키는 일. 그것을 Secure Boot이라 부른다.대부분의 보안 위협은 '동작 중인 시스템'을 노린다고 생각하기 쉽다. 하지만 가장 무서운 공격은 시스템이 깨어나는 그 순간을 노린다. 부팅 단계에서 악성 코드가 자리를 잡으면, 그 위에 올라타는 OS와 보안 솔루션이 아무리 정교해도 무력해진다. 운영체제가 자신을 보호하는 백신을 신뢰하는데, 그 운영체제 자체가 이미 오염되어 있다면 답이 없는 거다.그래서 부팅은 단순히 시스템을 켜는 일이 아니라, 신뢰를 한 단계씩 위로 끌어올리는..

임베디드 2026.05.08

RoT(Root of Trust) 란?

우리는 매일 수많은 디지털 시스템을 신뢰하며 살아간다. 스마트폰 잠금을 풀 때, 자동차에 시동을 걸 때, 인터넷 뱅킹에 로그인할 때. 그런데 그 신뢰는 도대체 어디서부터 시작되는 걸까?소프트웨어는 다른 소프트웨어를 검증한다. 부트로더는 OS를 검증하고, OS는 애플리케이션을 검증한다. 그렇다면 그 부트로더는 누가 검증할까? 검증의 사슬을 거슬러 올라가다 보면 어딘가에서는 멈춰야 한다. 더 이상 거슬러 올라갈 수 없는 신뢰의 시작점 — 그것이 바로 Root of Trust, 줄여서 RoT다.RoT는 이름 그대로 '신뢰의 뿌리'다. 한 시스템에서 가장 먼저 동작하고, 가장 변경하기 어려우며, 가장 깊숙한 곳에 심긴 보안 컴포넌트다. 보통은 칩 안에 하드웨어로 박혀 있다.왜 굳이 하드웨어여야 할까. 소프트웨어..

임베디드 2026.05.07

optee (QEMU를 이용하여)

QEMU란?QEMU (Quick Emulator)는 다양한 기능을 제공하는 오픈소스 가상화 소프트웨어로, 여러 운영 체제나 아키텍처에서 실행할 수 있다. 즉, QEMU는 x86, ARM, PowerPC, MIPS, SPARC 등 다양한 CPU 아키텍처를 에뮬레이션할 수 있어, 다른 아키텍처의 가상 머신을 실행할 수있다. 예를 들면, 거의 20년전에 나는 PC로 별의 커비 거울속의 대미궁이라는 게임을 즐겨했었다. 이뿐만 아니라 친구에 의해 포켓몬스터 골드버전 등 정말 많은 게임을 플레이 해봤다.  그런데 이 게임은 PC용으로 만들어진게 아니다. 원래는 아래와 같은 게임보이 기기에서 할 수 있는 게임이다.  그렇다면 의문이 생긴다. 게임보이도 아닌데 PC 환경에서 어떻게 저런 게임들이 실행이 되었을까?? 바..

카테고리 없음 2024.11.30