제 13장 PGP 암호 기술을 조합하는 기술.

Slides:



Advertisements
Similar presentations
1. 브라우저에서 로 관리창으로 접속해서, 서버 인증서를 설치 할 서버를 선택하고 Manage 버튼을 클릭합니다. 2. Security 탭을 선택한 후, 인증서 Trust.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
아이튠즈 계정 생성. 1. 인터넷을 통해 설치한 아이튠즈를 실행 한 후 그림의 순서대로 선택을 합니다. 1 2.
I. 프로젝트 동기 II. 프로젝트 목표 III. 파일시스템 IV. 암호화 및 복호화 V. 인터페이스 VI. FBR READ/WRITE VII. 프로그램 흐름도 VIII. 미 구현 사항 IX. 프로젝트 기대효과 X. 프로그램 요구사항 및 팀원 역할분담 XI. 시연 XII.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
HTTPS Packet Capture Tutorial
문산고등학교 학교에서의 인터넷 이용 수칙 사이버 예절, 건강한 디지털 세상의 시작입니다
컴퓨터와 인터넷.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
인터넷의활용.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
코크파트너 설치 가이드 Window 7.
제 8장 메시지 인증 코드 메시지가 보낸 그대로 왔는가?.
최윤정 Java 프로그래밍 클래스 상속 최윤정
암호-4장. 공개키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
연결리스트(linked list).
Windows Server 장. 사고를 대비한 데이터 백업.
교과목 소개 정보보호.
30장 메시지 보안, 사용자 인증과 키 관리 30.1 메시지 보안 30.2 전자서명 30.3 사용자 인증 30.4 키 관리
File Depender 중간 발표.
8장. 원격지 시스템 관리하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Chap 4. 공개키 암호.
제 12장 난수 예측 불가능성의 원천.
6장. printf와 scanf 함수에 대한 고찰
암호화 및 인증.
CHAP 12. 리소스와 보안.
P2P시스템에 대해서 (peer to peer)
어서와 C언어는 처음이지 제14장.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
뇌를 자극하는 Windows Server 2012 R2
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Nessus 4 설치 정보보호응용 조용준.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
16 장 네트워크 보안 : 방화벽과 VPN 16.1 개요 16.2 기밀성 16.3 전자 서명 16.4 인터넷 보안
ARM Development Suite v1.2
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
SSL, Secure Socket Layer
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
화상대화 매뉴얼 한국지역정보개발원.
제 Ⅲ부 키, 난수, 응용 기술.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
뇌를 자극하는 Solaris bible.
바넘효과 [Barnum effect] 사람들이 보편적으로 가지고 있는 성격이나 심리적 특징을 자신만의 특성으로 여기는 심리적 경향. 19세기 말 곡예단에서 사람들의 성격과 특징 등을 알아 내는 일을 하던 바넘(P.T. Barnum)에서 유래하였다. 1940년대 말 심리학자인.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Chapter 10 데이터 검색1.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
웹 사이트 분석과 설계 [디자인 리서치] 학번: 이름 : 홍지애.
실습 UBLAB.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
TrustNet 전자 협조전 사용설명서 목 차 작성,수정,삭제 결재함 처리현황 발송대장,접수대장
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
암호 시스템 (Crypto system) 신효철
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
CHAP 15. 데이터 스토리지.
7 생성자 함수.
6 객체.
Presentation transcript:

제 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를 사용해서 암호화나 디지털 서명을 하려면, 우선 자신의 키 쌍을 작성할 필요가 있다

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

공개 키의 예

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

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

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

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

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

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

13.4.1 암호화 메시지를 하이브리드 암호 시스템을 이용하여 암호화하고 송신 데이터(텍스트 데이터)로 변환한다

세션 키의 생성과 암호화 (1) 의사난수 생성기를 사용해서 세션 키를 생성한다. (2) 세션 키를 공개 키 암호로 암호화한다. 사용하는 키는 수신자의 공개 키이다.

메시지의 압축과 암호화 (3) 메시지를 압축한다. (4) 압축한 메시지를 대칭 암호로 암호화한다. 사용하는 키는 절차(1)의 세션 키이다. (5) 암호화한 세션 키(절차(2))와, 암호화한 메시지(절차(4))를 결합한다. (6) 절차(5)의 결과를 텍스트 데이터로 변환한다. 변환한 결과가 송신 데이터가 된다.

PGP에 의한 암호화

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

개인 키의 복호화 PGP의 개인 키는 이용자의 키 고리 안에 보존되어 있다. 키 고리의 도난에 대비해서 개인 키는 암호화된 상태로 보존된다. 보존에는 「패스 문을 기초로 한 암호화」(PBE)가 이용된다

개인 키를 암호화하는 절차 (1) 수신자는 복호화를 위한 패스 프레이즈를 입력한다. (2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다. (3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다.

세션 키의 복호화 (4) 수신 데이터(텍스트 데이터)를 이진 데이터로 변환한다. (5) 2진 데이터를, 암호화되어 있는 세션 키와 압축+암호화되어 있는 메시지로 분해한다. (6) 암호화되어 있는 세션 키를 공개 키 암호로 복호화한다. 이 때 절차(3)에서 생성한 수신자의 개인 키를 사용한다.

메시지의 복호화와 신장 (7) 절차(5)에서 얻은 압축+암호화되어 있는 메시지를 대칭 암호로 복호화한다. 이 때 절차(6)에서 생성한 세션 키를 사용한다. (8) 절차(7)에서 얻은 압축되어 있는 메시지를 푼다. (9) 이것으로 메시지를 얻을 수 있다.

PGP에 의한 복호화

암호화와 복호화

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

13.5.1 디지털 서명 작성 메시지와 그 메시지에 대한 서명을 결합해서 송신 데이터(텍스트 데이터)로 변환한다

개인 키의 복호화 (1) 송신자는 서명을 위한 패스 프레이즈를 입력한다. (2) 패스 프레이즈의 해시 값을 취해 개인 키를 복호화하기 위한 키를 생성한다. (3) 키 고리 안에 있는 암호화되어 있는 개인 키를 복호화한다.

디지털 서명의 작성 (4) 일방향 해시 함수를 사용해서 메시지의 해시 값을 계산한다. (5) 절차(4)에서 얻은 해시 값에 서명한다. 이것은 절차(3)에서 얻은 개인 키를 사용해서 암호화하는 것에 상당한다. (6) 절차(5)에서 작성한 디지털 서명과 메시지를 결합한다. (7) 절차(6)의 결과를 압축한다. (8) 절차(7)의 결과를 텍스트 데이터로 변환한다. (9) 절차(8)의 결과가 송신 데이터가 된다.

PGP에 의한 디지털 서명 작성

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

보내 온 해시 값의 복원 (1) 수신 데이터(텍스트 데이터)를 이진 데이터로 변환한다. (2) 압축되어 있는 데이터를 푼다. (3) 신장한 데이터를 서명되어 있는 해시 값과 메시지로 분해한다. (4) 서명되어 있는 해시 값(암호화되어 있는 해시 값)을 송신자의 공개 키를 사용해서 복호화하고, 보내 온 해시 값을 복원한다.

해시 값의 비교 (5) 절차(3)에서 분해한 메시지를 일방향 해시 함수에 부여하여 해시 값을 계산한다. (6) 절차(4)에서 얻은 해시 값과 절차(5)에서 얻은 해시 값을 비교한다. (7) 절차(6)의 결과가 같으면 디지털 서명의 검증에 성공한 것이 되고, 같지 않으면 검증에 실패한 것이 된다. 이것이 디지털 서명의 검증 결과이다. (8) 절차(3)에서 분해한 메시지가 송신자의 메시지이다.

PGP에 의한 디지털 서명 검증

디지털 서명의 작성과 검증

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

디지털 서명 작성과 암호화 메시지에 대한 디지털 서명 작성도 하고 메시지의 압축+암호화 두 가지 모두 수행한다. 이 두 가지를 결합하고, 송신 데이터(텍스트 데이터)로 변환한다. 송신 데이터를 텍스트 데이터로 할지 어떨지는 PGP를 사용할 때에 선택할 수 있다.

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

암호화 암호화의 대상이 되는 것은 메시지뿐만 아니라, 디지털 서명과 메시지를 결합한 데이터이다.

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

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

복호화 복호화에서 얻어지는 것은 메시지뿐만 아니라 디지털 서명과 메시지를 결합한 데이터이다.

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

13.7 신뢰 망 공개 키의 정당성을 확인하기 위해 PGP가 이용하는 「신뢰 망」이라는 방법에 대해서 설명한다.

13.7.1 공개 키의 정당성 입수한 공개 키가 정말로 자신이 생각하고 있는 인물의 것인지 어떤지(공개 키의 정당성)를 판단하는 것은 중요하다. 공개 키는 man-in-the-middle 공격에 의해 살짝 바꿔치기 되어 있을 가능성이 있기 때문이다. PGP에서는 인증기관을 사용하지 않는다. PGP에서는 신뢰 망(web of trust)이라는 방법을 이용한다 이것은 PGP 사용자가 서로의 공개 키에 대해 서로 디지털 서명을 하는 방법이다.

신뢰망 인증기관을 설치하지 않고 개인끼리 신뢰를 확립한다」라고 하는 것이 신뢰 망의 포인트이다. 바꿔 말하면 자신이 어느 키를 신용할지를 자신이 결정할 수 있다는 것이다.

PGP의 신뢰 망 구성 케이스1 : 자기 자신의 디지털 서명에 의해 확인한다. 케이스2 : 자신이 항상 신뢰하고 있는 사람의 디지털 서명에 의해 확인한다. 케이스3 : 자신이 부분적으로 신뢰하고 있는 사람들의 디지털 서명에 의해 확인한다.

케이스1 : 자기 자신의 디지털 서명에 의해 확인한다. (1) 밥의 디지털 서명을 검증하기 위해 PGP는 앨리스의 공개 키 고리로부터 밥의 공개 키를 찾는다. (2) 앨리스의 공개 키 고리에는 밥의 공개 키가 포함되어 있다. 이것은 지난 번 데이트 후, 앨리스가 밥에게서 받아서 자신의 공개 키 고리에 저장한 밥의 공개 키이다. (3) PGP는 밥의 공개 키에 앨리스의 디지털 서명이 붙어 있는 것을 발견한다. 이것은 지난 번 데이트 후 앨리스가 한 디지털 서명이다. (4) 앨리스의 디지털 서명을 검증하기 위해 PGP는 앨리스의 공개 키 고리로부터 앨리스 자신의 공개 키를 찾는다.

케이스1 : 자기 자신의 디지털 서명에 의해 확인한다. (5) 물론 앨리스의 공개 키 고리에는 앨리스의 공개 키가 포함되어 있다. 자기 자신의 공개 키이기 때문이다. (6) PGP는 앨리스의 공개 키를 사용해서 밥의 공개 키에 되어져 있는 앨리스의 디지털 서명을 검증한다. 검증에 성공하면 이것은 정당한 밥의 공개 키라고 확인할 수 있게 된다. (7) PGP는 정당한 밥의 공개 키를 사용해서 밥의 메일에 서명된 밥의 디지털 서명을 검증한다.

케이스2 : 자신이 항상 신뢰하고 있는 사람의 디지털 서명에 의해 확인한다. 앨리스는 트랜트를 매우 신뢰하고 있어서, 「트랜트는 암화와 디지털 서명을 잘 알고 있고, 누군가의 공개 키에 자신의 디지털 서명을 하는 것의 의미도 잘 이해하고 있다. 그가 디지털 서명을 한 공개 키는 반드시 정당한 것임에 틀림없다」라고까지 생각하고 있다.  PGP를 사용하면 트랜트에 대한 앨리스의 신뢰도를 표현할 수 있다. 즉, 트랜트의 공개 키에 대해 「나는 트랜트의 디지털 서명을 항상 신뢰한다」라는 정보를 부가하고, 그 정보에 대해 앨리스가 디지털 서명을 붙이면 되는 것이다.

소유자 신뢰(owner trust) 값 PGP에서는 각 사용자가 공개 키의 소유자에 대한 소유자 신뢰(owner trust) 값을 설정할 수 있다

소유자 신뢰(owner trust) 값

케이스3 : 자신이 부분적으로 신뢰하고 있는 사람들의 디지털 서명에 의해 확인한다. 복수인의 소유자 신뢰의 합계로 공개 키의 정당성을 확인하는 방법

13.7.2 공개 키의 정당성과 소유자 신뢰 「공개 키는 정당한가」라는 문제와, 「소유자를 신뢰하는가」라고 하는 문제는 전혀 다르다는 것에 주의하기 바란다. 공개 키는 정당하지만, 소유자는 신뢰하지 않는다고 하는 것은 충분히 있을 수 있다.

13.7.3 소유자 신뢰 값 앨리스는 앨리스 자신의 공개 키에 디지털 서명하고 있다 (소유자 신뢰 값은 「완전히 신뢰한다」). 앨리스는 밥의 공개 키에 디지털 서명하고 있다 (소유자 신뢰 값은 「신뢰하지 않는다」). 앨리스는 트랜트의 공개 키에 디지털 서명하고 있다 (소유자 신뢰 값은 「항상 신뢰한다」). 앨리스는 딥의 공개 키에 디지털 서명하고 있다 (소유자 신뢰 값은 「부분적으로 신뢰한다」).

13.7.3 소유자 신뢰 값 앨리스는 프래드의 공개 키에 디지털 서명하고 있다 (소유자 신뢰 값은 「부분적으로 신뢰한다」). 트랜트는 캐롤의 공개 키에 디지털 서명하고 있다. 딥은 조지의 공개 키에 디지털 서명을 하고 있다. 프래드는 조지의 공개 키에 디지털 서명하고 있다. 프래드는 해럴드의 공개 키에 디지털 서명하고 있다. 밥은 잉게의 공개 키에 디지털 서명하고 있다.

앨리스의 「신뢰 망」