720 likes | 1.03k Views
제 13 장 PGP. 암호 기술을 조합하는 기술. 13.1 주요 내용. 전자메일은 우리가 생각하는 것만큼 안전하지 않다 암호학적인 측면에서 보면 매우 취약하다 . 전자메일에 대한 인증과 기밀성 서비스가 매우 중요해졌다 두 가지 중요한 전자메일 PGP (Pretty Good Privacy) S/MIME (Secure/Multipurpose Internet Mail Extensions). 주요내용. PGP 의 개요 키 쌍의 작성 암호화와 복호화 디지털 서명 작성과 검증 디지털 서명 작성과 암호화
E N D
제 13장 PGP 암호 기술을 조합하는 기술
13.1 주요 내용 • 전자메일은 우리가 생각하는 것만큼 안전하지 않다 • 암호학적인 측면에서 보면 매우 취약하다. • 전자메일에 대한 인증과 기밀성 서비스가 매우 중요해졌다 • 두 가지 중요한 전자메일 • PGP(Pretty Good Privacy) • S/MIME • (Secure/Multipurpose Internet Mail Extensions)
주요내용 • PGP의 개요 • 키 쌍의 작성 • 암호화와 복호화 • 디지털 서명 작성과 검증 • 디지털 서명 작성과 암호화 • 복호화와 디지털 서명 검증 • 신뢰 망
13.2 PGP의 개요 • 암호 알고리즘을 조정하는 정보 조각 • 평문을 암호문으로 전환 • 암호문을 복호화하는 역할 • 디지털 서명 구조 • 키를 이용한 해시 함수 • 인증
13.2.1 PGP란 • 1990년경에 필립 짐머만(Philip Zimmermann)이 만들었다 • 현재도 전 세계에서 널리 사용되고 있는 암호 소프트웨어이다. • PGP라는 이름은 Pretty Good Privacy(매우 좋은 프라이버시)의 약자이다.
13.2.2 PGP의 인기 비결 • 다양한 기종에서 작동되는 여러 버전을 만들었으며 이것을 전 세계에 무료로 제공했다. • 엄격하고 공개적인 검증을 거친 알고리즘들을 기반으로 하고 있다. • 매우 다양한 계층과 영역에서 사용할 수 있다. • 통제기관으로부터 자유스러움을 느끼고 싶은 사람들이 선호한다 • OpenPGP는 인터넷 표준화 트랙 과정에 있다.
13.2.3 PGP의 기능 • PGP는 현대 암호 소프트웨어에 필요한 기능을 거의 전부 갖추고 있다. • 대칭 암호 • 공개 키 암호 • 디지털 서명 • 일방향 해시 함수 • 인증서 • 압축 • 텍스트 데이터 • 큰 파일의 분할과 결합 • 키 고리의 관리
13.2.4 암호키와 키 고리 • PGP에서 사용하는 4종류의 키 • 대칭 암호용 일회용 세션키 • 비대칭 암호용 공개 키 • 비대칭 암호용 개인 키(위의 공개 키와 쌍이 되는 키) • 패스문-기반(passphrase-based) 대칭키
키의 3 가지 필수사항 • 추측할 수 없는 세션 키를 생성하는 방법이 필요하다 • 사용자가 공개 키/개인 키 쌍을 여러 개 가질 수 있어야 한다 • 각 PGP 사용자는 상대방의 공개 키를 보관하는 파일 뿐만 아니라 자신의 공개 키/개인 키 쌍을 보관하는 파일도 갖고 있어야 한다.
일회용 세션 키 생성 • 세션 키는 단일 메시지를 암호화/복호화 할 목적으로만 사용한다. • 메시지 암호화/복호화에 대칭암호 알고리즘을 사용 • CAST-128 비트 키를 사용 • IDEA는 128 비트 키를 사용 • 3DES는 168 비트 키를 사용 • 여기서는 CAST-128을 사용해서 설명
키 식별자 • 메시지 암호화에 사용한 세션 키는 암호화된 형태로 첨부하여 보낸다. • 세션 키 자체는 수신자의 공개 키로 암호화한다. • 수신자만이 세션 키를 복호화 할 수 있고 메시지도 복호화 할 수 있는 것이다. • 사용자들은 여러 쌍의 공개 키/개인 키를 가지고 있으므로, 한 사용자의 공개 키에 범위 안에서는 유일하도록 식별자(identifier)를 붙여놓아 구별이 가능하도록 한다
키 고리 • 각 노드에서 한 쌍의 데이터구조를 제공해야한다. • 개인 키 고리(private-key ring): • 노드가 소유한 공개 키/개인 키 쌍들을 저장하기 위한 것 • 공개 키 고리(public-key ring) • 이 노드가 알고 있는 다른 사용자들의 공개 키를 저장하기 위한 것
개인 키 고리에 속하는 항목 • 타임스탬프:이 키 쌍이 생성된 날짜/시간 • 키 ID:이 항목에 대한 공개 키를 식별하기 위한 64비트 값 • 공개 키:키 쌍의 공개 키 부분 • 개인 키:키 쌍의 개인 키 부분; 이 필드는 암호화된다. • 사용자 ID:보통 이것은 사용자의 전자메일 주소이다(예, gildogn@novel.co.kr). 그러나 사용자는 다른 이름을 키 쌍에 연결시키거나(예, Gildong, HGdong, HongGilDong 등) 동일한 사용자 ID를 한 번 이상 재사용하기 위해 이 필드를 이용할 수 있다.
패스문 기반 대칭키 • 개인 키 값을 더 안전하게 보관할 수있는 방법 필요하다 • 개인키 자체는 키 고리에 저장하지 않는 것이 바람직하다. • 오히려 이 키는 CAST-128(혹은 IDEA나 3DES)로 암호화해서 저장하는 것이 더 안전하다. • 사용자가 개인키를 회수하기위해 개인 키 고리를 복구할 때, 사용자는 패스문을 입력해야 한다
13.3 키 쌍의 작성 • PGP를 사용해서 암호화나 디지털 서명을 하려면, 우선 자신의 키 쌍을 작성할 필요가 있다
13.4 암호화와 복호화 • 하드웨어로 난수를 생성할 경우, 열이나 음의 변화 등의 예측이나 재현이 사실상 불가능한 자연 현상을 센서로 감지해서 그 결과를 기초로 난수열을 생성한다. • 이런 하드웨어를 난수 생성기(random number generator; RNG)라 부른다.
13.4.1 암호화 • 메시지를 하이브리드 암호 시스템을 이용하여 암호화하고 • 송신 데이터(텍스트 데이터)로 변환한다
세션 키의 생성과 암호화 (1) 의사난수 생성기를 사용해서 세션 키를 생성한다. (2) 세션 키를 공개 키 암호로 암호화한다. 사용하는 키는 수신자의 공개 키이다.
메시지의 압축과 암호화 (3) 메시지를 압축한다. (4) 압축한 메시지를 대칭 암호로 암호화한다. 사용하는 키는 절차(1)의 세션 키이다. (5) 암호화한 세션 키(절차(2))와, 암호화한 메시지(절차(4))를 결합한다. (6) 절차(5)의 결과를 텍스트 데이터로 변환한다. 변환한 결과가 송신 데이터가 된다.
13.4.2 복호화 • PGP에 의한 복호화의 모습
개인 키의 복호화 • PGP의 개인 키는 이용자의 키 고리 안에 보존되어 있다. • 키 고리의 도난에 대비해서 개인 키는 암호화된 상태로 보존된다. • 보존에는 「패스 문을 기초로 한 암호화」(PBE)가 이용된다
개인 키를 암호화하는 절차 (1) 수신자는 복호화를 위한 패스 프레이즈를 입력한다. (2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다. (3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다.
세션 키의 복호화 (4) 수신 데이터(텍스트 데이터)를 이진 데이터로 변환한다. (5) 2진 데이터를, 암호화되어 있는 세션 키와 압축+암호화되어 있는 메시지로 분해한다. (6) 암호화되어 있는 세션 키를 공개 키 암호로 복호화한다. 이 때 절차(3)에서 생성한 수신자의 개인 키를 사용한다.
메시지의 복호화와 신장 (7) 절차(5)에서 얻은 압축+암호화되어 있는 메시지를 대칭 암호로 복호화한다. 이 때 절차(6)에서 생성한 세션 키를 사용한다. (8) 절차(7)에서 얻은 압축되어 있는 메시지를 푼다. (9) 이것으로 메시지를 얻을 수 있다.
13.5 디지털 서명 작성과 검증 • 이번에는 디지털 서명 작성과 검증이다.
13.5.1 디지털 서명 작성 • 메시지와 그 메시지에 대한 서명을 결합해서 송신 데이터(텍스트 데이터)로 변환한다
개인 키의 복호화 (1) 송신자는 서명을 위한 패스 프레이즈를 입력한다. (2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다. (3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다.
디지털 서명의 작성 (4) 일방향 해시 함수를 사용해서 메시지의 해시 값을 계산한다. (5) 절차(4)에서 얻은 해시 값에 서명한다. 이것은 절차(3)에서 얻은 개인 키를 사용해서 암호화하는 것에 상당한다. (6) 절차(5)에서 작성한 디지털 서명과 메시지를 결합한다. (7) 절차(6)의 결과를 압축한다. (8) 절차(7)의 결과를 텍스트 데이터로 변환한다. (9) 절차(8)의 결과가 송신 데이터가 된다.
13.5.2 디지털 서명의 검증 • PGP에 의한 디지털 서명에 대한 검증 절차
보내 온 해시 값의 복원 (1) 수신 데이터(텍스트 데이터)를 이진 데이터로 변환한다. (2) 압축되어 있는 데이터를 푼다. (3) 신장한 데이터를 서명되어 있는 해시 값과 메시지로 분해한다. (4) 서명되어 있는 해시 값(암호화되어 있는 해시 값)을 송신자의 공개 키를 사용해서 복호화하고, 보내 온 해시 값을 복원한다.
해시 값의 비교 (5) 절차(3)에서 분해한 메시지를 일방향 해시 함수에 부여하여 해시 값을 계산한다. (6) 절차(4)에서 얻은 해시 값과 절차(5)에서 얻은 해시 값을 비교한다. (7) 절차(6)의 결과가 같으면 디지털 서명의 검증에 성공한 것이 되고, 같지 않으면 검증에 실패한 것이 된다. 이것이 디지털 서명의 검증 결과이다. (8) 절차(3)에서 분해한 메시지가 송신자의 메시지이다.
13.6 디지털 서명과 암호 • 마지막으로 암호와 디지털 서명을 조합해 보자. .
디지털 서명 작성과 암호화 • 메시지에 대한 디지털 서명 작성도 하고 메시지의 압축+암호화 두 가지 모두 수행한다. • 이 두 가지를 결합하고, 송신 데이터(텍스트 데이터)로 변환한다. • 송신 데이터를 텍스트 데이터로 할지 어떨지는 PGP를 사용할 때에 선택할 수 있다.
암호화 • 암호화의 대상이 되는 것은 메시지뿐만 아니라, 디지털 서명과 메시지를 결합한 데이터이다.