GPG에서 이미 암호화 된 파일에 수신자를 추가 할 수 있습니까? –encrypt this_file.txt 먼저 파일을 해독

GPG를 사용하여 (아마도 큰) 파일을 암호화했다고 가정합니다. 예 :

gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt

먼저 파일을 해독 한 후 다른 암호화를 수행하지 않고 다른 수신자를 추가 할 수 있습니까?



답변

짧은 답변 : 아니오

우선, 수령인이 아닌 경우 완전히 불가능하다는 점에 유의하십시오. 파일을 해독 할 수있는 능력도없고 수신자를 훨씬 적게 추가 할 수 있습니다. 2 초 전에 암호화 한 경우에도 마찬가지입니다.

귀하가 수령인이라고 가정하면 기술적으로 가능합니다. 파일은 실제로 세션 키로 암호화되고 세션 키는 공개 키로 암호화되므로 이론적 으로 세션 키를 해독하고 다른 사람의 키로 다시 암호화 한 다음 마치 마치 마치 파일에있는 것처럼 모든 것을 파일로 묶을 수 있습니다 원래 두 사람에게 문서를 암호화했습니다.

그러나 gpg에는이 기능이 없습니다 . gpg로 얻을 수있는 가장 가까운 것은

  1. --show-session-key옵션을 사용하여 세션 키를 얻습니다 (이 경우 포인트가 누락되어 파일을 해독하는 것처럼 보입니다)
  2. 해당 세션 키를 다른 사람의 공개 키로 암호화 (실제로 새 세션 키를 생성하고 해당 세션 키를 사용하여 원래 세션 키를 암호화 함)
  3. 두 파일을 모두 보내십시오.
  4. 수신자는 세션 키 --override-session-key를 해독하고 원본 메시지를 해독하는 데 사용할 수 있습니다.

답변

1)이 상황은 파일을 자신 (및 의도 된 수신자)에게 암호화하는 것이 항상 좋은 이유입니다. RedGrittyBrick은 위의 nathang의 답변으로 흘러 들어가는 GPG 및 PGP의 작동 방식을 설명하는 데있어 위의 내용입니다.

2) 그러나 원본 파일이있는 경우 새 수신자에게 암호화 된 새 파일을 만드는 것이 가장 좋습니다.

nathang의 제안에서 세션 키 경로를 가고 싶지 않다고 가정하고, 파일을 처음에 위의 1 번과 같이 자신에게 암호화 한 경우 파일을 해독 한 다음 위의 2 단계를 따르십시오.

원본을 가지고 있거나 자신에게 암호화하지 않은 경우 데이터를 다시 가져올 수 없으며 첫 번째 수신자가 사본을 보내지 않으면 다른 사람에게 암호화 할 수 없습니다.


답변

먼저 파일을 해독 한 후 다른 암호화를 수행하지 않고 다른 수신자를 추가 할 수 있습니까?

이 암호를 해독하지 않고 불가능 전혀 하지만 그것이 있어야하는 것 같다 암호를 해독하지 않고 가능한 파일로 :

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옵션, 안전하게의 데이터를 덮어하고 사용자가 지정한 파일을 삭제합니다. srmMac 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


답변