Download - 제 12 장 난수

Transcript
Page 1: 제  12 장 난수

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

Page 2: 제  12 장 난수

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

Page 3: 제  12 장 난수

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

Page 4: 제  12 장 난수

12.2.1 난수의 용도 암호학적으로 안전한 의사난수생성기 (Cryptogra

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

Page 5: 제  12 장 난수

난수가 필요한 곳대칭 키의 생성

대칭 암호나 메시지 인증 코드에서 사용한다 . 공개 키 쌍의 생성

공개 키 암호나 디지털 서명에서 사용한다 . 초기화 벡터 (IV) 의 생성

블록 암호 모드인 CBC, CFB, OFB 에서 각각 사용한다 . 난스 (nonce) 의 생성

재전송 공격 방지나 블록 암호의 CTR 모드 등에서 사용한다 . 솔트의 생성

패스워드를 기초로 한 암호화 (PBE) 등에서 사용한다 . 일회용 패드

패딩에 사용되는 열을 생성하는 데 사용한다 .

Page 6: 제  12 장 난수

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

간파 당하지 않는다는 것

Page 7: 제  12 장 난수

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

이야기한다 .

Page 8: 제  12 장 난수

12.3.1 난수의 성질 무작위성

통계적인 편중이 없이 엉터리 수열로 되어 있는 성질 .

예측 불가능성 과거의 수열로부터 다음 수를 예측할 수 없다는 성

질 . 재현 불가능성

같은 수열을 재현할 수 없다는 성질 . 재현하기 위해서는 수열 그 자체를 보존해 두는 수밖에 없다 .

Page 9: 제  12 장 난수

난수의 성질

Page 10: 제  12 장 난수

난수의 분류

Page 11: 제  12 장 난수

12.3.2 무작위성 간단히 말하면 「엉터리」로 보이는 성질 의 사 난 수 열 의 통 계 적 인 성 질 을 조 사 해 서

치 우 침 이 없 다 면 , 그 의 사 난 수 열 은 무작위하다고 여겨진다 .

무작위성만을 갖는 의사난수는 「약한 의사난수」라고 한다 .

Page 12: 제  12 장 난수

12.3.3 예측 불가능성 과 거 에 출 력 한 의 사 난 수 열 이 공 격 자 에 게

알려져도 다음에 출력하는 의사난수를 공격자는 알아맞힐 수 없다는 성질

예 측 불 가 능 성 을 갖 는 의 사 난 수 를 「 강 한 의사난수」라 한다 .

Page 13: 제  12 장 난수

12.3.4 재현 불가능성 어느 난수열과 동일한 수열을 재현할 수 없다고

하는 성질 소프트웨어만으로는 재현 불가능성을 갖는

난수열을 만들 수 없다 소프트웨어가 생성하는 수열은 언젠가는 반복이

된다 . 다양한 하드웨어로부터 얻어진 정보를 기초로

생성한 수열은 재현 불가능성을 갖는 난수열이 된다

재현 불가능성을 갖는 난수를 「진정한 난수」 라고 한다

Page 14: 제  12 장 난수

12.3.5 무작위성과 예측 불가능성 비교 결정론의 우주론적 가정 하에서 본다면 우주에는

무 작 위 성 이 란 존 재 하 지 않 으 며 오 직 예 측 불가능성만 있다 .

수학적으로 정의된 수열을 살펴보면 랜덤한 수열의 한 덩어리가 반복되는 특성을 가지고 있게 된다 .

그러나 우리가 설명할 수 있는 메커니즘에 의해 생성되기 때문에 이와 같은 난수를 의사난수라고 부른다 .

이러한 메커니즘을 모르는 사람들일 볼때에 의사난수는 예측 불가능한 것으로 보인다 .

Page 15: 제  12 장 난수

12.4 의사난수 생성기 하드웨어로 난수를 생성할 경우 , 열이나 음의

변화 등의 예측이나 재현이 사실상 불가능한 자연 현상을 센서로 감지해서 그 결과를 기초로 난수열을 생성한다 .

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

Page 16: 제  12 장 난수

의사난수 생성기 (pseudo random number generator; PRNG) 난수를 생성하는 소프트웨어 소프트웨어만으로는 진정한 난수를 생성할 수가

없기 때문에 , 「의사」난수 생성기라 부른다

Page 17: 제  12 장 난수

12.4.1 의사난수 생성기의 구조 의사난수 생성기는 「내부 상태」를 가지며 ,

외부에서 주어진 「종자 (Seed) 」를 기초로 의사난수열을 생성한다

Page 18: 제  12 장 난수

의사난수 생성기의 구조

Page 19: 제  12 장 난수

의사난수 생성기의 내부 상태 의사난수 생성기가 관리하고 있는 메모리 값 의사난수 생성기는 메모리의 값 ( 내부 상태 ) 을

기초로 해서 계산을 수행하고 , 그 계산 결과를 의사난수로서 출력한다 .

그리고 다음 의사난수의 요구에 대비해서 , 자신의 내부 상태를 변화시킨다

Page 20: 제  12 장 난수

의사난수 생성기의 「종자」 의사난수 생성기로 의사난수를 생성하기

위해서는 의사난수의 종자 (seed) 라 불리는 정보가 필요하다 .

의사난수의 종자는 의사난수 생성기의 내부 상태를 초기화하기 위해 이용된다 .

의사난수의 「종자」는 랜덤한 비트 열이다 . 「종자」에 의해 자신만이 사용할

의사난수열을 생성할 수 있다 . 의사난수 생성기는 모두가 공유하지만 , 「종

자」는 자신만의 비밀로 하지 않으면 안 된다 .

Page 21: 제  12 장 난수

암호 키와 의사난수의 종자

Page 22: 제  12 장 난수

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

Page 23: 제  12 장 난수

12.5.1 엉터리 방법 복잡하게만 한 알고리즘을 사용해서 수의 열을

생성시키면 , 대부분의 경우는 짧은 주기 ( 짧은 수열의 반복 ) 에 빠지게 된다 .

암호 기술에서 사용하는 난수는 예측 불가능성을 가질 필요가 있으므로 주기가 짧아서는 안 된다 .

Page 24: 제  12 장 난수

12.5.2 선형합동법 가장 많이 사용되는 의사난수 생성기 무작위성을 갖는 의사난수열을 간단히 생성할 수

있다 . 「예측 불가능성」은 갖지 못한다 . 암호 기술에 사용할 수는 없다

Page 25: 제  12 장 난수

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

Page 26: 제  12 장 난수

12.5.3 일방향 해시 함수를 사용하는 방법 일 방 향 해 시 함 수 ( 예 를 들 면 SHA-1) 를

사용해서 예측 불가능성을 갖는 의사난수 열 (강한 의사난수 ) 을 생성하는 의사난수 생성기를 만들 수 있다

Page 27: 제  12 장 난수

의사난수 생성기의 절차(1) 의사난수의 종자를 사용해서 내부 상태 (카운터 ) 를 초기화한다 .

(2) 일방향 해시 함수를 사용해서 카운터의 해시 값을 얻는다 .

(3) 그 해시 값을 의사난수로서 출력한다 . (4) 카운터를 1 증가시킨다 . (5) 필요한 만큼의 의사난수가 얻어질 때까지 (2)~

(4) 를 반복한다 .

Page 28: 제  12 장 난수

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

Page 29: 제  12 장 난수

12.5.4 암호를 사용하는 방법 암호를 사용해서 「강한 의사난수」를 생성하는

의사난수 생성기를 만들 수 있다 ( 그림 12-7) AES 와 같은 대칭 암호나 RSA 와 같은 공개 키

암호 중 어느 것을 사용해도 상관없다 .

Page 30: 제  12 장 난수

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

(4) 를 반복한다 .

Page 31: 제  12 장 난수

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

Page 32: 제  12 장 난수

12.5.5 ANSI X9.17

Page 33: 제  12 장 난수

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

Page 34: 제  12 장 난수

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

때까지 반복한다 .

Page 35: 제  12 장 난수

12.6 난수와 의사난수의 차이점 의사난수란 정확히 말해서 난수처럼 보이는

수이지만 실제로는 정확한 의미로서 난수가 아닌 수이다 .

의 사 난 수 생 성 기 를 통 해 생 성 되 는 난 수 는 통 계 적 으 로 는 무 작 위 성 을 가 지 고 있 지 만 입력되는 자료가 같으면 출력되는 결과도 항상 같게 되는 인과관계가 분명한 존재한다 .

Page 36: 제  12 장 난수

의사난수의 장점 생성하기 쉽다 동일한 난수를 생성하고 싶을 경우에 입력 값만

동일하게 주게 되면 된다 . 반복적으로 사용할 수 있고 소프트웨어를 검사하거나 수정할 때 매우 유용하다 .

Page 37: 제  12 장 난수

12.6.1 난수의 역사 1927년 영국의 케임브리지 대학 출판사에서는 Leo

nard H.C Tippet 가 개발한 41,600 개의 숫자로 이루어진 난수표를 발표

1947 년에는 RAND 회사에서 룰렛 바퀴를 모사한 전자식 기계를 이용하여 난수를 생성하였다 .

1955년에 편차가 100,000 인 정규분포를 갖는 Million Random Digits 를 출판하였다 .

John von Neumann 은 컴퓨터에 기초한 난수 생성의 창시자

1951년에 Derrick Henry Lehmer 가 선형합동법

Page 38: 제  12 장 난수

12.6.2 난수와 암호학 암호학적인 면에서 살펴보면 의사난수 ( 하드웨어적으로

만들어졌건 소프트웨어적으로 만들어졌건 간에 ) 를 사용하는 것이 사실은 안전하지 못하다 .

암호 시스템을 설계하는 사람과 사용자는 모두 다 난수의 무작위성을 매우 신중하게 다루어야 한다 .

의 사 난 수 의 패턴을 찾아 내 는 것 이 옛날보 다 훨씬 쉬워졌다는 것이다 .

결국 난수를 더욱 더 신중하게 선택해야 한다는 것이 우리가 암호학을 배우면서 깨우쳐야 할 중요한 사실이다 .

Page 39: 제  12 장 난수

12.7 의사난수 생성기에 대한 공격 암호에 비하면 의사난수 생성기는 두드러지지

않는 존재가 아니다 하지만 의사난수 생성기도 공격당한다 그러나 의사난수 생성기는 「키를 만든다」라고

하는 중요한 역할을 하고 있기 때문에 , 빈번히 공격의 대상이 된다 .

Page 40: 제  12 장 난수

12.7.1 종자에 대한 공격 의사난수의 「종자 (Seed) 」는 암호의 「키」에

필적하는 중요성을 갖는다 . 의사난수의 종자가 공격자에게 알려져 버리면 ,

그 의사난수 생성기가 생성하는 의사난수열은 모두 공격자에게 알려지게 된다

재현 불가능성을 갖는 「진정한 난수」를 종자로 할 필요가 있다 .

Page 41: 제  12 장 난수

12.7.2 랜덤 풀에 대한 공격 난수가 필요할 때 그 자리에서 진정한 난수를

만들어내는 것이 아니라 , 「랜덤 풀」이라 불리는 파일에 랜덤한 비트 열을 비축해 두는 방법이 있다 .

랜덤풀에 대한 공격을 대비해야 한다


Top Related