RSA(Rivest–Shamir–Adleman)는 대표적인 비대칭키 암호 알고리즘이다.
두 개의 서로 다른 키를 사용한다.
대칭키만으로는 처음 만난 두 주체가 안전하게 비밀키를 공유하기가 어렵다
RSA 같은 공개키 암호는 사전 공유 비밀 없이도 다음을 가능하게 한다.
모듈러 연산
<aside> 💡
모듈러 연산은 정수를 특정 수로 나눈 나머지가 같을 때 두 정수를 동일하게 취급하는 연산이다. 나누는 수를 모듈러라고 하며, $a \equiv b \pmod n$으로 표기하고 합동식이라고 한다.
</aside>
오일러 피 함수
<aside> 💡
$\phi(x)$라고 쓰며 phi라고 읽는다.
$\phi(x)$는 x와 서로소이며 0≤k<x인 숫자의 집합 개수이다 이를 수식적으로 나타내면 다음과 같다.
$$ \phi(x) = \|\{k \in \mathbb{Z^+} : k < x\ and\ gcd (x,k) = 1\}\| $$
한마디로 이 오일러의 피 함수를 이용하여 x의 서로소 개수를 구하는 것이다
오일러의 정리
<aside> 💡
gcd(a,n)=1인 양의 정수 a,n에 대하여
$$ a^{\phi(n)}\equiv1\pmod{n} $$
여기서 φ(n)은 오일러 피 함수 이다.
</aside>
확장 유클리드 알고리즘
<aside> 💡
확장 유클리드 알고리즘은 두 정수 a와 b의 최대공약수(gcd)를 구할 뿐만 아니라 베주 항등식을 만족하는 정수 x와 y를 찾는 알고리즘이다.
</aside>