대칭 암호화를 사용하여 두 개의 서로 다른 키로 파일을 암호화하는 것이 가능합니까?

대칭 암호화를 사용하여 두 개의 서로 다른 키로 파일을 암호화하는 것이 가능합니까?

GPG/PGP 및 기타 공개 키 암호화를 사용하면 공개 키를 사용하여 여러 수신자를 암호화할 수 있습니다.

동일한 작업을 수행하기 위해 대칭 암호화만 사용할 수 있습니까? 즉, 두 개의 서로 다른 키를 사용하여 파일을 대칭적으로 암호화하는 것이 가능합니까?

내 질문의 이유는 비대칭 암호화로 인해 거대한 파일이 생성되기 때문입니다. 공개키로 암호화된 메시지를 스마트폰으로 보내면 용량이 너무 커질 것입니다. 특히 여러 수신자에게 암호화된 경우에는 더욱 그렇습니다. 하나의 "Hello"는 2페이지의 텍스트를 차지할 수 있습니다. 반면에 대칭 암호화는 매우 엄격합니다.

답변1

확신하는. 임의의 키로 파일을 암호화한 다음 두 개의 서로 다른 대칭 키로 해당 임의의 키를 암호화하면 됩니다.

답변2

현재 PGP 버전과 모든 GnuPG(GPG)는 OpenPGP 표준을 구현합니다. 아래에서는 OpenPGP라는 용어만 사용하겠습니다.

OpenPGP는 공개 키 암호화와 대칭 키 암호화를 모두 사용합니다. 문서를 암호화할 때 임의의 대칭 키가 생성되고 공개 키를 사용하여 암호화됩니다. 수신자는 자신의 개인 키를 사용하여 대칭 암호화(블록 암호) 키를 ​​암호화합니다. 공개 키를 사용하여 대칭 키만 암호화되므로 오버헤드가 작게 유지됩니다(David Schwartz가 제안한 것이며 이미 OpenPGP에서 구현됨).

물론 암호화된 데이터에 비해 이 오버헤드가 커질 수 있는 두 가지 경우가 있습니다.

  • 데이터 양이 매우 적습니다. 이것이 문제인 경우 사전 공유 키(대칭 키)를 사용하는 암호화 방법을 선택해야 합니다.
  • 수신자가 많습니다. 블록 암호는 각각에 대해 암호화되어야 하기 때문입니다. 이것이 문제가 된다면 모든 수신자 간에 비밀(개인 키)을 공유해야 합니다.

대칭 암호화를 사용하거나 모든 단일 수신자에게 비밀을 전달하는 방법을 사용하지 않을 것입니다(또는 개인 OpenPGP 키를 사용하여 동일한 작업을 수행). 모든 사람이 자신만의 비밀을 가지기를 원한다면 다른 누구도 자신의 데이터 버전을 해독할 수 없습니다. 따라서 이 데이터의 다른 버전을 모든 사람에게 보내야 합니다.

답변3

나는 실제로 같은 문제를 해결하려고했습니다. gpg의 문제는 키 저장소 등 너무 많은 수하물을 가지고 다녀야 한다는 것입니다. 때로는 키 쌍을 만들고 암호화를 수행하는 시스템에 공개 키를 넣고 함께 사용하고 싶을 때도 있습니다.

나는 이를 수행하기 위한 도구를 작성했습니다.https://github.com/galets/AsymmetricCrypt. Linux에서 실행하려면 모노가 필요하지만 그렇지 않으면 잘 작동하며 암호화된 키를 별도의 파일에 저장할 필요가 없습니다.

관련 정보