대표적인 공개키 암호화 알고리즘이다. Rivest-Shamir-Adleman의 앞글자를 따서 RSA라고 부른다.
RSA의 핵심 안전성 가정은 큰 수 N을 소인수분해하는 문제가 매우 어렵다는 점에 기반한다.
일반적으로 AES같은 대칭키를 이용해 메시지를 암호화하고 대칭키를 RSA같은 공개키로 암호화하여 이용한다.
RSA는 Private Key(d,N)과 Public key(e,N)으로 구성되어 있다.

Private Key(d,N)과 Public key(e,N)으로 구성된다는 것을 기억하자.

Alice는 M이란 메시지를 Bob에게 보내고 싶다고 가정하자. Alice는 M을 public key(e,N)를 이용해 C를 계산하고 Bob에게 보내게 된다.


암호문 C가 Bob에게 전달되고 Bob은 Private Key(d,N)를 이용해 암호문을 평문으로 만든다.

이걸 설명하기 위해 RSA에 대해 간략히 설명했다. Franklin–Reiter Related Message Attack은 RSA에서 서로 선형 관계를 가진 두 평문을 같은 공개키로 암호화했을 때 평문을 복구할 수 있다는 공격 방법이다.

일 때

두 평문이 선형 관계를 가진다면


이고

이므로 두 다항식은 같은 공통인수를 공유한다.
그래서 공격자는 다항식 연산에서

를 계산해서 M1 값을 찾을 수 있다.
암호학 관련 ctf에서 자주 등장하니 알아두자... 최근에 암호학 문제 풀때 해당 방법을 몰라서 다른 요상한 방법으로 풀었었는데 이 방법으로 푸는거였다.
해당 방법 말고도 다양한 RSA 관련 공격 방법이 있다. Duplicate Prime, Small Prime Diference, Low Private Exponent, Hastad’s Broadcast Attack, Coppersmith Attack, ROCA 등등...