본문 바로가기
모의해킹 침해대응 과정/본 과정

암호학 / 공개키(비 대칭키)암호

by 알거음슴 2021. 6. 25.

공개키

공개 키 암호 방식(public-key cryptography)은 암호 방식의 한 종류로 사전에 비밀 키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다. 공개 키 암호 방식에서는 공개 키와 비밀 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다. 공개 키는 보안 타협 없이 공개적으로 배포가 가능하다.[1] 공개 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 비대칭 암호라고 부르기도 한다.

 

키 배송 문제

대칭 암호를 사용하려면 송신사와 수신자가 대칭키(공유키, 비밀키)를 사전에 공유해야하는데 이때 중간에 공격자가 키를 가로채면 수신자는 복호화할 수 없다.

이를 극복하는 방법은 크게 4가지 방법이 있다.

1. 키의 사전 공유에 의한 해결

송수신자간에 단둘이 사용할 수 있는 키쌍을 생성하여 전달한다. 전달방식은 직접 전달이 가장 안전하고 이메일 또는 일반 메일등으로 전송하면 위험하다.

안전한 방법이긴 하나 송수신자가 많아지면 서로서로의 대한 키를 각각 생성하여 직접 전달해야한다 및 사용해야함으로 관리가 어렵다 즉 현실적이지 못하다.

 

2. 키 배포 센터에 의한 해결

대표적으로 kerberos 키 베포 센터 역할의 Server을 생성 송신자와 수신자간의 중간역할로 특정 알고리즘을 통해 키를 Server에서 관리하는 방식. 송신자 <--요청 및 응답--> KDC  <-- 요청 및 응답--> 수신자 방식이다. 

단 Server 방식의 경우 구성원수가 늘어날 수록 키 베포 센터의 부하가 걸리며 베포 센터가 다운될 경우 모든 구성원이 모두 통신을 할 수 없다. 또한 공격자는 베포 센터를 집중적으로 공격하게 되는 문제점이 있다.

 

3. Diffie-Hellman 키 교환 

이산 대수 문제(Discrete Logarithm Problem) 방식을 활용 송수신자간의 상대방의 공개키와 나의 개인키를 이용하여 Diffie-Hellman 알고리즘으로 계산 시 비밀키가 나올 수 있도록 하는 방식이다.

 

 

4. 공개 키 암호에 의한 해결 

공개 키 암호화 방식은 암호화 키와 복호화 키가 서로 다르다, 암호화키의 경우 공개해도 되기 때문에 공개키 암호라고도 한다, 누구나 공개된 암호화키로 암호화는 가능하나 복호화를 진행하려면 복호화키를 가지고 있는 사람만 가능하다.

 1) 수신자는 송신자에게 사전에 암호화 키를 전달한다

 2) 송신자는 암호화키로 암호화하여 수신자에게 전송

 3) 암호문을 복호화할 수 있는 수신자는 내용을 복호화할 수 있다. 

 4) 복호화키를 송수신자간에 공유할 필요가 없음으로 중간에 공격자에 의해 도청되더라도 복호화할 수 없다.

암호화 키와 복호화 키가 서로 다른방식, 이중 암호화 키를 공개키(public-key), 복호화 키를 개인키(private key)라 한다. 송신자는 암호화키만 필요하고 수신자는 복호화키만 필요하고 암호화키는 도청자에게 알려져도 무방하다.

허나 대칭암호에 비해 매우 느린 처리속도를 가지고 있고, 중간자공격 및 공개키의 진위 판단등의 문제점이있다.

 

RSA(Rivest-Shamir-Adleman)

공개키 암호화 방식의 알고리즘중 하나 개발자 3명의 이름을 따서 만들어진 알고리즘이다. 공개키암호 및 디지털 서명, 키 교환에서 활용된다.

RSA에 의한 암호화

RSA에서 평문도 키도 암호문도 숫자로 변환한 뒤 실행

RSA의 암호화는 다음 식으로 표현

  암호문 = (평문)E mod N

평문을 E 제곱해서 N으로 나눈 나머지

* (E, N) : 공개 키

E와 N이라는 한쌍의 수를 알면 누구라도 암호화를 행할 수 있다.

E와 N이 RSA 암호화에 사용되는 키

E와 N은 면밀한 계산을 통해 생성

 

RSA에 의한 복호화

복호화도 단순하다. RSA 복호화는 다음 식으로 표현

  평문 = (암호문)D mod N

암호문을 D 제곱해서 N으로 나눈 나머지

* (D, N): 개인 키

DN이라는 한쌍의 수를 알면 누구라도 복호화를 행할 수 있다.

DNRSA 복호화에 사용되는 키

DN도 면밀한 계산을 통해 생성

ED는 밀접한 연관관계

 

RSA같은 공개 키 방식의 경우 기밀성을 침해하는 공격을 진행할 수 있다. RSA를 해독하는것이 아닌 공격자는 중간에서 송신자 또는 수신자의 행세를 하는 역할을 진행하는것이다.

 

[참고] 기타 공개 키 암호

1) ElGamal 방식

ElGamal 방식은 Taher ElGamal에 의한 공개 키 알고리즘 RSA는 소인수분해의 어려움을 이용 ElGamal 방식은 이산대수를 구하는 것이 어렵다는 것을 이용 ElGamal 방식 암호화에서는 암호문의 길이가 평문의 2배가 되어 버린다는 결점

GPG(GnuPG)에서 사용

2) Rabin 방식

Rabin 방식은 M.O. Rabin에 의한 공개 키 알고리즘 Rabin 방식은 mod N으로 평방근을 구하는 것이 어렵다는 사실을 이용 Rabin 방식 공개 키 암호의 해독은 소인수분해 정도로 어렵다는 것이 증명

3) 타원곡선 암호

타원 곡선 암호(ECC, Elliptic Curve Cryptosystems)는 최근 주목받고 있는 공개 키 암호 알고리즘

RSA에 비해 키의 비트 수가 적다. 타원 곡선 위에 곱셈을 정의하고, 이 곱셈의 역연산이 어렵다는 것을 이용

 

하이브리드 암호

대칭암호 + 비대칭암호(공개키암호) = 하이브리드암호

두 암호방식의 장단점을 극복하기 위해 고안된 암호 대칭암호의 키 배송 문제 해결과 비대칭 암호의 속도적인 부분을 해결할 수 있도록 메시지는 대칭암호화 진행하며 세션키는 공개키 암호화 방식으로 진행하는 방식.

암,복호화 과정을 보면 메시지 즉 평문은 대칭암호로 암호화를 진행하며 대칭암호화에서 사용된 세션 키는 의사난수 생성기로 생성, 이후 세션키를 공개 키 암호화 방식으로 암호화 진행하여 키를 전달한다.

 

[참고] 의사난수 생성기

세션 키 생성에 활용되며 세션키를 공격자가 추측할 수 없도록 세션키의 일부 비트라도 추측되지 않도록 하는 기술