
GPG를 사용하여 (아마도 큰) 파일을 암호화했다고 가정합니다. 예를 들어
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
먼저 파일을 해독한 후 또 다른 암호화를 수행하지 않고 다른 수신자를 추가할 수 있습니까?
답변1
짧은 대답: 아니요
우선, 수취인이 아닐 경우에는 절대 불가능하오니 주의하시기 바랍니다. 파일을 해독할 수 있는 능력도 없고, 수신자를 추가할 수도 없습니다. 2초 전에 암호화한 경우에도 마찬가지입니다.
귀하가 수신자라고 가정하면 기술적으로 가능합니다. 파일은 실제로 세션 키로 암호화되고 세션 키는 공개 키로 암호화됩니다.이론에 의하면세션 키를 해독하고 다른 사람의 키로 다시 암호화한 다음 원래 두 사람 모두에게 문서를 암호화한 것처럼 모든 것을 파일에 함께 패키지합니다.
하지만,gpg에는 이 기능이 없습니다. gpg로 얻을 수 있는 가장 가까운 것은
- 옵션을 사용하여
--show-session-key
세션 키를 가져옵니다(이 경우 파일의 암호도 해독하는 것으로 보이므로 요점이 누락됨). - 해당 세션 키를 다른 사람의 공개 키로 암호화합니다(실제로 이렇게 하면 새 세션 키가 생성되고 해당 세션 키를 사용하여 원래 세션 키를 암호화합니다).
- 두 파일을 모두 보냅니다.
- 수신자는 세션 키를 해독하고 이를 사용하여
--override-session-key
원본 메시지를 해독할 수 있습니다.
답변2
1) 이러한 상황에서는 파일을 자신(및 의도된 수신자)에게 암호화하는 것이 항상 좋은 생각입니다. 위의 nathang의 답변에 흐르는 GPG 및 PGP 작동 방식을 설명하는 데 RedGrittyBrick이 정확합니다.
2) 그러나 원본 파일이 있는 경우 새 수신자에게 암호화된 새 파일을 생성하는 것이 가장 좋습니다.
nathang의 제안에 따른 세션 키 경로를 사용하고 싶지 않다고 가정할 때, 처음에 파일을 자신에게 암호화한 경우(위의 1번과 같이) 암호를 해독한 다음 위의 2단계를 따르세요.
원본이 없거나 자신에게 암호화되지 않은 경우, 첫 번째 수신자가 복사본을 다시 보내지 않으면 데이터를 다시 가져올 수 없으며 다른 사람에게 암호화할 수 없습니다.
답변3
먼저 파일을 해독한 후 또 다른 암호화를 수행하지 않고 다른 수신자를 추가할 수 있습니까?
해독하지 않고는 불가능합니다조금도하지만 그것은그래야 할 것 같다복호화하지 않고도 가능파일로:
gpg -d this_file.gpg | gpg -e -r "Some Name" -r "Another Name" -o this_file.gpg
gpg
단 , 동일한 파일을 동시에 읽고 쓰기 때문에 파일이 손상되는 것 같습니다(적어도 가끔은) .
대신, 해독된 파일을 관리할 필요가 없도록 스크립트에서 다음을 수행할 수 있습니다.
gpg -d -o this_file.txt this_file.gpg
gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg \
--batch --yes \
this_file.txt
shred -u this_file.txt
shred
, -u
옵션을 사용하면 지정한 파일의 데이터를 안전하게 덮어쓴 다음 삭제합니다. srm
Mac OS X 와 같은 다른 플랫폼에도 비슷한 프로그램이 있습니다.
또는 다음과 같이 스크립트를 작성할 수도 있습니다(제공:dave_thompson_085) 해독된 데이터를 파일에 전혀 저장할 필요조차 없도록 하려면 다음을 수행하세요.
gpg -d this_file.gpg \
| gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg.new \
--batch --yes
mv -f this_file.gpg.new this_file.gpg