소개
Notary는 소프트웨어 배포 및 업데이트 과정에서 데이터의 무결성과 출처를 검증하는 오픈소스 프로젝트입니다. 이 프로젝트는 Docker Content Trust(DCT)와 같은 시스템에서 핵심적으로 사용되며, 콘텐츠 게시자가 오프라인으로 서명한 후 안전하게 배포할 수 있도록 지원합니다. 최종 사용자는 공개 키를 통해 서버나 미러에서 받은 콘텐츠의 유효성을 확신할 수 있습니다.
상세정보
보안 콘텐츠 게시 및 검증
콘텐츠 게시자는 보안 키를 사용하여 오프라인에서 콘텐츠에 서명할 수 있습니다. 준비된 서명된 컬렉션은 Notary 서버에 전송됩니다. 소비자는 게시자의 공개 키를 통해 콘텐츠의 무결성과 유효성을 검증할 수 있습니다.
복구 가능한 키 관리
TUF의 키 역할 체계를 활용하여, 특정 키(루트 역할 제외)가 유출되거나 분실되더라도 시스템의 보안이 완전히 손상되지 않도록 설계되었습니다.
신선도 보장 및 재생 공격 방지
콘텐츠 게시 시 타임스탬핑을 활용하여 소비자가 가장 최신의 콘텐츠를 수신하고 있음을 보장합니다. 이는 오래된 취약한 버전을 이용한 공격을 방지하는 데 중요합니다.
신뢰 임계값 및 서명 위임
여러 유지보수자가 관리하는 오픈소스 프로젝트와 같이, 설정 가능한 신뢰 임계값을 적용하여 악의적인 콘텐츠 게시를 방지할 수 있습니다. 또한, 컬렉션의 일부를 다른 서명자에게 위임할 수도 있습니다.
다운로드·설치 방법
Notary 클라이언트 CLI 바이너리는 GitHub의 공식 릴리스 페이지에서 다운로드할 수 있습니다. 소스 코드를 직접 빌드할 수도 있습니다. 빌드 시 Go 1.12 이상이 필요하며, 기본적으로 YubiKey를 지원하는 PKCS#11 태그가 포함되어 빌드됩니다. 서버와 서명자는 Docker Compose를 사용하여 빌드할 수 있습니다.
기본 사용법/명령어
로컬 Notary 서버를 사용하려면 Docker와 Docker Compose가 설치되어 있어야 합니다. GitHub 저장소를 클론한 후 “docker-compose build” 및 “docker-compose up -d” 명령으로 로컬 서버와 서명자를 시작할 수 있습니다. 설정 파일과 테스트 인증서를 로컬 설정 디렉토리(~/.notary)에 복사한 후, 호스트 파일에 127.0.0.1 notary-server를 추가하면 됩니다. Docker Hub 이미지와 함께 사용하는 방법은 공식 “Getting Started” 문서를 참조하십시오.
지원 환경·시스템 요구사항
이 프로젝트는 주로 컨테이너화된 환경과 CLI 도구로 사용되며, Go 언어로 개발되었습니다. 빌드 및 실행을 위해 Docker 환경이 권장됩니다.
최신 버전·업데이트
최신 안정 릴리스는 GitHub의 releases 브랜치에 있으며, GitHub 태그와 연관됩니다. 마스터 브랜치는 다음 릴리스를 위한 개발 브랜치입니다.
제한 사항·확인 사항
CLI 버전과 서버/서명자 버전 간의 기능 호환성을 보장하려면, 서버/서명자 버전이 CLI 버전 이상이어야 합니다.
시스템 요구사항
Go 1.12 이상


