여러 키로 암호화 / 복호화


110

데이터를 암호화하여 여러 다른 키로 해독 할 수 있습니까?

예:

key1로 데이터를 암호화했지만 2, 3, 4 키로 암호를 해독하고 싶습니다.

이게 가능해?

답변:


170

GnuPG 는 표준으로 다중 키 암호화를 수행합니다.

다음 명령은 doc.txtAlice의 공개 키와 Bob의 공개 키를 사용 하여 암호화 합니다. Alice는 개인 키를 사용하여 암호를 해독 할 수 있습니다. Bob은 개인 키를 사용하여 해독 할 수도 있습니다.

gpg --encrypt --recipient alice@example.com \
    --recipient bob@example.com doc.txt

이 기능은 " 문서 암호화 및 해독 "이라는 제목의 사용자 가이드 섹션에 자세히 설명되어 있습니다 .


같게. 그 방법을 아는 것은 멋지지만 맨 페이지를 숨기지 못합니다.
MarkusQ

@Mitch, 나는 우리 의 대답있을 수 있는 대답게시했습니다 ! (테스트 및 표창 그래서 /하지 주시기 바랍니다 - 많은 감사!)
pythonlarry

@MarkusQ, 위의 Mitch에 대한 링크 를 참조하십시오 . 가능한 경우 테스트 / 감사합니다! :-)
pythonlarry

그러면 키당 파일 1 개가 아닌 개인 키를 사용하여 읽을 수있는 암호화 된 파일 1 개가 생성됩니다.
user8675309

7
@ user8675309, 예. 데이터는 공통 대칭 키로 암호화됩니다. 대칭 키만 각 수신자의 공개 키로 암호화됩니다. 각 수신자의 전체 데이터를 다시 암호화하지 않습니다.
wisbucky

55

네 가능합니다

예 여러 수신자에 대한 암호화가 가능합니다. 또한 누군가에게 보낸 내용을 읽을 수 있고 그렇게 하려면 수신자 목록에 있어야한다고 생각할 때 논리적으로 보입니다 .

명령 줄

다음은 gpg명령 줄을 통해 수행하는 방법입니다 ( David Segonds의 답변에 설명 됨 ).

gpg --encrypt \
  --recipient alice@example.com \
  --recipient bob@example.com \
clear-message.txt

GUI 클라이언트

GUI는 여러 사람을 암호화하는 방법을 제공해야합니다.

기구

정보 보안 , 여러 수신자가있는 GPG 파일 크기 에 대한 질문이 있습니까? , 암호화 메커니즘을 설명합니다 .

GPG는 대칭 키로 파일을 한 번 암호화 한 다음 대상 키 쌍을 식별하는 헤더와 대칭 키의 암호화 된 버전을 배치합니다.

[...] 여러 수신자에게 암호화 된 경우이 헤더는 여러 번 배치 되어 각 수신자에 대해 동일한 대칭 키의 고유하게 암호화 된 버전을 제공합니다 .


4
마지막 두 문장에 대해 특별히 감사드립니다 : 그들은 이제 모든 것을 정확하게했습니다!
radistao 2010

31

일반적으로 GnuPG 및 PGP 클라이언트는 "세션 키"라고하는 대칭 키로 실제 데이터를 암호화합니다. 세션 키는 각 "수신자 키"(즉, -r /-recipient로 지정한 키)로 암호화됩니다. 이를 하이브리드 암호 라고도합니다 . 지금은 GnuPG가 기본적으로 256 비트 세션 키와 AES를 사용하여 해당 AES-256 세션 키에 대한 일반 텍스트 데이터를 암호화하고 수신자 키는 RSA / DSA / ECDSA / etc입니다. 이 경우 비대칭 키입니다.

이렇게하는 한 가지 이유는 AES와 같은 대칭 암호화 알고리즘이 일반적으로 RSA와 같은 비대칭 알고리즘보다 훨씬 빠르기 때문입니다. 따라서 GnuPG는 RSA로 ~ 256 비트 (세션 키) 만 암호화하면되며, AES를 사용하여 해당 세션 키로 데이터 (원하는 크기)를 암호화 할 수 있습니다. Intel 컴퓨터 에는 하드웨어에서 알고리즘의 일부 단계를 수행하기위한 AES-NI 명령이 내장되어 있어 GnuPG가 데이터를 암호화 / 복호화 할 때 더욱 간편합니다.

이렇게하는 또 다른 이유는 PGP 암호화 문서를 문서 크기를 두 배로 늘리지 않고도 여러 당사자에게 암호화 할 수 있기 때문입니다. 암호화 된 문서 (예 :)에 대해 여러 수신자를 지정할 때 gpg -ea -r Alice -r Bob -o ciphertext.asc저장되는 암호화 된 문서 (ciphertext.asc)는 방금 Alice에게 암호화 한 것보다 2 배 크지 않습니다.

gpg 매뉴얼 페이지--show-session-key매개 변수를 참조 하여 세션 키만 복호화 할 수 있습니다. 예를 들어 제 3자가 개인 키나 일반 텍스트 데이터를 전송하지 않고도 사용자에게 암호화 된 문서를 복호화 할 수 있습니다.


1
n이 서명자 수인 n 배가되지 않는 암호화 된 문서에 대한 설명에 감사드립니다.
theartofbeing

4

예, 가능합니다. 우선 Google "다자간 암호화".

AFAIK, 드롭이 없으며 패키지를 사용합니다.

-MarkusQ

추신 : 어떻게 할 수 있는지에 대한 스케치를 위해 이것을 고려하십시오. 암호화 된 메시지는 다음으로 구성됩니다.

  • 일회성 패드로 암호화 된 페이로드
  • key1로 암호화 된 일회용 패드
  • key2로 암호화 된 일회용 패드
  • ...
  • keyN으로 암호화 된 일회용 패드

키 i를 보유한 수신자는 키로 패드 사본을 해독 한 다음 페이로드를 해독합니다.

그러나 이것은 단지 그것이 가능 하고 실제 구현 으로서는 좋지 않을 것이라는 증거 일뿐 입니다. 가능한 한 자체 암호화를 롤링하지 않아야합니다. 당신이 이유를 이해하지 않으면, 당신은해야 확실히 자신의 암호화를 압연 마십시오.

-----편집하다 ------------

내가 틀렸고 Gnu 도구가 그렇게하는 경우 사용하십시오. 그러나 나는 그것을하는 방법에 대한 정보를 찾을 수없는 것 같습니다.


1
이것에 대해 짜증나는 것은 일단 일회용 패드를 알게되면, 다른 키에 대한 암호화 된 값과 함께 알려진 일반 텍스트가 있다는 것입니다. 이 정보를 사용하면 다른 키가 무엇인지 더 쉽게 찾을 수 있습니다.
Kibbee

2
인터넷 검색 "다자간 암호화"는 많이 나타나지 않습니다. 이 경우도 포함하는 "브로드 캐스트 암호화"를 사용하면 운이 좋을 것입니다.
staktrace

1
@Kibbee : 키는 비밀이 아니며 공개되어 있습니다. 따라서 그들이 무엇인지 쉽게 알아내는 것은 중요하지 않습니다. (이 계획은,하지 암호화 해독에만 사용할 수 있습니다 키와 함께 사용됩니다.)
데이비드 슈워츠

5
실제 구현에서는 공유 일회용 패드 (일반 텍스트 및 암호화 된 텍스트만큼 커야하므로 메시지 크기를 두 배로 늘릴 필요가 있음)를 사용하지 않지만 실제로 공유 대칭 암호화 키를 사용합니다. (보통 메시지보다 훨씬 작습니다).
Joachim Sauer 2011 년

-16

다중 (두 개 이상의) 키 RSA는 아마도 이와 같을 수 있습니다. 저는 수학자가 아니기 때문에이 알고리즘은 반드시 안전하지는 않습니다. 저는 단지 아이디어를주고 싶습니다.

m = p * q * r; p, q, r은 큰 소수입니다.

fi (m) = (p-1) (q-1) (r-1)

d == (e1 * e2 * e3 * ... * ei) ^ (-1) (mod fi (m)); e1 ... ei는 임의의 숫자이고, d는 방정식을 충족하기 위해 계산됩니다.

y1 == x ^ e1 (mod m)

y2 == y1 ^ e2 (mod m)

y3 == y2 ^ e3 (mod m)

...

x == yi ^ d (mod m)

이 알고리즘은 예를 들어 The Onion Router의 속도를 높이는 데 사용할 수 있습니다.

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