공개키 암호화 알고리즘
공개키 암호화 알고리즘은 비대칭키 암호화 알고리즘이라고도 불리며 암호화할 때 사용하는 암호화 키와 복호화할 때 사용하는 복호화 키가 다른 알고리즘이다.
공개키 암호화 알고리즘은 다른 클라이언트와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다. 각 사용자는 자신에게 전송하기 위한 키를 공개하고 이를 공개키라고 한다. 이 공개키를 통해 클라이언트들은 자신에게 데이터를 암호화하여 전송할 수 있으며 공개키로 암호화된 데이터는 개인키로만 복호화가 가능한 특성을 가진다. 하지만 이런 공개키 암호화 알고리즘도 중간자 공격에는 취약한 특성을 보인다.
중간자 공격
중간자 공격이란 공개키를 제공하는 과정에서 일어날 수 있는 공격이다. 두 클라이언트 A B가 있고 C라는 공격자가 있을 때 다음과 같은 상황이 일어날 수 있다.
- A는 B에게 공개키를 전송하려 한다
- 이 과정에서 C가 A의 공개키를 탈취해 가지고 있고 C는 B에게 C의 공개키를 제공한다
- B는 전송받은 C의 공개키를 A의 공개키라 생각하고 데이터를 암호화해 전송한다
- 전송되는 데이터는 C의 개인키로 복호화가 가능하게 된다
Useage
RSA
RSA는 공개키 암호 시스템으로 사용되는 가장 일반적인 공개키 암호화 알고리즘이다. RSA는 정수론적인 측면에서 정의가 되었다. 이 시스템은 큰 수의 인수분해의 어려움에 안전성을 두고 있다. 즉 RSA 시스템을 깨는 문제는 인수분해 문제로 귀결된다.
ECC
타원곡선 암호화는 이산로그 문제를 착안해 만들어진 공개키 암호화 방식이다. 비트당 안전도가 타 공개키 시스템보다 효율적이라는 연구가 진행되고 최근 높은 속도로 구현이 가능하게 됨으로 써 많은 기업에서 사용하는 압호화 알고리즘이다. 라인의 Letter Sealing이나 카카오톡의 메신저에서도 타원곡선 암호화를 사용한다.
참조
https://engineering.linecorp.com/ko/blog/new-generation-of-safe-messaging-letter-sealing/