[암호학] 키 관리와 분배

Hyunwoo·2025년 8월 8일

암호학

목록 보기
1/1

대칭키 암호를 이용한 대칭키 분배

대칭키 암호란?

대칭키 암호란 동일한 키로 암호화와 복호화를 수행하는 암호 알고리즘이다.
대표적인 알고리즘: AES, DES
특징으로는 비대칭키 암호보다 속도가 빠르다.

동일한 키로 암호화와 복호화를 수행하니 암호화 하는 사람과 복호화 하는 사람은 동일한 키를 분배 받아야한다. 이를 어떻게 할지가 본 문서의 핵심이다.

두 참가자가 키를 분배 받는 방식을 생각해보면 대략 4개로 나눌 수 있다.
1. A가 키를 선택하여 B에게 직접 전달
2. 제 3자가 키를 선택하여 A와 B에게 직접 전달
3. A와 B가 이전에 사용한 적 있는 키를 이용하여 암호화하여 상대에게 전달
4. A와 B가 제 3자인 C와 암호화된 링크가 있다면, C가 암호화 된 링크 상에서 A와 B에게 키를 전달

직접 전달 방식의 한계

여기서 1번 2번 방식은 한계가 있다.
이유는 분산 시스템이나 IP레벨에서 이루어지는 통신에서는 매우 많은 장치가 다른 매우 많은 장치들과 통신을 해야되기 때문이다. 하나의 장치가 각각 다른 장치들 모두의 키를 다르게 소유하고 있어야하기 때문에 각 장치는 매우 많은 키가 필요하다.

이전 키로 암호화하여 전달 방식의 한계

3번 방식도 마찬가지로 한계가 있다.
마찬가지로 매우 방대한 양의 키가 필요하며, 공격자가 만약 이전 키를 얻으면 이후의 키들은 모두 복호화가 가능하기 때문이다. 도미노 처럼

암호화된 링크를 통한 전달

따라서 이러한 1,2,3번 방식의 문제를 해결하기 위하여 가장 좋은 방법은 '키 분배 센터'를 이용하는 방법이다.

이 방식에서는 '필요한 키의 개수 == 사용자 수'이다. 이유는 각 사용자는 KDC(Key Distribution Scenario)와 둘만의 유일한 마스터키를 교환하기만 하면 그 이후는 세션 키를 사용함으로써 통신이 필요할 때만 키를 생성하기 때문이다. 이러한 KDC구조는 계층적으로 존재할 수도 있다. 이제 이러한 방식이 어떤식으로 동작하는지 알아보자.

KDC방식의 키 분배 시나리오

먼저 알아야 될 것은 '세션키'의 개념이다. 세션키는 하나의 통신 세션에서 사용하는 키이며, 통신이 끝나면 폐기된다. 이렇게 폐기함으로써 공격자가 키를 해독할 시간을 주지 않는 것이다. 여기서는 이러한 세션키(즉 대칭키 역할을 수행한다.)를 KDC 방식에서 어떻게 분배하는지 서술한다.

  1. A가 KDC에게 자신의 식별자, B의 식별자, 임시비표 N1을 전송함으로 세션 키를 요청한다.
    • 여기서 임시비표는 난수 혹은 타임스탬프 등의 값이며 이번 통신과 다른 통신과 혼돈하지 않기 위하여 사용한다.
  2. KDC는 사전에 A와 공유된 A의 마스터키로 암호화하여 세션키와 (1)에서 수신한 내용을 A에게 송신한다. 추가로 A는 B에게 KDC를 대신해서 전달해줄 B를 위한 내용도 같이 수신한다.
  3. KDC와 A만 아는 A의 비밀키로 암호화되어 (1)의 내용들을 전달 받았기에 A만 세션 키를 복호화할 수 있으며, 상대방이 KDC라는 것을 확인할 수 있다. 이제 A가 세션키를 저장한 후에 B에게 KDC에게 받은 내용을 대신 전달한다. 내용은 B의 비밀키로 암호화된 세션키와 A의 식별자로 구성되어있다.
  4. B는 마찬가지로 세션키를 소유하게 되며, 해당 내용이 KDC로부터 전송된것이라는 것을 알 수 있다. 또한 A의 식별자가 있기 때문에 통신 상대방이 A라는 것도 알 수 있다. 하지만 상대방이 A인 것을 확인하기 위하여 임시비표 N2를 생성하여 A에게 세션키로 암호화하여 전송한다. 세션키를 가진 사람은 A와 B뿐이기 때문이다.
  5. A는 복호화하여 N2를 함수화하여 다시 B에게 전달하여 자신이 A라는 것을 인증하게 된다.

세션 키 수명 주기

현대에 대부분의 통신은 세션키를 통하여 암호화하여 안전한 통신을 한다.
세션키는 공격자에게 복호화할 시간을 주지 않기 때문에 빈번하게 갱신될 수록 안전하다.
하지만 계속 세션키를 생성하고 분뱋는 과정에서 오버헤드가 발생하기 마련이고, 대칭키 암호의 가장 큰 장점 중에 하나인 속도가 빠르다는 점을 상쇄시킨다.
따라서 안전효율 사이 적절한 균형을 맞출 필요가 있다.

연결형 프로토콜에서는 보통 새로운 연결마다 세션 키를 사용한다. 이 때 만약 오래 연결되어 있는 통신이라면 특정 주기마다 세션 키를 갱신해야할 필요가 있다.
비연결형 프로토콜에서는 명시적인 연결 시작과 종료가 없다. 따라서 일정 시간이나 일정 수의 교환마다 세션 키를 갱신해야할 필요가 있다.

자동화된 키 분배

연결형 프로토콜을 사용할 때 SSM(Session Key Module)을 통하여 호스트나 터미널의 개입 없이 시스템에서 자동적으로 키 교환이 수행되도록 설계할 수 있다.

비중앙집중형 키 제어

앞서 KDC없이 직접 전달 방식은 매우 많은 키를 필요로 한다는 한계가 있었다. 하지만 이러한 한계에도 불구하고 작은 규모의 환경이나 보안이 매우 중요한 환경에서는 사용된다.

이유는 다음과 같다.

  • 중앙집중형 방식은 중앙 기관이 공격 당하면 키가 노출된다.
  • 따라서 KDC는 신뢰할 수 있게 설계되어야한다.

이러한 요구사항들이 필요 없고, 서버 해킹에 대하여도 안전한 비중앙집중형 키 분배 방식은 효율은 비록 낮을지언정 강력한 보안을 제공하기 때문에 WhatsApp, 텔레그램 비밀대화 등에서 사용된다. 이를 종단 간 암호화라고 한다.

시나리오

A와 B는 사전에 둘만의 마스터키를 소유하고 있다고 가정한다.
통신을 위한 세션 키를 얻기 위하여 다음과 같은 절차를 수행한다.
1. A가 B에게 세션 키를 요청하기 위하여 자신의 식별자와 임시비표 N1을 생성하여 송신한다.
2. B는 A에게 둘만의 마스터키로 암호화하여 세션키와 A이 식별자, B의 식별자, 함수화된 N1, 새로운 N2를 생성하여 전달한다.
3. A는 마스터키로 복호화하여 상대방이 B인것을 알게 되며, 세션키를 저장한다. 추가로 N2를 함수화하여 세션키로 B에게 전송하며 자신이 A인것을 인증하게 된다.

이로써 A와 B는 안전하게 통신할 준비가 되었다.

다음 글에서는 비대칭키 암호를 이용한 대칭키 분배에 대하여 다뤄보겠다.

0개의 댓글