소개 어떻게
공개키 암호화가 동작하는가
PGP 버전 PGP의
설치 기본 설정 키의
쌍(pair) 만들기 링(Ring)에 키 추가하기 링에서
키 제거하기 키 추출하기 링의
내용 메시지 암호화하기(encoding) 메시지에
서명하는 방법 복호화하기(decoding) 텍스트
파일 다루기 쉘에서 PGP 사용하기 메일
리더(mail reader)와 통합하기
소개
PGP는 Pretty Good Privacy를
나타내며, 컴퓨터 분야에서 가장 인기 있는 암호화 응용중의 하나이다.
PGP는 인터넷(Internet)같은 안전하지 못한
통신망에서 프라이버시(privacy)와 정보의 인증(authentication)을
보장하는데 적합한 도구이다.
프라이버시는 정보의 수신자만이 그 정보를
이용할 수 있는 것을 보장한다. 만약 이 정보가 다른 사람의 손에
들어간다면, 그것은 해독할 수 없기 때문에 완전히 쓸모가 없을
것이다.
인증은 “A”라는 사람이 만든 어떤 정보가
확실히 “A”가 보낸 것이고 도중에 다른 사람에 의해서 잘못되거나
변경되지 않았다는 것을 보장한다.
PGP는 공개키(public key)라고 알려진 암호화
체계에 기초하고 있다. 이것은 안전하지 못한 채널(channel - 데이터가
전달되는 네트워크 경로. 역자주)에서도 사용될 수 있다. 이는 인터넷
같은 네트워크를 통해서 전달되는 정보의 프라이버시를 보장하는데
이상적이다.
당신이 통신으로 전달하는 정보에 대한 프라이버시에
관심을 갖기 위해서 심각한 스파이 계획에 관련될 필요는 없다.
그렇지 않아도 암호화 도구에 대한 필요는 있다. 전자 우편만큼
간단한 것도 PGP를 사용하기 시작하는 완벽한 이유가 될 수 있다.
이유를 살펴보자:
우리는 전자 우편을 우편엽서에 비유할 수
있다. 그것을 손에 넣은 사람은 어떤 방해도 없이 그것을 읽을 수
있다. 반면에 봉투 안의 편지는 다르다. 다른 사람이 봉투에 손을
댈 수는 있지만 편지를 읽을 수는 없다. 편지를 읽으려면 봉투를
뜯어야만 한다. 우리는 봉투와 PGP의 유사성을 찾을 수 있다. PGP는
우리의 전자 우편에 대한 보조 도구로서 역할을 한다. PGP는 그
내용을 읽을 올바른 수신자를 제외한 다른 사람이 읽지 못하도록
한다; 이것이 PGP를 사용하는 주된 이점 중의 하나이다.
▲ top
어떻게 공개키 암호화가
동작하는가
공개키 시스템(system)에서
모든 사람들은 서로 보완적인 두 개의 키를 가지고 있다. 하나는
공개키(public key)이고 다른 하나는 비밀키(private key)이다.
공개키는 자유롭게 알려질 수 있고 알려져야
한다. 공개키를 가지고서 다른 사람들이 비밀리에 당신에게 정보를
보낼 수 있기 때문이다. 그러나 공개키는 비밀키의 비밀성를 헤치지
않는다.
Juan과 Pedro, 두 친구의 경우를 생각해보자.
Juan은 Pedro의 공개키를 알고 있으면 Pedro에게 비밀리에 정보를
보낼 수 있다. 반면에 Pedro는 자신의 비밀키를 이용하여서 Juan이
보낸 메세지(message)를 해독할 수 있다. Marcos라는 사람이 있다고
생각해보자. 그는 Juan이 Pedro에게 보내는 메시지를 가로챘다.
Marcos는 Pedro의 비밀키를 가지고 있지 않기 때문에 그 메시지를
가지고 아무 것도 할 수 없다. 그 메시지를 만들어 보낸 Juan 조차도
그것을 해독할 수 없다. 오직 Pedro만이 그의 비밀키를 가지고 해독할
수 있다.
공개키 시스템의 보안은 모든 사용자가 공개키는
널리 알릴지라도 비밀키는 안전하게 보관하는 것에 달려있다. 수신자의
비밀키를 알지 못한 채 이 시스템을 깨려고 한다면 수년이 걸리게
때문에 소용이 없다.
소개 부분에 미리 언급했듯이 PGP는 프라이버시
이외에도 정보를 인증하는 가능성을 제공한다. 이유를 보자.
우리의 비밀키는 메시지를 암호화할 뿐만
아니라 보내려는 정보에 서명을 할 수 있다. 이는 문서에 서명을
하는 것과 같다.
전자 서명이 된 문서는 비밀키 없이도, 대응되는
공개키를 가진 어떤 사람에게서나 인증될 수 있다. 이 인증은 그
문서를 보낸 사람에 의해서 실제로 쓰여졌고 변경되었거나 잘못되지
않았다는 것을 검사하는 방법을 제공한다.
암호화하고 서명을 하는 두 과정이 행해져
프라이버시와 인증이 보증된다. 먼저 문서는 우리의 비밀키로 서명이
되고 그 후 수신자의 공개키로 암호화가 된다.
수신자가 메시지를 받았을 때는 반대의 과정을
밟는다. 먼저 그 문서를 그의 비밀키로 해독하고 그 후 우리의 공개키로
서명을 검사한다.
이 모든 과정이 자동으로 이루어진다. 후에
이것을 살펴볼 것이다.
공개키는 키 보증(certificate)이라고 알려진
형식으로 보관된다. 이것은 단지 공개키 자체와 그 소유자와 그
키가 만들어진 날짜이다.
비밀키는 허가되지 않은 사람에 의해 사용되는
것을 막기 위해 암호에 의해 보호된다.
두 키는 키 링(ring)이라고 불리는 파일에
함께 저장된다. 키 링은 또한 다른 여러 키 보증을 담고 있다. 보통
공개키를 위한 링과 비밀키를 위한 링이 있다.
그 키들은 내부적으로 키의 마지막 64비트로
만들어지는 키 ID에 의해 참조된다. 키에 대한 정보를 표시할 때,
실제로 보여지는 것은 키의 마지막 32비트이다. 예를 들어, 이 키
ID는 PGP에서 메시지를 해독하는 순간에 키의 위치를 파악하기 위해서
사용될 것이다.
문서에 서명을 할 때, PGP는 그 문서를 나타내는
128비트를 만든다. 이 서명은 그 문서의 변경을 검사해낼 수 있는
체크섬(checksum)이나 CRC같은 것이다. 일반적인 CRC나 체크섬과는
대조적으로, 어떤 사람도 원본 문서에 변경을 가한 후 그것에 맞는
서명을 다시 만들어 낼 수 없다. 서명은 보내는 사람의 비밀키를
사용해서 만들어지고, 보통 다른 사람은 그 비밀키를 알지 못한다.
▲ top
PGP 버전
PGP가 어디에 유용한지 알았고,
이제는 어떻게 올바로 쓰는지 알고 싶을 것이다.
PGP의 여러 가지 버전별로 많은 차이가 있다는
것 말해야겠다. 암호화 제품의 수출에 대한 미국의 정치적인 이유
때문에, 그 사용에 관한 몇몇 법률에 따라 몇 가지 PGP의 버전들이
나왔다. 이 모든 것들에 대한 차이들을 명확하게 하기 위해서 현재까지
이용 가능한 다양한 PGP 버전에 대해 열거하겠다.
프리웨어(freeware) PGP 버전들:
·PGP 2.3a 이것은 고전적인 PGP이다.
2.6.x와 그 이후 버전으로 만든 키와 메시지들을 처리할 때 또는
1280비트 보다 더 큰 키를 사용할 때 비호환성(incompatibility)
문제를 겪을 지도 모르지만 여전히 사용할 수 있다. 아마도 PGP
2.3a는 특허의 제한 때문에 미국 밖에서는 사용할 수 없을 것이다.
·PGP 2.6ui 이것은 위에 언급했던 비호환성
문제를 해결한 PGP 2.3a의 비공식 버전이다. 이 버전은 2.3a의 소스(source)를
기반하고 있기 때문에 2.6.x 버전은 아니다.
·PGP 2.62ui 이것은 2.6ui의 소스에
기반하고 있다. 2.6.x 버전들의 최근 특징들과의 호환성을 가지기
위해 변형을 가한 것이다.
·MIT PGP 2.6.2 PGP의 마지막 공식
버전이다. 이 버전으로 만든 메시지는 2.5 이전 버전으로도 읽을
수 있고 RSAREF 인코딩(encoding) 라이브러리(library)를 사용하였다.
미국 밖으로 수출되는 것이 불법이지만 어떻게 되어 수출이 되었고
자유롭게 쓸 수 있다.
·PGP 2.6.3i MIT PGP 2.6.2의 소스에
기반하고 있다. 국제적인 사용을 위해 변경이 되었다. 변경한 것
중의 하나는 위에서 언급한 RSAREF 인코딩 라이브러리를 없앤 것이다.
미국에서 이 버전의 사용은 불법이다.
·PGP 5.0 PGP 5.0 (이전에 PGP 3.0으로
알려진 것) 은 완전히 새로운 PGP 버전이다. 소스 코드는 처음부터
다시 만들어졌다. RSA와 IDEA (International Data Encryption Algorithm)
이외의 다른 암호화 알고리즘에 대한 지원을 하는 등의 새로운 옵션(option)들을
더 가지고 있다. 사용을 간단히 하기 위해 GUI 인터페이스를 포함한
이 버전은 여름 중반쯤에는 사용할 수 있을 것이다.
상용 PGP 버전들 (미국과 캐나다에서만 사용가능)
· ViaCrypt 2.7.1 y 4.0 상용이기 때문에
설명서와 개인사용 라이선스를 포함하고 있다. 소스가 안 들어있다.
· PGP 4.5 y 5.0 1996년 6월, PGP Inc.는
ViaCrypt를 사서 미국과 캐나다를 위한 상용의 PGP 버전을 개발하기
시작했다. 가장 최근 버전은 PGPMail 4.5이다.
만약 우리가 미국밖에 있다면 2.6.3i버전을
사용하는 것이 적당하고, 미국 내에 있다면 2.6.2나 2.6.3이 적절하다.
프랑스, 이란, 이라크, 러시아 그리고 중국
같은 몇몇 나라에서는 암호화의 사용이 제한되거나 금지된다는 사실을
고려해야만 한다.
리눅스용의 2.6.3i 버전을 얻을 수 있는 링크(link)가
다음과 같다:
·ELF 실행 파일: tonelli.sns.it/pub/Linux/pgp/pgp263.is.bin.tgz
·Red Hat용 실행 파일과 소스: ftp.replay.com/pub/replay/ub/redhat/i386/pgp-2.6.3i-1.i386.rpm
ftp.replay.com/pub/replay/ub/redhat/SRPMS/pgp-2.6.3i-1.src.rpm
·소스: ftp.dit.upm.es/mirror/ftp.ifi.uio.no/pub/pgp/src/pgp263is.tar.gz
RSAREF란? RSAREF는 RSA 암호화와
인증 알고리즘의 공개 라이브러리이다. RSAREF는 “RSA reference”를
의미한다. RSA Laboratories는 현대적인 공개키 암호화의 교육용으로
참조할 만한 구현으로 RSAREF를 만들었다.
현재 RSAREF의 버전은 2.0이고 다음 알고리즘을
지원 한다.
· PKCS로 정의된 RSA 암호화와 키 생성
· MD2와 MD5 메시지 요약 · 암호-블록 연결(chaining) 모드의
DES (Data Encryption Standard) · Diffie-Hellman 키 일치
· DESX, RSA Data Security의 효율적이고 안전한 DES 향상
· Triple-DES, 보안을 향상시킨 세 가지 DES 연산
http://test.team2it.com/rsa/q174.html (RSA
FAQ -- Q174: What is RSAREF?) ftp://ftp.rsa.com/rsaref/
(RSAREF를 다운로드 받을 수 있다.)
IDEA란? IDEA (International Data Encryption
Algorithm)는 Lai와 Massey가 만든 블록 암호문의 두 번째 버전이다.
128비트의 키와 8단계의 암호화 단계를 가지는 64비트의 대화형
블록 암호화이다.
http://test.team2it.com/rsa/q77.html (RSA
FAQ -- Q77: What is IDEA?)
▲ top
PGP의 설치
당신이 PGP를 얻었다고
하자. 2.6.3i의 소스를 다운로드 받았고 지금 하드디스크 상에 pgp263is.tar.gz라고
불리는 파일이 있다.
첫 단계는 소스를 위한 디렉토리를 만드는
것이다. mkdir pgp
다음은 압축파일 풀기 tar -C ./pgp -xzvf
pgp263is.tar.gz
이제 새로 만든 디렉토리로 이동
cd pgp
다음, 프로그램에 대한 문서와 소스 코드를
포함하고 있는 pgp263ii.tar 파일을 푼다. 다음과 같이 실행해라
tar -xvf pgp263ii.tar
이제 PGP를 컴파일할 준비가 되었다. 만약
소스가 아니고 컴파일된 버전 (a.out이든지 ELF든지 간에)을 다운로드
받았다면, 이 단계를 생략할 수 있다. 이미 소스를 받았다면 다음과
같이 하여서 컴파일을 할 수 있다.
cd src
make linux
모든 것이 잘 되어간다면 makefile은 pgp
실행파일을 만들 것이다. 전역 설치일 경우 그것을 /usr/local/bin,
/usr/bin, 당신이 가장 좋다고 생각하는 어디에나 복사할 수 있다.
그렇게 않다면 그것을 개인 디렉토리에 놓아 둘 수 있다.
비슷하게 시스템 전역 설치의 경우 매뉴얼
페이지 pgp.1을 /usr/man/man1에 복사할 수 있다.
기본 설정
기본적으로 PGP는 키 링(ring)과
다른 설정 파일들을 ~/.pgp 디렉토리에서 찾는다. 따라서 첫 단계로
우리의 HOME에 이 디렉토리를 만들자.
cd
mkdir .pgp
다운 받은 파일들을 잘 보면, config.txt라는
파일을 찾을 수 있다. 이 파일을 PGP의 여러 가지 사항들을 설정하는
데 사용된다. 개인적으로 설정을 하기 위해서는 이 파일을 방금
만든 ~/.pgp 디렉토리로 복사해야 한다. 또는 ~/.pgp/config.txt
대신에 그 파일을 .pgprc라고 이름을 바꾸어서 홈 디렉토리에 둘
수 있다. 즉, ~/.pgprc
다른 것들 중, 이 파일은 Languaje 인자를
사용하여서 사용할 언어를 명시할 수 있다.
Languaje = en (영어) Languaje = es
(스페인어) Languaje = ja (일본어)
이 옵션을 이용하려면 languaje.txt를 ~/.pgp로
복사해 두어야 한다.
개인이 사용하는 언어에 맞는 도움말 파일을
~/.pgp에 복사해 두는 것이 좋다. 스페인어를 쓰는 사람이라면 es.hlp
파일을 복사할 것이다.
키의 쌍(pair) 만들기
PGP를 사용하기 시작하려면 자신의
키의 쌍을 (공개/비밀) 만들어야 한다. 이를 위해서 다음 명령을
실행한다.
pgp -kg
키의 최대 크기를 (512, 768 또는 1024바이트)
선택하라고 물어올 것이다. 키가 크면 클수록 더 보안이 강화되겠지만
조금 속도가 느려진다.
키의 크기를 선택한 후, 공개키에 대한 ID를
입력해야 한다. 사람들은 대개 이름이나 전자 우편 주소를 쓴다.
나의 경우 다음과 같이 썼다.
Angel Lopez Gonzalez <alogo@mx2.redestb.es>
다음은 비밀키를 보호하기 위한 암호가 온다.
본인이 기억하기 쉬운 것을 선택해라. 만약 어떤 사람이 비밀키를
훔쳤다고 할지라도 암호 없이는 비밀키가 쓸모 없을 것이다.
마지막으로 프로그램은 임의의 숫자 조합을
만들기 위해서 키보드의 키를 임의로 여러 번 누르라고 요청한다.
키보드를 누르는 사이 시간 간격의 비트열(sequence)에 기반 하여
만든다.
PGP는 몇 초 후에 키를 만들어 내고 메시지로
알려줄 것이다. 키들이 잘 만들어진 후 그 키들은 ~/.pgp 디렉토리에
pubring.pgp와 secring.pgp라는 파일로 저장이 될 것이다.
첫 번째 것, pubring.pgp는 공개키들을 가지고
있는 링이다. 지금은 단지 본인의 키만을 포함하고 있다.
두 번째 것, secring.pgp는 상상할 수 있듯이
비밀키들의 링이고 현재는 본인의 키만을 포함하고 있다.
공개키 방식의 보안은 전적으로 비밀키의
비밀성에 기반 한다는 것을 기억해야 한다. 따라서 비밀키를 안전한
곳에 보관해 두어야 하며, 아무도 비밀키의 링에 접근할 수 없어야
한다. secring.pgp의 허가 권한(permission)을 검사하고 오직 본인만이
읽고 쓰고 다른 사람들은 전혀 접근하기 못하게 해라
마지막으로 키의 ID와 비밀키의 암호는 둘
다 다음 명령을 사용하여 편집하고 변경할 수 있다.
pgp -ke id [링]
링(Ring)에 키 추가하기
이제 아마 링에 친구들의 공개키를
넣고 싶을 것이다. 이를 위해서는 어떤 방법을 쓰든지 간에 그 키들을
얻어야만 한다: 키 서버로부터, 그 사람에게 직접 물어보아서, 그
사람 계정에 대한 finger를 이용하여, 전자 우편을 통해서 등. 공개키는
자유롭게 배포될 수 있기 때문에 하나의 키에 기반한 암호화 방법에서의
경우처럼 공개키를 전달할 때 안전한 채널(channel)을 사용할 필요는
없다.
만약 Somekey.pgp라는 파일이 키 하나를 포함하고
있고 그 키를 자신의 링에 넣고 싶다면, 그 과정은 매우 쉽다. 다음
명령을 수행해라 pgp -ka Somekey [ring]
기본적으로 .pgp 확장자는 키를 가지고 있는
파일을 의미하고 pubring.pgp와 secring.pgp는 각각 공개키들의
링과 비밀키들의 링을 포함하는 파일로 지정되어 있다.
키가 추가될 때, PGP는 추가된 키가 완전히
보증되지 않았다고 알려줄 수 있다. 이는 가지고 있는 키가 아마도
키가 자격 있는 주인(claimed owner)의 소유가 아닐 수도 있다는
것을 의미한다.
만약 키가 자격 있는 주인에게 정말로 속해있는
것이라면, 그 주인은 키를 직접적으로 또는 안전한 채널을 통해서
우리에게 주었기 때문에 그것은 그 주인에 의해서 보증될 수 있다.
보증의 표시로 키를 서명에 놓는다.
이는 우리를 믿고 올바로 인증된 키를 전달한다고
완전히 확신하는 사람에게 키를 전달하는 것을 쉽게 해준다.
“web trust”라는 이 일련의 과정에 대한
이름도 있다. 미국에는 서로 공개키를 교환하고 서명을 하는 PGP
사용자들의 모임들도 있다.
이 개념을 알기 쉽게 사람 이름을 가지고
예를 들어보자. 다시 두 친구 Juan과 Pedro를 생각해보자. Juan은
Pedro에게 그의 공개키를 준다. 그 둘은 서로를 믿기 때문에, Pedro는
Juan이 그에게 준 키가 올바르다고 확신한다. 그가 집에 와서 공개키
링에 받은 키를 추가한다. 다음 그 키가 정말로 Juan의 키라는 것을
보증할 수 있기 때문에 그 자신의 비밀키로 그것을 서명한다.
두 사람이 더 있는 상황을 보자. Luis와 Maria.
Luis는 Pedro로부터 Juan의 키를 받고 후에 Luis는 그것을 Maria에게
보낸다. Maria는 Luis를 믿지 않지만 Juan의 키를 Pedro가 보증한다는
것을 본다. Maria는 Pedro의 서명 덕분에 Juan의 공개키를 검사할
수 있다. Maria는 Pedro가 직접 그녀에게 준 Pedro의 공개키를 가지고
있다. 그래서 그녀는 Pedro의 서명의 신빙성을 검사하여 Luis가
준 키를 믿을 수 있다. 우리는 여기서 어떻게 Maria가 Luis같은
믿을 수 없는 사람에게서 받은 키를 사용하고 믿을 수 있게 되는지를
본다.
이는 이런 종류의 암호화의 유일한 약점을
- 공개키는 변조될 수 있다는 사실 - 피하기 위해서는 귀찮지만
필요 하다.
▲ top
링에서 키 제거하기
링에 키를 추가하는 방법을
알고 난 다음 단계는 어떻게 빼는지 아는 것이다. 이는 다음 명령으로
될 수 있다.
pgp -kr id [링] 예를 들면 “pgp -kr
juan” 명령은 ID가 juan을 포함하는 키를 뺀다. 기본적으로 공개키
링에서 검사한다.
키 추출하기
공개키 링에 친구들에게서
받은 키들을 추가하였다. 그 친구들에게 자신의 공개키를 보내보자.
먼저 링에서 가져와야 한다.
pgp -kx id 파일명 [링]
예를 들면 “pgp -kx angel mykey” 라는
명령은 angel이라는 부분문자열을 가진 ID의 공개키를 추출하여
mykey.pgp라는 파일에 저장한다.
mykey.pgp 라고 만들어진 파일은 ASCII 형식이
아니다. (보려면 cat을 이용하여라.) 그러나 전자 우편으로 보내기
위해, 또는 finger 데이터베이스에 추가적인 정보를 넣기 위해 ASCII
형식의 키를 얻고 싶다면 다음과 같이 하라
pgp -kxa id 파일명 [링]
예를 들면 “pgp -kxa angel mykey” 라는
명령은 angel이라는 부분문자열을 가진 ID의 공개키를 추출하여
“mykey.asc”라는 파일에 저장한다.
키와 함께 그 키를 보증하는 모든 보증(certification)들도
함께 추출된다.
링의 내용
링에 들어있는 키들을 보려면 다음
명령을 사용한다.
pgp -kv [id] [링]
기본 링은 공개키 링인 pubring.pgp이다.
명시적으로 어떤 ID로 주지 않으면 그 링에 들어있는 모든 키들이
표시 된다.
모든 키에 대한 모든 보증을 보려면 다음을
사용하라
pgp -kvv [id] [링]
▲ top
메시지 암호화하기(encoding)
우리는 키를 사용하는 방법을 보았다.
이제 키를 사용하여서 재미있는 것을 해보자. 어떻게 파일을 암호화하는지
보자
pgp -e 파일명 id
“예를 보자” 선생님은 동료 선생님에게
전자 우편으로 시험 문제를 보내려고 한다. 그래서 그는 그것을
학생들이 알 수 없도록 암호화하려 한다. 두 번째 선생님의 이름은
Marcos이고 그의 공개키 ID에는 그의 이름이 들어있다. 첫 번째
선생님은 다음과 같이 할 것이다.
pgp -e exam.doc marcos
이 명령은 exam.pgp라는 이름의 파일을 만든다.
그 파일은 오직 Marcos만이 그의 비밀키로 복호화할 수 있는 방법으로
암호화된 exam.doc이다.
만들어진 exam.pgp는 ASCII 파일이 아니란
것을 기억해라. 따라서 전자 우편용으로는 -a 옵션을 더 넣는 것이
좋을 것이다. 이는 결과로 암호화된 파일은 ASCII 형식으로 만든다.
다음 같이
pgp -ea exam.doc marcos
보안을 이유로 때로는 원본을 지우기를 원할
수도 있다. -w 옵션을 주면 이를 자동으로 한다.
pgp -eaw exam.doc marcos
여러 수신자들을 위한 메시지 암호화하기
이제는 선생님이 같은 부서 선생님들에게
시험 문제를 보내기를 원한다고 해보자. 이를 위해서 그는 하나가
아닌 여러 ID를 사용하면 된다.
pgp -ea exam.doc marcos juan alicia
이전과 마찬가지로 -a 옵션은 결과를 전자
우편용의 ASCII 형식으로 만든다.
메시지에 서명하는
방법
이전에 말했듯이, 메시지에
전자 서명하는 것은 종이에 서명을 하는 것과 같다. 문서에 서명을
하는 것은 수신자가 메시지가 바뀌지 않았는지 그리고 믿을 수 있는지를
확인할 수 있게 한다.
문서에 서명을 하기 위해서는 우리의 비밀키를
사용할 필요가 있다.
pgp -s 파일명 [-u id]
만약 secring.pgp에 여러 개의 비밀키를 가지고
있다면 ID를 이용하여서 그것들 중 하나를 선택할 수 있다.
이전 예에서의 선생님이 시험 문제에 서명을
하며 동료들이 그 메시지가 학생에게서 온 것이 아니란 것을 알게
하려고 결정했다면 다음과 같이 한다.
pgp -s exam.doc
이 명령은 exam.doc.pgp라는 파일을 만든다.
이 파일은 PGP가 압축을 하였기 때문에 ASCII 형식이 아니다. 만약
텍스트를 ASCII 형식으로 그래도 두고서 그 끝에 당신의 서명으로
서명하기를 위한 다음 과정은 다음과 같다.
pgp -sta exam.doc
이 명령은 전자 우편을 PGP 없이도 또는 서명을
검사하지 않고도 여전히 읽을 수 있게 하는 데 매우 유용하다.
또한 문서를 서명을 한 후 암호화하는 것도
다음 명령을 할 수 있다.
pgp -es 파일명 수신자id [-u 나의id]
“예를 들면”
pgp -es exam.doc marcos -u angel
이것은 exam.doc 파일을 암호화와 서명을
하고 exam.pgp 파일을 만든다. 암호화 하는데 사용하는 공개키는
marcos라는 문자열을 ID로 가지고 있는 키이다. 그래서 그 키의
주인만이 그 메시지를 복호화할 수 있다. 그 다음 나는 비밀키 링에
여러 개의 비밀키를 가지고 있기 때문에 angel 이란 문자열로서
비밀키를 선택한다.
이 경우에도 -a 옵션으로 ASCII 파일을 만들
수 있다.
다른 재밌는 가능성은 파일의 데이터에서
그 파일에 대한 서명을 만들어내는 것이다. 이는 -b 옵션을 사용하면
된다.
pgp -sb exam.doc
이 명령은 exam.sig라는 서명만을 담고 있는
새로운 파일을 만든다.
▲ top
복호화하기(decoding)
파일을 복호화하기 위해 그리고/또는
서명을 검사하기 위해, 다음 명령을 사용한다.
pgp 입력파일 [-o 출력파일]
기본적으로 입력파일은 .pgp라는 확장자를
갖는다고 가정한다. 출력파일은 단지 선택이고 복호화된 파일을
저장할 것이다. 출력파일을 명시하지 않는다면, 복호화된 파일은
.pgp라는 확장자가 제거된 입력파일에 저장된다.
그러나 파일이 복호화된 후, 그 복호화된
파일을 표준 출력으로 명시할 수 있다. 이를 위해서는 -m 옵션을
사용 한다.
pgp -m 파일명
또 다른 가능성이 있다. -f 옵션으로 입력과
출력 파이프를 사용하는 것이다.
pgp -fs id < 입력파일 > 출력파일
더 재미있는 상황은 어떤 사람이 우리에게
보낸 서명이 된 메시지를 복원하고 싶은데, 다른 사람들에게 그
메세지를 다시 보내기 위해 암호화하는데 쓸 그 서명을 그대로 가지고
있고 싶을 때이다. 이를 위해 -d 옵션을 사용한다.
pgp -d exam 이는 exam.pgp라는 파일을
가지고선 그것을 복호화하지만 원래 서명을 파일 안에 남겨 둔다.
다른 받을 사람의 공개키를 가지고선 그 파일을 암호화 할 수 있다.
받는 사람은 원래 메시지의 신뢰성(authenticity)을 검사할 수 있다.
텍스트 파일 다루기
PGP는 전자 우편을 암호화하는데
자주 사용된다. 대개 그것은 텍스트이다. 텍스트 파일의 문제는
그것이 서로 다른 기계에서는 다르게 보여진다는 것이다. 예를 들면,
MSDOS는 모든 줄의 끝은 CR와 LF이다. 리눅스에서는 LF만이고 메킨토시에서는
CR만이다. 플랫폼들 사이의 비호환성 문제를 피하기 위해 우리는
PGP에게 우리는 이진 파일이 아니 텍스트 파일을 암호화하기 원한다고
말할 수 있다. 그래서 풀 때, PGP는 목표(target) 환경의 특성에
맞게 그것을 고친다. 이렇게 전자 우편용으로 텍스트 파일을 암호화하기
위해서는 -t를 사용해라 “예”
pgp -sta 텍스트파일 id
“지문”
지문은 키를 유일하게 분별해주는 16바이트
열(sequence)이다. 키가 가질 수 있는 모든 1024바이트 대신에 이
16바이트를 가지고 내가 어떤 사람의 올바른 키를 가지고 있는 것인지
검사할 수 있다.
키의 지문을 표시하기 위해서는 다음 명령을
사용한다.
pgp -kvc id [링]
쉘에서 PGP 사용하기
PGP는 자동화된 스크립트를
통해 쉘에서 PGP를 사용하는 데 특히 유용한 옵션들을 가지고 있다.
+batchmode
이 옵션을 사용하면 PGP는 꼭 필요하지 않는
것은 묻지 않을 것이다. 자동으로 서명을 검사하려면 이 옵션을
사용하라. 파일에 서명이 없을 때는 반환되는 에러 코드는 1이다.
만약 파일이 서명을 가지고 있고 그 서명이 맞다면 0을 반환한다.
pgp +batchmode 파일명
force
이 옵션은 파일은 덮어쓰거나 키를 삭제하는
어떤 조작도 강제로 수행되게 한다.
pgp +force +kr marcos
쉘에서는 PGP가 파일을 암호화할 때 암호를
요구하는 것을 피하는 것이 유용하다. 예를 들어 PGPPASS 환경 변수를
가지고선 암호화는 동안의 상호작용을 피할 수 있다.
PGPPASS=”암호” export PGPPASS
pgp -s file.txt marcos
비대화식 방법으로 PGP에 암호를 주는 다른
방법은 -z 옵션을 사용하는 것이다.
pgp -sta exams.txt angel -z “암호”
또 다른 유용한 옵션은 설명(verbose) 모드에서
수행되도록 하는 +verbose 옵션이다. 다음은 정보 메시지를 출력하지
않고 에러만을 보여주는 침묵(quiet) 모드를 설정한다.
pgp file.pgp +verbose=0
▲ top
메일 리더(mail reader)와
통합하기
자동으로 편지를 암호화, 복호화하고,
편지에 서명하기 위해 PGP와 메일 리더를 통합하는 것은 쉽고, 사용되는
메일 리더에 의존적이지도 않다.
예로 Pine와 PGP를
통합하는 것을 설명할 것이다. Pine이 독자들이 사용하는 메일 리더이기를
바란다.
Pine을 위한 것을
설명하지만 이들 단계의 원칙들은 다른 메일 리더에도 적용될 수
있다. 물론 다른 메일 프로그램에 대해서는 설정 옵션들은 다를
것이다.
편지를 읽기 전에
자동으로 복호화하기 위해서는, 메시지를 처리하여 화면에 보여주는
필터(filter)가 필요하다. 다른 가능성은 복호화와 윈도우로 표시해주는
기능의 매크로(macro)를 작성하는 것일 것이다.
Pine의 경우에는
메시지를 보여주기 전에 수행이 되는 필터들을 정의하는 옵션이
있다. 이 옵션은 ‘display-filters’라고 불리고 파일의 설정 메뉴에서
찾을 수 있다. 이 옵션에 우리는 다음과 같은 새 필터를 넣는다:
_BEGINNING(“-----BEGIN
PGP MESSAGE-----”) _ /usr/local/bin/pgp
PGP로 암호화된
모든 메시지는 “-----BEGIN PGP MESSAGE-----”와 “-----END PGP
MESSAGE-----” 두 줄에 싸여있다. 그래서 메시지가 본문에 암호화된
텍스트를 가지고 있는지 알기 위해서는 앞의 두 중 하나가 있는지를
찾는 것으로 충분하다. Pine에서 정의된 필터는 정확히 이와 같이
한다. 실제 메시지를 표시하기 전에, 본문을 검사하여 “-----BEGIN
PGP MESSAGE-----” 문자열로 시작되는 줄을 찾는다. 만약 찾았다면
/usr/local/bin/pgp 프로그램을 실행한다.
본문에 암호화된
메시지가 있다면 PGP가 실행된다. PGP는 암호를 물을 것이고 그
후 너는 메시지를 읽을 수 있다. 이 과정을 더욱 자동화하기 원한다면
- 매번 암호를 입력하는 데 드는 시간을 줄여서 - 위에서 설명한
PGPPASS 변수를 정의하거나 -z 옵션을 사용할 수 있다.
이제 메시지를 실제로
보내기 전에 우리의 공개키 링에 있는 수신자의 공개키를 가지고
우리의 메시지를 암호화하는 필터를 정의해야 한다. Pine은 ‘sending-filters’라는
옵션은 가지고 있다. 그 옵션에 넣어야한 필터
/usr/local/bin/pgp
-etaf _RECIPIENTS_
메세지를 쓰고 보내려고
CTRL-X를 누른 후, Pine은 그 메시지를 정의된 어떤 필터도 적용하지
않고 바로 보낼 것인지를 물어볼 것이다. 암호화하지 않은 메시지를
보내기 위해서는 단지 ‘예’(Yes)를 선택하면 되지만 암호화한
메시지를 보내기 위해서는 CTRL-N또는 CTRL-P를 누른다. 그러면
모든 정의된 필터의 목록이 보여질 것이고, 우리의 경우 이는 위에서
작성한 PGP 필터가 될 것이다.
이것은 단지 두
개의 필터만을 가지고 Pine에서 PGP를 사용하게 해주는 매우 간단하고
기초적인 설정이다. Pine과 다른 시스템에 PGP를 통합하는 것에
대한 더 많을 정보를 얻으려면 다음 링크를 보아라
·elm http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/elm/README.html
·GNU Emacs :
http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/emacs/README.html
·tin http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/mail_tin/README.html
·mailx http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/mailx/README.html
·MH http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/mh/README.html
·Pine http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/pine/README.html
·sendmail
http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/sendmail/README.html
·vi http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/vi/README.html
·zmail http://ftp.rediris.es/ftp/software/security/crypt/pgp/utils/zmail/README.html
더 많은 정보를
위해서 PGP 문서들 읽어라 다른 기사들을 읽어라
▲ top
|