GPG에서 이미 암호화 된 파일에 수신자를 추가 할 수 있습니까?


12

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

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

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

gnupg 

"일부 이름"의 공개 키로 파일을 암호화했습니다. 그리고 다른 수신자에게 무엇을 사용해야합니까?
ott--

6
@ ott : 그것이 작동하는 방식이 아닙니다 (AFAIK). PGP는 수신자 공개 키가 아닌 대칭 키로 파일을 암호화합니다. 그런 다음 각 수신자의 공개 키를 사용하여 해당 대칭 키의 여러 사본을 개별적으로 암호화합니다.
RedGrittyBrick

@RedGrittyBrick 나는 pgp에 대해 모른다 --symmetric. 그러나 gpg는 그것을 위해 사용 한다. 으로 --recipient그 일 수신자의 공개 키를 사용합니다. 받는 사람이 둘 이상있을 수 있지만 별도의 명령이 아닌 하나의 명령으로 수행해야합니다.
ott--

3
@ott : "나는 여러 형식의 명령을 사용하여 여러 수신자에 대해 동시에 파일을 암호화하는 것도 가능하다.gpg -e -r <name1> -r <name2> ... <file> "나는 이것을 직접 시도하지는 않았다. 그것은 수년 전에 내가 암호에 대해 배운 것과 일치합니다. 즉, 메시지 텍스트를 암호화하기 위해 빠른 대칭 알고리즘을 사용하는 것이 거의 항상 더 효율적입니다. 메시지 키만 느린 비대칭 암호화를 사용하여 암호화됩니다.
RedGrittyBrick

답변:


8

짧은 답변 : 아니오

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

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

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

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

3

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

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

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

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


1
실제로 항상 좋은 생각 은 아닙니다 . PGP : 공개 키를 수신자로 포함을 참조하십시오 . 덜 안전한가요? 정보 보안 스택 교환에 대한 몇 가지 주장에 대해.
CVn

0

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

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

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

2
암호화 된 위치를 임시로 그대로 두거나 미러 파일을 삭제 하면 명확한 임시 파일 을 작성할 필요가 없습니다 . 또는 (아마도) 오래된 inode를 영리하게 유지하십시오 .gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpgmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg
dave_thompson_085

@ dave_thompson_085 흥미 롭습니다 – 감사합니다!
Kenny Evitt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.