학교수업/시스템보안

[보안] 기초 정수론 1

Ynghan 2023. 3. 12. 21:57

Contents

  • 기본 수 체계
    • 항등원과 역원
    • 나눗셈과 가분성
  • 약수와 최대 공약수
    • 유클리드 알고리즘
    • 확장 유클리드 알고리즘
  • 최대 공약수의 활용

 

기본 수 체계

수 체계

 

항등원과 역원

항등원(Identity element)

  • 임의의 원소 x에 특정 연산 ⊙를 수행하였을 때, x가 나오게 하는 원소 y
    • 1. 덧셈, 뺄셈 연산에 대한 항등원 → 0 ( ∵ x + y = x, x - y = x )
    • 2. 곱셈, 나눗셈 연산에 대한 항등원 → 1 ( ∵ x * y = x, x/y = x )

역원(Inverse element)

  • 임의의 원소 x에 특정 연산 ⊙를 수행하였을 때, 해당 연산의 항등원이 나오게 하는 원소 y
    • 1. 덧셈 연산에 대한 역원 → -x ( ∵ x + y = 0, x - y = 0 )
    • 2. 곱셈 연산에 대한 역원 → 1/x ( ∵ x * y = 1, x/y = 1 )

정수 집합(Set Of Integers)

  • 음의 무한대에서 양의 무한대까지의 모든 정수로 구성된 집합
  • Z = { - ∞, ... , -2, -1, 0, 1, 2, ... , ∞ }
  • a, b ∈ Z : 임의의 두 정수 a와 b를 의미.

이항 연산(Binary Operation)

  • 두 입력 값으로부터 하나의 결과 값을 산출하는 연산
  • 덧셈, 뺄셈, 곱셈
    • 나눗셈은 연산 결과로 몫과 나머지를 산출하므로, 이항 연산에 속하지 않는다.

 

 

 

나눗셈(Division)

a ∈ Z 를 n  Z (n != 0)으로 나누면?

  • 몫 : q  Z
  • 나머지 : r  Z

a = qn + r

※제한 사항
1. n > 0
2. r ≥ 0

  • a가 음수일 경우 q와 r은 음수이다. 이 때, r이 음이 아닌 정수라는 제약사항은 어떻게 적용해야 하는가?
    q에서 1을 빼고, r에 n을 더하여 음이 아닌 정수로 만든다.
  • 나눗셈은 상기의 등식으로 성립된다.
  • 따라서, 나눗셈은 이항 연산이 아닌 관계식이다.

나눗셈 정리

  • 임의의 두 정수 a, b  Z ( b > 0 )가 존재한다면, a = qb + r을 만족하는 두 정수 q, r  Z이 항상 유일하게 존재한다.

가분성(Divisibility)

  • a를 n으로 나눌 때, 나머지가 0이라면(즉, a = qn + r 에서 r = 0)
    • n은 a의 약수(divisor)이다.
    • a는 n으로 나눌 수 있다.

  • a를 n으로 나눌 때, 나머지가 0이 아니라면(즉, a = qn + r 에서 r > 0)
    • n은 a의 약수가 아니다.
    • a는 n으로 나눌 수 없다.

 

가분성의 주요 성질(properties)

  • 가분성의 주요 성질
    • Property 1. 만약 a | 1 이면 a = +- 1
    • Property 2. 만약 a | b 이고 b | a 이면 a = +- b
    • Property 3. 만약 a | b 이고 b | c 이면 a | c
    • Property 4. 만약 a | b 이고 a | c 이면 a | (mb + nc)

Property 1

  • Property 1. 만약 a | 1 이면 a = +- 1
  • [증명]
    • a | 1 ☞ 1 = xa 이다. 이 때 x는 정수이다.
    • 이것이 의미하는 바는 " x = 1 이고, a = 1" 이거나 " x = -1 이고  a = -1 "이다.
    • 따라서 a = +- 1 이다.

Property 2

  • Property 2. 만약 a | b 이고 b | a 이면 a = +- b
  • [증명]
    • a | b ☞ b = xa 이다. 이 때 x는 정수이다.
    • b | a ☞ a = yb 이다. 이 때 y는 정수이다.
    • 따라서, a = y(xa) = yx(a) ☞ yx = 1 이다.
    • 이것이 의미하는 바는 "x = 1 이고, y = 1" 이거나 "x = -1 이고 y = -1" 이다.
    • 따라서 a = yb  ☞ a = +-b

Property 3

  • Property 3. 만약 a | b 이고 b | c 이면 a | c
  • [증명]
    • a | b ☞ b = xa 이다. 이 때 x는 정수이다.
    • b | c ☞ c = yb 이다. 이 떄 y는 정수이다.
    • 따라서, c = y(xa) = (yx)a 이다.
    • 그러므로, a | c 이다.

Property 4

  • Property 4. 만약 a | b 이고 a | c 이면 a | (mb + nc) where m,n ∈ Z
  • [증명]
    • a | b b = xa 이다. 이 때 x는 정수이다.
    • a | c c = ya 이다. 이 때 y는 정수이다.
    • 따라서, mb + nc = m(xa) + n(ya) = (mx + ny)a 이다.
    • 그러므로, a | (mb + nc) 이다.

가분성의 주요 성질(properties) 예제

  • 만약 3 | 15 이고 15 | 45 이면 3 | 45는 참(true)인가?
    → Yes(Property 3)
  • 만약 3 | 15 이고 3 | 9 이면 3 | 66은 참(true)인가?
    → Yes(Property 4)

 

약수와 최대공약수

공약수
: 두 양의 정수가 갖는 공통의 약수

최대 공약수(Greatest Common Divisor: GCD)
: 두 양의 정수의 공약수 중에서 가장 큰 정수
: 두 양의 정수의 최대 공약수 = 두 정수를 나누는 가장 큰 정수


유클리드 알고리즘(Euclidean Algorithm)

  • 두 양의 정수의 최대 공약수를 찾는 알고리즘
  • 약 2000년 전에 수학자 유클리드가 고안
  • 기본 원리
    • gcd(a, 0) = a
    • gcd(a, b) = gcd(b, r) where r = a를 나눈 나머지
  • [정리] 만약 a = bq + r이라면, gcd(a, b) = gcd(b, r)이다.
  • 증명
    • r을 a와 b의 나머지, g를 a와 b의 최대공약수라고 하자(즉, gcd(a,b) = g).
    • a를 b로 나눈다면, 이는 a = b·q + r을 만족하므로, a = c1·g, b = c2·g 로 나타낼 수 있다.
    • 그렇다면 a = b·q + rc1·g = c2·g·q + r로 표현할 수 있다. 따라서,
      c1·g = c2·g·q + r ☞ r = c1·g - c2·g·q = (c1 - c2·q)·g
    • 즉, 나머지 r도 동일한 최대공약수 g를 갖는다. 따라서,
      a와 b의 최대공약수 g를 구하는 것은 b와 r의 최대공약수를 구하는 것과 동일하다.
  • (예) 36과 10의 최대공약수를 유클리드 알고리즘으로 계산하라.

  • 표로 작성해서 구하는 법
a b r(나머지) q(몫)
36 10    
36 10 6 3
10 6    
10 6 4 1
6 4    
6 4 2 1
4 2    
4 2 0 2
2 0    

답은 2.

확장 유클리드 알고리즘(Extended Euclid Algorithm)

  • 두 개의 정수 a와 b가 주어졌을 때, gcd(a,b)와 함께 다음을 만족하는 다른 두 정수 s와 t를 동시에 계산한다.

    sa + tb = gcd(a,b)

  • 핵심 공식 :        r = r1 - q·r2 ,        s = s1 - q·s2 ,        t = t1 - q·t2
  • 초기화 식 :        r1 ← a, r2 ← b ,         t1 ← 0, t2 ← 1 ,       s1 ← 1, s2 ← 0

 

  • (예) a = 161, b = 28일 때, gcd(a,b)와 s,t를 구하시오.
    • 초기화 식 : r1 ← 161, r2 ← 28, t1 ← 0, t2  1
    • 핵심 공식 : r = r1 - q·r2,    s = s1 - q·s2,    t = t1 - q·t2

 

최대 공약수의 활용

선형 디오판투스 방정식(Linear Diophantine equations)

  • 두 변수 a와 b를 가진 ax + by = c 형태의 선형방적식
    • 상기 방정식에서, d = gcd(a, b)라 하자.
    • 만약 d † c 이면, 상기 방정식의 해는 존재하지 않음.
    • 만약 d | c 이면, 무수히 많은 해가 존재한다.
      • 이 중에서, 특정 하나의 해 → 특수 해 (particular solution)
      • 나머지 해 → 일반 해 (general solution)
  • 특수 해 구하는 방법
    • d | c 이면 ax + by = c의 특수 해 x$_0$와 y$_0$를 아래와 같이 구할 수 있다.
    • ① d로 방정식의 양변을 나누어, a$_1$x + b$_1$y = 1을 만족하는 s와 t를 계산한다.
    • ② 확장 유클리드 알고리즘을 이용하여 식 a$_1$s + b$_1$t = 1을 만족하는 s와 t를 계산한다.
    • ③ 특수 해 x$_0$와 y$_0$는 다음과 같이 계산된다.
  • 일반 해 구하는 방법
    • d | c 이면, ax + by = c의 특수 해 x$_0$ 와 y$_0$ 로부터 일반 해 x와 y를 아래와 같이 구할 수 있다.

x = x$_0$ + k$(\frac{a}{b})$, y = y$_0$ - k$(\frac{a}{b})$

where k ∈ $Z$

  • (예) 21x + 14y = 35의 특수 해와 일반 해를 구하시오.
    • gcd(21, 14) = 7 = d → 7 | 35 이므로, 위 방정식은 무한히 많은 해를 갖는다.
    • 양 변을 d = 7로 나누어 상기의 방정식을 3x + 2y = 5로 변환한다.
    • 확장 유클리드 알고리즘을 이용하여 3s + 2t = 1을 만족하는 s, t를 계산한다. → s = 1, t = -1
    • 특성 해와 일반 해를 아래와 같이 계산하다.
      • 특수 해 : x$_0$ = 5, y$_0$ = -5
      • 일반 해 : x = 2k + 5, y = -3k - 5

'학교수업 > 시스템보안' 카테고리의 다른 글

[보안] 0316  (0) 2023.03.16
[보안] 2. 암호학 소개  (0) 2023.03.12
[보안] 1. Introduction  (0) 2023.03.12