정수론
정수론은 정수를 연구하는 분야이다.
정수론을 왜 배우는지 궁금해할수 있는데
우리가 현대 암호를 이해하려면 정수론을 필히 알고있어야한다.
그러므로 한번 같이 알아보자.
Division(나누기)
지금부터 나오는 수들은 모두 정수이다.
이 쉬운 나누기를 왜 배우냐고 할 수 있는데
정수론에선 중요하기때문에 짚고 넘어가도록 하겠다.
일반적으로 b를 a로 나눌때(나누어 떨어짐) a와 b의 관계는
b=ac(c는상수)
가 된다(b는 a의 배수).
또한 a는 b의 약수라고 할 수 있다.
이 a와 b의 관계를 정수론에선
a | b
로 칭한다.
또한 몇가지 공식이 있는데
a | b 이고 a | c 이면 a | (b+c) 이다.
ex) 3 | 6 이고 3 | 9 이면 3 | 15이다.
a | b이면 모든 c에 대해서 a | bc이다.
ex) 5 | 10이면 5 | 20, 5 | 30, 5 | 40, ...
a | b 이고 b | c이면 a | c 이다.
ex) 4 | 8이고 8 | 24면 4 | 24이다.
Division Algorithm
a와 d를 나눌때 몫을 q라고 하고 나머지를 r이라고 하면
로 표현된다.
이때 a, q, r는 정수, d는 양의 정수이며 r의 범위는 0 ≤ r < d 이다.
ex)
그렇다면 -11을 3으로 나누게 되면 나머지가 몇일까?
나머지의 범위를 생각해보면 전자는 0 ≤ -2 < 3 으로 만족하지않고
후자는 0 ≤ 1 < 3 으로 만족하는것을 볼 수 있다.
Prime(소수)
소수란 다들 알겠지만 약수로 1과 자기자신만 가지는 수를 뜻한다.
또한 1보다 크고 소수가 아닌 수는 composite(합성수)라고 한다.
소인수분해는 모든 양의 정수들을 소수의 곱으로 나타내는것인데
이 소인수분해 방법은 한가지로 유일하다.
ex)
Greatest Common Divisors(최대공약수)
최대공약수를 알아보기전에 먼저 공약수에 대해서 먼저 알아보자.
어떤 두 수의 공통된 약수를 바로 공약수라고 한다.
12의 약수는 1, 2, 3, 4, 6, 12이고 8의 약수는 1, 2, 4, 8인데 이중 공약수는 1, 2, 4이다.
이때 최대공약수는 공약수중 가장 큰 수를 말하며 12와 8의 최대 공약수는 4이다.
이를 수학적 기호로 작성하면
소수로 최대공약수 나타내기
Examples
Relatively Prime or Coprime(서로소)
아까 우리가 최대공약수를 알아보았는데
만약 정수 a,b에 대해서
또한 3개 이상의 정수에 대하여 아무거나 뽑은 두가지 정수가 모두 서로소라면 이를 pairwise relatively prime(쌍마다 서로소)라고 한다.
Examples
15, 17, 28은 쌍마다 서로소인가?
->
Least Common Multiples(최소공배수)
이번에도 최소공배수를 알아보기 전에 공배수를 먼저 알아보자.
어떤 두 수의 공통된 배수를 바로 공배수라고 한다.
5의 배수는 5, 10, 15, 20, 25... 이고 6의 배수는 6, 12, 18, 24, 30 ...인데 이중 공배수는 30이다.
이때 최소공배수는 공배수중 가장 작은 수를 말하며 5와 6의 최소 공배수는 30이다.
이를 수학적 기호로 작성하면
소수로 최소공배수 나타내기
Examples
GCD와 LCM의 관계
에서
이를 자세히보면 gcd와 lcm이 a,b를 이루고있으므로
Modular 연산
이 연산은 아마 익숙하지 않을것이다.
modular은 파이썬의 %연산자라고 이해하면 편하다(C언어와는 차이가 있는데 C언어의 %는 나머지로 음수를 출력한다)
기호로
Examples
Congruences(합동)
이 뜻은 좌변 a를 m으로 나눈 나머지와 우변 b를 m으로 나눈 나머지가 같다는것이다.
예로
또한 이 예시에서
Examples
->
->
->
동치
이를 a에 대한 식으로 정리하면
Congruence의 성질
증명은 위에 나온 동치를 사용하여 증명할 수 있다(스스로 한번 해보자!).
또한
이 둘의 차이는 큰데
앞의 식은 아주 큰 수를 나눈다는 뜻이 된다.
컴퓨터는 아주 큰 수를 나누게되므로 작동이 현저히 느려지게된다.
하지만 뒤의 식은 작은 상태에서 나눈 뒤 제곱하므로
오버플로우가 발생하지 않게된다.
항등원과 역원

이 사진은 행과 열을 더한 값을
이때 0에만 색칠이 되어있는것이 보이는가?
0은 더하기 계산에서 항등원을 뜻한다.
항등원이란 어떤 수에 특정 연산을 했을때 자기 자신이 나오도록 하는 원소이다.
또한 항등원이 나오도록 하는 원소를 역원이라 한다.
예로 2의 역원은 6이며 3의 역원은 5이다.

이 사진은 행과 열을 곱한값을
곱에서 항등원은 1인데 앞의 사진에서는 모든 항에 항등원이 나왔지만
이 사진에선 띄엄띄엄 나오는것을 볼 수 있다.
이것이 문제인 이유는 방정식을 풀면서 역원이 필요한 경우가 있는데
저 사진에서 3에대한 역원은 3으로 존재하지만 2에 대한 역원은 존재하지 않는다.
고로 방정식을 풀지못하는 경우가 나올수도 있다는 뜻이다.
Zn 에서 성립하는 성질
이
교환법칙
결합법칙
분배법칙
항등원
역원
덧셈의 경우에는 항상 존재하지만 역원의 경우에는 존재할수도 있고 없을수도 있다(n에따라 다름).
Euclidean Algorithm
유클리드 호제법이란 두 정수의 최소공배수를 구하는 아주 빠른 알고리즘이다.
이번에는 예시를 먼저 보고 함께 알아보도록 하자.
먼저 우리의 목표는
이를 위해서 먼저 큰 수를 작은수로 나눈다.
그러면
이때
이를 같은방법으로 하면
그러므로
무려 나누기 2번으로 답을 구했다!
지금까지 유클리드 호제법을 이용하여 답을 구해보았다.
이제 원리에 대해 공부해보자
Euclidean Algorithm의 원리
이 유클리드 호제법의 핵심은
만약
이때
그러므로 각각
이를 r에 대한 식에 넣으면
식의 형태에 따라
그래서
(
다음으로
위에처럼 해보면
그래서
이때
Extended Euclidean Algorithm
앞에서 본 호제법은 최대공약수를 찾는것까지만 했다면
확장된 호제법은
이때 알아야할것이 정수방정식은 무조건 답이 존재하는것은 아니다.
ex)
그래서 정수방정식이 답이 있으려면
위에 있는
이제 예시와 함께 자세하게 알아보자.
Extended Euclidean Algorithm의 예시
문제 :
먼저 유클리드 알고리즘을 돌리면
이므로
이제 이 식들을 활용해서 필요없는 숫자들을 소거시킬것이다.
이때 필요없는 숫자란 각 항들의 나머지들을 말한다(마지막으로 나온 나머지는 최대공약수이므로 필요하다)
먼저 3을 없애보자.
2번 식에서 양변에 3을 곱하고(
3번 식에서 1을 좌변으로 옮긴뒤(
이번에는 10을 없애기 위해 1번 식에서 양변에 7을 곱하고(
4번 식에서
이를 다시 정리하면
Extended Euclidean Algorithm 문제
이제 방법을 알아봤으니 스스로 한번 풀어보자!
문제 :
직접 풀어보고 답을 보는것을 추천한다.
그러므로 식을 정리하면
이제 유클리드 알고리즘을 적용해보자
일단
식을 정리하게되면
Invertible Integers Modulo N
주어진 정수
증명
앞서 알아본 Extended Euclidean Algorithm에 따라
반대로,
Extended Euclidean Algorithm에 따르면,
두 정수
여기서
특별한 성질
만약
그래서 만약
증명
만약
이때 양변에
따라서
Fast Powering Algorithm
만약
먼저 제곱을 한 뒤 나눈다고 생각할 수 있지만 이 방법은 아주 느려서 사실상 불가능하다고 보아도된다.
그래서 이때 사용하는것이 Fast powering Algorithm이다.
먼저
그러면
이를 각각

Chinese Remainder Theorem(CRT)
이 쌍마다 서로소이면
임의의 정수열
에서
한번 연습문제를 풀면서 이해해보자.
CRT 연습문제
일때
먼저 첫번째 식은
이를 두번째 식에 넣으면
이를 다시 정리하면
여기서
그래서
같은 원리로
이를
결국
'암호학' 카테고리의 다른 글
[암호학] 암호화 기반 인증기술 (1) | 2024.10.30 |
---|---|
[암호학] 키 관리와 해쉬 함수 (1) | 2024.10.29 |
[암호학] 공개키 암호화 방식 (2) | 2024.10.28 |
[암호학] DES란? (1) | 2024.10.25 |
[암호학] 대칭키 암호화 방식 (1) | 2024.10.22 |