본문 바로가기

Information Security Theory

2. Math of crpytography (3)

반응형

additive inverse 덧셈 역
multiplicative inverse 곱셈 역

n : 양의 정수
Zn = {0, 1, ... , n-1}

 Zn에서의 역원

additive inverse
a, b ∈ Zn
(a+b) mod n = 0,
a, b는 서로의 덧셈 역원
(a+b) ≡ 0 mod n

b = n-a


ex) n=10
(1, 9), (2, 8), (3, 7), (4, 6), (5, 5), (0, 0)
Z_10 = {0,1,2, ..., 9}

multiplicative inverse
ab mod n = 1

ab ≡ 1 mod n
a, b는 서로의 곱셈역
n = 10, Z10 = {0, 1, ..., 9}

ex) 3의 곱셈 역? 
-> 3b mod 10  = 1
b = 7

1의 곱셈 역? 1
0의 곱셈 역은 undefined (정의 자체가 성립되지 않음)
9의 곱셈 역? 9
8의 곱셈 역? 없음

n = 11?
{1,2,3, ..., 10}
(1, 1), (2, 1), (3, 4), (5, 9), (7, 8), (10,10)
n이 소수이기 때문에 모든 수에 대해 존재

Integer b in Zn has a multiplicative inverse
⇔iff(if and only if 필충) gcd(n, b) = 1

증명
sa + tb = gcd( a, b ) 
if, a = n
sn + tb = gcd(n,b) = 1

sn + tb = 1
( sn + tb ) mod n = 1 mod n = 1
tb mod n = 1

t= b의 곱셈역

덧셈, 곱셈이 중요함
b에 대한 곱셈 역을 구하는게 우리의 목표
이것을 위해 하는 것이 extended euclid algorithm을 사용  (sa + tb = gcd(a,b))





곱셈역 구하기
extended euclid algorithm
b에 대한 곱셈역을 구하는 알고리즘 euclid와의 유일한 차이점은 s에 대한 변수가 사라짐
이외 t와 r에 대한 부분은 동일하게 유지 ( s가 필요없기 때문, s를 그대로 두고 유클리드와 똑같이 써도 상관은 없음)

Algorithm
r1 ← n , r2 ←b
t1 ← 0,  t2 ←1
while(r2>0)
    q←r1/r2
    r←r1, -q*r2
    r1←r2, r2←r
    t←t1-qt2
    t1←t2, t2←t
    if(r1 = 1) b의 곱셈의 역 ← t1
        r1 = gcd(n,b)

ex) Z26, 11의 곱셈역?

시작
q
r1
r2
r
t1
t2
t

26
11

0
1









q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2








q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2

11
4

1
-2


q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2
2
11
4
3
1
-2
5

q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2
2
11
4
3
1
-2
5

4
3

-2
5


q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2
2
11
4
3
1
-2
5
1
4
3
-2
-2
5
-7
...
q
r1
r2
r
t1
t2
t (=t1-qt2)
2
26
11
4
0
1
-2
2
11
4
3
1
-2
5
1
4
3
-2
-2
5
-7
3
3
1
0
5
-7
26

1
0

-7
26


Z26에서 11의 곱셈역 
t = -7 = 19 (mod취하면 같으므로)

extended euclid algorithm을 사용하면, 어떤 수에 대해 곱셈역의 유무와 존재한다면 해당 값에 대해 효율적으로 판단할 수 있게 된다.

숫자가 작을땐 상관 없지만 매우 큰 수에 대해 곱셈역을 구할 때는 브루트포스방식으로 모두 대입하는 것이아니라, 유클리드 알고리즘을 사용해야한다. 
따라서, 위의 알고리즘은 매우 중요하다.



Addition Table, Multiplication Table

연산의 역을 판단할때 또 다른 방식

n=10

Addition table (a+b)mod 10


+
0
1
2
3
4
5
6
7
8
9
0
0
1
2
...




9
1
1
2
3
...






2










3










4










5










6










7










8










9












Multiplication Table (a*b)mod10
*
0
1
2
3
4
5
6
7
8
9
0
1
2
3
...





9
1

1








2










3







1


4










5










6










7



1






8










9









1

Z10 = {0,1,2,3, ..., 9}
Z10^* = {1,2,3,7,9} 곱셈역이 존재하는 것들 -> 곱셈표를 그려서 판단해야함.


곱셈역이 존재하는 것들에 대한 표기법 : {Z}_{10}^{*}

n mod에 대한 덧셈역이 존재하는 것들은 Zn과 같다.

숫자에 따라 곱셈역이 달라진다
Z7={0,1,2, ..., 6)
Z7^* ={1,2,3,4,5,6}
7은 소수이므로, 모든 수에 대해 곱셈역이 존재한다.

Zp => n이 소수인경우 (소수에 대해서는 강조를 위해 n이 아닌 p로 표현한다.)
Zp = {0,1,2,... ,p-1}
Zp^* = {1, 2, ..., p-1}
Zp = Zp^* ∪ {0}



반응형

'Information Security Theory' 카테고리의 다른 글

3. Traditional symmetric key ciphers (2)  (0) 2019.03.26
3. Traditional symmetric key ciphers (1)  (0) 2019.03.20
2. Math of cryptography (2)  (0) 2019.03.20
2. Math of crptography (1)  (0) 2019.03.07
1. Introduction  (0) 2019.03.05