제 Ⅲ부 키, 난수, 응용 기술.

Slides:



Advertisements
Similar presentations
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
최성락 최인석 나주한. 특징 : 공개키 n, g 를 사용하여 키 분배가 가능. (g 는 Zn 의 primitive element) Discrete logarithm 에 기반. 두 명 이상의 경우에도 적용가능. 키 교환 없이도.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
HTTPS Packet Capture Tutorial
컴퓨터와 인터넷.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
재료수치해석 HW # 박재혁.
제14장 동적 메모리.
제 8장 메시지 인증 코드 메시지가 보낸 그대로 왔는가?.
최윤정 Java 프로그래밍 클래스 상속 최윤정
연결리스트(linked list).
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Windows Server 장. 사고를 대비한 데이터 백업.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
교과목 소개 정보보호.
Chapter 02 순환 (Recursion).
30장 메시지 보안, 사용자 인증과 키 관리 30.1 메시지 보안 30.2 전자서명 30.3 사용자 인증 30.4 키 관리
File Depender 중간 발표.
공개키 암호화 프로그래밍 전자상거래보안.
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
Chap 4. 공개키 암호.
제 12장 난수 예측 불가능성의 원천.
제9장 공개키 암호 (I) Public-key Cryptography
11장. 1차원 배열.
암호화 및 인증.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
소마큐브로 3*3*3(정육면체)만드는 방법 탐구하기
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
자바스크립트 암호 프로그래밍 Javascript Cryptography Programming
뇌를 자극하는 Windows Server 2012 R2
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
16 장 네트워크 보안 : 방화벽과 VPN 16.1 개요 16.2 기밀성 16.3 전자 서명 16.4 인터넷 보안
KERBEROS.
위치 에너지(2) 들어 올리기만 해도 에너지가 생겨. 탄성력에 의한 위치 에너지.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
제 13장 PGP 암호 기술을 조합하는 기술.
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
끓는점을 이용한 물질의 분리 (1) 열 받으면 누가 먼저 나올까? 증류.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
제 15 강 문자와 코드 shcho.pe.kr.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
(생각열기) 요리를 할 때 뚝배기로 하면 식탁에 올라온 후에도 오랫동 안 음식이 뜨거운 상태를 유지하게 된다. 그 이유는?
생체 신호의 실시간 디지털 처리 7조 홍윤호( )-1등
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
함수, 모듈.
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
암호 시스템 (Crypto system) 신효철
1. 강의 소개 컴퓨팅적 사고와 문제해결.
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
7 생성자 함수.
6 객체.
Presentation transcript:

제 Ⅲ부 키, 난수, 응용 기술

제 11장 키 비밀의 핵심

11.1 주요 내용 키란 무엇인가? 다양한 키 키 관리 Diffie-Hellman 키 교환 패스워드를 기초로 한 암호(PBE) 안전한 패스워드를 만들려면?

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

11.2.1 키는 대단히 큰 수 암호 기술을 사용하려면 반드시 키(key)라 불리는 대단히 큰 수가 필요 중요한 것은 수 그 자체의 크기보다도 키 공간(Key Space)의 크기, 즉 「가능한 키의 총수」 키 공간이 크면 클수록 전사공격이 힘들다 예: 키의 길이가 10비트이면 키의 종류는 총 210 = 1,024개로서 키 공간의 크기가 1,024이다. DES에서 사용하는 키의 길이가 64비트이므로 키 공간의 크기는 264

DES의 키 실질적으로 56비트 길이(7바이트 길이) 2진수로 표기된 DES 키의 예 01010001 11101100 01001011 00010010 00111101 01000010 00000011 16진수로 표기된 DES 키의 예 51 EC 4B 12 3D 42 03

트리플 DES의 키 DES-EDE2 DES-EDE3 DES의 키를 2개 사용 DES의 키 길이의 2배인 112비트 길이 예: 51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F DES-EDE3 DES의 키를 3개 사용 DES의 키 길이의 3배인 168비트 길이 51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

AES의 키 대칭 암호 AES의 키의 길이 128, 192, 256 비트 예 51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96 B9 42 DC FD A0 AE F4 5D 60 51 F1

11.2.2 키와 평문의 가치 암호문을 도청한 이브에게 「키가 넘어가는 것」은 「평문이 넘어가는 것」과 같은 것이다. 키는 평문과 같은 가치를 갖는다.

11.2.3 암호 알고리즘과 키 Kerckhoffs 의 원리 안전한 시스템을 설계할 때는 사용하는 암호 알고리즘이 공격자들에게 알려져 있다는 것을 전제로 해야 한다. 즉,「오직 키를 비밀로 하는 것만이 안전을 보장 한다」 혹은 「공격자는 시스템에 대해 알고 있다」는 것이다.

11.3 다양한 키 한 마디로 「키」라고 표현하기는 하지만 키에는 많은 종류가 있다. 여기서 이들에 대해 정리해 보도록 한다.

11.3.1 대칭 암호의 키와 공개 키 암호의 키 대칭 암호 암호화와 복호화에서 동일한 키 사용 비밀키 공개 키 암호 암호화와 복호화에서 다른 키를 사용 개인키, 공개키

대칭 암호는 암호화와 복호화에서 공통의 키를 사용한다

공개 키 암호는 공개 키로 암호화하고, 개인 키로 복호화한다

11.3.2 메시지 인증 코드의 키와 디지털 서명의 키 메시지 인증 코드 디지털 서명 송신자와 수신자가 공통키를 사용해서 인증수행 디지털 서명 서명작성과 서명검증에 서로 다른 키를 사용

메시지 인증 코드의 키

디지털 서명 키

11.3.3 기밀성을 위한 키와 인증을 위한 키 기밀성 인증 대칭 암호나 공개 키 암호에서 사용하는 키 복호화를 위한 바른 키를 모르는 사람은 평문의 내용을 알 수 없다. 인증 메시지 인증 코드나 디지털 서명 바른 키를 모르는 사람은 데이터를 수정하거나 거짓행세를 할 수가 없다.

11.3.4 세션 키와 마스터 키 키가 사용되는 횟수에 주목 세션 키(session key) 마스터 키(master key) 통신 때마다 한 번만 사용되는 키 세션 키가 알려졌다고 하더라도 해독되는 것은 그 통신 1회분뿐 다음 통신에서는 또 다른 세션 키가 사용 마스터 키(master key) 반복적으로 사용되는 키

11.4 콘텐츠를 암호화하는 키와 키를 암호화하는 키 암호화하는 대상에 주목 암호화의 대상 통상적으로 사용자가 직접 이용하는 정보(콘텐츠) CEK(contents encrypting key) 정보의 암호화에 사용하는 키 KEK(key encrypting key) 키를 암호화하는 키

콘텐츠를 암호화하는 키(CEK)와 키를 암호화하는 키(KEK)

11.5 키 관리

11.5.1 키 생성 랜덤하게 만들어져야만 한다 랜덤하게 키를 만든다는 것은 매우 어려운 일 하드웨어적 난수생성기 이용 주사위를 이용 패스워드를 이용

난수를 이용한 키 생성 암호용 의사난수 생성기를 활용한다 암호용으로 설계되어 있지 않은 의사난수 생성기를 이용하여 키를 생성해서는 안 된다 「예측 불가능」이라는 성질을 갖지 않기 때문

패스워드를 이용한 키 생성 패스워드(password) 혹은 패스 프레이즈(passphrase)로부터 키를 만든다 패스워드를 일방향 해시 함수에 입력해서 얻어진 해시 값을 키로 이용 패스워드에 솔트(salt)라 불리는 난수를 부가해서 일방향 해시 함수에 입력 사전공격 방어를 위해 「패스워드를 기초로 한 암호」(password based encryption; PBE)라 한다

11.5.2 키 배송 키를 사전에 공유하는 방법, 키 배포 센터를 이용하는 방법, 공개 키 암호를 사용하는 방법 키 배송 문제를 해결하는 또 하나의 방법 Diffie-Hellman 키 교환

11.5.3 키 갱신 키 갱신(key updating) 통신의 기밀성을 높이는 테크닉 정기적으로 키를 교환 예를 들면 1000문자 통신할 때마다 현재 키의 해시 값을 다음 키로 사용

백워드 시큐리티(backward security) 적어도 키가 노출된 특정 시점 이전의 통신에 대해서는 안전하다는 것을 보증하는 것 특정 시점에 키가 도청자에게 알려졌다고 하자. 그러면 도청자는 그 키를 사용해서 그 시점 이후의 통신을 복호화할 수 있다. 키 갱신을 행한 시점보다도 과거로 거슬러 올라간 시점에서 이루어졌던 통신을 복호화할 수는 없다. 이유는 일방향 해시 함수의 역산이 불가능

11.5.4 키 보존 세션 키는 통신 1회에 한해 사용하는 것이므로 키보존이 필요없다 그러나 키를 반복해서 사용하는 경우에는 키의 보존을 생각하지 않으면 안 된다. 인간의 기억으로는 불가능하다 금고 등의 안전한 장소에 보관 키를 암호화하여 보존 KEK 키를 이용하여 키를 암호화하여 보존한다

키를 암호화하는 수법은 지켜야 할 키의 개수를 적게 할 수 있다 많은 키(CEK)의 기밀성을 지키는 대신에 1개의 키(KEK)의 기밀성을 지키는 것

인증기관의 계층화와 키 계층

11.5.5 키 폐기 불필요한 키는 폐기해야 한다 어떻게 버리는 것인가? 키를 잃어버리면 어떻게 될까? 만약 도청자 이브가 키를 입수하게 되면 이브가 보관하고 있던 암호 메일이 복호화 되기 때문 어떻게 버리는 것인가? 컴퓨터 전체가 보안을 염두에 둔 설계 필요 키를 잃어버리면 어떻게 될까? 공개 키 암호와 짝을 이루는 개인 키를 분실하면 안된다

11.6 Diffie-Hellman 키 교환 키 배송 문제를 해결하는 방법의 하나로서 Diffie-Hellman 키 교환을 소개한다.

11.6.1 Diffie-Hellman 키 교환 타인에게 알려져도 상관없는 정보를 두 사람이 교환하는 것만으로 공통의 비밀 값을 만들어내는 방법 만들어낸 비밀 값을 대칭 암호의 키로 사용

11.6.2 Diffie-Hellman 키 교환의 수순 앨리스는 밥에게 2개의 소수 P와 G를 송신한다 앨리스는 난수 A를 준비한다 밥은 난수 B를 준비한다 앨리스는 밥에게 GA mod P라는 수를 송신한다 밥은 앨리스에게 GB mod P라는 수를 송신한다 앨리스는 밥이 보내 온 수를 A제곱해서 mod P를 취한다

앨리스가 계산한 키 앨리스가 계산한 키 (GB mod P)A mod P 단순화 하면 GB× A mod P                    = GA× B mod P

밥이 계산한 키 밥이 계산한 키 (GA mod P)B mod P 단순화 하면 GA× B mod P 따라서 앨리스가 계산한 키 = 밥이 계산한 키

11.6.3 이브의 키 계산 도청자 이브가 알 수 있는 것 두 사람이 교환한 P, G, GA mod P, GB mod P 이 4개의 수로부터 (GA× B mod P)라는 값을 계산하는 것은 수학적인 면에서 대단히 어렵다. 유한체상의 이산대수문제이다 유한체상의 이산대수문제를 수학적으로 풀기 어렵다는 것이 Diffie-Hellman 키 교환을 뒷받침한다

11.6.4 원시근의 의미 소수 P=13인 경우에 GA mod P의 제곱표를 생각해보자

GA mod P의 제곱표

원시근 21부터 212까지의 값(12개)이 모두 다르다. 즉, 2의 거듭제곱의 결과로서 1부터 12까지의 모든 정수가 등장 이와 같은 성질을 갖는 수 2를 13의 원시근이라고 한다 수 6, 7, 11도 원시근이 된다.

11.6.5 구체적 키 교환의 예 앨리스는 밥에게 2개의 수 P=13 과 G를 송신한다 앨리스는 1부터 P-2까지의 정수로서 랜덤한 수 A=9 를 준비한다 밥은 1부터 P-2까지의 정수 중에서 랜덤한 수 B=7 을 준비한다 앨리스는 밥에게 GA mod P = 29 mod 13 = 5  를 송신 밥은 앨리스에게 GB mod P = 27 mod 13 = 11 을 송신

앨리스가 계산한 키 앨리스는 밥이 보내 온 수 11을 A(=9) 제곱해서 P로 mod를 취한다 (GB mod P)A mod P                       = 8 

밥이 계산한 키 밥은 앨리스가 보내 온 수 5를 B(=7) 제곱해서 P로 mod를 취한다 (GA mod P)B mod P                       = 8 

11.7 패스워드를 기초로 한 암호(PBE) 전사공격을 무력화시키기 위해서는 패스문(Passphrases)을 이용하거나 PBKDF2(RFC 2898)같은 반복되는 패스워드 기반 키 변형함수를 사용한다.

11.7.1 패스워드를 기초로 한 암호 공개 키 암호에 대한 중간자 공격은 디지털 서명에도 위협이 되는 공격이다. 디지털 서명의 중간자 공격은 적극적 공격자 맬로리가 송신자와 수신자의 사이에 들어가 송신자에 대해서는 수신자처럼, 수신자에 대해서는 송신자처럼 거짓 행세를 하는 공격이다. 이것은 디지털 서명의 알고리즘 자체를 깨지 않아도 가능하다.

PBE의 의의 중요한 메시지의 기밀성을 유지하고 싶다. ↓ 메시지를 그대로 디스크에 보존하면 누군가에게 읽혀질지도 모른다.        ↓ 메시지를 그대로 디스크에 보존하면 누군가에게 읽혀질지도 모른다. 키(CEK)를 사용해서 메시지를 암호화하자. 하지만 이번에는 키(CEK)의 기밀성을 유지하지 않으면 안 된다. 키(CEK)를 그 대로 디스크에 보존하는 것은 위험하다. 다른 키(KEK)를 사용해서 키(CEK)를 암호화하자.

PBE의 의의 그렇지만 이번에는 키(KEK)의 기밀성을 유지하지 않으면 안 된다. 이래 가지고는 빙빙 맴도는 것에 지나지 않는다.        ↓ 그럼 키(KEK)는 패스워드로부터 만들기로 하자. 패스워드만으로 만들면 사전 공격을 받을 위험이 있다. 그렇다면 키(KEK)는 솔트와 패스워드로부터 만들기로 하자. 「솔트」는 암호화한 키(CEK)와 함께 보존해 두고, 키(KEK)는 버리기로 하자. 「패스워드」는 자신의 머릿속에 보존해 두기로 하자.

11.7.2 PBE의 암호화 (1) KEK의 생성 (2) 세션 키의 생성과 암호화 (3) 메시지의 암호화

PBE의 암호화

11.7.3 PBE의 복호화 (1) KEK의 복원 (2) 세션 키의 복호화 (3) 메시지의 복호화

PBE의 복호화

11.7.4 솔트의 역할 솔트는 사전 공격을 막기 위해 있다. KEK를 만들 때에 솔트를 사용하지 않았다고 가정하면

사전 공격(dictionary attack) 맬로리는 암호화된 세션 키를 훔친 다음 복호화를 시도한다 KEK의 후보들을 미리 만들어 둠으로써 시도해보는 시간을 대폭 단축할 수가 있다. 이것이 사전 공격(dictionary attack)이다.

솔트(salt)의 역할은? 솔트를 사용하면, 가능한 KEK 후보들의 종류 수가 솔트의 비트 길이만큼 늘어난다

11.7.5 패스워드의 역할 충분한 길이를 갖는 키는 기억할 수 없다 패스워드도 마찬가지로 우리들은 충분한 비트 수를 갖는 패스워드를 기억하지 못한다. 패스워드를 기초로 한 암호(PBE)를 이용하는 경우에는 솔트와 암호화한 CEK를 물리적으로 지키는 방법을 병용해야 한다.

11.7.6 PBE의 개선 KEK를 만들 때 일방향 해시 함수를 여러 번 통과하도록 하면 안전성을 높일 수 있다 사용자 입장에서 해시 함수를 1000회 반복하는 것은 큰 부담이 되지 않는다 적극적 공격자 맬로리에게는 작은 차이가 큰 부담이 된다. 맬로리는 바른 KEK를 찾을 때까지 대량의 패스워드를 시도하지 않으면 안 되기 때문이다.

11.8 안전한 패스워드 안전한 패스워드를 만들어내는 힌트 자신만이 알 수 있는 정보를 사용할 것 복수의 패스워드를 나누어 쓸 것 메모를 유효하게 사용할 것 패스워드의 한계를 알 것

11.8.1 자신만이 알 수 있는 정보 사용 중요한 것의 이름을 사용해서는 안 된다 자신에 관한 정보를 사용해서는 안 된다 타인이 보기 쉬운 정보를 사용해서는 안 된다

11.8.2 복수 패스워드의 사용 정보의 가치에 따라 패스워드를 나누어 써야 한다 좋지 않은 사례 회사 컴퓨터의 로그인용     tUniJww1 집 컴퓨터의 로그인용        tUniJww2 메일의 디지털 서명용        tUniJww3 온라인 쇼핑용              tUniJww4

11.8.3 메모의 유효한 사용 의사난수 생성기로 만든 랜덤한 문자열을 패스워드로 하고, 그 패스워드를 쓴 메모를 안전하게 보존하는 것이 더 좋을 수 있다.

11.8.4 패스워드의 한계 패스워드가 영어 알파벳과 숫자열중의 8문자로 한정되어 있다고 가정해보면 영어 알파벳과 숫자 8문자로 된 문자열의 가능성을 계산해보면 62× 62× 62× 62× 62× 62× 62× 62     = 628     = 218340105584896

이정도의 길이는 전사공격이 가능한 길이이다. 만약 적극적 공격자의 컴퓨터가 1초간에 1억 개의 패스워드를 만들어서 시험할 수 있다면, 약 25일에 모든 패스워드를 체크할 수 있다는 것이 된다.