
오늘날의 초연결된 세계에서 IoT 센서부터 엔터프라이즈 서버에 이르기까지 거의 모든 장치는 펌웨어 및 부트 프로세스의 무결성에 의존합니다. 하드웨어 작업을 용이하게 하는 저수준 코드인 펌웨어는 악의적인 행위자가 장치에 대한 지속적이고 은밀한 제어를 추구하는 빈번한 표적입니다. 공격자가 펌웨어를 손상시키거나 부팅 프로세스 초기의 악성 구성 요소를 삽입하면 대부분의 전통적인 보안 도구를 우회하고, 되돌릴 수 없는 손상을 일으키고, 민감한 데이터를 탈취하거나 심지어 범죄 목적으로 장치 기능을 탈취할 수 있습니다.
장치 제조업체의 경우, 기본적인 장치 보안 원칙을 준수하는 것은 단지 규제 요건일 뿐만 아니라 책임 있는 엔지니어링의 핵심 측면입니다. 이 중 가장 중요한 것은 장치 무결성을 유지하는 것입니다. 즉, 첫 번째 부트로더부터 주 운영 체제에 이르는 모든 중요한 소프트웨어 구성 요소가 실행 전 암호화적으로 검증되도록 하는 것입니다.
이 블로그는 보안 부팅, 펌웨어 무결성 보호, 암호화 증명의 효과적인 사용과 같은 메커니즘에 중점을 두고, 장치 보안을 주도하는 핵심 원칙과 기술을 깊이 있게 탐구합니다. 실제 사례, 코드 워크스루, 초보자 및 고급 사용자를 위한 실행 가능한 모범 사례를 제공합니다.
장치 무결성은 장치가 운용 단계에서 승인되지 않은 수정 없이 제조업체가 의도한 대로 작동하고 있음을 확신하는 것을 의미합니다. 여기에는 장치가 켜졌을 때부터 운영 체제 및 애플리케이션이 실행되는 부팅 과정이 포함됩니다.
국가 사이버 보안 센터(NCSC)는 제조업체를 위한 안전한 시스템 설계의 중심 기둥으로 장치 무결성 유지를 강조합니다. 특히, NCSC는 다음과 같이 강조합니다:
"각 부팅 소프트웨어가 이전에 알려진 좋은 서명과 일치하는지를 확인하는 것은 장치가 좋은 상태로 부팅되고 있으며, 따라서 후속 작업에 있어서 신뢰할 수 있다는 확신을 줍니다."
부팅 소프트웨어 무결성을 보장하지 않으면 OS 수준의 보안 제어에도 불구하고 감지되지 않는 루트킷 및 부트킷과 같은 악성 코드에 대한 문을 열어줍니다.
펌웨어 무결성 보호는 제조업체가 의도한 대로의 펌웨어가 장치에서 실행되도록, 배포 후 변조나 승인되지 않은 수정 없이 사용되도록 보장합니다.
제조업체는 펌웨어 지적 재산이 추출되거나 리버스 엔지니어링되는 것을 방지해야 합니다. 흔한 기술로는 다음이 포함됩니다:
장치 증명 메커니즘은 다른 시스템이 장치가 승인된 펌웨어만 실행 중임을 확인할 수 있도록 합니다. 이는 일반적으로 인증서(공개 키 인프라, PKI)를 통해 이루어지거나, 암호화적 측정값을 안전하게 저장하고 현재 펌웨어 상태를 증명하는 **신뢰할 수 있는 플랫폼 모듈(TPM)**을 사용해 수행됩니다.
부팅 프로세스는 장치 하드웨어를 초기화하고 OS가 완전히 작동할 때까지 필요한 소프트웨어 구성 요소를 로드합니다. 여기에는 여러 단계 또는 로더가 포함됩니다:
"신뢰의 체인"은 이 안전한 인계를 설명합니다:
이 프로세스는 펌웨어 수준의 맬웨어 및 승인되지 않은 수정을 방지하는 데 도움이 됩니다.
(출처: 마이크로소프트 보안 블로그)
Windows 8과 함께 도입된 Secure Boot는 UEFI(통합 확장 펌웨어 인터페이스) 펌웨어와 신뢰의 뿌리를 활용해 부
팅 중에 서명되고 신뢰할 수 있는 코드만 로드되게 만듭니다.
관리자 권한으로 PowerShell 열기:
Confirm-SecureBootUEFI
출력:
True: 보안 부팅이 활성화되어 이미지.False: 보안 부팅이 꺼져 있거나 지원되지 않음.if (Confirm-SecureBootUEFI) {
Write-Output "Secure Boot is ENABLED"
} else {
Write-Output "Secure Boot is DISABLED or not supported"
}
안드로이드 기기(Android 4.4+)에는 부트로더와 시스템 파티션의 무결성을 단계마다 검사하는 Verified Boot가 포함되어 있습니다.
ADB 셸에서:
adb shell getprop ro.boot.verifiedbootstate
일반 출력:
green: 확인된 시스템 이미지로 부팅됨.yellow: 커스텀 키 사용.orange: Verified Boot가 비활성화됨.Apple의 Mac 하드웨어에 탑재된 T2 보안 칩은 하드웨어 신뢰의 루트를 제공합니다. Apple 서명된 펌웨어만 로드되며, 승인 없이 외부 OS 이미지 부팅을 막기 위해 외부 저장 장치 서명이 차단됩니다.
하드웨어 신뢰의 루트(RoT)는 전원 켜기 시 초기 서명 검증을 담당하는 고정된 하드웨어 구성 요소입니다. 이는 다음의 형태를 취할 수 있습니다:
이들은 부팅 프로세스의 첫 단계를 시행하고, 초기 펌웨어를 로드하기 전 측정 및 검증합니다.
tpm2_getcap properties-fixed | grep -i firmware
보안 부팅 및 펌웨어 무결성의 핵심은 공개 키 암호화입니다. 제조업체는 부트 ROM에 공개 키를 내장하고, 모든 정품 펌웨어 이미지를 해당 비공개 키로 서명합니다.
import hashlib
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding
def verify_firmware_signature(firmware, signature, public_key_file):
with open(public_key_file, "rb") as pkf:
public_key = serialization.load_pem_public_key(pkf.read())
try:
public_key.verify(
signature,
firmware,
padding.PKCS1v15(),
hashes.SHA256()
)
return True
except Exception:
return False
이로써 펌웨어는 정품(제조업체 서명)이고 변조되지 않음(서명된 내용과 해시가 일치함)이라는 것을 보장합니다.
**신뢰할 수 있는 플랫폼 모듈 (TPM)**은 부팅 측정값 및 암호화 키에 대한 안전한 저장소를 제공합니다.
리눅스에서 tpm2-tools를 사용하여:
tpm2_pcrread
이는 부팅 프로세스에서 각 구성 요소의 측정 상태를 나타내는 해시 목록을 출력합니다 (PCR 0-7은 일반적으로 BIOS, 부트 로더 및 OS 로더 단계와 관련됨).
mokutil, efibootmgr, 및 fwupd보안 부팅이 활성화되어 있는지 확인:
mokutil --sb-state
샘플 출력:
SecureBoot enabled
EFI 부팅 목록 보기:
efibootmgr
펌웨어 버전 확인 (fwupd 사용):
fwupdmgr get-devices
#!/bin/bash
if mokutil --sb-state | grep -q enabled; then
echo "Secure Boot is ENABLED"
else
echo "Secure Boot is NOT enabled"
fi
echo "Current EFI Boot Entries:"
efibootmgr
tpm2-tools 및 Python을 사용하여 부팅 측정값 구문 분석:
tpm2_pcrread -o pcrs.json
import json
with open('pcrs.json', 'r') as f:
pcrs = json.load(f)
# 부팅 관련 PCR 표시
for idx in range(8): # PCR 0에서 7까지
print(f"PCR {idx}: {pcrs['sha256'][str(idx)]}")
공장 상태의 장치에서 저장된 "골든" (알려진 좋은) 값과 이 해시를 비교할 수 있습니다.
장치 제조업체는 공장에서 출하된 하드웨어가 다양한 루트킷, 부트킷 및 펌웨어 공격에 대해 면역력이 있을 것을 보장하는 책임을 집니다. 장치 보안 원칙을 구현하는 것—특히 부팅 프로세스 및 펌웨어 무결성을 확보하는 것은 신뢰할 수 있는 디지털 인프라를 구축하는 초석입니다.
모든 부팅 주기에서의 기본적인 암호화 서명 검증부터 고급 TPM 기반 증명 메커니즘에 이르기까지, 신뢰 체인을 확립하는 것은 지속적인 제어를 목표로 하는 공격자를 막는 가장 확실한 방법입니다. 이 블로그 포스트는 모든 보안 엔지니어나 제조업체가 알아야 할 기초적인 원칙과 실용적인 도구(스크립트 가능한 예제 포함)를 설명했습니다.
펌웨어 및 부팅 프로세스 보안을 확보함으로써 최종 사용자에게 보이는 위협과 보이지 않는 위협 모두를 차단하여 공격자를 찾는 기준을 높이고, 누구에게나 더 안전한 디지털 생태계를 제공합니다.
이 콘텐츠가 유용하다고 생각하셨다면, 저희의 포괄적인 47주 엘리트 교육 프로그램으로 무엇을 달성할 수 있을지 상상해 보세요. Unit 8200 기술로 경력을 변화시킨 1,200명 이상의 학생들과 함께하세요.