GNU Privacy Guard; GPG
GnuPG는 RFC4880(PGP)에서 정의한 OpenPGP 표준을 구현한 프로그램이자 일종의 체계이다. GnuPG는 데이터를 암호화하고 서명하기 위해 사용된다. GPG 라고도 하는 GnuPG는 다른 애플리케이션과 쉽게 통합할 수 있는 기능이 있는 명령줄(CLI) 도구이다. 단독으로 사용되기 보단 다양한 어플리케이션 내부에서 암호화나 인증 등을 위해 사용된다. GnuPG는 S/MIME 및 Secure Shell(ssh)을 지원한다.
GPG Key[edit | edit source]
구성[edit | edit source]
GPG 키는 일반적인 PKI와 같이 공개 키, 개인 키 두가지로 구성된다.
- 공개 키 (Public Key): 이 키는 다른 사람과 공유할 수 있으며, 이를 통해 다른 사람이 소유자에게 데이터를 암호화해서 보낼 수 있다.
- 개인 키 (Private Key): 이 키는 비밀로 유지되며, 소유자만 식별해야 한다 있습니다. 다른 사람이 소유자의 공개 키로 암호화한 데이터를 복호화하거나, 소유자가 서명한 데이터의 진위를 검증할 때 사용한다.
자세한 내용은 공개키 기반 구조 또는 공개키 암호화 참고
리눅스 패키지 배포 시[edit | edit source]
패키지의 디지털 서명[edit | edit source]
소프트웨어 개발자는 배포할 패키지를 자신의 GPG 개인 키로 서명한다. 이 디지털 서명은 패키지에 포함된 파일이 출처에서부터 변조되지 않았다는 것을 증명한다.
- 개발자는 패키지를 생성한 후, 자신의 개인 키로 해당 패키지에 서명을 추가한다.
- 배포 사이트 또는 패키지 관리자(예: APT, RPM, NPM)는 이 서명을 함께 배포한다.
패키지의 무결성 검증[edit | edit source]
사용자는 패키지를 설치하기 전에 GPG 공개 키를 사용해 해당 패키지의 서명을 검증한다.
- 사용자는 개발자가 제공한 공개 키를 다운로드하여 패키지를 검증한다.
- 공개 키로 서명을 확인했을 때, 서명이 유효하면 해당 패키지는 원래 작성자가 만든 것이며, 전송 과정에서 변조되지 않았음을 의미한다.
- 만약 서명이 유효하지 않거나 키가 일치하지 않으면, 패키지가 변조되었거나 신뢰할 수 없는 출처에서 왔을 가능성이 있다.
GPG 키 검증 사용하지 않기[edit | edit source]
만약 업데이트 과정에서 GPG 키 검증에 실패했다는 메시지가 나오는 경우 아래 옵션을 추가하여 키 검증을 생략할 수 있다. 단, 키 검증에 실패한 패키지는 변조된 패키일 가능성이 매우 높으므로 특별한 경우가 아니면 사용하지 않아야 한다. 간혹 개발자의 이전 키를 가지고 검증을 시도하여 실패하는 경우가 있을 수 있는데, 이 경우 개발자의 키가 유출되었거나 다른 보안 규정 준수 등을 위하여 개발자가 키를 변경한 경우일 수 있다. 이런 경우 개발자나 패키지의 공식 사이트에 가면 최신 키를 확인할 수 있다. 꼭 이런 과정을 거친 뒤 사용하도록 하자.
(참고) 키 변경 공지 예시: PostgreSQL 공지
APT 사용 시
apt-get --allow-unauthenticated upgrade
YUM 사용 시
yum update --nogpgcheck
RPM 사용 시
rpm -i --nosignature