제 13 장 pgp

68
제 13 제 PGP 제제 제제제 제제제제 제제

Upload: sigourney-emerson

Post on 30-Dec-2015

94 views

Category:

Documents


1 download

DESCRIPTION

제 13 장 PGP. 암호 기술을 조합하는 기술. 13.1 주요 내용. 전자메일은 우리가 생각하는 것만큼 안전하지 않다 암호학적인 측면에서 보면 매우 취약하다 . 전자메일에 대한 인증과 기밀성 서비스가 매우 중요해졌다 두 가지 중요한 전자메일 PGP (Pretty Good Privacy) S/MIME (Secure/Multipurpose Internet Mail Extensions). 주요내용. PGP 의 개요 키 쌍의 작성 암호화와 복호화 디지털 서명 작성과 검증 디지털 서명 작성과 암호화 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 제  13 장  PGP

제 13 장 PGP

암호 기술을 조합하는 기술

Page 2: 제  13 장  PGP

13.1 주요 내용 전자메일은 우리가 생각하는 것만큼 안전하지

않다 암호학적인 측면에서 보면 매우 취약하다 . 전자메일에 대한 인증과 기밀성 서비스가 매우

중요해졌다 두 가지 중요한 전자메일

PGP(Pretty Good Privacy) S/MIME

(Secure/Multipurpose Internet Mail Extensions)

Page 3: 제  13 장  PGP

주요내용 PGP 의 개요 키 쌍의 작성 암호화와 복호화 디지털 서명 작성과 검증 디지털 서명 작성과 암호화 복호화와 디지털 서명 검증 신뢰 망

Page 4: 제  13 장  PGP

13.2 PGP 의 개요 암호 알고리즘을 조정하는 정보 조각 평문을 암호문으로 전환 암호문을 복호화하는 역할 디지털 서명 구조 키를 이용한 해시 함수 인증

Page 5: 제  13 장  PGP

13.2.1 PGP 란 1990 년경에 필립 짐머만 (Philip Zimmermann)

이 만들었다 현재도 전 세계에서 널리 사용되고 있는 암호

소프트웨어이다 . PGP 라는 이름은 Pretty Good Privacy( 매우 좋은

프라이버시 ) 의 약자이다 .

Page 6: 제  13 장  PGP

13.2.2 PGP 의 인기 비결 다 양 한 기 종 에 서 작 동 되 는 여 러 버 전 을

만들었으며 이것을 전 세계에 무료로 제공했다 . 엄격하고 공개적인 검증을 거친 알고리즘들을

기반으로 하고 있다 . 매우 다양한 계층과 영역에서 사용할 수 있다 . 통제기관으로부터 자유스러움을 느끼고 싶은

사람들이 선호한다 OpenPGP 는 인터넷 표준화 트랙 과정에 있다 .

Page 7: 제  13 장  PGP

13.2.3 PGP 의 기능 PGP 는 현대 암호 소프트웨어에 필요한 기능을

거의 전부 갖추고 있다 . 대칭 암호 공개 키 암호 디지털 서명 일방향 해시 함수 인증서 압축 텍스트 데이터 큰 파일의 분할과 결합 키 고리의 관리

Page 8: 제  13 장  PGP

13.2.4 암호키와 키 고리 PGP 에서 사용하는 4 종류의 키

대칭 암호용 일회용 세션키 비대칭 암호용 공개 키 비대칭 암호용 개인 키 ( 위의 공개 키와 쌍이 되는 키 ) 패스문 - 기반 (passphrase-based) 대칭키

Page 9: 제  13 장  PGP

키의 3 가지 필수사항 추측할 수 없는 세션 키를 생성하는 방법이 필요하다 사용자가 공개 키 / 개인 키 쌍을 여러 개 가질 수

있어야 한다 각 PGP 사용자는 상대방의 공개 키를 보관하는 파일

뿐만 아니라 자신의 공개 키 / 개인 키 쌍을 보관하는 파일도 갖고 있어야 한다 .

Page 10: 제  13 장  PGP

일회용 세션 키 생성 세션 키는 단일 메시지를 암호화 / 복호화 할

목적으로만 사용한다 . 메시지 암호화 / 복호화에 대칭암호 알고리즘을

사용 CAST-128 비트 키를 사용 IDEA 는 128 비트 키를 사용 3DES 는 168 비트 키를 사용

여기서는 CAST-128 을 사용해서 설명

Page 11: 제  13 장  PGP

키 식별자 메시지 암호화에 사용한 세션 키는 암호화된

형태로 첨부하여 보낸다 . 세션 키 자체는 수신자의 공개 키로 암호화한다 . 수신자만이 세션 키를 복호화 할 수 있고

메시지도 복호화 할 수 있는 것이다 . 사용자들은 여러 쌍의 공개 키 / 개인 키를

가지고 있으므로 , 한 사용자의 공개 키에 범위 안에서는 유일하도록 식별자 (identifier) 를 붙여놓아 구별이 가능하도록 한다

Page 12: 제  13 장  PGP

키 고리 각 노드에서 한 쌍의 데이터구조를 제공해야한

다 . 개인 키 고리 (private-key ring):

노드가 소유한 공개 키 / 개인 키 쌍들을 저장하기 위한 것 공개 키 고리 (public-key ring)

이 노드가 알고 있는 다른 사용자들의 공개 키를 저장하기 위한 것

Page 13: 제  13 장  PGP

개인 키 고리에 속하는 항목 타임스탬프 : 이 키 쌍이 생성된 날짜 / 시간 키 ID: 이 항목에 대한 공개 키를 식별하기 위한 64 비트

값 공개 키 : 키 쌍의 공개 키 부분 개인 키 : 키 쌍의 개인 키 부분 ; 이 필드는 암호화된다 . 사용자 ID: 보통 이것은 사용자의 전자메일 주소이다

( 예 , [email protected]). 그러나 사용자는 다른 이름을 키 쌍에 연결시키거나 ( 예 , Gildong, HGdong, HongGilDong 등 ) 동일한 사용자 ID 를 한 번 이상 재사용하기 위해 이 필드를 이용할 수 있다 .

Page 14: 제  13 장  PGP

일반적인 개인 키 고리 구조

Page 15: 제  13 장  PGP

일반적인 공개 키 고리 구조

Page 16: 제  13 장  PGP

패스문 기반 대칭키 개인 키 값을 더 안전하게 보관할 수있는 방법

필요하다 개인키 자체는 키 고리에 저장하지 않는 것이 바람직하다 .

오히려 이 키는 CAST-128( 혹은 IDEA 나 3DES)로 암호화해서 저장하는 것이 더 안전하다 .

사용자가 개인키를 회수하기위해 개인 키 고리를 복구할 때 , 사용자는 패스문을 입력해야 한다

Page 17: 제  13 장  PGP

13.3 키 쌍의 작성 PGP 를 사용해서 암호화나 디지털 서명을 하려면 ,

우선 자신의 키 쌍을 작성할 필요가 있다

Page 18: 제  13 장  PGP

GnuPG 1.4.6 을 이용해서 키 쌍을 작성하고 있는 모습

Page 19: 제  13 장  PGP

공개 키의 예

Page 20: 제  13 장  PGP

PGP Desktop 9.5 를 이용해서 키 쌍을 작성하고 있는 모습

Page 21: 제  13 장  PGP

PGP Desktop 9.5 를 이용해서 키 쌍을 작성하고 있는 모습

Page 22: 제  13 장  PGP

PGP Desktop 9.5 를 이용해서 키 쌍을 작성하고 있는 모습

Page 23: 제  13 장  PGP

PGP Desktop 9.5 를 이용해서 키 쌍이 생성되는 도중

Page 24: 제  13 장  PGP

PGP Desktop 9.5 를 이용해서 생성된 키

Page 25: 제  13 장  PGP

13.4 암호화와 복호화 하드웨어로 난수를 생성할 경우 , 열이나 음의 변화 등의 예측이나 재현이 사실상 불가능한 자연 현상을 센서로 감지해서 그 결과를 기초로 난수열을 생성한다 .

이런 하드웨어를 난수 생성기 (random number generator; RNG) 라 부른다 .

Page 26: 제  13 장  PGP

13.4.1 암호화 메시지를 하이브리드 암호 시스템을 이용하여

암호화하고 송신 데이터 ( 텍스트 데이터 ) 로 변환한다

Page 27: 제  13 장  PGP

세션 키의 생성과 암호화(1) 의사난수 생성기를 사용해서 세션 키를

생성한다 . (2) 세션 키를 공개 키 암호로 암호화한다 .

사용하는 키는 수신자의 공개 키이다 .

Page 28: 제  13 장  PGP

메시지의 압축과 암호화(3) 메시지를 압축한다 . (4) 압축한 메시지를 대칭 암호로 암호화한다 .

사용하는 키는 절차 (1) 의 세션 키이다 . (5) 암호화한 세션 키 ( 절차 (2)) 와 , 암호화한

메시지 ( 절차 (4)) 를 결합한다 . (6) 절차 (5) 의 결과를 텍스트 데이터로 변환한다 .

변환한 결과가 송신 데이터가 된다 .

Page 29: 제  13 장  PGP

PGP 에 의한 암호화

Page 30: 제  13 장  PGP

13.4.2 복호화 PGP 에 의한 복호화의 모습

Page 31: 제  13 장  PGP

개인 키의 복호화 PGP 의 개인 키는 이용자의 키 고리 안에 보존되어

있다 . 키 고리의 도난에 대비해서 개인 키는 암호화된

상태로 보존된다 . 보존에는 「패스 문을 기초로 한 암호화」 (PBE) 가

이용된다

Page 32: 제  13 장  PGP

개인 키를 암호화하는 절차 (1) 수신자는 복호화를 위한 패스 프레이즈를 입력한다 .

(2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다 .

(3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다 .

Page 33: 제  13 장  PGP

세션 키의 복호화 (4) 수신 데이터 ( 텍스트 데이터 ) 를 이진 데이터로 변환한다 .

(5) 2 진 데이터를 , 암호화되어 있는 세션 키와 압축 + 암호화되어 있는 메시지로 분해한다 .

(6) 암호화되어 있는 세션 키를 공개 키 암호로 복호화한다 . 이 때 절차 (3) 에서 생성한 수신자의 개인 키를 사용한다 .

Page 34: 제  13 장  PGP

메시지의 복호화와 신장 (7) 절차 (5) 에서 얻은 압축 + 암호화되어 있는

메시지를 대칭 암호로 복호화한다 . 이 때 절차(6) 에서 생성한 세션 키를 사용한다 .

(8) 절차 (7) 에서 얻은 압축되어 있는 메시지를 푼다 .

(9) 이것으로 메시지를 얻을 수 있다 .

Page 35: 제  13 장  PGP

PGP 에 의한 복호화

Page 36: 제  13 장  PGP

암호화와 복호화

Page 37: 제  13 장  PGP

13.5 디지털 서명 작성과 검증 이번에는 디지털 서명 작성과 검증이다 .

Page 38: 제  13 장  PGP

13.5.1 디지털 서명 작성 메시지와 그 메시지에 대한 서명을 결합해서 송신

데이터 ( 텍스트 데이터 ) 로 변환한다

Page 39: 제  13 장  PGP

개인 키의 복호화 (1) 송신자는 서명을 위한 패스 프레이즈를 입력한다 .

(2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다 .

(3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다 .

Page 40: 제  13 장  PGP

디지털 서명의 작성 (4) 일방향 해시 함수를 사용해서 메시지의 해시

값을 계산한다 . (5) 절차 (4) 에서 얻은 해시 값에 서명한다 .

이것은 절차 (3) 에서 얻은 개인 키를 사용해서 암호화하는 것에 상당한다 .

(6) 절차 (5) 에서 작성한 디지털 서명과 메시지를 결합한다 .

(7) 절차 (6) 의 결과를 압축한다 . (8) 절차 (7) 의 결과를 텍스트 데이터로 변환한다 . (9) 절차 (8) 의 결과가 송신 데이터가 된다 .

Page 41: 제  13 장  PGP

PGP 에 의한 디지털 서명 작성

Page 42: 제  13 장  PGP

13.5.2 디지털 서명의 검증 PGP 에 의한 디지털 서명에 대한 검증 절차

Page 43: 제  13 장  PGP

보내 온 해시 값의 복원 (1) 수신 데이터 ( 텍스트 데이터 ) 를 이진 데이터로 변환한다 .

(2) 압축되어 있는 데이터를 푼다 . (3) 신장한 데이터를 서명되어 있는 해시 값과

메시지로 분해한다 . (4) 서명되어 있는 해시 값 ( 암호화되어 있는 해시

값 ) 을 송신자의 공개 키를 사용해서 복호화하고 , 보내 온 해시 값을 복원한다 .

Page 44: 제  13 장  PGP

해시 값의 비교 (5) 절차 (3) 에서 분해한 메시지를 일방향 해시

함수에 부여하여 해시 값을 계산한다 . (6) 절차 (4) 에서 얻은 해시 값과 절차 (5) 에서 얻은

해시 값을 비교한다 . (7) 절차 (6) 의 결과가 같으면 디지털 서명의

검증에 성공한 것이 되고 , 같지 않으면 검증에 실패한 것이 된다 . 이것이 디지털 서명의 검증 결과이다 .

(8) 절차 (3) 에서 분해한 메시지가 송신자의 메시지이다 .

Page 45: 제  13 장  PGP

PGP 에 의한 디지털 서명 검증

Page 46: 제  13 장  PGP

디지털 서명의 작성과 검증

Page 47: 제  13 장  PGP

13.6 디지털 서명과 암호 마지막으로 암호와 디지털 서명을 조합해 보자 . .

Page 48: 제  13 장  PGP

디지털 서명 작성과 암호화 메시지에 대한 디지털 서명 작성도 하고 메시지의

압축 + 암호화 두 가지 모두 수행한다 . 이 두 가지를 결합하고 , 송신 데이터 ( 텍스트 데이

터 ) 로 변환한다 . 송신 데이터를 텍스트 데이터로 할지 어떨지는 PGP

를 사용할 때에 선택할 수 있다 .

Page 49: 제  13 장  PGP

PGP 에 의한 디지털 서명 작성과 암호화

Page 50: 제  13 장  PGP

암호화 암호화의 대상이 되는 것은 메시지뿐만 아니라 ,

디지털 서명과 메시지를 결합한 데이터이다 .

Page 51: 제  13 장  PGP

13.6.1 복호화와 디지털 서명 검증 수신 데이터의 복호화 + 압축풀기와 , 그 결과로 얻어진 메시지에 대한 디지털 서명 검증 두 가지를 수행한다 .

최종적으로 얻어지는 것은 메시지와 디지털 서명 검증 결과이다 .

Page 52: 제  13 장  PGP

PGP 에 의한 복호화와 디지털 서명 검증

Page 53: 제  13 장  PGP

복호화 복호화에서 얻어지는 것은 메시지뿐만 아니라

디지털 서명과 메시지를 결합한 데이터이다 .

Page 54: 제  13 장  PGP

디지털 서명의 검증 디지털 서명 작성과 암호화 , 복호화와 디지털

서명 검증이라는 일련의 과정에서 해시 값 , 세션 키 , 메시지가 어떻게 변화해 가는가를 그림 13-12 에 나타내었다 .

Page 55: 제  13 장  PGP

13.7 신뢰 망 공개 키의 정당성을 확인하기 위해 PGP 가 이용하는

「신뢰 망」이라는 방법에 대해서 설명한다 .

Page 56: 제  13 장  PGP

13.7.1 공개 키의 정당성 입수한 공개 키가 정말로 자신이 생각하고 있는

인물의 것인지 어떤지 ( 공개 키의 정당성 ) 를 판단하는 것은 중요하다 . 공 개 키 는 man-in-the-middle 공 격 에 의 해 살짝 바꿔치기 되어 있을 가능성이 있기 때문이다 .

PGP 에서는 인증기관을 사용하지 않는다 . PGP 에서는 신뢰 망 (web of trust) 이라는 방법을

이용한다 이것은 PGP 사용자가 서로의 공개 키에 대해

서로 디지털 서명을 하는 방법이다 .

Page 57: 제  13 장  PGP

신뢰망 인증기관을 설치하지 않고 개인끼리 신뢰를 확립한

다」라고 하는 것이 신뢰 망의 포인트이다 . 바꿔 말하면 자신이 어느 키를 신용할지를 자신이

결정할 수 있다는 것이다 .

Page 58: 제  13 장  PGP

PGP 의 신뢰 망 구성 케이스 1 : 자기 자신의 디지털 서명에 의해

확인한다 . 케이스 2 : 자신이 항상 신뢰하고 있는 사람의

디지털 서명에 의해 확인한다 . 케이스 3 : 자신이 부분적으로 신뢰하고 있는

사람들의 디지털 서명에 의해 확인한다 .

Page 59: 제  13 장  PGP

케이스 1 : 자기 자신의 디지털 서명에 의해 확인한다 . (1) 밥의 디지털 서명을 검증하기 위해 PGP 는 앨리스의 공개 키 고리로부터 밥의 공개 키를 찾는다 .

(2) 앨리스의 공개 키 고리에는 밥의 공개 키가 포함되어 있다 . 이것은 지난 번 데이트 후 , 앨리스가 밥에게서 받아서 자신의 공개 키 고리에 저장한 밥의 공개 키이다 .

(3) PGP 는 밥의 공개 키에 앨리스의 디지털 서명이 붙어 있는 것을 발견한다 . 이것은 지난 번 데이트 후 앨리스가 한 디지털 서명이다 .

(4) 앨리스의 디지털 서명을 검증하기 위해 PGP 는 앨리스의 공개 키 고리로부터 앨리스 자신의 공개 키를 찾는다 .

Page 60: 제  13 장  PGP

케이스 1 : 자기 자신의 디지털 서명에 의해 확인한다 . (5) 물론 앨리스의 공개 키 고리에는 앨리스의 공개

키가 포함되어 있다 . 자기 자신의 공개 키이기 때문이다 .

(6) PGP 는 앨리스의 공개 키를 사용해서 밥의 공개 키에 되어져 있는 앨리스의 디지털 서명을 검증한다 . 검증에 성공하면 이것은 정당한 밥의 공개 키라고 확인할 수 있게 된다 .

(7) PGP 는 정당한 밥의 공개 키를 사용해서 밥의 메일에 서명된 밥의 디지털 서명을 검증한다 .

Page 61: 제  13 장  PGP

케이스 2 : 자신이 항상 신뢰하고 있는 사람의 디지털 서명에 의해 확인한다 . 앨리스는 트랜트를 매우 신뢰하고 있어서 , 「트랜트는

암화와 디지털 서명을 잘 알고 있고 , 누군가의 공개 키에 자신의 디지털 서명을 하는 것의 의미도 잘 이해하고 있다 .

그가 디지털 서명을 한 공개 키는 반드시 정당한 것임에 틀림없다」라고까지 생각하고 있다 .

PGP 를 사용하면 트랜트에 대한 앨리스의 신뢰도를 표현할 수 있다 .

즉 , 트랜트의 공개 키에 대해 「나는 트랜트의 디지털 서명을 항상 신뢰한다」라는 정보를 부가하고 , 그 정보에 대해 앨리스가 디지털 서명을 붙이면 되는 것이다 .

Page 62: 제  13 장  PGP

소유자 신뢰 (owner trust) 값 PGP 에서는 각 사용자가 공개 키의 소유자에 대한

소유자 신뢰 (owner trust) 값을 설정할 수 있다

Page 63: 제  13 장  PGP

소유자 신뢰 (owner trust) 값

Page 64: 제  13 장  PGP

케이스 3 : 자신이 부분적으로 신뢰하고 있는 사람들의 디지털 서명에 의해 확인한다 .

복수인의 소유자 신뢰의 합계로 공개 키의 정당성을 확인하는 방법

Page 65: 제  13 장  PGP

13.7.2 공개 키의 정당성과 소유자 신뢰 「공개 키는 정당한가」라는 문제와 , 「소유자를

신뢰하는가」라고 하는 문제는 전혀 다르다는 것에 주의하기 바란다 .

공개 키는 정당하지만 , 소유자는 신뢰하지 않는다고 하는 것은 충분히 있을 수 있다 .

Page 66: 제  13 장  PGP

13.7.3 소유자 신뢰 값 앨리스는 앨리스 자신의 공개 키에 디지털

서명하고 있다 ( 소유자 신뢰 값은 「완전히 신뢰한다」 ).

앨리스는 밥의 공개 키에 디지털 서명하고 있다 ( 소유자 신뢰 값은 「신뢰하지 않는다」 ).

앨리스는 트랜트의 공개 키에 디지털 서명하고 있다 ( 소유자 신뢰 값은 「항상 신뢰한다」 ).

앨리스는 딥의 공개 키에 디지털 서명하고 있다 ( 소유자 신뢰 값은 「부분적으로 신뢰한다」 ).

Page 67: 제  13 장  PGP

13.7.3 소유자 신뢰 값 앨리스는 프래드의 공개 키에 디지털 서명하고

있다 ( 소유자 신뢰 값은 「부분적으로 신뢰한다」 ).

트랜트는 캐롤의 공개 키에 디지털 서명하고 있다 . 딥은 조지의 공개 키에 디지털 서명을 하고 있다 . 프래드는 조지의 공개 키에 디지털 서명하고 있다 . 프래드는 해럴드의 공개 키에 디지털 서명하고

있다 . 밥은 잉게의 공개 키에 디지털 서명하고 있다 .

Page 68: 제  13 장  PGP

앨리스의 「신뢰 망」