1 minute read

정의

Phil Zimmermann이 독자적으로 개발한 이메일 보안 기술.

구현이 용이하고 일반적으로 사용된 알고리즘의 안전성이 높아 가장 많이 사용되고 있는 기술이다.

사용하는 암호 알고리즘은 다음과 같다.

  • 메시지 기밀성: IDEA, CAST, Triple-DES
  • 전자서명(무결성, 사용자 인증, 송신자 부인 봉쇄): RSA, DSS/Diffie-Hellman, SHA-1, MD5, RIPEMD-160
  • 해시: MD5
  • 압축: ZIP
  • 전자우편 호환성: Radix-64 conversion

특징

  • 사용하고 있는 암호 기술의 안전성이 검증됨.
  • 인증받은 메시지와 파일에 대한 전자서명 생성과 확인 작업이 가능
  • 공개키를 4096 비트까지 생성 가능하며, RSA와 DSS/Diffie-Hellman 등 두 가지 형태의 공개키 생성이 가능하다.
  • 암호 알고리즘을 이용하여 기밀성, 인증, 무결성, 부인방지 등의 기능을 지원한다.

Key Ring

공개키 암호기술을 사용.

사용자의 public key와 private 키는 모두 Key Ring 파일에 보관되며, 모든 키는 사용자가 효과적으로 사용할 수 있도록 체계적인 방법으로 관리, 저장되어야 한다. 사용자가 소유하는 공개/개인키 쌍과 다른 사람들의 공개키들을 저장하기 위한 자료 구조를 Key Ring이라고 한다.

  • 개인키 링(private key ring): 사용자 ID나 키 ID로서 색인화 하며 사용자의 시스템에만 저장한다. 주로 CAST-128이나 IDEA를 이용해 암호화 한다. 자신의 개인키와 공개키를 관리하기 위해 사용된다. 사용자가 개인키를 얻기 위해서는 개인키링에 패스워드를 입력해야 하며, 패스워드의 해시 코드를 이용해 CAST-128이나 IDEA로 암호화된 개인키를 복호화 시켜 사용한다.

→ timestamp (키 쌍이 생성된 시간)

→ keyID(키 식별을 위한 64비트)

→ public key

→ private key (암호화 됨)

→ user id(사용자 이메일)

  • 공개키 링(public key ring): 다른 사용자와 상호 운영하기 위해서는 다른 사용자의 공개키를 가지고 있어야 하며, 사용자 ID나 키 ID로서 색인화 한다. 공개키를 관리하기 위해 사용된다.

→ timestamp (키 쌍이 생성된 시간)

→ keyID(키 식별을 위한 64비트)

→ public key

→ owner trust(소유자에 대한 신뢰도. 사용자에 의해 지정)

→ user id(사용자 이메일)

→ Key legitimacy(키 정당성. PGP에 의해 계산됨)

→ signature(서명)

→ signature trust(서명에 대한 신뢰도. owner trust에서 복사됨)

과정 및 구현

1

                                   <PGP 인증 서비스를 이용하여 메시지가 전송되는 과정>
  • 인증: 메시지를 보낸 사람이 본인과 일치하는가를 증명하는 일련의 과정.

과정:

  1. 송신자가 메시지를 생성
  2. 해시함수를 통해 메시지 128비트의 해시코드를 생성한 후(MD5 이용), A의 개인키로 해시 코드를 RSA로 암호화시켜 암호문으로 만듦 (→ 전자서명)
  3. 과정2의 암호화된 값을 메시지에 덧붙이고 ZIP 압축
  4. 세션키를 통해 압축된 메시지를 암호화
  5. 수신자의 공개키로 세션키 암호화
  6. 4번&5번의 메시지를 합쳐 수신자에게 전송
  7. 수신자가 메시지를 받으면 암호화 된 키 부분과 암호화 된 메시지를 분리
  8. 수신자의 개인키로 암호화 된 세션키 복호화
  9. 세션키로 암호화 된 메시지 복호화
  10. 메시지의 ZIP 압축 해제
  11. 전자서명 부분을 분리하여 송신자의 공개키로 복호화
  12. 해시함수로 메시지의 해시값 획득
  13. 11번&12번 과정의 값을 비교하여 동일하면 메시지 인증

Leave a comment