비대칭 암호화라고도 하는 공개 키 암호화에서는 하나의 공유 키 대신 공개 키와 개인 키라는 두 개의 개별 키가 사용됩니다. 공개 키 암호화는 인터넷 보안을 위한 중요한 기술입니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
공개 키 암호화는 서로 다른 두 개의 키로 데이터를 암호화하거나 서명하고 그 중 하나인 공개 키를 누구나 사용할 수 있도록 하는 방식입니다. 다른 하나의 키를 개인 키라고 합니다. 공개 키로 암호화된 데이터는 개인 키로만 해독할 수 있습니다. 이렇게 키가 하나가 아닌 두 개를 사용하므로 공개 키 암호화를 비대칭 암호화라고도 합니다. 이는 특히 TLS/SSL에 널리 사용되며, 이 경우 HTTPS가 가능해집니다.
암호화에서 키는 데이터를 무작위로 보이도록 변환하는 데 사용되는 정보로, 대개 큰 숫자 또는 숫자와 문자로 된 문자열입니다. 암호화되지 않은 데이터(일반 텍스트라고도 함)를 키를 사용하여 암호화 알고리즘에 넣으면 반대쪽에서는 무작위로 보이는 데이터가 나옵니다. 하지만 데이터를 해독할 수 있는 올바른 키를 가진 사람이라면 누구나 데이터를 일반 텍스트 형식으로 다시 변환할 수 있습니다.
예를 들어 일반 텍스트 메시지 "hello"를 키로 암호화한다고 가정하고, 그 키가 "2jd8932kd8"이라고 가정해 보겠습니다. 이 키로 암호화된 간단한 "hello"는 이제 "X5xJCSycg14="로 읽히며, 이는 임의의 가비지 데이터처럼 보입니다. 그러나 동일한 키로 암호를 해독하면 "hello"가 반환됩니다.
일반 텍스트 + 키 = 암호 텍스트:
hello + 2jd8932kd8 = X5xJCSycg14=
암호 텍스트 + 키 = 일반 텍스트:
X5xJCSycg14= + 2jd8932kd8 = hello
이것은 하나의 키만 사용되는 대칭 암호화의 예입니다. 공개 키 암호화에서는 대신 두 개의 키가 있습니다. 공개 키로는 데이터가 암호화되고 개인 키로는 암호를 해독합니다.
공개 키 암호화는 인터넷을 통한 보안 통신을 설정하는 데(HTTPS를 통해) 매우 유용합니다. 공개적으로 공유되는 웹 사이트의 SSL/TLS 인증서에는 공개 키가 포함되어 있고, 개인 키는 원본 서버에 설치되어 있으며, 이 서버는 웹 사이트에서 "소유"합니다.
TLS 핸드셰이크에서는 공개 키 암호화를 사용하여 원본 서버의 신원을 인증하고 세션 키를 생성하는 데 사용되는 데이터를 교환합니다.RSA, Diffie-Hellman 등의 키 교환 알고리즘은 공개-개인 키 쌍을 사용하여 세션 키에 합의하고, 이 세션 키는 핸드셰이크가 완료되면 대칭 암호화를 위해 사용됩니다.클라이언트와 서버는 각 통신 세션에 대해 새로운 세션 키에 합의할 수 있으므로 악의적인 공격자가 이전 세션에서 세션 키 중 하나를 식별하거나 도용하더라도 통신을 해독할 수 없습니다.