전자서명과 인증서

우리는 집을 사기 위해 계약서를 쓸 때나 신용카드를 사용하고 나서 서명을 한다. 여기서 서명은 두 가지 효력이 있다.

첫째, 서명을 보고 서명을 한 사람(서명자)이 누군지 확인 할 수 있다. 둘째, 서명자가 나중에 딴소리 서명을 하였음을 나타내는데 사용한다. 예를 들어 은행에서 5000만원을 인출하기 위해 서명을 하고 나중에 500만원만 인출 했었다고 못하게 하는 것이다. 추가로 계약서에 서명 후 상대방이 임의로 계약서를 수정하지 못하도록 사본을 가지고 있거나 사진으로 기록에 남겨둔다.

결국 거래, 계약과 같은 상호간의 안전한 합의가 필요한 경우 서명이 사용 되며 서명은 아래의 세가지 보안적 요소를 만족 시켜야 한다.

전자 서명 (Digital signature)

전자 서명이란 실제 아날로그의 서명 방식을 전자 문서(파일, 메시지 등)에 사용하기 위하여 디지털화 시킨 것이다. 따라서 전자 서명은 해당 전자 문서에 대해 위의 세가지 보안 요소(인증, 무결성, 부인방지)를 보장한다.

전자 서명에 사용되는 알고리즘

위의 세 가지를 보장 하기 위하여 기술적으로 공개키 기반 구조(Public Key Infrastructure)와 해시 함수가 사용되며, 사용 되는 알고리즘은 아래와 같다.

서명 검증

  1. 공개 키 쌍을 생성하는 키 생성 알고리즘
  2. 개인 키를 사용하여 서명을 생성하는 알고리즘
  3. 서명과 서명자의 공개 키를 사용하여 서명을 검증하는 알고리즘

무결성 검증

  1. 전자 문서의 해시 값과 서명 파일에 기록 된 해시 값을 비교하는 알고리즘

전자 서명을 완전히 수행하기 위해선 전자 문서에 해당 서명 값과 공개 키를 붙여야 하는데, 이 때 공개 키를 붙이기 위하여 인증서가 사용 된다.

인증서 (Certificate)

인증서란 공개키 인증서(Public key certificate) 또는 전자 인증서(Digital certificate)로 불린다. 인증서는 공개 키의 소유권을 확인 할 수 있도록 하기 위한 용도로 만들어진 전자 문서이며 아래와 같은 내용이 포함된다.

X.509 인증서

X.509 인증서는 공개키 인증서로 널리 사용 되는 ITU-T 표준이다. 각 인증서는 트리(Tree) 구조를 이루면서 상위 인증서(Issuer)에 의해 하위 인증서(Subject)가 서명 된다. 트리 구조에 최상위에 있는 인증서는 루트 인증서(Root certificate)라 칭하며 상위 인증서가 없기 때문에 자체 서명(self-signed)을 실시한다. 루트 인증서를 보유한 기관을 Root Certification Authority (Root CA)라 하며 기본적으로 Root CA는 신뢰 할 수 있다고 가정한다.

X.509 인증서 확장자

X.509 인증서는 다양한 확장자를 가지며 HTTPS 통신을 위한 SSL인증서는 경우 주로 PEM 확장자가 사용 된다.