컴퓨터(Computer Science)/컴퓨터보안(Computer Security)

PGP 암호방식 (Pretty Good Privacy)

게임이 더 좋아 2020. 5. 24. 17:18
반응형
728x170

PGP 는 하이브리드 암호의 일종이다.

(대칭암호와 공개키암호를 섞었다)

 

**그렇게 해서 대칭 암호의 장점과 공개키 암호의 장점을 더했다.

기밀성을 유지한 통신 그리고 공개키로 키 배송문제 해결, 처리속도 향상

 

 

우선 PGP의 약자는 Pretty Good Privacy 이다.

 

개발자는 역시나 P가 들어간다. 

Phil Zimmermann이 개발했다고 한다. 

 

메시지 및 첨부파일 암호화에다 전자 서명 기능까지 더해서 굿굿굿

 

대칭암호방식과 공개키 암호방식을 섞어서 쓴다.

 

++평문을 압축해서 암호화 하는 방식을 이용한다. (전송 속도를 위함)

++압축 자체만으로는 기능성이 그다지 높아지는 것은 아니다.

 

공개키 암호 방식은 인증, 무결성, 부인방지를 제공해서

디지털 서명으로 많이 이용된다.

 

 

 


 

 

이 암호방식이 제공하는 보안서비스는

 

1. 기밀성(메시지 암호화)

2. 전자서명(인증)

3. 키 관리(전송) 및 전자서명

4. 전자우편 호환성

5. 메시지 압축

6. 분할(단편화 및 재결합)

 

차례대로 살펴보자

 

1. 기밀성

송신자의 세션키로 대칭키를 이용해 메시지 암호화를 수행한다.

수신자의 공개키로 RSA를 이용해 세션키를 암호화 하고 메시지에 첨부한다.

즉 기밀성 제공을 위해 대칭키와 공개키를 조합해서 사용한다.

 

2. 전자서명

해시함수를 이용해 메시지의 해시값을 생성한다. 다시 말해 메시지 인증을 한다

메시지 해시값은 송신자의 개인키로 암호화를 한다, 즉 송신사 부인방지 기능을 한다

 

3. 키 관리 및 전자서명

RSA통해 관리한다

 

4. 호환성

Radix-64 변환을 이용해 메시지를 ASCII 코드로 변환한다

 

5. 메시지 압축

ZIP 알고리즘 사용한다.

 

6. 분할 및 재결합

최대 메시지 크기 제한으로 데이터 분할과 재결한 기능을 제공한다.

 

 

 


 

 

이 암호방식에 대해 알아보겠다.

 

우선 예를 들자면 편지를 편지봉투에 넣어서 전달하는 것이다.

일반 편지봉투는 뜯어서 내용을 보거나 바꿀 수 있으나, 이 프로그램은 전자우편의 내용을 암호 알고리즘을 이용하여 암호화시키므로 암호를 푸는 특정 키(key)를 가지고 있어야만 내용을 볼 수가 있다.

 

천천히 어떻게 하는지 알아보자.  하이브리드 암호방식을 알아보자

 

우선 하이브리드 암호의 구조를 살짝 보자

 

1. 메시지는 대칭 암호로 암호화한다.
2. 대칭 암호의 암호화에서 사용한 세션 키는 의사 난수 생성기로 생성한다.
3. 세션 키는 공개 키 암호로 암호화한다.
4. 공개 키 암호의 암호화에서 사용하는 키는 하이 브리드 암호 시스템과 무관한 외부에서 만들어 사용한다.

 

 

구조를 알았으니 진짜 들어가보자

 

 

 

++설명하기 전에 우선 기호부터 정의하고 들어가자

 

 

1. 메시지 암호화

C1 = E(K,P)

K를 이용해 P를 Encrypt한 것이 C1이라는 뜻이다

 

대칭 암호를 이용해서 암호화한다. 대칭 암호를 이용하면 고속으로 암호화 가능하다.

 

 

2. 세션키 암호화

C2 = E(Kpub, K)

Kpub(공개키)를 이용해 K(세션키)를 암호화 하는 것이 C2라는 뜻이다.

 


수신자의 공개 키로 암호화된다

++세션키는 짧다
공개 키 암호가 아무리 느려도 세션 키 암호화에 그다지 시간이 걸리지 않음
세션 키는 대칭 암호에 있어서는 키이지만, 공개키 암호의 입장에서 보면 하나의 평문

 

 

다시 말해서 세션키는 편지를 읽는 방법

공개키는 편지 봉투를 뜯는 방법이라고 보면 되겠다.

 

 

3. 결합

 

대칭 키(K)로 암호화된 암호문(C1 = E(K,P))

//우리가 알고 싶은 메시지 암호문 C1

 

수신자의 공개 키(Kpub)로 암호화된 세션 키(C2 = E(Kpub, K))

//우리가 알고 싶은 메시지를 읽을 수 있는 키 암호문 C2


다시 말해서, 암호문: C = C2 ∥C1 = E(Kpub, K)∥E(K,P)

 

 

 

 

암호화의 결론은 그림으로 한 번 보자

 

 

이런식이다.

 


 

 

그렇다면 복호화는...????

이제 알아보자

 

우선

 

1. 분할

암호문: C = C2 ∥C1 = E(Kpub, K)∥E(K,P)을 분할

//다시 말해서 결합되어있으니까 분할시키는 것이다.


C1 = E(K,P): 대칭 키(K)로 암호화된 암호문
C2 = E(Kpub, K): 수신자의 공개 키(Kpub)로 암호화된 세션 키

 

2. 세션키 복호화

C2 = E(Kpub, K) 복호화
수신자의 개인 키(Kpri)가 필요 (개인 키를 가지고 있는 사람이 아니면 세션 키를 복호화 할 수 없음) 
K = D(Kpri, C2): 수신자의 개인키로 복호화된 세션 키는 메시지 복호화 키로 이용

 

 

 

 

3. 메시지 복호화

 

간단하다 세션키로

P = D(K,C1)

 

 

 

 

 


 

 

기밀성과 메시지인증·사용자인증·송신부인방지 등을 지원한다고 위에서 말했는데

이는  곧, 해당자가 아닌 사용자들은 내용을 볼 수 없게 해주며, 전송 도중에 내용이 불법적으로 변경되었는가를 확인해 주고, 전자우편을 실제로 보낸 사람이 누구인가를 확실히 알 수 있게 하며, 수신자가 전자우편을 받고서도 받지 않았다고 주장할 수 없게 해준다.

 

 

 

 

728x90
반응형
그리드형