C로배우는암호학프로그래밍/밑줄긋기 (rev. 1.44)
- p.24
- 암호학에서는 정수론과 유한체 이론이 많이 사용되고 있다.
- 정수론이 쓰이는건 알았는데, 유한체를 여기서 볼 줄은 몰랐네 - 김도엽
- 이와 같이 b는 a로 나누어 떨어진다고 말하는 관계를 다음과 같이 표시한다.
a|b
- p.25
- 임의의 정수 a가 있을 때 이 수는 다음과 같이 소수의 곱으로 유일하게 표시할 수 있다.
- 모든 수는 소수의 곱으로 이루어짐을 a=p1^(e1)*p2^(e2)*...*pr^(er)와 같이 수식으로 나타냈구나 - 창민규
- 합동식 a=b mod m에 대한 정수 집합 Z상의 동치류를 표현할 때, 법 m에 대한 잉여류라고 하며 다음과 같이 표현한다.
- 여기서 동치류란 집합 A에 대한 R이 동치 관계일 때, 집합 A의 각 원소 a와 순서쌍을 이루는 원소들의 집합이다. - 이효근
- 정수 집합 Z상에는 무한히 많은 소수가 분포되어 있으나 어떠한 규칙을 가지고 분포하는지는 밝혀진 바 없다.
- 훗날 이 소수의 규칙이 발견된다면 양자역학이 중요한 역할을 할 수 있다고 들어본 것 같다. - 박석진
- 즉, a = b mod m은 a-b= km 이라는 뜻이다. 여기서 = 는 합동식을 나타내는 합동기호이다.
- 밑에는 반사적,, 대칭적, 추이적 성질만 적혀있지만 합동식도 이항해서 하는계산이 가능하나는 것을 활용할 수 있다. - 이승화
- p.26
- 이 때, 원소의 개수 ϕ(m)을 Euler의 ϕ함수 (ϕ-function) 혹은 Euler의 토션 함수(totient function)라고 한다.
- 파이 함수를 토션 함수라고도 부르는 구나 - 창민규
- ϕ(m)에서 m이 소수일 때는 ϕ(m) = m -1이니까 페르마의 소정리를 일반화한 것이 오일러의 정리라고 말할 수 있을 것 같다. -박석진
- 집합 Z={0,1,2,...}상의 원소 중 m과 서로소인 원소 개수를 ϕ(m)이라고 표현하고 오일러 함수라고 한다.
- 오일러정의에서 gcd(a,p)=1을 활용해서 정리를 시작하는게 페르마 정리이므로, 둘의 정리들이 서로 밀접하게 연관되있는 것 같다. - 이승화
- p.27
- 만약 소수 p가 있고 정수 a가 p로 나누어지지 않는 수라면 다음과 같은 방법으로 a의 역수를 구할 수 있다
- a^(p-1)을 a^(-1)*a^(p-2)로 나눠서 a^(-1)을 구하려는 거구나 - 창민규
- p.28
- 따라서 덧셈군일 때는 항등원은 '0'(영원)으로 표시하고 승산군일 때의 항등원은 '1'(단위원)으로 표시한다.
- 승산원은 곱셈군을 의미하는건가?... - 창민규
- 자연수는 덧셈에 대한 항등원이 존재하지 않는다 -박석진
- p.29
- 특히, 곱셈에 대한 단위원이 존재하고 영이 아닌 원소가 승산에 대하여 역원을 갖는 가환환을 체(field) F라고 정의한다.
- 그러면 결국 "체" F 정의는 {{①닫힘 ②결합 법칙 ③항등원 ④역원} 성질을 가지는 ⑤가환군이면서 ⑥곱셈에 대한 닫힘 ⑦곱셈에 대한 결합법칙 ⑧분배법칙} 성질과 ⑨곱셈의 역원을 가지는 ⑩가환환 이라고 할 수 있는게 맞나? - 김도엽
- p.30
- a^b = 1 mod m에서 법 m에 관한 정수 a의 위수가 ϕ(m)일 때, a를 법 m에 대한 원시근(primitive root) 또는 원시원소라고 한다.
- 이 말이 어떤 정수를 계속 제곱해도 잉여계가 1이 되는 자연수가 있는데, 이 수에 위수가 존재하고, 그 모든 위수가 ϕ(m)의 약수가 될때, 그 위수가 원시근이라는 내 이해가 맞나? -이승화
- p.34
- p.34
- 그런데 유클리드 알고리즘을 확장한 확장 유클리드 알고리즘은 두 개의 정수가 서로 소인 경우에 한 수에 대한 다른 수의 곱셈에 대한 역원을 계산하는데 사용된다
- 유클리드 알고리즘에서의 ax+by=gcd(a,b)와 모듈러를 이용하여 역원을 구하겠구나 - 창민규
- p.35
- 만약 두 정수 f와 f보다 작은 정수 d가 서로 소이면, 즉 gcd(f, d)=1이라면, 그때 d는 모듈러 f상에서 곱셈에 대한 역원을 갖는다. 즉, d·d^-1=1 mod f인 d^-1
- RSA 키 만드는 과정중 비밀키 d를 만들때, ϕ(N)상에서 e의 곱셈에 대한 역원으로 d를 결정해야 함. 마침 ed≡1(mod ϕ(N))에서 이미 e를 ϕ(N)와 서로소인 정수로 결정했기 때문에 e의 곱셈에 대한 역원이 존재하므로 d를 구할 수 있는 것임. - 김도엽
2.1. Chapter 03 고전 암호 알고리즘 ¶
- p.44
- 가장 오래된 암호로서 로마의 유명한 군인이자 정치가였던 쥴리어스 시저(Julius Caesar, B.C. 100~44)가 사용하여 그 이름이 유래되었다.
- 시저 암호를 어떤 곳에서는 카이사르 암호라고 부르는 것도 봤음 - 김도엽
- p.45
- 그러나 시저 암호는 암호 키로 25개의 문자만 사용할 수 있어 전수 조사 공격(brute force attack)에 취약한 특성을 가진 고전암호이다.
- 암호 키로 매우 큰 숫자도 쓸 수 있지만 암호 키가 1이나 27이나 53이나 같은 결과가 나오니 25개의 키밖에 없는게 맞음 - 김도엽
- brute force는 가능한 경우를 전부 조사하는 알고리즘 이름으로도 쓰임 - 김도엽
- p.46
- p.49
- 단일 대치 암호는 암호에서 키 공간의 크기는 26!(약 4*10^26개)로서 전수 조사 공격(brute force attack)에는 비교적 강인한 특성을 가지지만 암호문에 나타난 문자의 출현 빈도수를 보고 이를 통계학적인 방법으로 분석하여 비밀 키를 찾아낼 수 있다.
- 보통 알고리즘 문제 풀 때 1억번 연산할 때마다 1초가 걸린다고 생각하는데, 이걸로 단순계산해보면 약 1,268,391,679,350년이 걸림 - 김도엽
- 비즈네르도 빈도분석법에 완전히 강한 것은 아님 다중문자 암호와 비즈네르 암호 - 김도엽
2.2. Chapter 04 DES(Data Encryption Standard) ¶
2.3. Chapter 05 AES(Advanced Encryption Standard) ¶