[Security] 공개키 암호화 알고리즘

공개키 암호화 알고리즘

공개키 암호화 알고리즘은 비대칭키 암호화 알고리즘이라고도 불리며 암호화할 때 사용하는 암호화 키와 복호화할 때 사용하는 복호화 키가 다른 알고리즘이다.

공개키 암호화 알고리즘은 다른 클라이언트와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다. 각 사용자는 자신에게 전송하기 위한 키를 공개하고 이를 공개키라고 한다. 이 공개키를 통해 클라이언트들은 자신에게 데이터를 암호화하여 전송할 수 있으며 공개키로 암호화된 데이터는 개인키로만 복호화가 가능한 특성을 가진다. 하지만 이런 공개키 암호화 알고리즘도 중간자 공격에는 취약한 특성을 보인다.

Public Key Encryption

중간자 공격

중간자 공격이란 공개키를 제공하는 과정에서 일어날 수 있는 공격이다. 두 클라이언트 A B가 있고 C라는 공격자가 있을 때 다음과 같은 상황이 일어날 수 있다.

  1. A는 B에게 공개키를 전송하려 한다
  2. 이 과정에서 C가 A의 공개키를 탈취해 가지고 있고 C는 B에게 C의 공개키를 제공한다
  3. B는 전송받은 C의 공개키를 A의 공개키라 생각하고 데이터를 암호화해 전송한다
  4. 전송되는 데이터는 C의 개인키로 복호화가 가능하게 된다

Useage

RSA

RSA는 공개키 암호 시스템으로 사용되는 가장 일반적인 공개키 암호화 알고리즘이다. RSA는 정수론적인 측면에서 정의가 되었다. 이 시스템은 큰 수의 인수분해의 어려움에 안전성을 두고 있다. 즉 RSA 시스템을 깨는 문제는 인수분해 문제로 귀결된다.

ECC

타원곡선 암호화는 이산로그 문제를 착안해 만들어진 공개키 암호화 방식이다. 비트당 안전도가 타 공개키 시스템보다 효율적이라는 연구가 진행되고 최근 높은 속도로 구현이 가능하게 됨으로 써 많은 기업에서 사용하는 압호화 알고리즘이다. 라인의 Letter Sealing이나 카카오톡의 메신저에서도 타원곡선 암호화를 사용한다.

참조

https://engineering.linecorp.com/ko/blog/new-generation-of-safe-messaging-letter-sealing/

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/14/Security/public-key-encryption/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.