현재 PGP 버전과 모든 GnuPG (GPG)는 OpenPGP 표준을 구현합니다. 아래에서 OpenPGP라는 용어 만 사용하겠다.
OpenPGP는 공개 키 암호화와 대칭 키 암호화를 모두 사용합니다. 문서를 암호화 할 때 공개 키를 사용하여 무작위 대칭 키가 생성되고 암호화됩니다. 수신자는 개인 키를 사용하여 대칭 암호화 (블록 암호) 키를 암호화합니다. 대칭 키만 공개 키를 사용하여 암호화되기 때문에 오버 헤드는 작게 유지됩니다 (David Schwartz가 제안하고 이미 OpenPGP에서 구현 한 것입니다).
물론이 오버 헤드가 암호화 된 데이터와 비교하여 커질 수있는 두 가지 경우가 있습니다.
- 아주 적은 양의 데이터. 이것이 문제가되는 경우 미리 공유 한 키 (대칭 키)를 사용하여 일부 암호화 방법을 선택해야합니다.
- 수신자가 많습니다. 블록 암호는 각각에 대해 암호화되어야합니다. 이것이 문제가되면 모든 수신자간에 비밀 (개인 키)을 공유해야합니다.
대칭 암호화를 사용하여 모든 단일 수신자에게 비밀 정보를 넘겨 주거나 (개인 OpenPGP 키를 사용하여 동일하게 수행하지 않음) 모든 사람이 자신의 비밀을 지키기를 원한다면 아무도 자신의 데이터 버전을 해독 할 수 없습니다. 그래서 여러분은이 자료의 다른 버전을 모두 보내야 할 것입니다.