설치된 키링 등에 의존하지 않고 명령 줄에서 비대칭 암호화를 수행하려면 어떻게해야합니까?


1

내 집 컴퓨터는 Linux Mint를 실행하는 VMWare 호스트와 여러 VMWare 클라이언트로 구성됩니다.

매일 밤 VHD를 이동식 하드 드라이브로 압축하는 백업을 실행합니다.

압축 된 이미지를 암호화하고 싶습니다. 그리고 나는 나의 백업 스크립트에 암호를 포함시키지 않고 그렇게하고 싶다.

나는 회전식 디스크를 여러 개 가지고 있으며 매일 작업하기 때문에 오프 사이트 복사본이 있습니다. 또한 각 백업 디스크에 백업 스크립트 복사본을 포함시켜 복원 작업을 수행하기 위해 필요한 작업을 쉽게 파악할 수 있도록합니다.

내 생각에 공개 키 암호화를 사용하면 공개 키로 암호화하고 개인 키를 해독해야하며 백업 스크립트는 암호가 필요없이 실행할 수 있습니다.

(개인 키 또는 개인 키 파일의 암호를 KeePass 데이터베이스에 보관하고 백업 미디어에도 기록합니다.)

하지만이 것은 자체 완제로 실행하고 싶기 때문에 백업 디스크에 기록 된 것 이외의 것을 사용하여 백업을 해독 할 수 있습니다. 즉, gpg를 사용하는 경우 백업 디스크에 gpg 복사본이 필요합니다. 설치 디스크를 만들거나 구성하지 않고도 자체적으로 실행할 수 있습니다. (즉, ~ / .gpgconf 등에 대한 의존성이 없습니다)

그리고 나는 이것을 어떻게하는지 알아낼 수 없었다. gpg를 사용했다. 매뉴얼은 현재 사용자를 위해 설치하고 구성 할 것이라고 가정하는 것으로 보이며 정렬 작업이 전혀 이루어지지 않을 때 실행할 수 있어야합니다.

방법에 대한 아이디어 :

  • 제거 된 모드에서 gpg를 실행하십시오.
  • 다른 도구를 사용하여이를 수행하는 방법? (openssl?)

덧글 추가 ...

왜 그냥 gpg를 설치할 수 없습니까?

문제는 복원을 수행하는 것입니다.

아마도 시스템이 완전히 고장 났다고 가정 해 봅시다. 아마도 집안이 불타고 모든 것이 파괴되었습니다.

그래서 저는 새 컴퓨터, 베어 드라이브 및 가장 최근의 오프 사이트 백업으로 복원을 시작합니다.

나는 무엇을해야합니까?

ext4 파티션을 엄지 드라이브에서 마운트 할 수있는 Linux 버전을 부팅하고 함께 다시 시작합니다.

나는 기본적인 시스템 유틸리티와 내가 백업 디스크에 넣은 것 이외의 것에 의존 할 수 없다.


4
참고 : 비대칭 암호화는 데이터 암호화에 사용되지 않으며 암호화 할 수있는 양은 키 크기보다 작고 대칭 암호화보다 느립니다. 수행되는 작업은 AES와 같은 대칭 암호화로 데이터를 암호화하고 비대칭 암호화로 대칭 키를 암호화하는 것입니다. 본질적으로 이것은 공연이하는 일입니다. 또한 비대칭 또는 합리적인 보안은 약 2048 비트 (RSA)의 길이를가집니다 (이는 수동으로 입력하기에 약 512 바이트의 16 진수 문자입니다).
zaph

물론, 내 백업은 합리적인 RSA 키 크기보다 훨씬 길어질 것입니다.
Jeff Dege

그러나 이것이 스크립트 된 프로세스임을 기억하십시오. 스크립트에서 대칭 키를 생성하고이를 사용하여 VHD를 암호화 한 다음 공개 키로 암호화하고 이동식 디스크에 기록 할 수 있습니다.
Jeff Dege

왜 그냥 gpg 및 일부 키를 설치하지 않습니까? 해독 시스템을 신뢰해야합니다. 그렇지 않으면 왜 해독 된 백업을 저장해야합니까? 백업 시스템에 대한 보안 ssh 연결이 다른 아이디어 일 수 있습니다.
Xen2050

내 추가 댓글보기
Jeff Dege

답변:


0

나는이 문제로 놀아 왔고, 나는 접근하고 있다고 생각한다.

첫째, 백업을하기 전에 한 번 :

RSA 키 쌍 생성 :

$ openssl genpkey -out backupkey.pem -aes-256-cbc -algorithm rsa
.................++
............................++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ 

좋은 패스 문구를 사용하십시오 - 누군가가 해킹하려고하는 것이 아닙니다. 6 ~ 8 개의 임의의 단어가 잘 작동합니다. 좋아하는 책이나 노래를 인용하지 마십시오.

그런 다음 방금 만든 .pem 파일에서 새 공개 키를 추출합니다.

$ openssl rsa -in backupkey.pem -pubout -out backupkey.key
Enter pass phrase for backupkey.pem:
writing RSA key
$ ls -l backupkey.*
-rw-r--r-- 1 jdege jdege  800 Jan 15 20:26 backupkey.key
-rw-r--r-- 1 jdege jdege 3418 Jan 15 20:16 backupkey.pem
$ 

이 어딘가에 저장하면 모든 백업에서 사용할 수 있습니다. 나는 그들을 백업 스크립트로 저장하고 사본을 나의 KeePass 암호 데이터베이스에 저장한다.

그런 다음 각 백업에서

무작위 세션 키 생성 :

$ openssl rand -hex 128 > session.key
$

그런 다음 백업을 실행하여 결과의 ​​암호화를 파이프 라인의 마지막 단계로 만듭니다.

$ generate-my-backup.sh |
> gzip |
> openssl enc -aes-256-cbc -pass file:./session.key -out /mnt/backups/20190115/backup.bup.gz.enc
$ 

그런 다음 공개 RSA 키로 세션 키를 암호화하고 세션 키를 삭제 한 다음 암호화 된 세션 키를 백업 미디어에 복사하십시오.

$ openssl rsautl -encrypt -inkey backupkey.key -pubin -in session.key -out session.key.enc
$ cp session.key.enc /mnt/backups/20190115/
$ rm session.key
$ 

개인 키가 들어있는 파일을 백업 미디어에 복사하십시오.

$ cp backupkey.pem /mnt/backups/20190115/
$ 

복원해야하는 경우

비밀 키에 대한 암호를 알고 있으면 간단합니다.

$ openssl rsautl -decrypt -inkey backupkey.pem  -in session.key.enc |
> openssl enc -d -aes-256-cbc -in backup.bup.gz.enc -pass stdin |
> gunzip |
> restore-my-backup.sh
Enter pass phrase for backupkey.pem:
$

우리는 "openssl rsautl"을 실행하여 암호화 된 세션 키를 stdout으로 해독 한 다음 "openssl enc -d"를 실행하여 백업 파일의 암호를 해독하고 stdin에서 키를 읽은 다음 stdout에 출력 내용을 기록합니다. 파일이 속한 곳의 파일을 저장하는 데 필요한 파이프 라인이 무엇이든간에 전달되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.