본문
디지털 서명과 인증서
# 디지털 서명과 인증서
-. 선행학습: 암호화 방식(http://server-engineer.tistory.com/584)
1. 디지털 서명
공개 키 암호 방식을 사용할 때 데이터 변조 여부와 데이터 송신자를 확인하기 위해서 사용되는 것이 '디지털 서명'이다. 송신자가 데이터를 송신할 때에는 데이터뿐만 아니라 디지털 서명을 추가한다. 여기서 디지털 서명이란 데이터로 계산한 '해시 값'을 송신자의 비밀키로 암호화한 것이다.
그리고 해시 값의 계산에는 'MD5', 'SHA-1' 등의 알고리즘이 이용된다. 이러한 알고리즘을 통해서, 입력한 데이터로부터 특정 비트 수의 해시 값을 생성할 수 있다. MD5는 128비트, SHA-1은 160비트의 해시값을 생성한다. 입력하는 데이터가 달라지면 출력되는 해시 값도 달라진다. 다시 말해, 데이터가 변조되면 해시 값도 달리진다는 것이다.
데이터를 수신한 수신자는 데이터 부분으로부터 해시 값을 계산한다. 그리고 송신자의 공개 키로 디지털 서명을 복호화한다. 수신자가 계산한 해시 값과 디지털 서명을 복호화한 해시 값이 일치하면 데이터가 변조되지 않았다는 것을 확인할 수 있다. 또한, 송신자의 공개 키로 디지털 서명을 복호화할 수 있다면, 송신자는 페어인 비밀 키를 가지고 있는 올바른 송신자라는 것 또한 확인할 수 있다.
단, 서명을 확인하기 위해 사용한 공개 키가 진짜라는 것은 보증되지 않는다. 어쩌면 제 3자가 송신사인 척하고 공개 키를 공개했을 가능성도 있다. 그래서 공개 키가 진짜라는 것을 보증하기 위한 '인증서'가 필요하다.
2. 인증서
앞에서 설명했듯이 공개 키 암호 방식을 이용하면 키 배송을 고려할 필요 없이 안전한 데이터 통신이 가능하다. 그리고 디지털 서명을 이용하면 데이터가 변조되지 않았다는 것도 보증할 수 있다.
단, 이는 공개 키가 '진짜'라는 것이 전제다. 악의를 가진 유저가 다른 유저인 것처럼 위장해서 공개 키를 공개했다면 안전한 통신은 불가능하다. 그러므로 공개 키가 확실히 '진짜'라는 것을 증명하는 것이 바로 인증서의 역할이다.
3. 인증기관(CA)
인증서는 인증기관(CA; Certification Authority)이라고 불리는 제 3자 기관에서 발행한다. 인증서 안에는 공개 키가 들어있고, 인증기관은 그 공개 키가 '진짜'라고 보증해준다. 인증기관은 여러 곳이 있으며, 대표적으로는 다음의 조직들을 예시로 들 수 있다.
- GeoTrust
- Cyber Trust
- Verisign
인증기관끼리는 서로를 신뢰하며, '인증서 체인'을 구성한다. 신뢰받는 인증 기관이 발행한 증명서를 이용한 시스템 기반을 'PKI; Public Key Infrastructure'라고 부른다.
인증서를 발급받기 위해서는 먼저 공개 키와 비밀 키 페어를 만든다(①). 그리고 공개 키와 소유자 정보를 인증기관에 보내서 인증서 발급 신청을 한다(②). 이때 비밀 키는 엄중히 관리해야 한다.
인증기관은 발급 신청을 받으면 소유자 정보를 심사하여 문제가 없을 경우 인증서를 만든다. 인증서에 포함되는 정보는 공개 키와 소유자 정보, 인증기관을 디지털 서명한 것이다. 그리고 인증 기관도 키 페어를 갖고 있어서 인증 기관의 비밀키로 서명한다(③).
→ 출처 및 참고: 손으로 익히며 배우는 네트워크 첫걸음
댓글