GPG 명령을 사용하여 SHA256으로 올바르게 암호화하는 방법은 무엇입니까?

GPG 명령을 사용하여 SHA256으로 올바르게 암호화하는 방법은 무엇입니까?

암호화를 위해 다음 명령을 사용하고 있습니다.

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

그리고 해독:

gpg --output un_encrypted.data --decrypt encrypted.data

이런 식으로 수행하는 것이 안전한지 궁금합니다. 인터넷에서 이 명령에 대한 참조는 1개만 표시됩니다.여기, 기타 웹사이트에서는 --cipher-algo AES256다음과 같이 기본 암호를 사용하는 명령 없이 이를 실행합니다.

gpg --output encrypted.data --symmetric un_encrypted.data

거기에 솔트를 추가할 필요가 없나요? OpenSSL처럼 솔트를 제공하는 명령이 있나요? 아니면 소프트웨어에서 자동으로 처리하나요?

또한 다음과 같이 실행하면 어떻게 되나요 --symmetric?

gpg --output encrypted.data --cipher-algo AES256 un_encrypted.data

내 질문은 안전한 SHA256 암호화 파일을 생성하기 위해 이 명령을 올바르게 실행하는 것에 관한 것입니다. 위의 명령 사이에 차이점이 있습니까?

답변1

안정적인 버전의 gpg를 사용하는 경우 --cipher-algo AES256AES256을 사용하여 올바르게 암호화해야 합니다(SHA256은 해시입니다).

자체 솔트 및 키 변환 라운드를 자동으로 선택하므로 잠재적으로 약한 옵션을 직접 선택할 필요가 없습니다(선택할 수도 없음). OpenSSL에는 많은 옵션이 있지만 기본값(특히 enc)이 가장 강력하지 않을 수 있습니다. 연결된 Q는 실제로 내 다른 답변을 참조합니다.OpenSSL과 GPG- 기본적으로 gpg는 작동하며 수십 년 동안 테스트되었으며 대규모 정부를 난처하게 만들 수 있으며 OpenSSL의 enc명령에는 여전히 반복 횟수에 대한 옵션이 없을 수 있습니다(2017-11-02의 1.1.0f 매뉴얼 페이지에 여전히 해당 버그가 나열되어 있습니다).

-v솔트(아래 772B0F3B94AD86BA)와 같은 자세한 내용을 보려면 몇 가지(여러) 옵션을 추가하세요 .

$ gpg -vvvvvvvvv  test.gpg 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
# off=0 ctb=8c tag=3 hlen=2 plen=13
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
        salt 772B0F3B94AD86BA, count 9961472 (211)
gpg: AES256 encrypted data
# off=15 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: encrypted with 1 passphrase
# off=36 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=38 ctb=ad tag=11 hlen=3 plen=25420
:literal data packet:
        mode b (62), created 1519523431, name="test",
        raw data: 25405 bytes
gpg: original file name='test'
gpg: decryption okay

생략하면 --symmetricgpg는 무슨 뜻인지 추측하려고 시도할 것입니다. 파일이 gpg로 암호화되지 않으면 포기/실패합니다.

$ gpg -vvvvvvvvv --cipher-algo AES256 test 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error

옵션 을 생략하면 --cipher-algo"사용된 기본 대칭 암호는 AES-128"( man gpg페이지에 해당 옵션에 대해 설명된 것과 같음)을 사용해야 하지만 기본값은 버전에 따라 다를 수 있거나 개인 설정에 따라 무시될 수 있다고 생각합니다. 참고로 사용 가능한 알고리즘은 다음과 같은 옵션과 함께 나열될 수 있습니다 --version.

Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

--output또한 마음에 들지 않으면 옵션이 실제로 필요하지 않습니다 . gpg는 .gpg필요에 따라 확장 기능을 추가 및 제거합니다.

  • 참고로 다음 링크를 참조하세요.RFC2440OpenPGP에서 사용하는 데이터 요소 설명(적어도 1999년에는 거의 전적으로 관련이 있다고 확신하지만, 특히 String-to-key(s2k) 및 반복 및 솔트와 같은 것에 대한 설명)

관련 정보