제 12장 난수 예측 불가능성의 원천.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

Ⅱ 세포의 주기와 생명의 연속성 Ⅱ 세포의 주기와 생명의 연속성 - 1. 세포주기와 세포분열.
I. 프로젝트 동기 II. 프로젝트 목표 III. 파일시스템 IV. 암호화 및 복호화 V. 인터페이스 VI. FBR READ/WRITE VII. 프로그램 흐름도 VIII. 미 구현 사항 IX. 프로젝트 기대효과 X. 프로그램 요구사항 및 팀원 역할분담 XI. 시연 XII.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
컴퓨터와 인터넷.
재료수치해석 HW # 박재혁.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
제 8장 메시지 인증 코드 메시지가 보낸 그대로 왔는가?.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Chapter 3 Symmetric Key Crypto
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
제 9 장 구조체와 공용체.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
10장 랜덤 디지털 신호처리 1.
교과목 소개 정보보호.
File Depender 중간 발표.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
2007 1학기 11 프로젝트 기초 실습.
상관함수 correlation function
11장. 1차원 배열.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
메모리 관리 & 동적 할당.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
정다면체, 다면체와 정다각형, 다각형의 관계 한림초등 학교 영제 6학년 5반 송명훈.
8장. spss statistics 20의 데이터 변환
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
제 13장 PGP 암호 기술을 조합하는 기술.
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
제 Ⅲ부 키, 난수, 응용 기술.
알고리즘 알고리즘이란 무엇인가?.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
에어 PHP 입문.
바넘효과 [Barnum effect] 사람들이 보편적으로 가지고 있는 성격이나 심리적 특징을 자신만의 특성으로 여기는 심리적 경향. 19세기 말 곡예단에서 사람들의 성격과 특징 등을 알아 내는 일을 하던 바넘(P.T. Barnum)에서 유래하였다. 1940년대 말 심리학자인.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Chapter 1 단위, 물리량, 벡터.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
상관계수.
실습 UBLAB.
수치해석 ch3 환경공학과 김지숙.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
암호 시스템 (Crypto system) 신효철
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
진리표를 이용한 타당성 증명 진리표(truth table) : 단순 문장들이 진리값을 상이하게 가질 수 있는 가능한 모든 경우를 남김없이 열거한 표 (ex) 오늘은 날씨가 맑거나 비가 올 것이다. 오늘은 날씨가 맑다 비가 온다 오늘은 날씨가 맑거나 비가 올 것이다. T.
7 생성자 함수.
6 객체.
꽃잎의 수로 피보나치 수열하기 장전초등학교 6학년 신찬유.
20 XMLHttpRequest.
피보나치수열에 대하여 한림초 5학년 신동오.
Presentation transcript:

제 12장 난수 예측 불가능성의 원천

12.1 주요 내용 난수가 사용되는 암호 기술 난수의 성질 의사난수 생성기 구체적인 의사난수 생성기 의사난수 생성기에 대한 공격

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

12.2.1 난수의 용도 암호학적으로 안전한 의사난수생성기(Cryptographically Secure Pseudo-Random Number Generator:CSPRNG)는 암호학에서 사용할 수 있을 정도로 충분한 난수 성질을 갖고 있는 난수를 생성하는 의사난수생성기(PRNG)를 말한다.

난수가 필요한 곳 대칭 키의 생성 공개 키 쌍의 생성 초기화 벡터(IV)의 생성 난스(nonce)의 생성 솔트의 생성 대칭 암호나 메시지 인증 코드에서 사용한다. 공개 키 쌍의 생성 공개 키 암호나 디지털 서명에서 사용한다. 초기화 벡터(IV)의 생성 블록 암호 모드인 CBC, CFB, OFB에서 각각 사용한다. 난스(nonce)의 생성 재전송 공격 방지나 블록 암호의 CTR 모드 등에서 사용한다. 솔트의 생성 패스워드를 기초로 한 암호화(PBE) 등에서 사용한다. 일회용 패드 패딩에 사용되는 열을 생성하는 데 사용한다.

결국 난수를 사용하는 목적 간파 당하지 않도록 하기 위한 것 예측 불가능성 간파 당하지 않는다는 것

12.3 난수의 성질 난수를 정확하게 정의하는 것은 곤란하다 여기에서는 암호 기술에 관련된 성질에 한정해서 이야기한다.

12.3.1 난수의 성질 무작위성 예측 불가능성 재현 불가능성 통계적인 편중이 없이 엉터리 수열로 되어 있는 성질. 과거의 수열로부터 다음 수를 예측할 수 없다는 성질. 재현 불가능성 같은 수열을 재현할 수 없다는 성질. 재현하기 위해서는 수열 그 자체를 보존해 두는 수밖에 없다.

난수의 성질

난수의 분류

12.3.2 무작위성 간단히 말하면 「엉터리」로 보이는 성질 의사난수열의 통계적인 성질을 조사해서 치우침이 없다면, 그 의사난수열은 무작위하다고 여겨진다. 무작위성만을 갖는 의사난수는 「약한 의사난수」라고 한다.

12.3.3 예측 불가능성 과거에 출력한 의사난수열이 공격자에게 알려져도 다음에 출력하는 의사난수를 공격자는 알아맞힐 수 없다는 성질 예측 불가능성을 갖는 의사난수를 「강한 의사난수」라 한다.

12.3.4 재현 불가능성 어느 난수열과 동일한 수열을 재현할 수 없다고 하는 성질 소프트웨어만으로는 재현 불가능성을 갖는 난수열을 만들 수 없다 소프트웨어가 생성하는 수열은 언젠가는 반복이 된다. 다양한 하드웨어로부터 얻어진 정보를 기초로 생성한 수열은 재현 불가능성을 갖는 난수열이 된다 재현 불가능성을 갖는 난수를 「진정한 난수」 라고 한다

12.3.5 무작위성과 예측 불가능성 비교 결정론의 우주론적 가정 하에서 본다면 우주에는 무작위성이란 존재하지 않으며 오직 예측 불가능성만 있다. 수학적으로 정의된 수열을 살펴보면 랜덤한 수열의 한 덩어리가 반복되는 특성을 가지고 있게 된다. 그러나 우리가 설명할 수 있는 메커니즘에 의해 생성되기 때문에 이와 같은 난수를 의사난수라고 부른다. 이러한 메커니즘을 모르는 사람들일 볼때에 의사난수는 예측 불가능한 것으로 보인다.

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

의사난수 생성기(pseudo random number generator; PRNG) 난수를 생성하는 소프트웨어 소프트웨어만으로는 진정한 난수를 생성할 수가 없기 때문에, 「의사」난수 생성기라 부른다

12.4.1 의사난수 생성기의 구조 의사난수 생성기는 「내부 상태」를 가지며, 외부에서 주어진 「종자(Seed)」를 기초로 의사난수열을 생성한다

의사난수 생성기의 구조

의사난수 생성기의 내부 상태 의사난수 생성기가 관리하고 있는 메모리 값 의사난수 생성기는 메모리의 값(내부 상태)을 기초로 해서 계산을 수행하고, 그 계산 결과를 의사난수로서 출력한다. 그리고 다음 의사난수의 요구에 대비해서, 자신의 내부 상태를 변화시킨다

의사난수 생성기의 「종자」 의사난수 생성기로 의사난수를 생성하기 위해서는 의사난수의 종자(seed)라 불리는 정보가 필요하다. 의사난수의 종자는 의사난수 생성기의 내부 상태를 초기화하기 위해 이용된다. 의사난수의 「종자」는 랜덤한 비트 열이다. 「종자」에 의해 자신만이 사용할 의사난수열을 생성할 수 있다. 의사난수 생성기는 모두가 공유하지만, 「종자」는 자신만의 비밀로 하지 않으면 안 된다.

암호 키와 의사난수의 종자

12.5 구체적인 의사난수 생성기 엉터리 방법 선형합동법 일방향 해시 함수를 사용하는 방법 암호를 사용하는 방법 ANSI X9.17

12.5.1 엉터리 방법 복잡하게만 한 알고리즘을 사용해서 수의 열을 생성시키면, 대부분의 경우는 짧은 주기(짧은 수열의 반복)에 빠지게 된다. 암호 기술에서 사용하는 난수는 예측 불가능성을 가질 필요가 있으므로 주기가 짧아서는 안 된다.

12.5.2 선형합동법 가장 많이 사용되는 의사난수 생성기 무작위성을 갖는 의사난수열을 간단히 생성할 수 있다. 「예측 불가능성」은 갖지 못한다. 암호 기술에 사용할 수는 없다

선형합동법에 의한 의사난수 생성기

12.5.3 일방향 해시 함수를 사용하는 방법 일방향 해시 함수(예를 들면 SHA-1)를 사용해서 예측 불가능성을 갖는 의사난수 열(강한 의사난수)을 생성하는 의사난수 생성기를 만들 수 있다

의사난수 생성기의 절차 (1) 의사난수의 종자를 사용해서 내부 상태(카운터)를 초기화한다. (2) 일방향 해시 함수를 사용해서 카운터의 해시 값을 얻는다. (3) 그 해시 값을 의사난수로서 출력한다. (4) 카운터를 1 증가시킨다. (5) 필요한 만큼의 의사난수가 얻어질 때까지 (2)~(4)를 반복한다.

일방향 해시 함수를 사용해서 의사난수 생성기를 만든다

12.5.4 암호를 사용하는 방법 암호를 사용해서 「강한 의사난수」를 생성하는 의사난수 생성기를 만들 수 있다(그림 12-7) AES와 같은 대칭 암호나 RSA와 같은 공개 키 암호 중 어느 것을 사용해도 상관없다.

의사난수 생성기의 절차 (1) 내부 상태(카운터)를 초기화한다. (2) 키를 사용해서 카운터를 암호화한다. (3) 그 암호문을 의사난수로서 출력한다. (4) 카운터를 1 증가시킨다. (5) 필요한 만큼의 의사난수가 얻어질 때까지 (2)~(4)를 반복한다.

암호를 사용해서 의사난수 생성기를 만든다

12.5.5 ANSI X9.17

ANSI X9.17의 방법으로 의사난수 생성기를 만든다

의사난수 생성기의 절차 (1) 내부 상태를 초기화한다. (2) 현재 시각을 암호화해서 「뒤섞기 역」을 만든다. (3) 내부 상태와 뒤섞기 역의 XOR을 취한다. (4) 절차(3)의 결과를 암호화한다. (5) 절차(4)의 결과를 의사난수로서 출력한다. (6) 절차(4)의 출력과 뒤섞기 역의 XOR을 취한다. (7) 절차(6)의 결과를 암호화한다. (8) 절차(7)의 결과를 새로운 내부 상태로 한다. (9) 절차(2)~(8)을 필요한 만큼의 의사난수가 얻어질 때까지 반복한다.

12.6 난수와 의사난수의 차이점 의사난수란 정확히 말해서 난수처럼 보이는 수이지만 실제로는 정확한 의미로서 난수가 아닌 수이다. 의사난수 생성기를 통해 생성되는 난수는 통계적으로는 무작위성을 가지고 있지만 입력되는 자료가 같으면 출력되는 결과도 항상 같게 되는 인과관계가 분명한 존재한다.

의사난수의 장점 생성하기 쉽다 동일한 난수를 생성하고 싶을 경우에 입력 값만 동일하게 주게 되면 된다. 반복적으로 사용할 수 있고 소프트웨어를 검사하거나 수정할 때 매우 유용하다.

12.6.1 난수의 역사 1927년 영국의 케임브리지 대학 출판사에서는 Leonard H.C Tippet가 개발한 41,600 개의 숫자로 이루어진 난수표를 발표 1947년에는 RAND 회사에서 룰렛 바퀴를 모사한 전자식 기계를 이용하여 난수를 생성하였다. 1955년에 편차가 100,000인 정규분포를 갖는 Million Random Digits 를 출판하였다. John von Neumann은 컴퓨터에 기초한 난수 생성의 창시자 1951년에 Derrick Henry Lehmer가 선형합동법

12.6.2 난수와 암호학 암호학적인 면에서 살펴보면 의사난수(하드웨어적으로 만들어졌건 소프트웨어적으로 만들어졌건 간에)를 사용하는 것이 사실은 안전하지 못하다. 암호 시스템을 설계하는 사람과 사용자는 모두 다 난수의 무작위성을 매우 신중하게 다루어야 한다. 의사난수의 패턴을 찾아내는 것이 옛날보다 훨씬 쉬워졌다는 것이다. 결국 난수를 더욱 더 신중하게 선택해야 한다는 것이 우리가 암호학을 배우면서 깨우쳐야 할 중요한 사실이다.

12.7 의사난수 생성기에 대한 공격 암호에 비하면 의사난수 생성기는 두드러지지 않는 존재가 아니다 하지만 의사난수 생성기도 공격당한다 그러나 의사난수 생성기는 「키를 만든다」라고 하는 중요한 역할을 하고 있기 때문에, 빈번히 공격의 대상이 된다.

12.7.1 종자에 대한 공격 의사난수의 「종자(Seed)」는 암호의 「키」에 필적하는 중요성을 갖는다. 의사난수의 종자가 공격자에게 알려져 버리면, 그 의사난수 생성기가 생성하는 의사난수열은 모두 공격자에게 알려지게 된다 재현 불가능성을 갖는 「진정한 난수」를 종자로 할 필요가 있다.

12.7.2 랜덤 풀에 대한 공격 난수가 필요할 때 그 자리에서 진정한 난수를 만들어내는 것이 아니라, 「랜덤 풀」이라 불리는 파일에 랜덤한 비트 열을 비축해 두는 방법이 있다. 랜덤풀에 대한 공격을 대비해야 한다