신뢰 컴퓨팅 기반
더 많은 작업
- Trusted Computing Base; TCB; 신뢰 컴퓨팅 기반
- 컴퓨터 시스템 안에서 보안 정책을 강제하는 책임을 지는 하드웨어·펌웨어·소프트웨어 보호 메커니즘 전체. 이 부분이 올바르게 동작해야 시스템 전체의 보안을 믿을 수 있다
TCB라는 용어는 미국 국방부의 TCSEC(DoD 5200.28-STD, 1985년 12월)에서 정의되었다. TCSEC 용어집과 이를 이어받은 NIST 용어집(CNSSI 4009)은 TCB를 "컴퓨터 시스템 내 보호 메커니즘의 총체(하드웨어, 펌웨어, 소프트웨어 포함)로서, 그 조합이 보안 정책의 시행을 책임지는 것"으로 정의한다. 운영체제 커널, 접근 통제와 인증 모듈, 감사 기능, 메모리 관리 장치(MMU) 같은 하드웨어, 부트 펌웨어가 보통 TCB에 들어가고, 일반 응용 프로그램은 TCB 밖에 있다.
TCB의 핵심 성질은 TCB 밖의 구성 요소가 아무리 잘못 동작해도 보안 정책이 깨지지 않아야 한다는 것이다. 반대로 TCB 안의 결함은 곧 시스템 전체의 결함이 된다. 그래서 TCB는 작게, 단순하게, 검증 가능하게 만드는 것이 설계 목표이며, 보안 설계 원칙의 메커니즘의 경제성(단순성)과 완전한 중재가 여기서 구체화된다.
CISSP 출제 기준에서는 도메인 3.4 "정보시스템의 보안 기능을 이해한다(예: 메모리 보호, TPM, 암호화·복호화)"와 연결된다.
보안 경계(security perimeter)는 TCB와 TCB 밖의 나머지 시스템을 가르는 가상의 경계선이다. 경계 안쪽 구성 요소는 신뢰되고, 바깥쪽은 신뢰되지 않는다. 신뢰되지 않는 구성 요소가 TCB의 기능을 쓰려면 정해진 인터페이스(시스템 콜, 게이트)를 통해서만 들어와야 하며, 경계를 넘는 모든 요청은 검사를 받는다. NIST 용어집은 보안 경계를 더 넓게 "특정 보안 정책이나 보안 아키텍처가 적용되는 물리적·논리적 경계"로도 정의하는데, 시스템 인가(authorization) 범위를 뜻하는 인가 경계(accreditation boundary)와 같은 말로도 쓰인다. CISSP 3.4 맥락에서는 TCB의 경계를 뜻한다.
참조 모니터(reference monitor)는 주체가 객체에 접근할 때마다 그 접근이 허가된 것인지 확인하는 추상적 개념이다. 1972년 미 공군을 위한 앤더슨 보고서(Computer Security Technology Planning Study)가 처음 제시했고, 이를 구현한 메커니즘을 참조 검증 메커니즘(reference validation mechanism)이라 한다. TCSEC은 앤더슨 보고서를 인용해 참조 검증 메커니즘의 세 가지 요구사항을 든다.
| 요구사항 | 앤더슨 보고서 표현 | 뜻 | 흔히 쓰는 이름 |
|---|---|---|---|
| 항상 호출 | must always be invoked | 모든 접근이 예외 없이 검사를 거친다. 우회 경로가 없어야 한다 | 완전한 중재(complete mediation) |
| 변조 방지 | must be tamper proof | 검사 메커니즘 자체가 수정되거나 꺼지지 않아야 한다 | 격리(isolation) |
| 검증 가능 | small enough to be subject to analysis and tests, the completeness of which can be assured | 완전성을 보증할 수 있을 만큼 작고 분석·시험이 가능해야 한다 | 검증 가능성(verifiability) |
보안 커널(security kernel)은 참조 모니터 개념을 실제로 구현한 TCB 안의 하드웨어·펌웨어·소프트웨어 요소이다. NIST 용어집 정의도 "보안 커널은 모든 접근을 중재하고, 수정으로부터 보호되며, 올바름을 검증할 수 있어야 한다"고 하여 위 세 요구사항을 그대로 담는다. 관계를 정리하면 참조 모니터는 개념, 보안 커널은 그 구현, TCB는 보안 커널을 포함해 보안에 관여하는 모든 것이다. 자세한 내용은 참조 모니터 문서에서 다룬다.
보호 링(protection ring)은 실행 코드의 특권 수준을 동심원 계층으로 나누는 구조이다. 안쪽 링일수록 특권이 높고, 바깥 링의 코드는 안쪽 링의 자원에 직접 접근하지 못하고 정해진 게이트(시스템 콜)를 거쳐야 한다. Multics에서 체계화되었고 x86 프로세서는 하드웨어로 링 0~3의 네 단계를 지원한다.
| 링 | 전형적 용도 | 설명 |
|---|---|---|
| 링 0 | 운영체제 커널, 보안 커널, 장치 드라이버 일부 | 모든 명령과 메모리에 접근 가능한 최고 특권. TCB의 핵심이 위치한다 |
| 링 1 | (설계상) 운영체제 서비스, 드라이버 | 현대 범용 OS는 거의 쓰지 않는다 |
| 링 2 | (설계상) 운영체제 확장, 입출력 | 현대 범용 OS는 거의 쓰지 않는다 |
| 링 3 | 사용자 응용 프로그램 | 최저 특권. 특권 명령을 실행하면 예외가 발생한다 |
실제 Windows와 리눅스는 링 0(커널 모드)과 링 3(사용자 모드) 두 단계만 쓴다. 이 두 단계를 프로세서 모드로 부르기도 하는데, 커널 모드는 감독자 모드(supervisor mode) 또는 특권 모드, 사용자 모드는 문제 상태(problem state)라고도 한다. 하드웨어 가상화 확장이 나오면서 하이퍼바이저가 게스트 커널보다 더 높은 특권으로 동작하는 계층(흔히 "링 -1"이라 부름)이 추가되었다.
여러 프로세스가 같은 물리 메모리를 쓰는 환경에서 한 프로세스가 다른 프로세스나 커널의 메모리를 읽거나 바꾸지 못하게 하는 것이 메모리 보호이다. TCSEC은 B1 등급부터 "TCB는 자신이 제어하는 별도의 주소 공간을 제공해 프로세스 격리를 유지해야 한다"고 요구하고, B3 등급에서는 세그먼트 같은 하드웨어 기능을 써서 읽기·쓰기 속성이 다른 저장 객체를 논리적으로 구분하도록 요구한다.
| 기법 | 설명 | 막는 공격 |
|---|---|---|
| 프로세스 격리(주소 공간 분리) | 프로세스마다 독립된 가상 주소 공간을 주고 MMU가 주소 변환과 접근 검사를 한다 | 다른 프로세스 메모리 읽기·변조 |
| 세그먼트·페이지 보호 | 세그먼트나 페이지 단위로 읽기·쓰기·실행 권한과 특권 수준(사용자/커널)을 표시한다 | 사용자 코드의 커널 메모리 접근, 코드 영역 변조 |
| DEP/NX 비트 | 스택·힙 같은 데이터 영역을 실행 불가로 표시한다(Intel XD, AMD NX) | 스택에 주입한 셸코드 실행 |
| ASLR | 실행 파일, 라이브러리, 스택, 힙의 주소를 실행할 때마다 무작위로 배치한다 | 고정 주소를 가정한 코드 재사용 공격(ROP 등) |
| 커널 영역 보호 | 커널이 사용자 영역 코드를 실행하거나(SMEP) 함부로 접근하지(SMAP) 못하게 한다 | 커널 권한 상승 공격 |
DEP와 ASLR은 서로 보완한다. DEP만 있으면 기존 코드 조각을 엮는 ROP 공격으로 우회할 수 있고, ASLR이 그 코드 조각의 위치를 예측하기 어렵게 만든다. 스펙터와 멜트다운처럼 하드웨어의 추측 실행을 악용한 공격은 이런 논리적 메모리 보호를 사이드 채널로 우회했다는 점에서 TCB의 하드웨어 부분도 결함이 있을 수 있음을 보여 주었다.
신뢰 경로(trusted path)는 사용자가 입력 장치를 통해 시스템의 보안 기능(TCB)과 직접 통신하는 통로로, 신뢰되지 않는 소프트웨어가 흉내 낼 수 없어야 한다. 가짜 로그인 화면으로 비밀번호를 가로채는 공격을 막는 것이 목적이다. TCSEC은 B2 등급부터 "최초 로그인과 인증을 위해 TCB와 사용자 사이의 신뢰 통신 경로를 지원하고, 이 경로는 사용자만 시작할 수 있어야 한다"고 요구한다. Windows에서 로그인 전에 Ctrl+Alt+Del을 누르게 하는 보안 주의 시퀀스(SAS)가 대표적 구현으로, 이 키 조합은 응용 프로그램이 가로챌 수 없고 항상 운영체제의 로그인 화면을 띄운다.
TCSEC의 모든 등급(C1~A1)은 TCB를 평가 대상으로 삼으며, 등급이 올라갈수록 TCB에 대한 요구가 엄격해진다.
- C 등급: TCB가 임의적 접근통제와 식별·인증, 감사를 제공한다.
- B1: 보안 레이블과 강제적 접근통제를 추가하고, 비형식적 보안 정책 모델을 요구한다.
- B2: 형식적 보안 정책 모델, 신뢰 경로(로그인), 은닉 채널 분석, TCB의 보호에 중요한 요소와 아닌 요소의 구조적 분리를 요구한다.
- B3: TCB가 참조 모니터 요구사항(모든 접근 중재, 변조 방지, 분석 가능한 크기)을 만족해야 하며, 보안 정책 시행에 필수적이지 않은 코드를 TCB에서 제외하고 복잡성을 최소화하도록 설계한다.
- A1: B3와 기능은 같고 형식적 설계 명세와 검증을 추가한다.
TCB는 부팅 순간부터 신뢰할 수 있어야 한다. 부팅 과정에서 펌웨어나 부트로더가 변조되면 그 위에서 동작하는 운영체제 TCB 전체를 믿을 수 없다. 그래서 변경할 수 없는 하드웨어 신뢰 루트(Root of Trust)에서 시작해 각 단계가 다음 단계를 검증하는 신뢰 사슬(chain of trust)을 만든다.
| 구분 | 보안 부팅(secure boot) | 측정 부팅(measured boot) |
|---|---|---|
| 동작 | 다음 단계 코드의 전자서명을 검증하고, 서명이 유효하지 않으면 실행을 막는다 | 다음 단계 코드의 해시를 측정해 TPM의 PCR 레지스터에 누적 기록하고 실행은 계속한다 |
| 목적 | 변조된 코드의 실행 예방 | 무엇이 실행되었는지 위조할 수 없는 기록을 남겨 사후 검증 |
| 활용 | UEFI 보안 부팅 | 원격 증명(remote attestation), TPM 봉인(sealing)으로 정상 부팅일 때만 디스크 암호 키 해제 |
NIST SP 800-193(플랫폼 펌웨어 복원력)은 펌웨어 보안을 보호(protection), 탐지(detection), 복구(recovery) 세 원칙으로 정리하고 이를 신뢰 루트에 기반하도록 요구하며, SP 800-147은 BIOS 갱신을 인증된 이미지로만 허용하는 지침을 제시한다.
출제 기준 3.4가 예로 드는 "정보시스템의 보안 기능"을 정리하면 다음과 같다.
| 기능 | 무엇을 하는가 | 대표 구현 |
|---|---|---|
| 메모리 보호 | 프로세스와 커널의 메모리를 서로 격리하고 실행 가능 영역을 제한한다 | MMU, 페이지 보호 비트, DEP/NX, ASLR, SMEP/SMAP |
| 신뢰 플랫폼 모듈(TPM) | 키 생성·보관, 부팅 측정값 기록, 원격 증명, 봉인 | TPM 2.0, 측정 부팅, BitLocker 키 보호 |
| 암호화·복호화 | 저장·전송 데이터 보호, 하드웨어 가속으로 성능 부담을 줄인다 | AES-NI 명령어, 자체 암호화 드라이브(SED), HSM |
| 가상화 지원 | 하이퍼바이저가 게스트를 하드웨어 수준에서 격리하게 돕는다 | Intel VT-x, AMD-V, 확장 페이지 테이블, IOMMU(장치 DMA 격리) |
| 인터럽트 | 하드웨어 사건을 커널에 알리고, 특권 전환을 통제된 지점에서만 일으킨다 | 인터럽트 디스크립터 테이블을 커널만 수정, 시스템 콜 게이트 |
| 신뢰 실행 환경 | 운영체제와 분리된 격리 영역에서 민감한 코드를 실행한다 | TEE(ARM TrustZone 등), 기밀 컴퓨팅 |
| 프로세서 모드·보호 링 | 특권 명령을 커널 모드에서만 실행하게 한다 | 링 0/링 3, 하이퍼바이저 모드 |
- TCB는 보안 정책을 강제하는 하드웨어·펌웨어·소프트웨어 전체이다. TCB 밖의 구성 요소가 실패해도 정책은 유지되어야 하고, TCB 안의 결함은 전체를 무너뜨린다.
- 참조 모니터의 세 요구사항은 항상 호출(완전한 중재), 변조 방지(격리), 검증 가능(작고 분석 가능)이다. 참조 모니터는 개념, 보안 커널은 구현이다.
- TCB는 작을수록 좋다. "TCB에 기능을 더 넣어 보안을 강화한다"는 선택지는 오답이다.
- 링 0이 가장 높은 특권이다. 사용자 프로그램은 링 3에서 실행되고 시스템 콜로만 커널 기능을 쓴다.
- 신뢰 경로는 가짜 로그인 화면(자격 증명 가로채기) 대응책이다.
- 보안 부팅은 변조 코드를 실행 전에 막고, 측정 부팅은 실행된 코드를 TPM에 기록해 증명한다.
- DoD 5200.28-STD, Trusted Computer System Evaluation Criteria (1985) – 미국 국방부 (NIST CSRC 보관본)
- NIST Glossary: trusted computing base (TCB) – NIST
- NIST Glossary: security kernel – NIST
- NIST Glossary: trusted path – NIST
- NIST SP 800-193, Platform Firmware Resiliency Guidelines – NIST