Study/암호학

공개키 암호

슬픈 야옹이 2023. 1. 16. 23:57

지난 포스트에서 비밀키 암호에 대해 다루었다.

비밀키 암호 체계란 암호화와 복호화에 같은 키를 사용하는 방식이며, 이 때 사용되는 키를 비밀키라 한다.

 

이와 달리 공개키 암호 체계는 두 개의 서로 다른 키를 사용하며, 각각 공개키와 개인키라 부른다.

 

공개키

공개키는 모든 사람이 알 수 있도록 공개한다.

 

개인키

개인키는 소유자 자신만이 소유하여 외부에 노출하지 않는다.

 

공개키 알고리즘의 특징

- 암호 알고리즘을 알아도 공개키로부터 개인키를 계산할 수 없고, 개인키로부터 공개키를 계산할 수도 없다.

 

- 두 개의 키 중 하나는 암호에, 다른 하나는 복호에 사용한다. 개인키로 암호화 한 데이터는 공개키로 복호화하고, 반대로 공개키로 암호화 한 데이터는 개인키로 복호화한다.

 

 

대략적인 공개키 암호 체계의 작동 원리는 다음과 같다.

공개키 암호 체계의 작동 원리

 

1. 공개키와 개인키 생성

2. 공개키는 공개하고 개인키는 개인이 소유

3. A는 B의 공개키로 메시지를 암호화

4. B는 자신의 개인키로 메시지 복호화 (B의 개인키를 모르는 제 3자는 메시지 복호 불가능)

 

 

공개키로 암호화, 개인키로 복호화

따라서 개인키 암호 시스템에서는 B의 공개키가 공개되어 있으므로 누구나 데이터를 암호화할 수 있고,

B의 공개키로 암호화한 데이터는 개인키를 가진 B만이 복호화할 수 있다.

즉 별도로 키를 배송할 필요 없이 B에게 전송할 데이터에 대한 비밀성을 확보할 수 있다.

B의 공개키로 암호화한 데이터는 B의 개인키로만 복호 가능하다.

 

 

개인키로 암호화, 공개키로 복호화

그렇다면 반대로 B가 자신의 개인키로 데이터를 암호화하여 A에게 보낸다면 어떻게 될까?

B의 개인키로 암호화한 데이터는 B의 공개키로 복호 가능하다.

그런데 B의 공개키는 모두에게 공개되어 있으므로 결국 누구나 B가 보낸 암호문을 복호할 수 있는 것이다.

 

그럼 암호화 해봤자 소용이 없는 것일까? 아니다.

여기서 주목해야 할 점은 B의 개인키로 암호화한 데이터는 B의 공개키로만 복호 가능하다는 점이다.

 

즉, B가 자신의 개인키로 데이터를 암호화해서 보내면 해당 암호문은 B의 공개키로만 복호 가능하므로,

B는 해당 데이터를 자신이 암호화했다는 사실을 부정할 수 없다.

 

지난 포스트에서 다룬 비밀키 암호 체계에서는 불가능했던 책임 추적이 공개키 암호 체계에서 가능한 것이다.

혹여나 B가 개인키를 도난당했다 하더라도, 그 또한 B의 과실이니 책임 소재를 명확히 할 수 있다.

 

또한 해당 데이터는 개인키를 가진 B 본인만 생성할 수 있으므로 제3자가 데이터를 B가 보낸 것처럼 위조하여

보낼 수도 없다.

 

결론적으로 B의 개인키로 데이터를 암호화하면 해당 암호문을 B가 보냈다는 사실을 인증할 수 있다.

이를 공개키를 이용한 인증이라 한다.

 

서명문을 통해 사용자 인증이 가능하다.

 

자신의 개인키로 데이터를 암호화하여 보내는 것을 전자 서명이라 하며, 전자 서명된 암호문을 서명문이라 한다.

전자 서명은 전자 상거래, 금융 시스템 등에서 널리 쓰인다.

 

 

공개키 암호 알고리즘의 종류

공개키 암호 시스템은 여러 종류가 있고 각각 구현법이 조금씩 다른데, 주로 수학적으로 빠른 연산이 불가능한 알고리즘을 활용해 구현된다.

 

다음은 공개키 암호 시스템의 몇 가지 예시다.

 

소인수 분해의 어려움 이용 - RSA

이산대수 문제 이용 - 엘가말(El Gamal), 디퍼헬만(Diffie-Hellman), 타원 곡선 (Elliptic Curve) 등

 

 

공개키 암호 알고리즘의 조건

공개키 암호 알고리즘에는 몇 가지 조건이 있다.

 

- 키 쌍의 생성이 쉽다.

- 암호화 및 복호화가 쉽다.

- 공개키로부터 개인키를 계산해낼 수 없다.내기 어렵다.

- 공개키와 공개키로 암호화한 메시지로부터 평문을 알아낼 수 없다.내기 어렵다.

- 공개키로 암호화한 메시지를 개인키로 복호할 수 있고, 개인키로 암호화한 메시지를 공개키로 복호 가능하다.

 

 

공개키 암호의 단점

- 전사적 공격에 취약하다. 즉 가능한 모든 개인키의 경우의 수를 대입하는 방식으로 암호문이 해독될 수 있다.

- 공개키로부터 개인키를 계산해낼 수도 있다. (수학적으로 계산 불가능함이 증명되지 않았다.)

- 가능한 메시지 공격의 가능성이 있다. (가능한 모든 메시지를 공개키로 암호화하여 암호문과 비교)

 

 

공개키 암호 체계는 비밀키 암호 체계와 달리 책임 추적성 문제와 키의 배송문제를 해결할 수 있어 다양한 분야에서 쓰이고 있다. 하지만 단점 역시 존재하기 때문에 공개키 암호 시스템을 여러 방식으로 보완하여 사용한다.