공개키 암호화란?
공개키 암호 방식은 암호 방식의 한 종류로 대칭키 암호 방식과 달리 암호화와 복호화에 이용하는 키가 다른 방식을 말합니다. 공개 키 암호를 구성하는 알고리즘은 대칭키 암호 방식과 비교하여 비대칭 암호라고 부르기도 합니다.
공개 키 암호 방식은 크게 두 가지 종류로 나눌 수 있다.
- 공개키 암호 -> 비밀키를 가지고 있는 사용자만 내용을 열어볼 수 있습니다.
- 공개키 서명 -> 비밀키로 만들었다는 것을 누구나 확인할 수 있습니다.
공개키의 암호의 특징
공개키 암호 방식은 비밀키 암호보다 계산이 복잡한 단점이 있기 때문에, 효율을 위해 비밀 키 암호(대칭 암호)와 함께 사용된다. 메시지를 임의로 만들어진 비밀 키를 이용해 암호화한 다음 이 비밀 키를 다시 수신자의 공개 키로 암호화하여 메시지와 함께 전송하는 것입니다. 이렇게 하면 공개키 암호 기술로는 짧은 비밀키만을 암호화하고 보다 효율적인 비밀키 암호 기술로 전체 메시지를 암호화하므로 양쪽의 장점을 취할 수 있습니다.
공개키 암호의 원리
공개 키 암호 방식은 매우 풀기 어려운 수학적 문제(공개키)를 바탕으로 만들어집니다. 키를 만드는 사람은 이 문제(공개키)를 일반에 공개하고 특정한 정보(비밀키)는 자신만이 알 수 있도록 숨깁니다. 그러면 어떤 사람이건 이 문제를 이용해 메시지를 암호화하면 키를 만든 사람만이 이 문제를 풀어 원래 메시지를 해독할 수 있습니다.
RSA 암호와 같은 초기 암호들은 두 개의 큰 소수를 곱한 숫자를 문제로 사용하였습니다. RSA 의 원리는 다음과 같습니다.
사용자는 임의의 큰 소수를 두 개 골라 비밀 키로 삼고 그 곱한 값을 공개 키로 공개합니다. 큰 수의 소인수 분해는 대단히 풀기 어려운 문제에 속하기 때문에 다른 사람들은 비밀 키를 알 수 없을 것이라는 사실이 보장됩니다. 그러나 최근 이 분야의 연구가 크게 진전되어 RSA의 안전성을 보장하기 위해서는 수천비트 이상의 큰 소수를 키로 사용해야 합니다.
(양자컴푸터를 사용하게 되면 풀수 있다고 합니다....)
(RSA 는 공개키 암호에서 사용되는 암호방식 중 하나입니다. 뒤에서 더 자세하게 다루도록 하겠습니다.)
또 다른 종류의 문제로는 a와 c가 알려진 상태에서 방정식 ab = c의 해 b를 구하는 문제가 있습니다. 실수나 복소수에 대해서는 로그 함수를 이용해 이 문제를 쉽게 풀 수 있습니다. 그러나 유한군에서는 이런 문제를 풀기가 어려운 것으로 알려져 있으며 이런 문제를 이산 로그 문제라 부릅니다. 타원곡선암호를 비롯한 여러 가지 공개 키 암호들이 이산 로그 문제를 바탕으로 만들어져 있습니다.
공개키 암호에 사용되는 알고리즘의 종류(뒤에서 알고르즘에 대한 자세한 설명을 다루도록 하겠습니다.)
RSA(Rivest, Shamir and Adleman)
RSA는 라이베스트(Rivest)와 샤미르(Shamir)와 애들먼(Adleman)의 첫 자를 따서, RSA라고 함)에 의해 처음으로 명명되었습니다. RSA는 공개키 암호 시스템으로 암호화와 인증에 사용되고, RSA는 오늘날 사용되는 공개키 암호 방식의 가장 일반적인 알고리즘입니다. 위에서 설명드린 것처럼 RSA 체계에서는 두 개의 숫자(큰 소수)를 곱하여 얻어낸 계수를 이용해 키를 생성합니다. 이 시스템은 큰 수의 인수분해의 어려움에 안전성을 두고 있습니다. RSA는 수많은 국제기구의 표준일 뿐만 아니라 산업 표준으로 권장되고 있습니다.
ElGamal
이산 대수 문제의 어려움에 기반을 둔 최초의 공개키 암호 알고리즘인 ElGamal은 1984년 스탠퍼드 대학의 암호 학자 T. ElGamal에 의해 제안되었습니다. ElGamal으로 암호화하면 메시지의 길이가 두 배로 늘어나는 특징이 있습니다. 하지만 암호화할 때 난수를 이용하므로 같은 메시지에 대해 암호화하여도 암호화할 때마다 서로 다른 암호문을 얻게 되는데, 이것은 정보보호 측면에서 큰 장점이 됩니다. RSA에서는 난수를 사용하지 않기 때문에 같은 메시지에 대한 암호문은 항상 같다는 특징이 있는데, 이것은 공격자가 암호문을 복호화하지 않고도 평문을 추측할 수 있는 단점이 있습니다. 그래서 실제 적용 시 RSA는 난수를 사용하는 OAEP(Optimal Asymmetric Encryption Padding)이라는 난수화 패딩 알고리즘과 함께 사용됩니다.
ECC(Elliptic Curve Cryptosystem, 타원 곡선 암호 시스템)
타원 곡선(Elliptic Curves)은 약 150년 전부터 수학적으로 광범위한 연구가 있었다. ECC는 10여 년 전 비트 당 안전도가 타 공개키 시스템보다 효율적이라는 것이 알려졌고, 최근 높은 속도의 구현이 가능하게 되었습니다. 또한, ECC는 전원의 양이 한정된 이동 통신 기기의 암호화에 적용될 수 있으며, 차세대 공개키 암호 방법으로 주목 받고 있습니다.
전자서명(Digital signature)
전자 서명(Digital signature)은 우리가 일상생활에서 신원을 확인하거나 거래를 하려고 할 때 주민등록증이나 인감 날인 또는 서명 등이 필요하듯이, 인터넷상에서도 이를 확실히 보장해 줄 수 있는 수단이 전자 서명입니다. 한마디로 전자 서명은 이 증서 형태로 발급되는 자신만의 디지털 인감이며 서명인 것입니다. 결국 전자 서명은 어떠한 사람이 그 문서를 작성했는지 증명하는 법이므로 전자 서명을 하기 위해선 어떤 문서에 자신의 개인키로 암호화해서 첨부하는 방식 입니다.
공개키 암호화의 단점
공개키 암호 방식은 컴퓨터 보안을 강화하고 메시지의 무결성을 확인하는 데 사용하지만, 몇 가지 한계점도 있습니다. 암호화 및 해독과 관련된 복잡한 수학적 계산 때문에, 대량의 데이터를 처리해야 할 경우 매우 느려진다는 점입니다. 또한, 이러한 유형의 암호 방식은 개인키가 안전하게 보호된다는 가정을 전제로 합니다. 개인키가 실수로 공유되거나 노출될 경우, 이와 상응하는 공개키를 통해 암호화된 모든 메시지의 보안이 위협받게 됩니다. 또한, 사용자가 실수로 개인키를 잃어버릴 수도 있으며, 이 경우에는 암호화된 데이터에 접근할 수 없게 됩니다.
'cryptology' 카테고리의 다른 글
ElGamal 란? 엘가말 암호란? (0) | 2022.09.04 |
---|---|
RSA 란? (0) | 2022.09.03 |
SEED 암호화란? (0) | 2022.08.31 |
Twofish 암호화란? (0) | 2022.08.17 |
ARIA 암호란?? ARIA 에 대해 알아보자 (0) | 2022.08.16 |
댓글