[알고리즘] 보안 알고리즘 4
디지털 서명
디지털 서명은 메시지 인증 코드가 제공하는 인증과 변조 검출에 더하여 사후 부인까지도 방지하는 매커니즘입니다. 메시지 인증 코드는 대칭키를 이용하기 때문에 수신자도 메시지 전송자일 가능성이 있지만 디지털 서명은 전송자만 작성할 수 있는 디지털 서명이라는 데이터를 이용하여 메시지 작성자를 특정할 수 있습니다. 디지털 서명은 공개키 암호화 방식을 사용합니다.
사용 과정
- 공개키 암호 방식과 반대로, 메시지를 전송하는 A가 공개키와 비밀키를 생성하여 수신인 B에게 공개키를 공유합니다.
- A는 비밀키를 사용하여 메시지를 암호화하는데 이를 디지털 서명이라고 합니다.
- A는 B에게 메시지와 서명을 전송합니다.
- B는 서명을 복호화하여 메시지가 일치하는지 확인합니다.
실제 사용 시
이미지 출처: 한국정보통신기술협회 정보통신용어사전
공개키 암호 방식이 시간이 오래 걸리는 단점이 있습니다. 계산 시간을 단축하기 위해서 실제 디지털 서명 사용시에는 메시지를 직접 암호화하는 것이 아니라 메시지의 해시값을 구한 뒤 그 해시값을 암호화하여 서명에 사용합니다.
공개키 암호화와 비교
공개키 암호화 방식은 공개키를 사용하여 누구나 암호화할 수 있고 비밀키를 사용하여 수신인만 데이터를 복호화할 수 있었습니다. 하지만 디지털 서명은 이 흐름이 반대입니다. 누구나 복호화할 수 있기 때문에 의미없는 암호화이지만 반대로 생각하면 특정인만 암호화할 수 있기 때문에 암호문의 작성자를 보장할 수 있습니다. 따라서 전송자가 A인 것과 메시지가 변조되지 않음을 확인할 수 있고 B는 디지털 서명을 생성할 수 없기 때문에 사후 부인도 방지할 수 있습니다.
디지털 서명의 문제점
디지털 서명은 인증, 변조 검출, 사후 부인 방지 기능까지 갖추었지만 한 가지 문제점이 있습니다. 메시지 인증 코드는 디피-헬먼 키 교환법을 사용하여 안전하게 대칭키를 교환했습니다. 하지만 디지털 서명은 공개키를 사용하는데, 공개키 암호 방식은 공개키가 누구의 것인지 보장하지 못합니다. 따라서 전달받은 공개키가 A를 가장한 제 3자가 작성한 공개키일 수 있습니다. 이러한 공개키가 A의 것이라는 것을 확실히 인증하기 위해서 디지털 인증서를 사용합니다.
디지털 인증서
공개키 암호화 방식이나 디지털 서명에는 공개키의 생성 주체를 인증하지 못하는 문제가 있습니다. 따라서 제 3자가 공개키를 바꿔치기해도 받는 쪽에서는 알 수 없습니다. 이 문제를 해결하기 위해서, 디지털 인증서를 사용하면 공개키의 정당성을 보장할 수 있습니다. 디지털 인증서는 인증 기관(CA; Certification Authority)에서 발급해주는데 누구나 인증 기관 역할을 할 수 있기는 합니다. 하지만 정부나 감사를 받는 대기업처럼 신뢰성이 보장되는 인증 기관을 사용하는 것이 안전합니다.
사용 과정
- A는 공개키 PA와 비밀키 SA를 생성하고 PA를 B에게 전달하고자 함
- A는 CA에 공개키 PA가 자신의 것이라는 인증서를 요청
이때, CA에게 자신의 이메일과 PA를 전송 - CA는 공개키 PC와 비밀키 SC를 가지고 있으며 전달 받은 이메일과 PA를 SC로 암호화한 디지털 서명을 생성
- CA는 전달받은 정보와 서명을 하나의 파일인 인증서로 만들어서 A에게 전달
- A는 B에게 인증서를 전달
- B는 CA에게서 PC를 받아서 인증서 내의 서명을 검증
- CA가 발급한 인증서임을 확인했기 때문에 인증서에 포함된 PA의 정당성을 믿고 PA를 사용
위의 과정을 거쳐서 A는 정당성을 보장하며 B에게 공개키를 전달할 수 있습니다. 만약, 제 3자가 가짜 인증서를 만들기 위해 CA에 자신의 인증서를 등록하려고 해도 A의 이메일을 모르거나, 사용할 수 없기 때문에 인증서를 발행할 수 없습니다.
서버 증명서
이러한 디지털 인증서는 개인간의 통신뿐만 아니라 웹사이트와 통신할 때도 사용됩니다. 이때 사용되는 인증서를 서버 증명서라고 합니다. 서버 증명서 발급 시에는 증명서가 메일과 묶이는 것이 아니라 도메인과 묶이게 됩니다.
루트 인증 기관
사실 위의 사용 과정을 봤을 때, 디지털 서명과 비슷한 의문이 들 수 있습니다. CA의 공개키(PC)의 정당성을 어떻게 보장할까요? 실제로 CA의 공개키를 전달할 때에는 인증서로 전달됩니다. 이 인증서를 서명한 주체는 상위 인증 기관입니다. 인증 기관은 트리 구조로 되어있어서 상위 인증 기관이 하위 인증 기관의 인증서를 작성합니다. 결국 더 큰 조직이 작은 조직의 신뢰를 담보하는 구조인데, 이 트리 구조의 루트에는 루트 인증 기관이 있습니다. 루트 인증 기관은 자신이 스스로의 정당성을 증명합니다. 따라서 이 루트 인증 기관은 정부 기관이나 대기업처럼 사회적인 신뢰도가 있는 조직이 담당합니다.
댓글남기기