Shine's dev log

디지털 서명 & PKI 본문

보안

디지털 서명 & PKI

dong1 2020. 8. 6. 17:13

1. 디지털 서명

 

메시지 인증이란 올바른 사용자에게 메시지가 변조되지 않고 도착하는 것을 인증하는 것이다. 앞서 메시지 인증을 하는 방법으로 MAC(Message Authentication Code)를 알아보았는데, MAC은 메시지 인증은 가능하지만 부인방지가 불가능하다는 단점이 있었다.

 

메시지 인증을 보장하면서 부인방지(non-repudiation) 까지 보장하려면 디지털 서명을 이용해야 한다.

 

'디지털 서명' 이라는 이름에서 알 수 있듯이, 디지털 서명은 현실세계의 싸인이나 지장을 찍는 등의 서명 행위를 컴퓨터 세계에 실현시킨 기술이다.

 

 

 

2. 디지털 서명 절차

 

그렇다면 어떤 식으로 디지털 서명을 진행할 수 있는지 알아보자. 간단하게 말하면, 디지털 서명은 공개키 암호화를 역으로 수행함으로써 실현된다.

 

이게 무슨 말인고 하니, 보통 공개키 암호화에서는 송신자가 수신자의 공개키로 메시지를 암호화하고, 수신자가 자신의 개인키로 복호화한다.

 

하지만 디지털 서명에서는, 서명자가 자신의 개인키로 메시지를 암호화하고 (서명) , 검증자가 서명자의 공개키로 메시지를 복호화한다(검증).

 

좀 더 자세히 살펴보면, 디지털 서명은 크게 3가지 단계로 이루어진다. 1) 해싱 2) 서명 3) 검증

우선, 아래 그림을 통해 한눈에 디지털 서명을 파악해보자.

 

디지털 서명

위의 그림에서 윗부분이 서명 과정이고, 아랫부분이 검증 과정이다.

 

1) 해싱(Hashing)

 

해싱이란 해시함수를 통해 메시지를 일정한 크기의 데이터로 만드는 과정이다. 즉, 메시지 다이제스트(message digest)를 생성하는 과정이라고 보면 된다. 이렇게 해싱을 진행하면 평문에 비해 데이터의 양이 줄어들기 때문에 서명이 더 쉬워진다는 장점이 있다.

하지만, 해싱 과정이 디지털 서명에서 꼭 필수적인 것은 아니고, 상황에 따라 해도되고 안해도 된다.

 

2) 서명(Signing)

 

해싱을 거친 메시지 다이제스트, 혹은 그냥 메시지를 서명자의 개인키(private key)로 암호화 한다. 이 과정을 서명한다고 표현한다. 

서명을 완료하면, 서명(암호화된 메시지)과 메시지가 검증자들에게 전달될 것이다.

 

3) 검증(Verification)

 

앞서 서명자가 자신의 개인키로 암호화한 데이터를 검증자가 서명자의 공개키(public key)로 복호화하는 과정이다.

만약 서명자로부터 받은 메시지와, 서명자로부터 받은 서명의 복호화 값이 같다면, 검증이 완료된다.

 

 

 

3. 디지털 서명의 장점

 

앞서 말했듯이 디지털 서명을 이용하면 부인방지(non-repudiation)을 할 수 있다. 서명자는 자신의 개인키(private key)가 털리지 않는 이상, 자신 외에는 그 누구도 서명할 수 없고, 또한 서명한 것을 부인할 수 없다.

 

여기서 한가지 의문이 드는데, '그렇다면 그냥 공개키 암호화를 사용해서 메시지 인증과 부인방지를 하면 되는 것아닌가? 굳이 공개키 암호화의 역과정을 사용하는 이유는 뭔가?' 라는 의문이 들 수 있다.

 

공개키 암호화 방식은 여러 사람들이 공개키(public key)로 암호화해서 보내면, 수신자는 자신의 개인키(private key)로 복호화하여 메시지를 읽는다. 즉, 복호화할 수 있는 사람이 단 한명이라는 것이다. 이말은 검증을 할 수 있는 사람이 단 한사람이라는 것이다.

 

반면 디지털 서명의 경우, 공개키로 복호화하기 때문에 여러 사람이 검증을 할 수 있다는 장점이 있다.

 

 

 

4. PKI(Public Key Infrastructure)

 

PKI는 디지털 증명서의 생성, 관리, 배포, 사용, 저장 및 파기, 공개키 암호화의 관리에 필요한 역할, 정책 등 일련의 절차들을 집합한 것이다. (출처 : http://wiki.hash.kr/index.php/PKI)

 

PKI 에서 구성요소는 크게 1) RA(등록기관) 2) CA(인증기관) 3) DS(디렉토리 서비스) 4) 인증서(X.509) 5) 사용자 이렇게5가지로 나눌 수 있다.

 

1) RA(등록기관)

- Registration Authority

- 인증서 발급 요청 및 사용자의 신원을 확인해주는 기관.

 

2) CA(인증기관)

- Certificate Authority

- 인증서 발급/폐기, 상호인증 정책을 수행하는 기관.

 

3) DS(디렉토리 서비스)

- Directory Service

- 인증서, 키 관리 및 저장하는 기관.

 

4) 인증서(X.509)

- 상호 인증 기반 CA에서 발급

- 공개키 인증서의 표준 포맷

- 인증 받아야하는 사람의 공개키가 담겨있음

 

5) 사용자

- 인증서를 발급받고 사용

 

 

위의 PKI 구성요소들이 PKI에서 인증서를 활용하는 과정은 아래 그림과 같다.

 

PKI

 

그림을 살펴보자.

1) 인증 받으려는 사용자 A가 RA에 인증서를 요청하면

2) RA가 CA에게 인증서 발행을 요청하고

3) 발행된 인증서를 RA가 사용자 A에게 배포한다.

4) CA는 발행한 인증서를 DS에 공개하고

5) 검증하려는 사용자 B가 DS에서 인증서를 확인한다.

  -> 인증서에는 A의 공개키가 CA의 비밀키로 서명되어있다. 

  -> CA의 공개키로 검증을 하면 A의 공개키가 올바른 키인지 확인 가능하다. (CA의 공개키는 믿을만하니까)

6) 사용자 A와 B 사이의 인증이 완료된다.

 

 

 

오늘 배운 내용을 정리해보면,

 

1. 디지털 서명은 메시지 인증 뿐 아니라, 부인방지 기능도 제공한다.

 

2. 디지털 서명은 공개키 암호화의 역과정이다.

 

3. PKI는 디지털 증명서의 생성, 관리, 배포, 파기 등의 과정들을 집합한 것이다.

 

 

위 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다.