[정보보안] 4. 난수
2021. 10. 25. 15:59ㆍComputer Sciences/Security
1. 난수란?
확률적인 현상의 표현이다. 확률변수라고도 한다.
2. 난수의 조건
- 주기성이 없을 것: 예측이 불가능할 것
- 무작위성: 같은 확률이 아닐 것
- 재현 불가능성: 같은 난수가 다시 나타나지 않을 것(이를 진성난수라고 함)
- 계산시간이 짧을 것(컴퓨터 수행시간)
- 일양성과 독립성
- 일양성: 확률의 값은 0과 1 사이의 값인 성질
- 독립성: 앞에 나온 확률과 무관한 성질
3. 난수 발생 방법
- 디지털 컴퓨터에 의한 방법
- 프로그램에 의한 방법
디지털 컴퓨터에 의한 방법
- mid square method(MSM: 중앙제곱방식)
- mid product method(MPM: 중앙승산방식)
- k product method(KPM: 상수승산방식)
- 3가지 방법 모두 우수한 방법이다.
프로그램에 의한 방법
- Congruential Generator
4. 난수의 발생 과정
Mid Square Method
- 폰 노이만이 제안한 방법이다.
- 난수로 원하는 자리수 크기의 숫자를 임의로 선정한다.
- 그 수를 제곱한다.
- 난수를 발생시키기 원하는 자리수만큼 가운데 n을 선택하여 난수로 사용한다.
- 2단계로 돌아가서 반복한다.
- 예제
- 25를 선택하여 난수 5개를 발생시켜 보시오.
- 25 * 25 = 0625 → 0.62
- 62 * 62 = 3844 → 0.84
- 84 * 84 = 7056 → 0.05
- 05 * 05 = 0025 → 0.02
- 02 * 02 = 0004 → 0.00
- 이렇게 난수가 갑자기 뚝 떨어지는 현상을 degenerative 현상이라고 한다.
- 25를 선택하여 난수 5개를 발생시켜 보시오.
Mid Product Method
- 2개의 초기 숫자를 선정하여 곱한다.
- 곱한 결과 숫자의 가운데 부분을 100으로 나누어 난수로 사용한다.
- 2개의 숫자 중 앞의 것을 버리고 2단계 과정에서 얻어진 숫자와 대체한다.
- 2단계로 돌아가서 반복한다.
- 예제
- 27, 88을 선택하여 난수 5개를 발생시켜보시오.
- 27 * 88 = 2376 → 0.37
- 88 * 37 = 3256 → 0.25
- 37 * 25 = 0925 → 0.92
- 25 * 92 = 2300 → 0.30
- 92 * 30 = 2760 → 0.76
- 27, 88을 선택하여 난수 5개를 발생시켜보시오.
K Product Method
Mid Product Method의 과정 중 2단계에서 새로운 상수를 지정하지 않고 상수 하나를 고정시켜서 사용한다.
- 예제
- 27, 88을 선택하여 난수 5개를 발생시켜보시오(27을 상수로 고정).
- 27 * 88 = 2376 → 0.37
- 27 * 37 = 0999 → 0.99
- 27 * 99 = 2673 → 0.67
- 27 * 67 = 1809 → 0.80
- 27 * 80 = 2160 → 0.16
- 27, 88을 선택하여 난수 5개를 발생시켜보시오(27을 상수로 고정).
Additive Congruential Generator, ACG(가산 콘그루엔셜 방법)
- 임의로 선정된 n개의 숫자가 있다.
- 이 수들과 나누어서 나머지를 사용할 숫자 m을 선정한다(mod m).
- 임의로 선정된 n개의 숫자 중 처음과 마지막을 더하고 m으로 나누어 나온 나머지를 사용한다.
$$X_{n+1}=X_{n+i-1}+X_i \bmod{m}$$
- 예제
- 다음의 수에서 난수 12개를 발생시키고 난수의 안정도를 해석하시오.
- 5, 3, 8, 9, 1, m = 10
- 주어진 수를 mod 10 하여 세팅한다. → 0.5, 0.3, 0.8, 0.9, 0.1
- 이후로 맨 처음과 맨 뒤 수를 더해가면서 다음 난수를 생성한다.
- (5 + 1) mod 10 = 6 → 0.6
- (3 + 6) mod 10 = 9 → 0.9
- (8 + 9) mod 10 = 7 → 0.7
- (9 + 7) mod 10 = 6 → 0.6
- (1 + 6) mod 10 = 7 → 0.7
- (6 + 7) mod 10 = 3 → 0.3
- (9 + 3) mod 10 = 2 → 0.2
- 다음의 수에서 난수 12개를 발생시키고 난수의 안정도를 해석하시오.
Linear Congruential Generator, LCG(선형 콘그루엔셜 방법)
- Hull, De Bull이 제안했다.
- 하나의 초기 숫자를 설정한다.
- 3개의 상수에 의한 수식을 대입하여 난수를 발생시킨다.
- 조건 - $a<m, c<m,0<m$
- $$X_i=(aX_{i-1}+C)\bmod{m},\
R_i=X_i/m$$
- 예제
- 다음의 조건에서 난수 4개를 발생시키고 난수의 안정도를 해석하시오.
- $m=16, a=5, c=3, X_0=7$
- $X_1=(5*7+3)\bmod{16}=6, R_1=6/16=0.375$
- $X_2=(5*6+3)\bmod{16}=1, R_2=1/16=0.063$
- $X_3=(5*1+3)\bmod{16=8, R_3=8/16=0.500}$
- $X_4=(5*8+3)\bmod{16=11, R_4=11/16=0.6875}$
- 다음의 조건에서 난수 4개를 발생시키고 난수의 안정도를 해석하시오.
5. 난수의 안정도 검증
1. Chi-square 검증
- 어떤 분포든 제한 없이 적용할 수 있고 사용이 쉽다.
- 도수 분서 작성 시 계급구간이 너무 크다는 단점이 있다.
- 사용되지 않는다.
2. Kolmogorov-Smirnov 검증
일양성에 대한 검증을 하는 방법이다.
- 발생된 난수를 작은 것부터 크기 순으로 나열한다.
- D의 값을 구한다.
- $$D^+=\max(\frac{i}{N}-R_i)\
D^-=\max(R_i-\frac{(i-1)}{N})$$ - 검증 통계랑인 D를 구한다.
- $$D=\max[D^+,D^-]$$
- 유의수준(임계값)과 난수의 개수에 대한 K-S 표를 이용한다.
- 적합성 검증과 판단을 수행한다.
- $D>D_a$ → 난수 불안정
- $D<D_a$ → 난수 안정
- K-S 테이블
- 예제
- 난수 0.44, 0.81, 0.14, 0.05, 0.93, a = 0.05일 때 안정도를 구하시오.
- 난수들을 크기 순으로 나열한다. → 0.05, 0.14, 0.44, 0.81, 0.93
- D의 값을 구한다.
- $D^+=\max{(\frac{1}{5}-0.05, \frac{2}{5}-0.14, \frac{3}{5}-0.44, \frac{4}{5}-0.81, \frac{5}{5}-0.93)}$
- $D^+=\max{(0.15, 0.26, 0.16, -, 0.07)}=0.26$
- $D^-=\max{(0.05-\frac{0}{5},0.14-\frac{1}{5},0.44-\frac{2}{5},0.81-\frac{3}{5},0.99-\frac{4}{5})}$
- $D^-=\max{(0.05, -, 0.04, 0.21, 0.13)} = 0.21$
- $D=\max{(D^+, D^-)}=0.26$
- $n=5, a=0.05$ 이므로 K-S 표에서 임계값을 찾으면 0.565이다.
- $D=0.26, D_a=0.565$ 이므로 이 난수들은 안정된 상태이다.
- 난수 0.44, 0.81, 0.14, 0.05, 0.93, a = 0.05일 때 안정도를 구하시오.
'Computer Sciences > Security' 카테고리의 다른 글
[정보보안] 6. 현대 암호 (0) | 2021.10.25 |
---|---|
[정보보안] 5. 접근 제어 (0) | 2021.10.25 |
[정보보안] 3. 그 외에 암호 방식 (0) | 2021.10.25 |
[정보보안] 2. 암호의 역사 (0) | 2021.10.25 |
[정보보안] 1. 정보보안 개념 (0) | 2021.10.25 |