암호화 키란?

키는 특정 순서에 따라 무작위로 배열된 문자 그룹입니다. 암호화 프로토콜은 키를 사용하여 데이터를 변경하여 변환하고 키가 없는 사람은 정보를 해독할 수 없도록 합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 암호화에서 "키" 가 무엇인지 알아보기
  • 암호화에서 키가 데이터를 변환하는 데 어떻게 사용되는지 이해하기
  • 공개 키 교환으로 HTTPS가 가능해지는 방법 설명

글 링크 복사

암호화 키

암호화 키란?

암호화에서 키는 암호화 알고리즘 내에서 데이터를 무작위로 보이도록 변경하는 데 사용되는 문자열입니다. 물리적 키처럼 데이터를 잠그고(암호화) 올바른 키를 가진 사람만 잠금 해제(암호 해독)할 수 있습니다.

암호화 키 Hello

원본 데이터는 일반 텍스트로 알려져 있으며, 키로 암호화한 후의 데이터는 암호 텍스트로 알려져 있습니다.

공식:

일반 텍스트
+ 키
= 암호 텍스트

초기 형태의 암호화 키

컴퓨터가 등장하기 전에는 일반 텍스트에서 한 문자를 다른 문자로 간단히 대체하여 암호 텍스트를 만드는 경우가 많았는데, 이를 "치환 암호"라고 합니다. 예를 들어, 누군가 다른 사람에게 "Hello"라는 메시지를 보내고 각 문자가 알파벳에서 한 자리 뒤의 문자로 바뀐다고 가정해 보겠습니다. 그러면 "Hello"는 "Ifmmp"가 됩니다.

H e l l O
+1 +1 +1 +1 +1
I F M M P

"Ifmmp"는 무의미한 문자 문자열처럼 보이지만, 누군가가 키를 알고 있다면 적절한 문자를 대입하여 "Hello"로 메시지를 해독할 수 있습니다. 이 예의 경우 키는 (문자) - 1이며, 각 문자를 알파벳에서 한 자리씩 앞으로 이동시켜 실제 문자에 도달합니다.

I F M M P
-1 -1 -1 -1 -1
H e l l O

이러한 암호는 특정 문자가 특정 텍스트에서 다른 문자보다 더 자주 나타나기 때문에 간단한 통계 분석으로 비교적 쉽게 해독할 수 있습니다(예: E는 영어에서 가장 일반적인 문자입니다). 이를 방지하기 위해 암호학자들은 일회용 패드라는 시스템을 개발했습니다.

일회용 패드는 일반 텍스트의 문자 수만큼의 값이 있는 일회용 전용 키입니다. 즉, 각 문자는 알파벳에서 고유한 개수의 문자를 제거한 문자로 대체됩니다.

예를 들어 누군가 "Hello," 메시지를 암호화해야 하며 7, 17, 24, 9, 11 값이 포함된 일회용 패드를 사용한다고 가정해 보겠습니다.

H e l l O
7 17 24 9 11

이전에는 단순히 각 문자마다 한 자리씩(문자 + 1) 뒤로 이동했지만, 이제는 각 문자마다 알파벳에서 다른 자리로 이동합니다. 첫 글자 H에 7을 더하고, 두 번째 글자에는 17을 더하는 식입니다. Z를 지나가는 계산의 경우 알파벳의 시작 부분으로 돌아가서 계속 더하기만 하면 됩니다.

H e l l O
7 17 24 9 11
O v J U Z

일반 텍스트 "Hello" 에서 시작하여 이제 키 "7, 17, 24, 9, 11"을 사용해서 "Ovjuz"라는 암호 텍스트가 생겼습니다.

일회용 패드를 통한 통신이 제대로 작동하려면 대화의 양쪽이 각 개별 메시지에 대해 동일한 키를 사용해야 하지만(대칭 암호화), 새 메시지마다 다른 키를 사용해야 합니다. 제3자에게는 "Ovjuz"가 무작위 넌센스처럼 보이지만, 암호 텍스트 "Ovjuz"를 받는 사람은 암호 해독을 위해 "7, 17, 24, 9, 11" 키를 사용해야 한다는 것을 알 수 있습니다(더하기 대신 빼기).

O v J U Z
7 17 24 9 11
H e l l O

따라서 간단한 메시지도 임의의 데이터 문자열인 키로 변경하여 암호화하거나 해독할 수 있습니다.

최신 암호화의 핵심

위의 초기 암호화 예시는 임의의 정보 문자열을 사용하여 일반 텍스트를 암호 텍스트로 변환하는 방법을 보여 주지만, 오늘날의 암호화 키는 훨씬 더 복잡합니다.

예를 들어 웹 사이트의 공개 키는 다음과 같을 수 있습니다.

04 CE D7 61 49 49 FD 4B 35 8B 1B 86 BC A3 C5 BC D8 20 6E 31 17 2D 92 8A B7 34 F4 DB 11 70 4E 49 16 61 FC AE FA 7F BA 6F 0C 05 53 74 C6 79 7F 81 12 8A F7 E2 5E 6C F5 FA 10 69 6B 67 D9 D5 96 51 B0 (2019년에 cloudflare.com SSL 인증서에서 복사됨)

이는 앞서 "Hello"를 암호화하는 데 사용한 "7 17 24 9 11" 키보다 훨씬 더 복잡합니다.

최신 암호화는 단순히 더하거나 빼는 대신 알고리즘이라고 알려진 복잡한 수학 공식을 사용합니다. 그리고 최신 키는 키에 대한 단순한 무작위 숫자 문자열 대신 일반적으로 훨씬 더 무작위화되어 있습니다.

여기에는 여러 가지 이유가 있습니다.

  1. 컴퓨터는 인간 암호화 전문가보다 훨씬 더 복잡한 계산을 단시간에 수행할 수 있으므로 더 복잡한 암호화가 가능할 뿐만 아니라 필수적입니다.
  2. 컴퓨터는 개별 문자와 숫자 수준뿐만 아니라 데이터를 구성하는 1과 0이라는 이진 수준에서도 정보를 변경할 수 있습니다.
  3. 암호화된 데이터가 충분히 무작위화되지 않은 경우 컴퓨터 프로그램에서 암호를 해독할 수 있습니다. 진정한 의미의 보안 암호화를 위해서는 진정한 무작위성이 아주 중요합니다.

암호화 알고리즘과 암호화 키를 결합하면 사람이 인식할 수 없을 정도로 텍스트가 변환됩니다.

SSL 암호화(HTTPS)에서 키는 어떻게 사용될까요?

암호화에는 두 가지 종류가 있습니다. 바로 대칭 암호화와 공개 키 암호화라고도 하는 비대칭 암호화입니다. 대칭 암호화에서는 대화의 양쪽에서 동일한 키를 사용하여 일반 텍스트를 암호 텍스트로 변환하거나 그 반대의 경우도 마찬가지입니다.

비대칭, 즉 공개 키 암호화에서는 대화의 양측에서 각각 다른 키를 사용합니다. 하나의 키를 공개 키, 또 하나의 키를 개인 키라고 하는데, 이는 당사자 중 한 명이 키를 비밀로 유지하고 다른 사람과 공유하지 않기 때문에 붙여진 이름입니다. 일반 텍스트가 공개 키로 암호화되면 공개 키가 아닌 개인 키로만 암호를 해독할 수 있습니다.

SSL(또는 TLS)은 인터넷 통신을 안전하게 유지하는 데 사용되는 암호화 프로토콜로, HTTP 대신 HTTPS를 통해 서비스되는 웹 사이트에서는 이러한 종류의 암호화가 사용됩니다.TLS/SSL에서 웹 사이트 또는 웹 애플리케이션은 공개 키와 개인 키를 모두 갖게 됩니다.공개 키는 누구나 볼 수 있도록 웹 사이트의 SSL 인증서에 공개적으로 공유됩니다.개인 키는 원본 서버에 설치되며 공유되지 않습니다.

TLS/SSL 통신 세션은 TLS 핸드셰이크로 시작되며, 이 과정에서 웹 사이트와 클라이언트는 공개 키와 개인 키를 사용하여 세션 키라고 하는 새 키를 생성합니다. 그런 다음 양쪽에서 이러한 세션 키를 사용하여 메시지를 암호화합니다.

따라서 TLS는 비대칭 암호화(두 개의 키 사용)로 시작하여 대칭 암호화(하나의 키 사용)로 이동합니다. 양쪽 모두 통신 세션 중에는 동일한 키를 사용하지만, 새 세션을 시작하면 함께 새 키를 생성합니다.