요약

  • 유효한 서명은 바이트, 서명 연산, 그리고 수용된 검증 정책 사이의 관계를 증명할 뿐, 지속적인 릴리스 권한을 독립적으로 증명하지는 않습니다.
  • 내구성 있는 수용은 아티팩트 무결성을 신원, 역할 권한, 신뢰할 수 있는 시각, 투명성 포함 기록 및 보존된 폐기 증거와 결합합니다.
  • 결정적인 통제는 과거 결정을 다시 쓰지 않고도 재평가할 수 있는 릴리스 권한 기록입니다.

직무가 끝나도 살아남는 녹색 체크

금요일 오후에 만들어진 릴리스를 생각해 보십시오. 다이제스트는 일치하고, 서명은 검증되며, 인증서 체인은 수용된 신뢰 앵커에 종착하고, 서명 이벤트는 투명성 로그에 나타납니다. 월요일, 메인테이너의 역할이 바뀝니다. 몇 주 후, 무관한 사건으로 인해 자격 증명이 폐기됩니다. 미러의 아티팩트는 변하지 않았으므로 검증자는 서명과 해당 바이트 사이의 동일한 수학적 관계를 계속 보고합니다.

이 결과는 유용하지만, 사람들이 흔히 붙이는 문장보다 좁은 의미를 갖습니다. 그것은 메인테이너가 그 특정 릴리스를 게시할 권한이 있었다고 말하지 않습니다. 프로젝트가 두 번째 승인을 요구했는지 말하지 않습니다. 인증서가 검증 시점이 아니라 서명 시점에 수용 가능했는지 말하지 않습니다. 이후의 폐기가 이전 수용 결정에 어떤 영향을 미쳐야 하는지도 말하지 않습니다.

흔한 오류는 무결성, 신원, 권한, 시간이라는 네 개의 기록을 하나의 아이콘으로 압축하는 것입니다. 내구성 있는 릴리스 결정은 이들을 분리된 채 유지해야 합니다.

표준이 실제로 확립하는 것

RFC 5280은 인증서 경로 검증을 정의된 입력, 즉 신뢰 앵커, 정책 제약, 이름 제약, 시각에 대하여 내려지는 결정으로 기술합니다. 따라서 성공한 경로는 경계가 정해진 질문에 답할 뿐, 주체가 조직상의 역할을 유지했다는 영구적 진술을 만들지 않습니다.

같은 표준은 폐기를 별개의 증거로 다룹니다. 인증서 폐기 목록과 온라인 상태 서비스는 게시 시각, 신선도 한계, 실패 모드를 갖습니다. 릴리스 기록이 서명만 보존하고 수용 시점에 사용된 상태 자료와 검증 정책을 보존하지 않으면, 이후 검토자는 원래 결정을 재현할 수 없을 수 있습니다.

RFC 3161은 또 하나의 별개 속성을 추가합니다. 타임스탬핑 권한은 해시 임프린트를 신뢰할 수 있는 시각에 결합할 수 있습니다. 이는 검증자가 데이터가 인증서 만료나 키 폐기 이전에 존재했음을 입증해야 할 때 유용합니다. 그러나 신뢰할 수 있는 타임스탬프는 프로젝트의 릴리스 정책을 알지 못합니다. 서명자가 유효한 자격 증명에 접근할 수 있었다는 것 이상으로, 버전 4.2를 배포할 권한이 있었음을 증명할 수 없습니다.

RFC 6962의 Certificate Transparency 모델은 서명된 트리 헤드, 포함 증명, 일관성 증명을 통해 추가 전용 관측 가능성을 제공합니다. 투명성은 예상치 못한 인증서 발급을 노출시키고 생략을 어렵게 만들 수 있습니다. 그러나 로그 포함은 여전히 프로젝트의 승인 매트릭스를 부호화하지 않습니다. 자격 증명이 존재했다는 공개 증거는 릴리스가 승인되었다는 증거와 같지 않습니다.

Sigstore는 이러한 분리를 특별히 선명하게 드러냅니다. Fulcio는 신원 제공자가 공급한 신원에 묶인 단기 인증서를 발급합니다. Rekor는 투명성 로그를 제공합니다. 검증 정책은 기대되는 신원과 발급자를 제약할 수 있습니다. 이 시스템은 수명이 긴 서명 키의 부담을 줄이지만, 주어진 아티팩트에 대해 어떤 신원, 워크플로, 발급자가 수용 가능한지를 의존 당사자가 결정해야 할 필요를 없애지는 않습니다.

권한 공백

공백은 기술적으로 유효한 아티팩트가 그것을 승인한 릴리스 프로세스로부터 분리될 때 나타납니다. 엔지니어의 신원은 진짜일 수 있지만 그 엔지니어는 릴리스 권한이 없을 수 있습니다. 워크로드 신원이 기대되었지만 워크플로는 승인되지 않은 브랜치에서 실행되었을 수 있습니다. 인증서는 발급 시점에 유효했지만 릴리스 뒤의 승인은 이후 철회되었을 수 있습니다. 투명성 항목은 진짜일 수 있지만 해당 이벤트는 결코 일어나지 말았어야 했을 수 있습니다.

이것들은 암호학의 실패가 아닙니다. 암호학을 둘러싼 통제 맥락을 보존하지 못한 실패입니다.

프로젝트는 간결한 권한 기록으로 이 공백을 메울 수 있습니다. 수용된 각 릴리스에 대해 아티팩트 다이제스트를 서명 번들, 서명자 신원, 발급자, 승인된 역할 또는 워크로드, 승인 참조, 인증서 체인, 검증 정책과 시각, 사용된 경우 신뢰할 수 있는 타임스탬프, 투명성 로그 항목 및 증명, 폐기 자료, 그리고 책임 있는 결정 소유자에 결합하십시오. 이 기록은 수용 시점에 관찰된 사실과 재평가 중에 학습된 이후의 사실을 구분해야 합니다.

이 구분이 중요합니다. 자격 증명이 게시 후 폐기되더라도 조직은 이전 결정이 존재하지 않았던 것처럼 과거를 조용히 다시 써서는 안 됩니다. 원래의 수용 증거를 보존하고, 새로운 폐기 사실을 기록하고, 관할 정책을 적용하고, 명시적인 계속 사용, 철회 또는 교체 결정을 발행해야 합니다.

출처