Living Rough

KDC와 CA 본문

System & Security/Security

KDC와 CA

HJ호준 2023. 12. 10. 02:22

보안에 관심있는 사람들이라면 누구든 Key에 대해서 들어봤을 것이다.

또한, 이 Key를 관리하는 것 역시 굉장히 중요하다.

그렇다면 이러한 Key들을 관리하는 Key Management 방식인 KDC와 CA에 대해 알아보자.


Session Key(세션 키)

 

세션 키란 통신 세션이 시작될 때, 생성되어 종료될 때 폐기되는 동적 대칭키를 말한다.

즉 세션은 보통 한 통신의 시작부터 끝까지를 의미하는데, 이 세션에 대한 일회용 키(임시 키)를 만들어 통신 세션마다 다른 키를 사용하겠다는 의미이다.

 

자 그런데, 이 세션키를 많은 사용자들끼리 사용하고 싶다고 하면 어떨까?

 

롤을 하고 싶다고 생각해보자. 그러려면 사용자 사이에는 통신이 필요할 것이다.

그리고 그 통신의 중심에는 무언가 중계기가 필요하지 않을까?


KDC 방식

 

위에서 설명했듯 서버에게 요청을 보내 서버가 대칭키를 만들어주는 방식이 바로 KDC 방식이다.

KDC 방식은 다음과 같다 :

 

1. KDC는 각 멤버에 대해 비밀키를 생성한다.

2. 이때, 이 비밀키는 멤버들 사이에서 이용되는 것이 아니라, 오직 KDC의 중계를 통해서만 쓸 수 있다.

3. 만약 Alice가 Bob과 통신하고 싶다면, Alice와 Bob사이에는 Key가 필요할 것이다.

4. KDC는 Alice와 Bob 사이에 session key를 생성한다.

 

KDC의 작동 구조는 다음과 같다 :

KDC의 대략적 작동방식

물론 뉘앙스가 이렇다는 것이고 실제로는 조금 더 복잡하고,

찾아보니 KDC의 방식이 여러 가지 있는 모양이다.

그런데 갑자기 의문이 들지 않는가?

왜 굳이 이렇게 서버까지 써가면서 대칭키 방식인 세션키를 고집하는 것일까?


대칭키와 비대칭키 방식의 장단점

 

왜 굳이 안전하고 쉬운 방식인 비대칭키 방식 대신 대칭키 사용을 고집하는 경우가 존재할까?

사실 대칭키와 비대칭키 방식에는 다음과 같은 장단점이 존재한다.

 

대칭키 암호화 방식과 비대칭키 암호화 방식의 특징

즉 비대칭키 암호화 방식은 키 분배와 관리가 상대적으로 용이하고 안전하지만

그 대신 계산 속도가 현저히 느리다.

 

하지만 대칭키 암호화 방식을 위해서는 사전에 송수신자 모두 키를 알고 있어야 하는데, 이 키 공유 방식이 상당히 까다롭다.

그래서 키를 분배해주기 위해 KDC를 사용하는 것이다.

 

또한 키의 개수도 문제가 되는데,

공개키 암호화 방식의 경우는 각 사람마다 비밀키와 대칭키를 하나씩 반드시 생성하므로 n명이서 통신하는 경우, 2*n 개의 키만 있으면 되지만, 대칭키의 경우 각 사람마다의 대칭키를 또 생성해야 하므로 n*(n-1)/2개의 키가 존재해야 한다.

 

즉 사람이 많아질수록 대칭키는 무지막지하게 많이 필요할 것이다.

이 때문에 KDC가 필요한 것이라고 보면 된다. 키 분배를 효율적으로 해주기 때문이다.


KDC의 장단점

 

  장점 단점
내용 1. 비밀키 방식은 비교적 속도가 빠른데, 세션키를 이용하므로 속도가 빠르다.

2. 키 관리가 용이하다.
1. KDC가 고장나면 서비스가 전혀 불가하다. (SPoF, 단일 실패 지점)

2. KDC가 모든 멤버에 대한 비밀키를 알고 있으므로 공격당하면 모든 비밀키 노출

3. KDC의 신뢰성이 매우 중요하다.

4. KDC에 대한 병목 현상이 발생할 수 있다.

 

KDC는 당연히 서버 의존도가 지나치게 커서, KDC가 고장나거나 공격당하면 서비스를 할 수가 없다.

또한, 추가적으로 대규모 네트워크에서 굉장히 비효율적인 모습을 보인다.

 

따라서 이러한 단점들을 보완하기 위해 KDC를 계층화하여 분리할 필요가 있다 :

  • Local KDC 
    • Single LAN 또는 Building
    • 같은 Domain에서의 통신 시 키 분배
  • Global KDC
    • 다른 domain 간의 통신시 키 선택

위와 같이 계층화하여 분리하면 KDC 손상 시 특정 지역에만 피해가 한정될 것이다.

KDC를 여러 개 두고, 그 KDC마다 통신을 하면서 키를 관리하면 조금 더 용이할 것이다.


CA(Certification Authorities)

 

전자 서명을 위해서는 신뢰성 있는 공개키를 보관하는 장소가 필요할 것이다.

이 말은 무슨 말이냐 하면,

만약 Alice와 Bob이 통신을 하려고 하고, Alice가 Bob에게 메시지를 공개키 방식으로 보내고 싶다고 하자.

그렇다면 Alice가 해야 할 일은 무엇일까?

 

바로 Bob의 공개키로 자신이 보내고자 하는 메시지를 암호화하여 보내는 것이다.

 

정상적인 상황이라면 문제가 없겠지만, 만약 해커가 자신의 공개키를 Bob의 공개키인 척 두면 어떻게 될까?

그러면 해커는 Alice가 보내는 메시지를 가로채서 복호화하여 읽을 수 있을 것이다.

 

특히 우리가 웹 브라우저에서 결제를 한다고 하자. 우리는 쇼핑 후 신용카드 번호를 넣고 결재하는 경우 해당 기업 사이트에 대한 공개키로 암호화해서 보낸다. 그런데 그 공개키가 사실 해커의 공개키였다면? 생각만 해도 끔찍하다.

 

이를 방지하기 위한 것이 CA, Certification Authorities이다.

이 CA는 공인 인증서를 발급하고 관리하는 기관이다. 또한, 사용자들의 공개키를 저장하고 관리하기도 하며, 사용자들이 요청하면 해당 공개키를 서명해서 전송하기도 한다.

 

국내에 존재하는 CA에는 :

금융 결제원, 한국 정보 인증, 한국 증권 전산, 한국 전자 인증, 한국 전산원, 한국 무역 정보 통신, 코스콤


CA와 공개키 등록, 인증서 이용

 

Bob이 공개키를 CA에 등록하고 싶다고 하자.

1. Bob은 일단 CA에 자신의 신분을 입증한다.

2. CA는 Bob에게 CA의 비밀키로 서명한 인증서를 발급한다 : 이것은 Bob의 Public Key야! 내가 보증하지! 이런 느낌으로 보면 된다.

 

그렇다면 Alice는 어떤 과정을 거쳐 보내면 좋을까?

1. Bob의 인증서를 가져온다.

2. CA의 공개키를 이용해 Bob의 인증서가 유효한지 인증하고, Bob의 public Key를 확인한다.

3. public Key가 확인되면 Bob의 공개키로 메시지를 전송한다.

 

이제 CA가 어떤 역할을 하는지, 인증서가 어떤 역할을 하는지 감이 오는가?

이번에는 인증서에 대해 조금 더 자세히 알아보도록 하자.

 

발급기관(CA or RA)에 공인인증서 발급신청(직접방문, 신분증제출)
발급기관에서 등록확인서 발급 (참조번호, 인가코드)
발급기관 홈페이지접속해서 공인인증서 발급 신청
공인인증서 파일이 발급

Certificate(인증서)

 

인증서는 특정 공개키가 해당 사용자의 공개키임을 신뢰할 수 있는 기관에서 보증하는 문서이다.

즉 이 인증서를 통해 사용자를 인증할 수 있게 된다.

인증서는 위에서 언급했듯 사용자의 공개키에 CA의 전자 서명을 첨부한 것을 말한다.

 

그렇다면 인증서에는 어떤 요소들이 들어갈까?

대표적인 4가지 요소들을 알아보자 :

  • 공개키 인증서 : 공개키가 누구의 것인지, 대칭되는 비밀키는 누가 가지고 있는지
  • 인증서 정책 : 인증서 사용 방식
  • 인증서 경로 : 인증서를 연결하는 방식
  • 인증서 철회 리스트 : 유효성의 확인

특히 공인 인증서에는 표준 형식이 존재하는데, 이 표준 형식이 X.509이다.


PKI(Public Key Infrastructure)

 

PKI는 공개키 방식을 통해 암호화 및 전자서명/ 인증서의 사용을 가능하도록 해주는 기반 구조라고 할 수 있다.

https://itwiki.kr/w/%EA%B3%B5%EA%B0%9C%ED%82%A4_%EA%B8%B0%EB%B0%98_%EA%B5%AC%EC%A1%B0

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

공개키 암호화를 기초로, 인증서를 생성·관리·저장·분배·취소 하는데 필요한 하드웨어, 소프트웨어, 사람, 정책, 절차이다.

 

위에서 언급했던 표준 형식인 X.509, PGP, AADS/X9.59 등도 여기에 포함된다.

그 외의 구성요소에는 :

  • 사용자 : 개인이나 기관 또는 응용 서비스
  • CA : 공개키 인증서 발급 및 관리
  • RA : 사용자 인증서 신청시 인증 기관 대신 신분 확인
  • 저장소 : 인증서, 사용자 정보, 인증서 취소, 상호 인증서 등을 저장 검색
  • 인증서 정책 : 권한, 사용 범위를 정의
  • 공개키 인증서

RA(Registration Authority)

 

인증 기관의 위임을 받아 사용자가 신청 시 신원 확인 및 공개키 생성 또는 등록을 수행


문제 풀이

 

• 전자서명법상 공인인증기관이 발급하는 공인인증서에 포함되어야 하는 사항이 아닌것은?

1.가입자의 전자서명 검증정보

2.공인인증기관의 전자서명 생성정보

3.공인인증서의 유효기간

4.공인인증기관의 명칭등 공인인증기관임을 확인할수있는 정보

 

답 : 답은 2번

•PKI의 인증서에 대한 설명으로 옳은 것은?

1.인증기관은 인증서 및 인증서 취소목록등을 관리한다

2.인증기관이 발행한 인증서는 공개키와 공개키 소유자를 공식적으로 연결한다

3.인증서에는 소유자정보, 공개키, 개인키, 발행일, 유효기관 등의 정보가 담겨있다

4.공인인증서는 인증기관의 전자서명없이 사용자의 전자 서명만으로 공개키를 검증한다

① 1,2

② 1,3

③ 2,3

④ 3,4

 

답은 1번이다. 

인증서에는 상식적으로 개인키에 대한 정보가 담겨 있을 리가 없다. 또한 공인 인증서에는 인증기관의 전자 서명이 포함된다.


이상으로 PKI, CA, KDC에 대해 자세히 알아보았다.

글을 마친다.

'System & Security > Security' 카테고리의 다른 글

Access Control이란?  (1) 2023.12.10
Kerberos(커보로스)란?  (0) 2023.12.10
Diffie - Hellman(디피-헬만 키 교환)  (1) 2023.12.10
S/MIME이란 무엇일까?  (0) 2023.12.09
PGP(Pretty Good Privacy)란?  (1) 2023.12.09