secs-man: 벤더 독립적인 비밀 정보 백업 도구

secs-man: 벤더 독립적인 비밀 정보 백업 도구

중요한 비밀 정보를 위한 벤더 종속성 방지

secs-man은 비밀 정보의 안전한 백업, 복구 및 검증을 위해 설계된 명령줄 도구입니다. 이 도구의 주요 목표는 사용자가 가장 민감한 데이터를 복구할 때 특정 소프트웨어 생태계에 의존하지 않도록 보장하는 것입니다. 암호화 및 복구 과정을 도구 자체로부터 분리함으로써, secs-man은 소프트웨어가 더 이상 유지 관리되지 않거나 사용할 수 없게 되더라도 비밀 정보에 계속 접근할 수 있도록 보장합니다.

핵심 철학: 상호 운용성 및 표준

secs-man의 근본적인 설계 원칙은 중요한 데이터의 복구를 위해 해당 데이터를 암호화하는 데 사용된 특정 소프트웨어가 필요하지 않아야 한다는 것입니다. 이를 달성하기 위해, 이 도구는 독점적인 형식이 아닌 널리 채택된 기술과 표준에 의존합니다.

복구 스택

secs-man은 오직 다음 구성 요소만을 사용하여 완벽하게 재현 가능하도록 구축되었습니다:

  • 터미널
  • Coreutils: cp, mv, sha256sum과 같은 표준 Linux 유틸리티
  • age: 현대적이고 단순하며 작은 암호화 도구
  • 수동 복구 노력: 도구를 사용할 수 없는 경우 수동 복구 단계를 수행할 수 있는 능력

age를 암호화에 사용하고 coreutils를 무결성 검증에 사용함으로써, 이 도구는 소프트웨어 노후화로 인한 데이터 손실 위험을 최소화합니다.

기술적 구현 및 워크플로

secs-man은 중앙 집중식 디렉토리와 관리할 파일 목록, 그리고 복구를 위한 선택적인 소유자 및 모드 권한이 포함된 매니페스트 파일(.secrets-manifest)을 활용하여 비밀 정보를 관리합니다.

내보내기 및 암호화

비밀 정보를 내보낼 때, secs-man은 다음 단계를 수행합니다:

  1. 무결성 검사: 소스 파일의 체크섬을 확인합니다.
  2. 암호화: 대화형 프롬프트를 통해 제공된 암호화 구문(passphrase)을 사용하여 age로 파일을 암호화합니다. 이 도구는 환경 변수, 파일 또는 인자로부터 암호화 구문을 절대 읽지 않습니다.
  3. 체크섬 생성: 암호화된 데이터의 무결성을 보장하기 위해 *.sha256 파일을 생성합니다.
  4. 스냅샷 생성: 내보내기 대상 디렉토리 내의 타임스탬프가 찍힌 스냅샷 디렉토리에 암호화된 파일들을 저장합니다.

가져오기 및 복호화

비밀 정보를 복구하려면, 도구는 동일한 암호화 구문을 사용하여 파일을 복호화하고 대상 디렉토리로 복구합니다. 매니페스트에 지정된 경우, 도구는 올바른 파일 소유권 및 권한을 적용합니다(모드가 지정되지 않은 경우 기본값은 600입니다).

검증

사용자는 verify-export를 실행하여 기존 내보내기 데이터의 무결성을 검증할 수 있습니다. 이 프로세스는 모든 체크섬이 일치하는지 확인하여, 오래된 내보내기 데이터가 손상되거나 부패하지 않았는지 보장합니다.

원격 머신 관리

secs-man은 암호화 구문을 원격 머신에 노출하지 않고 원격 호스트의 비밀 정보를 처리할 수 있도록 하는 동반 스크립트인 secs-man-ssh를 포함하고 있습니다.

  • 원격에서 내보내기: 스크립트는 원격 비밀 정보를 원격 호스트의 임시 디렉토리에 복사하고, 이를 로컬 호스트로 이동시킨 후, 로컬에서 내보내기를 수행합니다.
  • 원격으로 가져오기: 스크립트는 스냅샷을 로컬에서 임시 디렉토리로 복호화하고, 평문 파일을 원격 호스트로 복사한 후, 최종 원격 비밀 정보 디렉토리로 가져오기를 수행합니다.

이 워크플로는 복호화 과정이 신뢰할 수 없는 원격 호스트가 아닌, 신뢰할 수 있는 로컬 머신에서 발생하도록 보장합니다.

수동 복구 프로세스

secs-man은 표준 도구를 사용하므로, 도구 자체 없이도 복구할 수 있습니다.

  • 수동 내보내기: 동작은 age --passphrase --output filename.txt.age --encrypt filename.txt를 실행하는 것과 동일합니다.
  • 수동 검증: 무결성은 find . -name "sha256sums.txt" -execdir sha256sum -c sha256sums.txt \;를 사용하여 검증할 수 있습니다.
  • 수동 가져오기: 파일은 age --output filename.txt --decrypt filename.txt.age를 사용하여 복호화할 수 있으며, 이어서 권한을 복리하기 위해 수동 chmodchown 명령을 수행합니다.

위협 모델 및 보안 고려 사항

secs-man은 내보내기 중에 자동으로 정리되지 않는 스냅샷을 생성합니다. 이는 비밀 정보의 유형에 따라 다른 위험 프로필을 제공합니다:

  • 인증 비밀 정보: 교체 가능한 키(예: SSH 또는 WireGuard 키)의 경우, 스냅샷은 최소한의 추가 위험을 정도로만 위험을 합니다.
  • 복호화 비밀 정보: 마스터 키 또는 디스크 키의 경우, 현재 비밀 정보가 유출출될 경우 오래된 스냅샷이 과거의 복호화 키를 노출할 수 있습니다. 저자는 이러한 유형의 비밀 정보를 교체할 때 오래된 내보낸 스냅샷을 수동으로 삭제할 것을 권장합니다.

Sources