computer securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_random... · 2021. 1. 19. ·...

22
Computer Security Ch7: Random Number Generator Howon Kim 2017.4

Upload: others

Post on 13-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

Computer SecurityCh7: Random Number Generator

Howon Kim

2017.4

Page 2: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

2

Agenda

◼ Random Number Generation

Page 3: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

핵심정리

◼ 난수 혹은 의사 난수 생성은 많은 암호 함수에서필요로 함

◼ 필수조건❑ 생성되는 수의 스트림이 예상할 수 없는 수

Page 4: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ 난수

❑ 특정한 배열 순서나 규칙을 가지지 않는 연속적인 임의의 수

◼ 의사난수(Pseudo random number)

❑ 컴퓨터에 의해서 만들어지는 난수, 매우 긴 주기를 가지고있는 숫자 열

◼ 임의성

❑ 균일분포

◼ 수열의 비트 분포가 균일, 0과 1의 출현빈도가 거의 동일해야 함

❑ 독립성

◼ 수열의 어느 부분 수열도 다른 부분 수열로부터 추정될 수 없음

◼ 비예측성

❑ 수열의 잇따른 다음 수의 순서에 대해 예측이 불가능해야 함

Page 5: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ TRNG(True Random Number Generator : 진 난수 생성기)

❑ 실제적으로 랜덤한 소스를 입력으로 사용

◼ 키보드 입력 타이밍 패턴 및 마우스 움직임

◼ 디스크의 전기적 활동, 시스템 클럭의 순간 값

◼ PRNG(Pseudo Random Number Generator : 의사난수발생기)

❑ 고정값 seed를 입력받아 결정적 알고리즘을 사용하여 출력비트열 생성

❑ 제한이 없는 비트열 생성하는데 사용

◼ 알고리즘과 시드를 알고 있는 공격자는 비트열 재생성 가능

◼ PRF(Pseudo Random Function : 의사난수함수)

❑ 고정된 길이의 의사 난수 비트열을 생산하는데 사용

Page 6: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ 난수와 의사난수 생성기

Conversion to binary

Source of truerandomness

RandomBit stream

TRNG

Deterministicalgorithm

seed

PseudorandomBit stream

Deterministicalgorithm

seed

PseudorandomValue

PRF

Context-specific values

TRNG PRNG PRF

Page 7: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ PRNG 요구 사항❑ Seed를 알지못하는 공격자가 의사 난수열을 결정할 수가없어야 함

❑ 임의성(Randomness)

◼ 생성된 비트 스트림이 결정적일지라도 랜덤하게 보여야 함

◼ 균일성

◼ 난수 또는 의사 난수 비트열의 생성에 있어서 0과 1은 거의동일하게 존재

◼ 확장성

◼ 비트열이 랜덤하면 무작위로 추출된 어떤 비트열도 랜덤해야 함

◼ 일관성

◼ 생성기의 동작은 초기값 전반에 대해 일관되어야 함

Page 8: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ PRNG 요구 사항(계속)

❑ 비예측성(Unpredictability)

◼ 수열의 잇따른 다음수의 순서에 대해 예측이 불가능해야 함

◼ 전 방향 비예측성

◼ 이전 비트들에 대한 정보가 있다고 하더라도 다음 출력 비트는 예측할 수 없어야함

◼ 후 방향 비예측성

◼ 생성된 어떠한 값의 정보를 통해서도 seed를 결정할 수 없어야 함

❑ 시드요구사항(Seed Requirements)

◼ Seed는 예측 불가능해야 함

◼ Seed는 난수 또는 의사난수이어야 함

◼ TRNG에 의해 seed생성

◼ SP800-90에서 권고

True random number generator

(TRNG)

Pseudorandom

number generator

(PRNG)

Entropy source

seed

PseudorandomBit stream

Page 9: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.1 의사 난수 생성의 원리

◼ 알고리즘 설계❑ 특정 목적을 위한 알고리즘

◼ 의사난수 비트 스트림 생성을 목적으로 특정하고 유일하게설계된 알고리즘

◼ 다양한 PRNG 응용에 사용

❑ 기존의 암호 알고리즘에 기반을 둔 알고리즘

◼ 암호알고리즘은 입력을 난수로 만드는 효과가 있음

◼ 대칭블록암호 : 7.3절

◼ 비대칭 암호 : 10장

◼ 해쉬함수와 메시지 인증 코드 : 12장

Page 10: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.2 의사 난수 생성기◼ 선형합동생성기(Linear congruential generator)

❑ Lehmer에 의해 처음 제안된 알고리즘

❑ 혹은 Park-Miller Random Number Generator라고 함

❑ 선형 합동 방법

❑ a, c및 m값의 선정은 좋은 난수 생성기의 개발에 중요

❑ 난수 생성기의 평가 기준

◼ T1 : 난수 생성 함수는 최대 생성 주기를 가져야 한다. 즉, 함수는 반복되기 전에 0과 m사이의모든 값을 생성해야 한다.

◼ T2 : 생성된 수열은 랜덤하게 보여야 한다.

◼ T3 : 함수는 32비트 연산을 효율적으로 수행해야 한다.

m 법(modulus)m>0a승수(multiplier)0<a<mc증분(increment)0≤c<m

X0초기치 혹은 seed0≤X0<m

Xn+1 = (aXn+c)mod m

m is prime number or power of prime number.

Page 11: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.2 의사 난수 생성기

◼ 생성된 수의 노출 가능성❑ 공격자가 선형 합동 알고리즘 사용과 파라미터를 알 경우, 알고리즘에 의해 생성된 수를 하나만 알아도 나머지 수를모두 알 수 있게 됨

❑ 선형 합동 알고리즘의 사용 여부를 안다면, 생성된 수의순서만으로도 파라미터를 알아낼 수 있음

◼ 해결방법❑ 내부 시스템 클럭사용

◼ 매번 (현재의 클럭 값 mod m) 을 새로운 seed로 하여 생성

◼ 현재 클럭 값을 난수에 더하여 mod m의 값을 사용

Page 12: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.2 의사 난수 생성기

◼ Blum Blum Shub 생성기

❑ 개발자들의 이름에서 유래 [BLUM86]

❑ 어떠한 특정 목적의 알고리즘에서도 암호학적 강도를 증명하는가장 강력하게 통용되는 수단

❑ 암호학적으로 안전한 의사난수 비트 생성기로 불림

◼ CSPRBG : Cryptographically Secure Pseudo Random Bit Generator

❑ Iterative equation에서 least significant bit 사용

❑ Is unpredictable given any run of bits

❑ Slow, since very large numbers must be used

❑ Two slow for cipher use, good for key generation.

❑ n의 소인수 분해 문제에 대한 어려움에 기반

◼ n이 주어졌을 때, n의 두 소수 인수 p와 q를 알아야 함

p ≡ q ≡ 3(mod 4)

n = p × q

gcd(n, s)=1, s선정(서로소)

X0 = S2

mod n

for i = 1 to ∞

Xi = (Xi-1)2

mod n

Bi = Xi mod 2

Page 13: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.2 의사 난수 생성기

❑ BBS 생성기의 연산 예

◼ n = 192648 = 383 × 503

◼ seed s = 101355

i Xi Bi

0 20749

1 143135 1

2 177671 1

3 97048 0

4 89992 0

5 174051 1

6 80649 1

7 45663 1

8 69442 0

9 186894 0

10 177046 0

I Xi Bi

11 137922 0

12 123175 1

13 8630 0

14 114386 0

15 14863 1

16 133015 1

17 106065 1

18 45870 0

19 137171 1

20 48060 0

Page 14: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

14

Using Block Ciphers as PRNGs

◼ for cryptographic applications, we can use a block cipher to generate random numbers

◼ It is used for creating session keys from master key

◼ Counter Mode

Xi = EKm[i]

< Pseudorandom Number Generationfrom a counter>

◼ A counter with period N provides input to the encryption logic

◼ For example, if 56-bit DES keys are to be produced, then a counter with period 256 can be used.

◼ After each key is produced, the counter is incremented by one. Thus, the pseudorandom numbers produced

Page 15: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

15

ANSI X9.17 PRG◼ Input:

❑ Two pseudorandom inputs drive the generator.

❑ One is a 64-bit representation of the current date and time, which is updated on each number generation.

❑ The other is a 64-bit seed value; this is initialized to some arbitrary value and is updated during the generation process.

◼ Keys:

❑ The generator makes use of three triple DES encryption modules

❑ All three make use of the same pair of 56-bit keys, which must be kept secret and are used only for pseudorandom number generation.

◼ Output:

❑ The output consists of a 64-bit pseudorandom number and a 64-bit seed value.

Page 16: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

16

ANSI X9.17 PRG

64 bits

EDE – Triple DES(Enc-Dec-Enc.)

1. Compute I = DESK(DTi)2. Output Ri=DESK(I xor Vi)

Update the seed Vito Vi+1=DESK(Ri xor I)

X9.17 will be improved by using AES !

DTi : current Data & Time Vi : seed value Ri : Pseudorandom number (output)K1,K2 : DES Keys (in this example, Triple-DES keys)

Page 17: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.3 블록 암호를 사용한 의사 난수 생성

❑ PRNG 성능실험Key : cfb0ef3108d49cc4562d5810b0a9af60

V : 4c89af496176b728ed1e2ea8ba27f5a4

Output BlockFraction of One

Bit

Fraction of Bits that

Match with Preceding

Block

1786f4c7ff6e291dbdfdd90ec3453176 0.57 -

5e17b22b14677a4d66890f87565eae64 0.51 0.52

fd18284ac82251dfb3aa62c326cd46cc 0.47 0.54

c8e545198a758ef5dd86b41946389bd5 0.50 0.44

fe7bae0e23019542962e2c52d215a2e3 0.47 0.48

14fdf5ec99469598ae0379492803accd 0.49 0.52

6aeca972e5a3ef17bd1a1b775fc8b929 0.57 0.48

f7e97badf359d128f00d9b4ae323bd64 0.55 0.45

Output BlockFraction of One

Bit

Fraction of Bits that

Match with Preceding

Block

1786f4c7ff6e291dbdfdd90ec3453176 0.57 -

60809669a3e092a01b463472fdcae420 0.41 0.41

d4e6e170b46b0573eedf88ee39bff33d 0.59 0.45

5f8fcfc5deca18ea246785d7fabc76f8 0.59 0.52

90e63ed27bb07868c753545bdd57ee28 0.53 0.52

0125856fdf4a17f747c7833695c52235 0.50 0.47

f4be2d179b0f2548fd748c8fc7c81990 0.51 0.48

1151fc48f90eebac658a3911515c3c66 0.47 0.45

OFB를이용한 PRNG의결과예 CTR을이용한 PRNG의결과예

Page 18: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.6 진 난수 생성기

◼ 엔트로피 소스❑ 진 난수 생성기는 임의성을 만들기 위해 비 결정적소스 사용◼ 예측 불가능한 자연계의 처리 과정들을 측정하는 방법 사용

◼ 전리 방사선의 펄스 탐지기, 가스 방전광, 누전 축전기

◼ 인텔[JUN99]◼ 사용되지 않는 저항기들 사이에서 측정된 전압을 증폭시켜열잡음을 샘플링하는 상업화된 칩 개발

❑ 임의성의 소스 후보[RFC 4086]◼ 음향/영상입력

◼ 실세계의 아날로그 소스를 디지털화하는 입력들을 가지고 작동

◼ 디스크 드라이브◼ 환경에 따라 회전 속도가 랜덤하게 변동되는 것을 측정

Page 19: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

19

Natural Random Noise◼ best source is natural randomness in real world

◼ find a regular but random event and monitor

◼ do generally need special h/w to do this ❑ eg. radiation counters, radio noise, audio noise, thermal

noise in diodes, leaky capacitors, mercury discharge tubes etc

◼ starting to see such h/w in new CPU's

◼ problems of bias or uneven distribution in signal ❑ have to compensate for this when sample and use

❑ best to only use a few noisiest bits from each sample

Page 20: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

7.6 진 난수 생성기

◼ 편향(skew)

❑ deskewing 기법(편향보정기법)◼ 0또는 1 중 한쪽으로 편향된 출력물이 생성될 가능성존재

◼ 이를 감소시키거나 없애기 위한 기법

◼ 해쉬함수를 이용(MD5, SHA-1 등)

◼ 운영체제는 난수를 생성하는 내장형 메커니즘 제공

◼ 리눅스는 4개의 엔트로피 소스(키보드, 마우스, 디스크I/O연산, 특정 인터럽트)를 사용하여 버퍼 풀입력/저장하고, 이 중 일정 수를 선택하여 SHA-1 해쉬함수로 연산함

Page 21: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

21

Next…

◼ We will study more on Number Theory…

Page 22: Computer Securityinfosec.pusan.ac.kr/wp-content/uploads/2019/04/7_Random... · 2021. 1. 19. · 해쉬함수와메시지인증코드: 12장. 7.2 ... 10 177046 0 I X i B i 11 137922

22

Q&A