공개 키 암호(Public-key Cryptography)란?

암호화와 복호화에 쌍을 이루는 서로 다른 키(공개 키와 개인 키)를 사용하는 암호 방식. 공개 키는 누구에게 알려져도 되고, 개인 키는 본인만 가진다. 키 배송이 쉬워지는 반면 계산이 무거우므로, 데이터 본체의 암호화에는 대칭 키 암호와 조합하여 사용한다. RSA와 타원 곡선 암호가 대표적이다.

일본어 명칭: 公開鍵暗号

공개 키 암호(Public-key Cryptography)은(는) 정보 보안 기초, 하드웨어 보안 등 2개 분야의 연습 문제 5개에 나와요.

분야: 정보 보안 기초

공개 키와 개인 키의 구분

공개 키 암호에서는 각자가 수학적으로 쌍을 이루는 공개 키와 개인 키를 가집니다. 비밀을 지키는 목적에서는 송신자가 수신자의 공개 키로 암호화하고, 수신자만 자신의 개인 키로 복호화합니다. 본인임을 보이는 목적에서는 본인이 자신의 개인 키로 서명을 만들고, 누구나 본인의 공개 키로 검증합니다(디지털 서명). 공개 키로부터 개인 키를 구하는 것이, RSA에서는 큰 수의 소인수분해, 타원 곡선 암호에서는 타원 곡선 위의 이산 로그 문제의 어려움 때문에 현실적으로 불가능하다는 것이 안전성의 근거입니다.

대칭 키 암호와의 차이와 키의 수

대칭 키 암호에서는 통신하는 두 사람의 짝마다 비밀 키를 미리 공유해 두어야 하며, n명이면 n(n−1)/2개의 키가 필요합니다. 공개 키 암호에서는 각자가 한 쌍의 키를 가지면 되므로 키는 모두 2n개입니다. 예를 들어 100명이라면 대칭 키 암호에서는 4950개, 공개 키 암호에서는 200개입니다. 한편 공개 키 암호의 계산은 대칭 키 암호보다 몇 자릿수나 무거우므로, 실제로는 데이터 본체를 대칭 키 암호로 암호화하고 그 키의 전달이나 합의에 공개 키 기술을 사용하는 하이브리드 암호 방식이 일반적입니다.

공개 키의 소유자를 확인하는 구조

공개 키 암호에서는 사용하는 공개 키가 정말 상대의 것인지가 중요합니다. 공격자가 자신의 공개 키를 상대의 것이라고 속여 건네면, 그 상대 앞으로 보낸 암호문을 읽히게 됩니다. 그래서 인증 기관(CA)이 '이 공개 키는 이 사람(도메인 이름)의 것이다'라고 서명한 인증서를 사용하여 공개 키의 소유자를 보증합니다. 이 구조를 PKI(공개 키 기반 구조)라고 하며, HTTPS에서 사용되는 TLS의 서버 인증서가 그 대표적인 예입니다. 참고로 2020년대 중반 시점에는 미래의 양자 컴퓨터에 대비한 양자 내성 암호로의 전환도 진행되고 있습니다.

도전해 보기: 공개 키 암호(Public-key Cryptography) 관련 문제

공개 키 암호를 사용하여 A 씨가 B 씨만 읽을 수 있도록 메시지를 암호화해 보내려고 한다. 암호화에 사용하는 키는?

  1. AA 씨의 개인 키
  2. BB 씨의 공개 키
  3. CB 씨의 개인 키
정답과 해설 보기

정답: B. B 씨의 공개 키

공개 키 암호에서는 각자가 공개 키와 개인 키의 쌍을 가집니다. 공개 키는 누구에게 알려져도 되고, 개인 키는 본인만 엄중하게 보관합니다. 공개 키로 암호화한 데이터는 쌍이 되는 개인 키로만 복호화할 수 있습니다. 그래서 A 씨는 B 씨의 공개 키로 암호화해 보내고, B 씨는 자신의 개인 키로 복호화합니다. 도중에 암호문을 엿보더라도 B 씨의 개인 키를 갖지 않은 사람은 읽을 수 없습니다. B 씨의 개인 키는 B 씨만 가지고 있으므로 A 씨가 사용할 수는 없습니다. A 씨의 개인 키로 처리하는 것은 A 씨가 만들었음을 보이는 디지털 서명의 경우입니다.

50명의 구성원이 두 사람씩 짝지은 모든 조합에서 다른 구성원에게 내용을 알리지 않고 암호 통신을 하려고 한다. 대칭 키 암호를 사용하는 경우에 필요한 키의 수와 공개 키 암호를 사용하는 경우에 필요한 키의 수(공개 키와 개인 키의 합계)의 조합으로 올바른 것은?

  1. A대칭 키 암호는 1225개, 공개 키 암호는 100개
  2. B대칭 키 암호는 2450개, 공개 키 암호는 100개
  3. C대칭 키 암호는 100개, 공개 키 암호는 1225개
정답과 해설 보기

정답: A. 대칭 키 암호는 1225개, 공개 키 암호는 100개

대칭 키 암호에서는 두 사람의 짝마다 별도의 키가 필요합니다. 같은 키를 3명 이상이 사용하면 다른 구성원도 내용을 읽을 수 있기 때문입니다. n명에서 2명을 고르는 조합의 수는 n(n−1)/2이므로 50명이면 50 × 49 / 2 = 1225개입니다. 공개 키 암호에서는 각자가 공개 키와 개인 키를 하나씩 가지면 누구에게 보낼 때든 상대의 공개 키로 암호화할 수 있으므로, 키는 2n = 2 × 50 = 100개로 충분합니다. 인원이 늘면 대칭 키 암호의 키 수는 인원의 대략 제곱에 비례하여 늘어나는 데 비해, 공개 키 암호는 인원에 비례할 뿐입니다. 이것이 공개 키 암호에서 키 관리가 쉬워지는 이유 중 하나입니다.

자주 묻는 질문

공개 키 암호로 암호화할 때는 누구의 키를 사용하나요?

수신자의 공개 키로 암호화합니다. 복호화할 수 있는 것은 수신자가 가진 쌍의 개인 키뿐입니다. 자신의 개인 키로 처리하는 것은 암호화가 아니라 디지털 서명의 경우입니다.

공개 키 암호만으로 큰 파일을 암호화하지 않는 이유는 무엇인가요?

공개 키 암호는 계산이 무거워 큰 데이터를 직접 암호화하는 데 적합하지 않기 때문입니다. 파일은 빠른 대칭 키 암호로 암호화하고, 그 대칭 키만 공개 키 암호로 보호하는 하이브리드 암호 방식을 사용합니다.

해설 속 공개 키 암호(Public-key Cryptography)

공개 키 암호(Public-key Cryptography)이(가) 나오는 문제 (5)

  1. 공개 키 암호를 사용하여 A 씨가 B 씨만 읽을 수 있도록 메시지를 암호화해 보내려고 한다. 암호화에 사용하는 키는?
  2. 50명의 구성원이 두 사람씩 짝지은 모든 조합에서 다른 구성원에게 내용을 알리지 않고 암호 통신을 하려고 한다. 대칭 키 암호를 사용하는 경우에 필요한 키의 수와 공개 키 암호를 사용하는 경우에 필요한 키의 수(공개 키와 개인 키의 합계)의 조합으로 올바른 것은?
  3. 시큐어 부트에서 소프트웨어 서명 확인에 공개 키 암호를 사용하는 이점으로 올바른 것은 무엇입니까?
  4. 대칭 키 암호의 특징으로 올바른 것은?
  5. 큰 파일을 상대에게 암호화하여 보낼 때 자주 사용되는 하이브리드 암호 방식의 절차로 올바른 것은?

관련 용어

대칭 키 암호(Symmetric-key Cryptography) 디지털 서명(Digital Signature) TLS 다요소 인증(Multi-factor Authentication) 랜섬웨어(Ransomware) 메시지 인증 코드(Message Authentication Code) 사회공학 기법(Social Engineering) 솔트(Salt) 제로데이 공격(Zero-day Attack) 최소 권한의 원칙(Principle of Least Privilege)

용어집으로 돌아가기