[encryption] 여러 키로 암호화 / 복호화

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

예:

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

이게 가능해?



답변

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

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

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

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


답변

네 가능합니다

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

명령 줄

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

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

GUI 클라이언트

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

기구

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

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

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


답변

일반적으로 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자가 개인 키나 일반 텍스트 데이터를 전송하지 않고도 사용자에게 암호화 된 문서를 복호화 할 수 있습니다.


답변

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

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

-MarkusQ

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

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

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

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

—–편집하다 ————

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


답변

다중 (두 개 이상의) 키 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의 속도를 높이는 데 사용할 수 있습니다.


답변