Rabin 알고리즘은 공개키 암호화 알고리즘 중 하나로, RSA 알고리즘과 비슷하게 작동합니다. 이 알고리즘은 Miller-Rabin 소수 판별 알고리즘을 사용하여 랜덤한 소수를 생성하고, 이를 이용하여 키를 생성합니다. 암호화는 평문을 제곱한 뒤, 소수로 나눈 나머지를 계산하여 수행하며, 복호화는 수학적 원리를 이용하여 암호문의 제곱근 중 4개의 가능한 해 중 올바른 해를 찾아내는 방식으로 수행됩니다. Rabin 알고리즘은 RSA 알고리즘보다 빠르게 작동하며, 해독 문제의 어려움 때문에 안전성이 높습니다.
(아래는 이해를 돕기 위한 간단한 예시로 작은 숫자를 활용해보았습니다)
공개키/개인키 생성 과정
1. 소수(p,q) 선택
Rabin 알고리즘은 RSA와 마찬가지로 1024비트 이상의 두 개의 서로 다른 소수 p와 q를 선택합니다. RSA 알고리즘과 다른 점은, 소수 p와 q는 4k+3 형태의 정수입니다.
p=7, q=11
2. n 값 계산
n은 두 소수(p,q)의 곱셈 n = p * q 으로 계산됩니다.
n=77
3. 공개키, 개인키 생성
n은 공개키, (p,q)는 개인키가 됩니다.
n=77, (p,q)=(7,11)
암호화 과정
1. 암호화하는 메세지를 ASCII 코드로 변환
암호화하기 위한 평문의 모든 글자를 ASCII 코드로 변환하여 각 글자를 1바이트로 변환합니다. 이후 바이트 단위로 암호화가 진행됩니다.
“pop”를 암호화하기 위해 ASCII 코드를 변환: p=112, o=111, p=112
2. 공개키로 암호화
공개키n를 이용하여, 암호화하고자 하는 메시지가 M일 때 다음 수식을 통해 암호화된 메세지 C를 얻을 수 있습니다.
공개키 n=77을 사용하면 다음과 같이 변환됩니다. 암호화된 문구 C(“ FF ”)= 70 1 70
복호화 과정
1. 개인키로 복호화
개인키 (p,q)를 이용해 복호화를 합니다. 개인키 p와 q가 4k+3의 형태임을 이용해서 4개의 근을 도출합니다.
이후 CRT(Chinese Remainder Theorem)을 이용해서 복호화 된 값을 4개를 도출합니다
{P1,P2,P3,P4} 중 하나가 평문이 되며, 일반적으로 ASCII 코드에서 영문자 및 숫자와 일반적으로 사용되는 특수 문자를 범위로 지정하여 필터링을 하는 방식으로 올바르게 복호화된 평문을 확인하는 방법이 사용됩니다.
개인키 p=7,q=11 을 사용하면 다음과 같이 변환됩니다. 복화된 문구 P(“ pop ”)= 112 111 112
'암호화 알고리즘' 카테고리의 다른 글
ElGamal 알고리즘 (0) | 2023.10.11 |
---|---|
DSA 알고리즘 (0) | 2023.10.11 |
Diffie-Hellman 알고리즘 (1) | 2023.10.11 |
RSA 알고리즘 (2) | 2023.10.11 |
공개키&개인키 방식의 암호화 (1) | 2023.10.10 |