무작위 공격(brute-force)과 달리 암호 알고리즘을 분석해서 효율적인 방식으로 암호화된 값을 찾는 공격 방식
Unconditionally Secure
무한한 비용이 주어진다고 하더라도 안전한 보안 체계
존재하지만 실제로 적용하기에 어렵기 때문에 널리 사용되지 않는다.
Computationally Secure
얻어낼 수 있는 정보의 가치보다 공격에 필요한 비용이 더 커지도록 만들어서 안전을 확보하는 방법
Substitution
고전 암호에서 많이 쓰이던 문자 치환 방식
language redundancy
언어마다 자주 쓰이는 알파벳이 있어서 패턴을 파악하기 쉽다.
key stream generator 로 만든 키로 p와 XOR을 수행한다.Transeposition
문자열을 1대1로 치환하기보다 문자열 순서에 변화를 주는 암호화 방식
a = m × b일 때 b | a 로 divisibility를 나타낸다.
a | 1이면 a = ±1
a | b && b | a 이면 a = ±b
0이 아닌 모든 b에 대하여 b | 0
b | g && b | h 면 b | (m×g+n×h)
두 수의 GCD(최대공약수) 를 효율적으로 구할 때 쓴다.
gcd(a, 0) = |a| 일 떼
|a|는 a의 약수 중 가장 크고 동시에 0의 약수이므로 gcd=(A
확장 유클리드 알고리즘은 GCD 뿐만 아니라 곱셈의 역원을 구할 때 쓰인다.
a가 n으로 나눠떨어질 때 n을 modulus라고 한다.
a mod n = r, r은 a를 n으로 나눈 나머지다.
a를 n으로 나눈 모든 수가 포함된 집합을 Z(n)라고 한다.
{(a mod n) + (b mod n)} mod n = (a + b) mod n
modular 연산에는 교환, 결합, 분배법칙이 성립한다.
multiplicative inverse
a^p = a mod p
Euler's Phi Function
정수 n보다 작고 n에 prime 한 양수의 개수를 말한다.
Z = {0, 1, 2, ..., (pq-1)} 이라고 하자.
p의 배수는 p, 2p, 3p, ..., (q-1)p
q의 배수는 q, 2q , 3q, ..., (p-1)q
이다.
a mod n = b mod n 이면 두 수가 합동(congruent)이라고 한다.
a와 n은 서로소
a^(n-1) = 1 mod n이면 n이 소수라고 추측할 수 있음
p가 소수면 x^2 = 1(mod p)가 두개의 해를 가짐
(x^2-1 = 0) mod p
-> p가 (x+1)(x-1)의 약수이다
n1, n2, n3, ..., nk가 있을 때 n은 모두 서로소라고 하자.
y = g^x mod p 일 때 x값의 범위가 0~n이라고 하면 x에 값을 일일히 대입해야만 해를 찾을 수 있다. 따라서 g, y, p가 제공된 상황에서 비트 수가 증가할수록 x값을 찾기 어려워진다.