내가 원하는 것?

내가 원하는 것?

Openssl은 다음과 같은 방식으로 작은 파일만 암호화할 수 있습니다.

openssl rsautl -encrypt -pubin -inkey public_key.pem -in secret.txt -out secret.enc

openssl을 찾았습니다여기에 제안됨오류 발생:

openssl smime -encrypt -aes-256-cbc -binary -in secret.txt -outform DER -out secret.txt.der public_key.pem

메일용이므로 smime을 사용해야 하는 것은 아니지만 여전히 오류가 표시됩니다.

unable to load certificate
140222726453056:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE

openssl이 인증서 신뢰에 대해 불평하는 이유는 무엇입니까? 그건 내 일이야. 나는 이것이 PEM이 다른 형식이기를 원한다는 것을 알고 있지만 개인적으로 그렇게 생각하는 것은 아닙니다.

내가 원하는 것?

나는 bash를 사용하여 공개 PEM 파일(또는 다른 공개 키)을 사용하여 강력한 암호화로 모든 파일을 암호화하여 내 프로젝트 상대방이 개인 키를 사용하여 파일을 해독할 수 있도록 하고 싶습니다. Powershell 기본 도구도 사용할 수 있다면 좋겠지만 이는 큰 질문이므로 Windows에서 호스팅되는 수신자가 gitbash를 사용하는 것을 피하기 위해 이 도구를 사용하고 싶었습니다.

gpg를 사용할 수 있지만 비밀번호를 생성하는 키를 도입하고 싶지 않습니다.

답변1

첫 번째 문제는 대용량 파일을 암호화하기 위해 비대칭 암호를 사용하고 싶지 않다는 것입니다. 어쨌든 속도가 느리고 크기가 제한되어 있기 때문에 아무도 그렇게 하지 않습니다. 대칭 암호를 위한 세션 키를 생성하고, 비대칭 암호로 세션 키를 암호화하고, 대칭 암호로 대용량 파일을 암호화한 후 함께 패키지하기만 하면 됩니다. 이것이 SSL과 PGP/GPG가 하는 일입니다.

발견한 rsautil 명령은 비대칭 인코딩을 수행하기 위한 하위 수준 도구입니다. 그러나 전체 프로세스를 완료하려면 몇 가지 추가 명령이 필요합니다.

두 가지 기본 솔루션이 있습니다.

  1. 인증서를 생성하려면 개인 키로 공개 키에 서명하세요. 이것은 openssl smime작동합니다.
  2. GPG를 사용하세요. 그것이 바로 그것이 설계된 이유입니다. 설명하신 상황을 토대로 이 방법을 권장합니다. 아마도 gpg -se, 또는 gpg -sea이메일을 보내는 경우입니다. (이렇게 하지 마세요 gpg -c. "비밀번호 생성 키"인 것 같습니다.)

SSL 또는 GPG를 사용하면 두 당사자 모두 공개 키와 개인 키를 생성하고, 개인 키로 공개 키에 서명하고, 서명된 공개 키를 상대방에게 보내야 합니다. 일반적으로 관련된 유일한 비밀번호는 귀하의 파일을 볼 수 있는 사람이 귀하의 데이터를 해독할 수 없도록 개인 키를 암호화하는 것입니다.

SSL과 PGP/GPG의 주요 차이점은 인증 모델입니다. SSL은 "인증 기관"을 사용합니다. PGP/GPG는 Anne이 Bob의 키에 서명하고 Bob이 Carol의 키에 서명하는 인증서 체인을 사용하므로 Anne은 Carol의 키가 Carol의 키임을 신뢰할 수 있습니다.

마지막으로 이메일을 통해 파일을 보내는 경우 이메일 클라이언트에 SMIME 또는 PGP를 통합할 수 있는지 확인하고 싶을 수도 있습니다.

관련 정보