IT 그리고 정보보안/Knowledge base

PGP (Pretty Good Privacy)

plummmm 2021. 4. 16. 06:33
반응형

e-mail 서비스 보안에 사용되는 소프트웨어인 PGP에 대해 알아보자.

일단 오픈소스다. Phil Zimmermann 이라는 사람이 만들었다. RFC 3156에 표준화 되어있다.

 

소프트웨어 이지만 암호화 복호화 하는데 사용되기 때문에 암호화 카테고리에 적었다.

 

PGP는 여러가지 서비스를 제공한다.

1. 전자 서명 : DSS/SHA 또는 RSA/SHA 로 전자서명이 가능하다.

2. 메세지 암호화 : cast-128, IDEA, 3-DES 로 메세지 암호화가 가능하다.

3. 1회용 세션키 생성 : Diffie-Helmann 또는 RSA로 키분배를 한다. 랜덤값

4. 메세지 압축 : ZIP으로 메세지를 압축시킬 수 있다.

5. 이메일 호환 : radix-64로 바이너리를 아스키로변환이 가능하다.

6. 세그먼테이션 : 메세지 최대 사이즈를 제한한다.

 

PGP는 크게 두가지 기능을 한다고 볼 수 있다. 인증 기능과 암호화 기능

먼저 인증 기능부터 살펴보자.

 

1. 메세지를 hash로 돌리고 그 값을 A의 개인키로 암호화 한다. 이게 서명이다.

2. 전자서명을 메세지에 덧붙여 압축하고 전송한다.

3. B는 서명이 된 메세지를 받으면 압축을 해제하고 메세지에 붙은 서명을 A의 공개키를 이용해 복호화 한다.

4. 복호화 값과 메세지를 hash로 돌려 그 값이 같은지 확인한다. 

 

다음은 암호화 기능을 살펴보자.

 

1. 메세지를 압축시키고 비밀키로 암호화 한다.

2. 세션키를 하나 생성하여 수신자의 공개키로 암호화를 한다.

3. 암호화된 세션키와 암호화된 메세지를 연접시켜 전송.

4. 수신자는 메세지의 세션키를 자신의 개인키로 복호화, 메세지도 복호화 알고리즘을 통해 복호화한다.

5. 압축을 풀고 메세지를 확인한다.

 

인증과 암호화 둘 중 하나만 하면 확실히 보안이 되지 않는다. 그래서 두가지 다 해야한다.

 

서명 - 암호화 - 복호화 - 인증 .. 이렇게 4단계를 거치는것을 볼 수 있다.

위에 인증과 암호화 과정을 보고왔으면 어떻게 진행되는지 쉽게 알 수 있다.

 

이번엔 PGP에 대해 좀더 알아보자. PGP KeyRings 라는게 있다.

PGP는 사용자에게 여러 쌍의 개인키, 공개키를 허용한다.

그래서 이 키 들을 관리하는게 키링이다.

 

공개키 키링, 개인키 키링이 따로 존재한다. 먼저 개인키부터 보자.

 

위와 같은 항목들을 저장한다. 개인키는 암호화 시켜 저장하는 것을 볼 수 있다.

 

다음은 공개키 키링이다.

 

수집한 공개키를 저장하는 것인데, 여기는 복잡다. 다른사람의 공개키를 저장하는 것이니까.

유효기간, 키 아이디(하위 64비트) 등등 많다. 

 

Owner Trust 라는 항목은 키 소유자 신뢰도, Signature Trust 항목은 서명의 신뢰도 인데, 

이건 사용자가 주관적으로 판단하는 항목이다. 이 두가지 항목을 바탕으로 Key Legitimacy 항목이 체크된다.

저 항목은 이 키가 유효하다 유효하지 않다를 판가름하는 기준이 된다.

 

그럼 어떤방식으로 Key Legitimacy 항목을 판단할까. 여기에 PGP Trust model (PGP 신뢰모델) 이란게 있다.

 

 

복잡하니까 간략하게 설명하겠다.

- 어떤 기준으로 신뢰할 지는 사용자가 설계하는 부분이다. (위 그림에서는 50% 두 개면 신뢰)

- 점이 찍힌 부분은 신뢰할 수 있는 키라는 뜻. 

- 색칠된 건 신뢰할 수 있는 사람이다는 뜻 (반만 칠해지면 50% 신뢰)

- H같은 경우는 A,B가 50%만 채워져 있지만 50% 두개면 신뢰한다고 했으니 신뢰할 수 있는 키.

- L같은 경우는 D가 100% 신뢰할 수 있는 키이기에, L도 신뢰할 수 있다. 그러므로 P, Q도 신뢰

-  M, N, O 같은 경우 E에 의해 모두 신뢰할 수 있는 키다. 

 

 

반응형