정보보안

6. Basic Mathematics for Cryptography

아뵹젼 2021. 10. 31.

Prime number

모든 숫자들은 prime 의 곱으로 표현될 수 있다.

10 = 2 x 5

20 = 2 x 2 x 5

60 = 2 x 2 x 3 x 5

 

모순에 의한 증명

1. 모든 숫자는 소수의 곱이다.

s 는 prime 의 곱으로 표현될 수 없는 자연수이다.

s는 소수가 아니므로 AxB 의 형태로 표현되어야 한다. (A,B 는 1과 자기 자신이 아닌 숫자)

s를 나타내기 위해 곱하는 숫자 중 가장 작은 숫자를 C라고 하자. 

이때 c는 소수가 아니다.

따라서 c도 c1 * c2 의 형태로 표현되지만, c1,c2는 {S} 에 포함되지 않는다.

왜냐하면 {s} 중 가장 작은 소수가 아닌 숫자가 C였기 때문이다. 

따라서 c1,c2는 소수의 곱으로 이루어진 숫자임을 알 수 있고, 그렇다면 c도 소수의 곱으로 이루어진 것이다.

그러므로 S는 존재하지 않는다.

 

2. 소수의 곱으로 표현되는 숫자는 항상 유일하다.

 

 

Prime Factorization

소인수분해란 자연수를 소수들의 곱으로 나타내는 것이다.

아주 큰 소수들의 곱으로 표현된 숫자는 소인수분해가 매우 어려울 것이다. 따라서 이를 RSA 에서 사용한다.

 

Relatively Prime Numbers

두 숫자 a,b 에 대해 공통점으로 포함되는 공약수가 1을 제외하고 없을 때 서로소라고 한다.

ex) 13 and 19 / 8 and 15

 

 

Greatest common Divisor (GCD)

각 숫자의 소인수분해를 비교함으로써 공통된 값들 중 가장 큰 값이 최대공약수가 된다.

 

 

Euclid's Algorithm

ex) a = 54, b = 30 이라고 하자.

gcd(54,30) = gcd(30, 54%30) = gcd(30,24)

gcd(30,24) = gcd(24, 30%24) = gcd(24,6)

gcd(24,6) = gcd(6, 24%6) = gcd(6,0)

gcd(6,0) = 6

// gcd(54,30) = 6

 

 

gcd(a,b) 는 a와 b의 linear combination 으로 표현된다.

ax + by -> a와 b의 linear comination

d는 정수 x,y 에 대하여 ax + by 로 표현할 수 있는 가장 작은 정수이다.

gcd(a,b) = d

 

 

 

Extended Euclidean Algorithm

GCD(a,b)=d 라고 할 때 ,

ax+by=d 를 만족하는 x,y 가 존재하며 이는 유클리드 호제법의 과정을 역으로 따라가면 찾을 수 있다

 

 

Modular Arithmetic

a mod n -> a 을 n으로 나누고 난 나머지

 

Congruence(합동)

b = a  (mod n),

a,b가 n으로 나눠져서 나오는 나머지 값이 같을 때다.

 

Residue

a mod n 의 결과값 b는 Residue 라고 한다.

a = qn + b 로 쓸 수 있다.

보통은 결과값 b로 음수가 아닌 가장 작은 양수가 선택된다.

ex) -12 mod 7 = -5 mod 7 = 2 mod 7 = 9 mod 7

 

 

만약 a = b (mod n) 그리고 c = d (mod n) 이라면,

a+c = b+d (mod n)

ac = bd (mod n)

a^k = b^k (mod n)

a + kn = b (mod n) 

과 같은 특징들이 성립된다.

 

 

multipllicative inverse 구하기

 

a = 13, a^i = 37 , 13*37 = 1 (mod 60)

 

 

Euler Totient Function

n = 10 일때,

Complete set of residues : 0 , 1, 2, ..., 9

Reduced set of residues : 1, 3, 7, 9 (10 과 서로소)

 

서로소 숫자 계산법 

ex ) 

φ(37) = 36, φ(11) = 10

φ(10) = (2-1) x (5-1) = 4 {1,3,7,9}

 

 

Fermat's Little Theorem

ex) a = 2, p = 7

2^6 = 1 (mod 7)

 

 

ex) 4^37 mod 7 = 4

19^45 mod 23 = 19

89^1001 mod 101 = 89

 

 

 

Euler's Theorem

ex) 25^120 mod 143 = 25^(11-1)*(13-1) mod 11*13 = 1

19^60 mod 77 = 19^(11-1)(7-1) mod 11*7 = 1

 

25^1201 mod 143 = 25^((11-1)(13-1)^10) + 1 mod 11*13 = 25

19*481 mod 77 = 19^((11-1)(7-1)^8)+1 mod 11*7 = 19

 

 

Random and Pseudo-Random Generator

- True Random number Generators

RNG 는 하드웨어에 의존해서 난수를 생성한다.

  • Radioactive decay
  • Thermal noise
  • Polarization of photons

 

 

- Pseudo Random Number Generators (PRNGs)

다음과 같은 linear output 은 random 하게 보일지 몰라도, 예측가능하므로 안좋은 선택이다.

 

 

- Linear Complexity

linear complexity 를 측정함으로써 좋은 output stream 인지 테스트할 수 있다.

-> Berlekamp-Masseyu Algorithm

  • 주어진 수열을 만들 수 있는 가장 작은 LFSR 을 찾는 알고리즘이다.
  • 즉, 선형 점화식의 최소 다항식을 구하는 알고리즘이다.

- Maurer's Universal Test

  • output sequence 를 압축한다.
  • redundancy 가 작다면, 많이 압축되지 X

 

Cryptographically Secure Pseudo Random Number

- 'next bit' 테스트를 통과해야만 한다.

  • x-bit 의 난수열이 주어져 있을 때 50%보다 큰 확률로 x+1 번째 bit 를 예측할 수 있는 다항식 알고리즘이 존재한다면 next-bit 테스트를 통과한다고 정의한다.

 

Blum-Micali Generator

p가 소수일 때, g는 primitive root modulo p 이고, x0 는 seed 이다.

이때 xi+1 로 xi 를 track back 하는 것은 어려울 것이다.

xi 가 (p-1)/2 보다 작다면 1, 그렇지 않다면 0 을 출력할 것이다.

 

primitive root modulo

정수 a 가 주어졌을 때, a^n 의 형태가 (mod n) 의 모든 나머지를 가지고 있다면, primitive root 라고 한다.

아래의 경우에는 3이 primitive root modulo 7 이다.

 

Blum, Blum and Shub (BBS)

Integer factorization 의 어려움을 이용한 유사 난수 생성기이다.

-> n = p * q (숫자가 무지하게 커진다면 소인수분해가 어려움)

예시)

즉, xn 으로 xn+1을 계산하는 것은 쉽지만, 그 역은 매우 어렵다.

'정보보안' 카테고리의 다른 글

7. Public Key Cryptography - RSA (2)  (0) 2021.11.01
7. Public Key Cryptography - RSA (1)  (0) 2021.11.01
5. Conventional Cryptography Systems  (0) 2021.10.30
4. Theory of Secure Communication  (0) 2021.10.30
3. Network and Systems  (0) 2021.10.30

댓글