GNU Project | |||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -6px -1px -10px;" | <colbgcolor=#a32d2a><colcolor=#fff,#fff> 관련 문서 | GNU · 자유 소프트웨어 재단 · 리처드 스톨먼 | |
소프트웨어 | Bash · | ||
<bgcolor=#a32d2a><color#fff> 유틸리티 | coreutils(fileutils · textutils · shellutils) · GNU Grep · GnuPG · GNU Tar | ||
<bgcolor=#a32d2a><color#fff> 개발자 도구 | Autotools(autoconf · automake) · binutils(BFD · as · ld · gold · gdb) · GCC · glibc · GNU Make | ||
라이선스 | GNU 일반 공중 사용 허가서 · GNU 약소 일반 공중 사용 허가서 · GNU Affero 일반 공중 사용 허가서 | ||
기타 | GNU Unifont | ||
|
1. 개요
Gnu Privacy Guard, GPGPGP의 오픈 소스 구현판이다. OpenPGP 표준을 다루는 RFC4880을 구현한다.
2. 상세
GNU 소프트웨어이며, 보안 통신을 위한 도구다. 키 교환 및 확인, 문서 암호화 및 암호 해독, 디지털 서명 문서인증이 포함된다. 그리고 독일 정부의 후원을 받고 있다. 2015년 6월 기준으로, 페이스북에서 이걸 이용해서 비밀번호 재설정 링크 같은 민감한 정보를 암호화해 보내기로 했다고 한다.GnuPG는 개인 정보를 보호하기 위해 사용하는 도구다. 다른 사람과 연락할 수 있으면 개인 정보가 보호된다.
- GnuPG 사용 사용자 지정 네 가지 참고
- 공개/개인 키 쌍[1]의 키 크기 선택
- 개인 키 보호
- 만료 날짜 선택 및 하위 키 사용
- 신뢰 웹 관리
GnuPG에서 키 관리의 핵심은 키 서명 개념이다. 열쇠 서명에는 두 가지 주요 목적이 있다. 키링에 대한 변조를 감지할 수 있도록 허용하고 인증할 수 있고, 키는 실제로 키의 사용자 ID로 명명된 사람에게 들어간다. 키 서명은 스키마에도 사용된다.
3. 알고리즘
GnuPG 2.4 [2]기준으로, GnuPG는 다음 알고리즘을 지원한다:- 공개키: RSA, ElGamal, DSA, Ed25519 및 NIST ECC 알고리즘 [3]
- 암호화: IDEA [4], 3DES, CAST5, Blowfish, AES-128, AES-192, AES-256, Twofish, Camellia-128, Camellia-192, Camellia-256 [5]
- 해시: MD5, SHA-1, RIPEMD-160, SHA-256, SHA-384, SHA-512, SHA-224
- 압축: 압축하지 않음, ZIP, ZLIB, BZIP2
4. pinentry
pinentrygpg-agent에서 안전하게 passphrase 입력을 전달받기 위한 외부 인터페이스. 일반적으로 gpg는 사용자로부터 비밀번호를 절대로 직접 입력받지 않으며, 대신 pinentry라는 사전 설정된 외부 프로세스를 호출해 이를 대신 전달받게 된다.
서버 또는 셸 로그를 통한 비밀번호 누수나 유출, 중간자 키 하이재킹 등의 리스크를 피하기 위해 명령줄이나 환경변수, 개별 응용 프로그램 내에서 직접 타이핑하는 방식은 절대 권장되지 않는다. 예를 GPG를 사용하는 이메일 클라이언트의 입력 폼에 GPG 비밀번호를 입력한다고 해보자. 이 비밀번호가 실제로 GPG로 전달되는지, 중간에 기록되거나 악의적인 서버로 전송, 조작되지는 않는지 절대 확인할 방법이 없다. 더 안전한 방법은 신뢰할 수 없는 이메일 클라이언트가 아니라 사용자가 신뢰할 수 있는 pinentry를 별도로 열어 GPG에게 직접 전달하는 것으로, 이렇게 하면 일반적인 중간자 공격을 대비할 수 있다.
일반적으로 개별 GUI 환경에 맞는 네이티브 다이얼로그 형태이며, 서버 환경의 경우 TUI인
pinentry-curses
등을 사용할 수 있다. no pinentry 에러가 발생한다면 gpg-agent.conf
에 pinentry-program <경로>
로 설정하고 gpg-connect-agent reloadagent /bye
로 에이전트를 재시작해 주어야 한다.- 서버(headless) 환경
pinentry-tty
pinentry-curses
- GUI 환경
pinentry-gtk2
pinentry-qt
pinentry-mac
pinentry-gnome
pinentry-tqt
pinentry-efl
pinentry-fltk
5. 관련 문서
[1] 키 쌍에는 공개 키와 개인 키가 있다. 각 조각에는 자체에 대한 데이터가 포함된다.[2] https://www.gnupg.org/documentation/manuals/gnupg24/gpg.1.html[3] 2.1에 추가, 2.3부터 ed25519가 기본으로 사용[4] 1.4.13/2.0.20부터 지원[5] 1.4.10/2.0.12부터 지원