요약
- RFC 10033은 수명이 긴 비밀 재료와, 어떤 일회성 서명 인덱스가 이미 소비되었는지를 기록하는 가변 상태를 분리한다. 백업이 진본이고 내부적으로 일관되더라도, 그 상태가 이미 공개된 서명들보다 이전 시점의 것이라면 안전하지 않을 수 있다.
- 안전한 운영은 서명 공개와 상태의 영속적 진전이 하나의 원자적 행위처럼 동작하도록 요구한다. 섹터, 예약 구간, 시간 창은 용량을 분할하는 데 도움이 되지만, 복구가 배타적이고 겹치지 않는 소유권을 보존할 때만 그렇다.
- 성공적인 HSM 자가 시험이나 암호학적으로 유효한 테스트 서명은 장치가 서명할 수 있음을 증명한다. 그러나 그 장치가 키 공간의 미사용 부분을 단독으로 통제한다는 것은 증명하지 못한다. 복구에는 복원 로그가 아니라 보관 접수증이 필요하다.
위험한 복구는 안심시키는 증거로 시작된다. 백업은 복호화되고, 무결성 태그는 검증된다. 하드웨어 보안 모듈은 재료를 가져온 뒤 자가 시험을 통과한다. 테스트 메시지는 예상 공개키에서 유효한 서명을 받는다. 모든 전통적 신호는 서명자가 다시 건강하다고 말한다.
그러나 상태 기반 해시 서명 시스템에서는 이런 검사들이 모두 참이면서도 복구가 여전히 불안전할 수 있다.
이유는 개인키가 서로 다른 두 종류의 값을 담고 있기 때문이다. 일회성 서명 키나 트리 노드가 파생되는 정적 비밀 재료가 있고, 또한 어떤 일회성 서명(OTS) 인덱스가 이미 사용되었는지를 기록하는 가변 상태가 있다. 정적 재료는 "이 시스템이 유효한 서명을 만들 수 있는가?"에 답한다. 상태는 더 어려운 질문에 답해야 한다: "어떤 서명 용량이 아직 배타적으로 미사용인가?"
RFC 10033은 IETF 스트림에서 Informational RFC로 공개된, 이 두 번째 질문에 관한 실용적 안내서다. 그 전제는 XMSS와 LMS의 보안 조건을 따른다. 서로 다른 메시지에 같은 일회성 키를 재사용하면 위조가 계산상 가능해질 만큼 충분한 구조가 드러날 수 있다. 따라서 서명자는 완성된 서명이 호출자에게 나가기 전에 다음 미사용 키로의 진전을 영속화해야 한다.RFC 8391은 XMSS 개인키 상태가 서명 출력 전에 갱신되어야 한다고 명시하며,RFC 8554는 LMS에 상응하는 규율을 부과한다.
진본이면서 낡은 백업
서명자가 다음 가용 인덱스가 40,000일 때 백업을 만들었다고 하자. 이후 5,000개의 서명을 공개하고 실시간 상태를 45,000으로 진전시켰다. 장애가 현재 상태를 파괴하고, 운영자는 더 오래된 올바르게 인증된 이미지를 복원한다. 복원된 장치는 올바른 비밀을 파생하고 수학적으로 유효한 서명을 만들 수 있다. 그러나 40,000부터 다시 시작할 수도 있다. 복구된 시스템이 잊어버린 사이에 그 5,000개의 위치는 외부 세계에서 이미 소비되었다.
이 장애는 위조된 키 재료가 아니다. 시간적 모호성이다. 사본은 진짜이지만 더 이상 배타성에 관한 권위를 갖지 못한다.
이 구분이 왜 통상적인 백업 언어가 오해를 낳는지 설명한다. 상태 없는 키에서 또 하나의 보호 사본은 주로 같은 비밀을 행사할 수 있는 장소의 수를 늘릴 뿐이다. 상태 기반 HBS 키에서는 모든 사본이 남은 용량에 대한 주장을 함께 운반한다.RFC 9802는 통상적 백업 논의에서 이 대조를 명시한다: 올바른 상태 조율 없이 개인키를 복제하거나 복원하면 OTS 재사용이 일어날 가능성이 높다.
NIST는 승인된 상태 기반 HBS 프로파일에 대해 의도적으로 제한적인 경로를 택한다.SP 800-208은 하드웨어 암호 모듈 내부에서 키와 서명 생성을 요구하며 개인 키잉 재료의 수출을 허용하지 않는다. 이는 통상적 복구 선택을 크게 제한한다. RFC 10033은 그 NIST 프로파일 밖의 메커니즘도 논의하지만, 둘을 혼동해서는 안 된다: 더 넓은 운영적 사용을 위해 서술된 수출-수입 절차가 NIST 적합 모듈이 개인키를 수출할 수 있다는 증거는 아니다.
정적 비밀과 가변 상태
상태는 흔히 "진짜" 키 옆의 작은 카운터로 다뤄진다. 운영적으로는 그것이 키의 안전 경계의 일부다. 카운터, 인덱스에서 장치로의 매핑, 예약되었으나 미사용인 구간의 기록, 그리고 원천 서명자가 멈췄다는 증거가 바로 두 개의 유효한 장치가 마치 같은 일회성 키를 각자 소유하는 것처럼 동작하는 일을 막는 것이다.
이것은 익숙한 무결성 질문을 배타성 질문으로 바꾼다. 체크섬은 바이트가 변경되지 않았음을 증명할 수 있다. 디지털 서명은 백업 생산자를 인증할 수 있다. 그러나 둘 다 이후의 상태가 존재하지 않음, 어떤 클론도 활성 상태가 아님, 크래시 창 동안 서명이 시스템을 벗어나지 않았음을 증명하지 못한다. 통제 표면은 암호 모듈을 넘어 캐시, 프로세스 포크, 가상머신 스냅샷, 큐, 응답 경로, 운영자 인수인계까지 확장된다.
따라서 RFC 10033은 서명 완성과 갱신된 상태의 확보 사이 간격을 최소화하는 설계를 권고한다. 데이터베이스 언어로 원하는 속성을 서술한다: 서명 공개와 상태 진전은 원자성, 일관성, 고립성, 영속성을 가져야 한다. 크래시가 의심을 남긴다면 안전한 대응은 불확실한 용량을 회수하는 것이 아니라 소각하는 것이다.
공개와 진전을 하나의 행위로
깔끔한 불변식은 단순하게 서술할 수 있다: 대응하는 인덱스가 이미 모든 미래 서명자를 위해 영속적으로 사용 불가가 되지 않는 한, 완전한 서명은 서명자 밖에서 관측될 수 없다.
구현이 어려운 부분이다. 서명 프로세스는 상태를 영속화한 뒤 서명을 돌려주기 전에 실패할 수 있는데, 이는 인덱스 하나를 낭비하지만 안전은 보존한다. 반대 순서는 더 나쁘다: 서명을 반환한 뒤 소비 기록 전에 실패할 수 있다. 캐시는 영속 매체에 도달하지 않은 쓰기를 승인할 수 있다. 가상머신은 작업을 수락한 뒤 복제될 수 있다. 두 복구 운영자가 서로 다른 시설에서 같은 세대를 활성화할 수 있다.
따라서 낭비는 비대칭이다. 불확실한 OTS 키를 소각하면 유한한 용량이 줄어든다. 하나를 재사용하면 공개키 아래의 모든 신뢰 결정의 보안이 약해질 수 있다. 복구 설계는 보이지 않는 겹침보다 측정 가능한 낭비를 선호해야 한다.
섹터, 구간, 시간 창
RFC 10033은 모든 것을 한 번에 옮기지 않고도 책임이 이동할 수 있도록 상태 공간을 나누는 여러 방법을 서술한다.
섹터화는 공통 공개키 아래의 독립 조각을 서로 다른 서명자에게 할당한다. 섹터는 원천이 사용을 멈추고 소유권이 중복되지 않는 경우에만 이전될 수 있다. 사전 할당된 범위도 마찬가지로 장치들에 인덱스 공간의 서로소인 부분을 준다. 구간 예약은 프로세스가 서명 전에 블록을 청구하게 한다; 크래시하면 블록의 미사용 꼬리는 다른 프로세스에 제공되지 않고 버려진다. 시간 기반 할당은 용량을 기간에 묶을 수 있으나, 복구는 논리적 시계를 절대 뒤로 돌려서는 안 된다. 경과된 창의 미사용 용량은 소진된 것으로 다뤄져야 한다.
이 메커니즘은 보관 단위를 바꿀 뿐 근본 규칙은 바꾸지 않는다. 이전은 복구된 서명자, 실패하거나 격리된 원천, 모든 복제본, 모든 오프라인 사본, 그리고 이전에 할당된 모든 범위 사이의 비겹침을 확립해야 한다. 부분 이전과 이후의 병합도 같은 회계를 필요로 한다. 섹터 레이블이나 시간 창이 안전한 것은 문법이 유효하다는 이유만으로는 아니다.
RFC 10033은 또한 NIST 승인 비수출 프로파일 밖에서, 하위 수준 트리를 미리 준비하는 복구 방법을 개략한다. 하위 트리 루트는 미사용 상위 수준 OTS 키로 서명되고; 시드, 서명, 인덱스, 해시가 수출되며; 원천 사본은 되돌릴 수 없이 삭제된다. 복구는 첫 미사용 패키지를 가져와 트리를 재생성하고 기록된 해시에 대해 검증한 뒤 백업 매체에서 시드를 제거한다. 이 절차는 소유권 전이를 명시적으로 만들기 때문에 가치가 있다. 그러나 가장 어려운 동사는 여전히 "삭제"다. 치명적 장애나 제3자 보관 사건 이후 삭제는 완전히 알 수 없으면서 증명될 수도 있다.
복구 보관 접수증
RFC 10033은 보편적인 복구 접수증을 규정하지 않는다. 나는 운영 결정이 비상 상황 이후에 검토될 수 있는 대상을 필요로 하기 때문에 하나를 제안한다.
접수증은 공개키, 알고리즘, 매개변수 집합; 서명자와 HSM 신원; 백업 세대와 생성 시각; 복원된 상태와 공개된 것으로 알려진 최고 인덱스; 섹터, 구간, 시간 창 경계; 소각된 모든 예약; 원천 정지 및 삭제 증거; 수입된 패키지의 해시; 운영자와 승인자; 활성화 및 조정 시각; 그리고 로그나 신뢰 시스템에서 보이는 완전한 서명에 대한 중복 인덱스 검사 결과를 식별해야 한다.
또한 불확실성을 서술해야 한다. 마지막 영속 인덱스가 45,000이지만 응답 큐가 45,127까지 서명을 공개했을 수 있다면, 복구는 불확실한 범위 전체를 넘어서 시작해야 한다. 실패한 원천이 죽었음을 증명할 수 없다면, 그에 할당된 섹터는 격리 상태를 유지해야 한다. 오프라인 백업을 회수할 수 없다면, 무해한 저장물로 조용히 다뤄지는 것이 아니라 상시적 겹침 위험으로 기록되어야 한다.
이것은 암호학이 산출하는 증명이 아니라 보관 기록이다. 그 목적은 운영자가 왜 복원된 서명자가 미사용·비겹침 도메인을 소유한다고 믿는지, 그리고 그 믿음을 보수적으로 만들기 위해 어떤 용량이 희생되었는지를 보여주는 것이다.
출처
- RFC 10033: State Management for Stateful Hash-Based Signature Schemes
- RFC 8391: XMSS
- RFC 8554: Leighton-Micali Hash-Based Signatures
- NIST SP 800-208
- RFC 9802: Operational Considerations for Stateful Hash-Based Signatures
- IACR: State Management for Hash-Based Signatures
- ETSI TR 103 692
- Lu Heng: Running-Code Primacy
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





