일일 정리

키 관리 (키 분배)

mysecurity 2025. 2. 13. 22:46

제목

1. 키 관리

1-1 비밀키 분배의 어려움

1-2 KDC를 이용한 비밀키 분배: kerboros

1-3 공개키에 의한 세션키 분배: SESAME

 

 

1. 키 관리

1-1 비밀키 분배의 어려움

비밀키를 분배하기 위한 방법은 다음 세 가지로 나눠볼 수 있다.

① 물리적인 방법으로 전달

- 링크 암호화에서 적용 가능하다.

- 단대단 암호화에서는 적용이 어렵다.

 

② 이전의 키를 사용해 암호화된 새로운 키 전송

- 링크 암호화나 단대단 암호화 모두 적용 가능하다.

- 공격자가 어떤 한 키를 안다면 이후의 모든 키가 노출된다.

 

③ 제 3자를 통한 키 분배

- 단대단 암호화에서 널리 채택한다.

- 사용자는 키 분배 센터와 유일한 키를 공유한다.

 

1-2 KDC를 이용한 비밀키 분배

키 분배 센터 (KDC)를 이용해 통신자들의 비밀키를 분배할 수 있다. 이를 kerboros(케르베로스) 라고 한다.

+

이는 일반적인 웹 망이 아닌 회사 내부 망에서 사용한다. 즉, B는 A의 정보를 이미 알고 있으며 모르는 대상과는 통신을 하지 않는다. (2025-02-14 추가)

 

키 분배 과정은 다음 그림과 같다.

kerboros 방식

 

위의 과정을 거치기 전 반드시 한 번은 가입자들이 KDC에 찾아가 상면하여 KDC와 통신하기 위한 마스터키(= 비밀키)를 분배해야한다.

 

① A가 B와 통신하기 위한 세션키(= 비밀키)를 요청한다.

② [세션키 + 난수]를 마스터키로 암호화하여 A와 B에게 준다. 

③ A는 B에게 [A의 식별 정보 + 난수 T]를 세션키로 암호화해 주며 B는 A의 신원을 확인한다.

④ B는 A에게 [B의 식별 정보 + 난수 T+1]을 세션키로 암호화해 주며 A는 B의 신원을 확인한다. 이때 T+1은 A에게 받은 T에 대해 시스템에서 미리 약속된 연산을 통해 생성된 난수이다.

 

위의 과정을 거쳐 서로를 확인 한 후 통신을 이어간다. 통신이 한번 끊겼다면 사용되던 세션키는 폐기되며, 다시 통신 시 새로운 세션키를 발급받아 같은 과정을 반복한다.

 

1-3 공개키에 의한 세션키 분배: SESAME

KDC를 이용한 비밀키 분배는 KDC가 공격당했을 시 KDC 가입자들의 비밀키들이 모두 노출될 수 있다. 이러한 문제를 해결하기 위해 공개키 기관에서 세션키를 분배하는 SESAME 방식이 개발되었다.

+

이는 일반적인 웹 망에서 사용된다. (2025-02-14 추가)

 

키 분배 과정은 다음 그림과 같다.

SESAME 방식

 

위의 과정을 거치기 전 반드시 한 번은 가입자들이 기관에 찾아가 상면하여 자신의 공개키를 주고 기관의 공개키를 받아와야 한다.

 

① A가 B의 공개키를 기관에 요청한다.

② 기관이 A에게 [B의 공개키]를 기관의 비밀키로 암호화해 준다.

③ A는 B에게 [A의 식별 정보 + 난수 N1]을 B의 공개키로 암호화해 준다.

④ B는 받은 공개키가 진짜 A의 것인지 확인하기 위해 A의 공개키를 기관에 요청한다.

⑤ 기관은 B에게 [A의 공개키]를 기관의 비밀키로 암호화해 주며 B는 ③에서 받은 공개키가 진짜 A의 것임을 확인한다.

⑥ B는 A에게 [A에게 받은 난수 N1 + B의 난수 N2]를 A의 공개키로 암호화해 주며 A는 B의 신원을 확인한다. 

⑦ A는 B에게 [B에게 받은 난수N2]를 B의 공개키로 암호화해 주며 B는 A의 신원을 확인한다.

⑧ A가 B에게 [A의 개인키로 암호화한 세션키]를 B의 공개키로 암호화해 준다.

 

위의 과정을 거쳐 서로를 확인한 후 통신을 이어간다. 공개키 상태 검증을 통해 서로의 공개키(인증서)가 유효한지 기관에 확인하며, 아직 유효하다면 기존 공개키로 통신한다. 유효하지 않다면 위와 같은 과정을 반복하여 통신을 준비한다.