제 0 장: 소개와 적합성

0.1 문서 상태

본 문서는 Control Authority Protocol(CAP)의 규범적 기술 사양서의 초안 버전이다. 초안 버전은 하위 호환성을 보장하지 않으며, 정식 릴리스 전에 임의의 변경이 가능하다. 본 초안이 안정되고 완전한 테스트 검증을 통과한 후, 첫 번째 정식 버전으로 specification/2025-10-25/에 게시된다.

본 문서는 CAP 아키텍처 블루프린트(docs/ko/blueprint/)와 함께 사용한다:

  • 블루프린트는 "무엇을, 왜, 무엇을 위해"에 답한다 — 프로토콜의 설계 의도, 능력 경계, 핵심 메커니즘을 정의한다
  • 사양은 "어떻게, 어떻게 검증하는지"에 답한다 — 프로토콜의 메시지 형식, 흐름 단계, 에러 처리, 적합성 요구사항을 정의한다

블루프린트의 비규범적 기술과 본 사양의 규범적 조항이 충돌하는 경우, 본 사양을 우선한다.

0.2 범위

본 사양은 CAP 프로토콜 v1의 기술 세부사항을 정의하며, 블루프린트 제 3 장 3.1 절에 열거된 6 가지 핵심 능력을 다룬다:

  1. 오프라인 인가(Authorization_Descriptor)의 발급, 보관, 검증, 폐기, 갱신
  2. 온라인 티켓(Trusted_Ticket)의 발급, 조회, 오프라인 인가로의 변환
  3. 세션 관리(Session)의 완전한 라이프사이클
  4. 제어권 인계 정책(Handover_Policy)의 3 종류 정책과 원자성 보장
  5. 생존 감지(Liveness_Detection)의 이중 판정 메커니즘
  6. 리소스 접근 모드(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:

  1. 제 3 장에서 정의된 Authorization_Descriptor 검증 흐름을 완전히 구현한다
  2. 제 5 장에서 정의된 Session 라이프사이클 및 Liveness_Detection 메커니즘을 완전히 구현한다
  3. 제 7 장에서 정의된 Resource_Access_Mode 읽기-쓰기 잠금 시맨틱을 완전히 구현한다
  4. 검증을 통과하지 못한 모든 요청을 거부하고, 제 9 장에 따라 표준화된 에러 코드를 반환한다
  5. 로컬 폐기 목록을 유지하고, 온라인 시 제 3 장에서 정의된 정책으로 동기화한다

0.5.2 발급자 적합성 등급(Issuer Conformance)

Descriptor_Issuer 또는 Ticket_Issuer를 구현하는 신뢰 엔티티에 적용된다. 발급자 구현은 MUST:

  1. 제 2 장에서 정의된 필드 제약에 따라 합법적인 Authorization_Descriptor 및 Trusted_Ticket을 생성한다
  2. 제 8 장에서 정의된 암호학 요구사항에 따라 자격 증명에 디지털 서명한다
  3. 발급된 자격 증명의 상태 기록을 유지하고 폐기 작업을 지원한다
  4. 제 4 장에서 정의된 Trusted_Ticket에서 Authorization_Descriptor로의 변환을 구현한다

0.5.3 런타임 적합성 등급(Runtime Conformance)

iFay_Runtime을 구현하는 Fay 런타임 환경에 적용된다. 런타임 구현은 MUST:

  1. 제 1 장에서 정의된 인터페이스 계약에 따라 Protocol_Engine에 인가 검증 요청을 제출한다
  2. 지속 연결을 유지하고 제 5 장에서 정의된 빈도로 애플리케이션 계층 하트비트를 전송한다
  3. Protocol_Engine에서 푸시되는 세션 상태 변경 알림을 수신 및 전달한다
  4. 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 장을 순서대로 읽어 기초를 확립하고, 그 후 구현 관심사에 따라 관련 장으로 점프할 것을 권장한다.