제 0 장: 소개와 적합성
0.1 문서 상태
본 문서는 Control Authority Protocol(CAP)의 규범적 기술 사양서의 초안 버전이다. 초안 버전은 하위 호환성을 보장하지 않으며, 정식 릴리스 전에 임의의 변경이 가능하다. 본 초안이 안정되고 완전한 테스트 검증을 통과한 후, 첫 번째 정식 버전으로 specification/2025-10-25/에 게시된다.
본 문서는 CAP 아키텍처 블루프린트(docs/ko/blueprint/)와 함께 사용한다:
- 블루프린트는 "무엇을, 왜, 무엇을 위해"에 답한다 — 프로토콜의 설계 의도, 능력 경계, 핵심 메커니즘을 정의한다
- 사양은 "어떻게, 어떻게 검증하는지"에 답한다 — 프로토콜의 메시지 형식, 흐름 단계, 에러 처리, 적합성 요구사항을 정의한다
블루프린트의 비규범적 기술과 본 사양의 규범적 조항이 충돌하는 경우, 본 사양을 우선한다.
0.2 범위
본 사양은 CAP 프로토콜 v1의 기술 세부사항을 정의하며, 블루프린트 제 3 장 3.1 절에 열거된 6 가지 핵심 능력을 다룬다:
- 오프라인 인가(Authorization_Descriptor)의 발급, 보관, 검증, 폐기, 갱신
- 온라인 티켓(Trusted_Ticket)의 발급, 조회, 오프라인 인가로의 변환
- 세션 관리(Session)의 완전한 라이프사이클
- 제어권 인계 정책(Handover_Policy)의 3 종류 정책과 원자성 보장
- 생존 감지(Liveness_Detection)의 이중 판정 메커니즘
- 리소스 접근 모드(Resource_Access_Mode)의 읽기-쓰기 잠금 모델
본 사양은 블루프린트 제 3 장 3.2 절에 열거된 기능을 명시적으로 제외한다. 단말 간 세션 마이그레이션, 다중 단말 협동 인가, 인가 위임 체인, ABAC, 감사 로그 표준 형식, 프로토콜 메시지 암호화 전송 사양, 분산 폐기 합의, Session 내 동적 권한 승격을 포함한다.
0.3 적합성 용어
본 사양은 RFC 2119 및 RFC 8174의 키워드 규약을 따른다. 다음 키워드가 전체 대문자로 출현할 때 규범적 의미를 가진다:
- MUST / 해야 한다: 절대적 요구사항. 본 요구사항을 충족하지 않는 구현은 본 사양에 적합하지 않다
- MUST NOT / 해서는 안 된다: 절대적 금지. 본 금지를 위반하는 구현은 본 사양에 적합하지 않다
- SHOULD / 권고된다: 강한 권고. 결과를 충분히 이해한 전제하에 정당한 이유가 있으면 벗어날 수 있다
- SHOULD NOT / 권고되지 않는다: 강한 비권고. 결과를 충분히 이해한 전제하에 정당한 이유가 있으면 벗어날 수 있다
- MAY / 할 수 있다: 옵션. 구현이 자체적으로 제공 여부를 결정할 수 있다
전체 대문자가 아닌 동일한 어휘는 자의적 의미만을 표현하며 규범적 효력을 가지지 않는다.
0.4 용어 정렬
본 사양에서 사용하는 용어는 블루프린트 00-용어집.md와 완전히 일치한다. 본 사양이 어떤 용어를 인용할 때, 블루프린트에서 정의된 식별자(예: Authorization_Descriptor, Fay, Terminal_Resource)를 사용한다.
참조 편의를 위해 본 사양은 각 장에서 핵심 용어를 처음 사용할 때 굵은 글씨로 표시하며, 블루프린트 용어집의 간략한 정의를 부기한다. 용어의 완전한 정의는 블루프린트를 우선한다.
0.5 적합성 등급
본 사양은 3 종류의 구현 적합성 등급을 정의한다. 구현은 MUST 최소한 "단말 적합성 등급"을 충족해야 CAP v1에 적합하다고 주장할 수 있다.
0.5.1 단말 적합성 등급(Terminal Conformance)
Descriptor_Validator, Protocol_Engine 및 세션 관리 로직을 구현하는 단말 장치에 적용된다. 단말 구현은 MUST:
- 제 3 장에서 정의된 Authorization_Descriptor 검증 흐름을 완전히 구현한다
- 제 5 장에서 정의된 Session 라이프사이클 및 Liveness_Detection 메커니즘을 완전히 구현한다
- 제 7 장에서 정의된 Resource_Access_Mode 읽기-쓰기 잠금 시맨틱을 완전히 구현한다
- 검증을 통과하지 못한 모든 요청을 거부하고, 제 9 장에 따라 표준화된 에러 코드를 반환한다
- 로컬 폐기 목록을 유지하고, 온라인 시 제 3 장에서 정의된 정책으로 동기화한다
0.5.2 발급자 적합성 등급(Issuer Conformance)
Descriptor_Issuer 또는 Ticket_Issuer를 구현하는 신뢰 엔티티에 적용된다. 발급자 구현은 MUST:
- 제 2 장에서 정의된 필드 제약에 따라 합법적인 Authorization_Descriptor 및 Trusted_Ticket을 생성한다
- 제 8 장에서 정의된 암호학 요구사항에 따라 자격 증명에 디지털 서명한다
- 발급된 자격 증명의 상태 기록을 유지하고 폐기 작업을 지원한다
- 제 4 장에서 정의된 Trusted_Ticket에서 Authorization_Descriptor로의 변환을 구현한다
0.5.3 런타임 적합성 등급(Runtime Conformance)
iFay_Runtime을 구현하는 Fay 런타임 환경에 적용된다. 런타임 구현은 MUST:
- 제 1 장에서 정의된 인터페이스 계약에 따라 Protocol_Engine에 인가 검증 요청을 제출한다
- 지속 연결을 유지하고 제 5 장에서 정의된 빈도로 애플리케이션 계층 하트비트를 전송한다
- Protocol_Engine에서 푸시되는 세션 상태 변경 알림을 수신 및 전달한다
- Fay 인스턴스 종료 시 Protocol_Engine에 능동적으로 알림을 보내 관련 Session을 해제한다
구현은 여러 적합성 등급을 동시에 충족할 수 있다. 예를 들어 통합형 단말은 단말 구현과 런타임 구현을 동시에 담당할 수 있다.
0.6 참조 사양
본 사양은 다음 문서를 규범적으로 참조한다:
- RFC 2119 / RFC 8174: 본 사양에서 사용하는 키워드 규약
- RFC 8949(CBOR): Authorization_Descriptor의 컴팩트 바이너리 시리얼라이제이션용(제 2 장 참조)
- RFC 8032(EdDSA): 기본 디지털 서명 알고리즘(제 8 장 참조)
- RFC 7515(JWS): Trusted_Ticket의 JSON 시리얼라이제이션과 서명(제 4 장 참조)
- RFC 5280(X.509): 옵션 인증서 형식(제 8 장 참조)
CAP Schema 정의 파일(schema/{version}/schema.json)은 본 사양 제 2 장의 형식적 보충으로서, 본 사양과 동등한 규범적 효력을 가진다. schema.json과 본 사양 텍스트 기술이 충돌하는 경우 schema.json을 우선한다.
0.7 문서 구조
본 사양은 다음 순서로 구성된다:
| 장 | 주제 | 주요 내용 |
|---|---|---|
| 제 1 장 | 아키텍처와 역할 | 프로토콜 역할, 신뢰 체인, 외부 인터페이스 계약 |
| 제 2 장 | 데이터 모델 | 핵심 데이터 구조의 필드 레벨 정의 |
| 제 3 장 | 오프라인 인가 프로토콜 | Authorization_Descriptor 완전 흐름 |
| 제 4 장 | 온라인 티켓 프로토콜 | Trusted_Ticket 완전 흐름과 디그레이드 |
| 제 5 장 | 세션 관리와 생존 감지 | Session 상태 머신과 하트비트 |
| 제 6 장 | 제어권 인계 프로토콜 | Handover_Policy 3 종류 정책 |
| 제 7 장 | 리소스 접근 모드 | read/write/execute/configure 시맨틱 |
| 제 8 장 | 암호학과 서명 | 알고리즘 집합, 키 형식, 배포 |
| 제 9 장 | 에러 코드와 적합성 등급 | 표준 에러 코드, 등급 선언 |
| 제 10 장 | 보안 고려사항 | 위협 모델, 알려진 위험 |
독자는 제 0–2 장을 순서대로 읽어 기초를 확립하고, 그 후 구현 관심사에 따라 관련 장으로 점프할 것을 권장한다.
