암호 해독 명령에 암호화 알고리즘을 지정할 수 있는지 알고 싶습니다. 현재 지원되는 알고리즘 목록에서 기본이 아닌 암호화 알고리즘을 지정하는 데 사용할 수 있는 암호화 명령과 달리 그러한 지원을 찾지 못했습니다.
사용된 명령의 예:
암호화:
cat pwd | gpg2 --pinentry-mode loopback --passphrase-fd 0 -o plaintext.enc -r "USER ID" -c --cipher-algo IDEA -e plaintext
해독:
cat pwd | gpg2 --pinentry-mode loopback --passphrase-fd 0 -o plaintext.dec -r "USER ID" -d plaintext.enc
나는 GnuPG를 처음 접했고 이것을 발견했습니다.우편 엽서웹 사이트의 명령줄에서 기본 암호화/암호 해독을 실행하는 데 매우 유용합니다. 이 명령을 테스트하기 위해 Ubuntu 20.04 VM을 사용했습니다.
답변1
암호 해독 명령에 암호화 알고리즘을 지정할 수 있는지 알고 싶습니다.
없는 이유는 GnuPG의 패킷 구문이 OpenPGP 프로토콜을 따르고 사용된 암호화 알고리즘이 대칭 암호화된 세션 키 패킷에 설명되어 있기 때문입니다.
바라보다RFC 4880 섹션 5.3더 알아보기.
편집하다
암호화는 두 부분으로 구성되어 있으므로 두 가지 서로 다른 알고리즘이 고려되고 있음을 분명히 해야 합니다.
메시지를 암호화하는 명령을 실행하면 GnuPG는 먼저 기본/선호(또는 지정된) 대칭 알고리즘에 따라 크기가 달라지는 무작위 세션 키를 생성 --cipher-algo
하고 이 세션 키와 알고리즘을 사용하여 메시지를 암호화합니다.
암호화된 메시지는 Sym에 저장됩니다. 암호화되고 무결성이 보호된 데이터 패킷입니다.
그런 다음 GnuPG는 대칭 알고리즘을 지정하는 옥텟을 세션 키 앞에 추가하고 수신자의 공개 키( --encrypt
또는 -e
명령의 경우 해당 키 유형에 특정한 알고리즘을 사용함) 및/또는 비밀번호( --symmetric
또는 -c
명령에서 다음을 사용함)를 사용합니다. 옵션에서 지정한 대칭 알고리즘 --cipher-algo
또는 사용자가 선호하는 대칭 알고리즘).
그런 다음 이 암호화 세션 키 앞에는 이를 암호화하는 데 사용되는 알고리즘을 설명하는 옥텟이 오고 공개 키 암호화 세션 키 패킷(공개 키 암호화의 경우) 또는 대칭 키 암호화 세션 키 패킷(비밀번호 암호화의 경우)에 배치됩니다. .
이는 모두 암호 해독 알고리즘이 다음과 같다는 것을 의미합니다.언제나암호화된 세션 키 패킷 내에서 지정됩니다. 세션 키를 해독하는 데 사용되는 알고리즘은 세션 키를 암호화하기 전에 명시적으로 지정되며, 해독된 세션 키의 첫 번째 옥텟은 실제 메시지를 해독하는 데 사용되는 대칭 알고리즘을 지정합니다.