백업 서버에 개인 키가없는 GPG를 사용하여 암호화 된 오프 사이트 백업?


11

백업 할 디렉토리 트리의 xz압축 된 tar아카이브 를 작성하는 백업 서버 가 있습니다. 이러한 tar 아카이브는 split용량 이 큰 (다중 TB), 조각 (2.5TB)으로 구성 될 수 있으며 각 조각은 LTO-6 테이프에 기록되며 테이프는 오프 사이트로 이동합니다.

이제 암호화를 추가하고 싶습니다. 공개-개인 키 암호화 및 하나 이상의 수신자 (관리자 공개 키)를 사용하여 분할하기 전에 tar 아카이브를 GPG로 암호화 할 수 있습니다.

그러나 복구의 경우 파일이 너무 커서 다른 곳으로 압축을 풀 수 없으므로 적어도 한 명의 관리자가 자신의 개인 키를 백업 서버에 넣어야합니다.

GPG는 세션 키가있는 AES와 같은 대칭 암호를 사용하는 하이브리드 암호화 체계를 사용하며 해당 세션 키만 수신자를 위해 공개-개인 키를 암호화합니다.

관리자 가 개인 키를 백업 서버에 넣지 않고 복구 파일의 암호 해독을위한 세션 키를 제공 할 수있는 방법이 있습니까?


물론 바퀴를 재발 명 할 수 있습니다.

  • 백업 할 각 파일마다 백업 서버에서 임의의 세션 키를 만듭니다.
  • GPG 대칭 암호화를 사용하여 파일 암호화
  • GPG 비대칭 암호화를 사용하여 각 수신자의 세션 키를 암호화

그러나 "표준"또는 내장 또는 모범 사례를 통해 달성 할 수 있습니까?

답변:


18

--show-session-key--override-session-key옵션을 사용하면 가능합니다 .

먼저 암호화 된 파일의 시작이 필요합니다. 암호화 된 세션 키가 저장되는 곳입니다.

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

그런 다음 워크 스테이션에 복사하고 세션 키를 검색하십시오.

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

이제 세션 키를 사용하여 파일을 해독 할 수 있습니다

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"

그 문제에 대한 정말 멋진 해결책입니다
Lars

감사!! head와 같은 좋은 트릭 . 이 접근법은 내 원래 가려움증을 해결합니다.
oberstet

4

대부분의 질문에 대한 답변이 된 것처럼 보이지만 관리자 팀이 개인 키가 로컬 제어로 끝나는 것을 조심 sshfs한다면 ssh 세션을 통해 원격 백업을 마운트하는 것이 좋습니다.

각 원격 관리자 시스템에 apt를 통해 설치

sudo apt-get install sshfs

관리자의 ssh 구성이 아래와 같다고 가정합니다.

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

그런 다음 관리자는 다음과 같이 마운트에 사용할 수 있습니다

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

검사 후 원격 관리자를 마운트 해제하려면 다음을 사용할 수 있습니다.

fusermount -u /mnt/remote

sshfs 사용에 대한 좋은 점은 원격 서버에서 GnuPG 및 ssh의 공개 키만 필요하고 관련 개인 키는 소유 한 시스템에 남아 있다는 것입니다. 두 번째로 좋은 점은 대부분의 파일 정보를 읽거나 액세스 할 때까지 관련 파일 시스템에 남아 있다는 것입니다.

여전히 로그 또는 디렉토리의 자동 암호화를 촉진 할 수있는 도구를 찾고 있다면 나중에 내가 푸시 한 개념 도구의 교수 확인 할 수 있습니다 GitHub의 (특히 시나리오 네 작성된 sshsf행복하게 거의 모든 암호화합니다 약간의 정의에있는 사용) GnuPG를 통한 데이터. 그러나 실험적이며 일부 기능으로 인해 잘못 사용하면 데이터가 손상 될 수 있습니다. 소스 코드는 ~ 1600 ~ 줄보다 적으므로 주말 이내에 감사 할 수 있습니다.

암호화 된 디렉토리에 대한 액세스 만 허용하고이 방식으로 사용되는 관리자 키에 대해 대화식 쉘을 사용하지 않도록 chroot 사용자로 원격 서버의 ssh 구성을 설정하여 추가 보안을 수행 할 수 있습니다.


2

비밀 키를 하드 디스크에 보관하려면 램 디스크를 작성하고 (필요한가?) 필요에 따라 서버의 안전한 비 서버 위치에서 비밀 키를로드 할 수 있습니다. 암호 해독에 사용하고 완료되면 / dev / random으로 덮어 씁니다. 비밀은 어쨌든 GPG에서 사용하기 위해 RAM에 들어가야합니다.

RAM에서도 서버에 비밀 키를 둘 수 없다면 기술적으로 불가능합니다. 암호를 해독하려면 GPG에 비밀 키가 있어야합니다.

램 디스크 정보 : /unix/66329/creating-a-ram-disk-on-linux


2
GPG는 암호화 된 각 메시지마다 다른 메시지 별 대칭 비밀 ( "세션 키")을 사용합니다. 이 대칭 키는 기술적으로 해당 메시지를 해독하는 시스템에 있어야합니다. GPG (비대칭) 개인 키를 오프라인으로 유지하고 싶습니다. 후자는 GPG에서 대칭 세션 키를 암호화하는 데 사용됩니다. 그래서 저는 이러한 측면을 활용하는 계획을
따르고 있습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.