전자서명(Digital Signature)


1. 전자서명의 용도

    가. 용도

전자서명은 전자문서를 주고 받을 때 문서를 보낸 사람의 신원이 문서를 보냈다고 주장하는 사람의 신원과 일치하는지 증명하는데 사용되고, 보낸 문서가 위변조 되지 않았다는(악의적인 변조이든 그렇지 않든간에) 것을 증명하는데도 사용됩니다.


    나. 범위

전자서명은 문서나 메세지를 암호화해서 보내는 암호화 통신과는 별 상관이 없으며 메세지가 변조되지 않고 온전히 도착했다는 사실을 증명해주고, 공인인증서와 함께 사용되면 보낸자의 신원에 대해서 수신측에서 확신을 가지게끔 할 수 있습니다. 문서를 보내는 사람이 문서의 내용이 외부에 공개되는 것(해킹나 네트워크 스니핑) 을 꺼려한다면 보내는 문서를 암호화 하는 수단을 함께 동원해야 합니다. 전자서명만으로는 문서의 암호화 문제는 해결할 수 없습니다.


2. 동작원리

가. 예 백정현은 공현주에게 보낼 팬레터를 작성한 후 전자우편에 복사합니다.

얼마전 함께 에버랜드에서 찍었던 사진도 첨부했습니다. 일단 백정현이 내용을 특정 소프트웨어를 이용하여 해쉬 합니다. 이렇게 문서를 해쉬한 결과는 128 bits 혹은 160 bits 짧은 문자열입니다. 이 잛은 문자열을 해쉬값이라고 합니다. 이 해쉬값을 백정현의 개인키를 이용하여 암호화한 결과가 전자서명입니다. 백정현은 이 전자서명을 전자우편에 추가로 첨부한 후 전자우편을 공현주에게 보냅니다. 공현주는 전자우편을 받은 다음 내용(팬레터 + 사진)을 소프트웨어를 이용하여 해쉬합니다. (해쉬값 A) 그리고 전자서명에 첨부된 암호화된 해쉬값을 백정현의 공개키를 이용하여 복호화 하여 해쉬값을 얻습니다. (해쉬값 B) 만약 A와 B가 같다면 공현주는 백정현이 보낸 내용이 위변조 없이 원래 그대로 내용이다라는 것을 확신할 수 있으며, 만약 공인인증서와 함께 사용됐다면 공현주는 내용을 보낸 백정현이 인증기관이 인증한 진짜 백정현이라는 것을 확신할 수 있습니다.


나. 추가 공현주는 원래의 메세지를 해쉬한 값과, 백정현의 전자서명을 복호화한 값이 같은지 확인해야하는데, 공현주에게는 백정현의 공개키를 손쉽게 얻을수 있는 메커니즘이 필요합니다. 이런 메커니즘은 PKI(Public Key Infrastructure)를 통해서 이루어집니다.



3. 해쉬함수란 ?


가. 개요 해쉬함수(H 혹은 Hash)는 임의의 길이의 입력 메시지를 고정된 길이의 출력값으로 압축시키는 함수입니다.


나. 특징 해쉬함수는 일방향성과 강한 충돌 회피성이이란 성질을 만족해야 합니다.

1) 일방향성

디따 어려운 것 같지만 설명을 하면 해쉬결과값 h에 대해서 H(x) = h를 만족하는 원래 메세지 x를 찾는 것은 계산적으로 불가능 하다는 것입니다. 그래서 해쉬함수를 원웨이 해쉬함수(Oneway Hash fuction)라고 흔히 부릅니다.


2) 강한 충돌 회피성

강한충돌 회피성은 주어진 입력 메세지 x에 대해서 해쉬값이 같은 또다른 입력 메세지 y를 찾는것은 계산적으로 불가능하다는 것입니다. 더구나 해쉬값이 같은 입력 메세지 x와 입력 메세지 y가 있을 수 있지만 (해쉬값은 보통 160 bits이므로 2의 160 제곱밖에 경우의 수가 없지만 입력 메세지 의 종류는 무한하므로 대응 함수를 생각하면 같은 해쉬 값을 가지는 메세지가 존재 할 수 있습니다.) 해쉬값이 같은 두개의 메세지는 내용적으로 전혀 연관관계가 없는 것입니다. "여준구가 백정현에게 오백만원을 빌려주었다"라는 내용의 원래 문서를 백정현이 "여준구가 백정현으로부터 오백만원을 빌렸다"는 뜻의 문서로 위변조 하려고 할때 원래의 해쉬값을 가지면서 원하는 취지의 내용을 담은 메세지를 만드는 것은 참 불가능하다는 뜻입니다. 다. 대표적 해쉬알고리즘 해쉬함수가 사용하는 알고리즘을 해쉬알고리즘이라고 하는데 대표적으로 사용되는 것이 SHA1이며 SHA1을 통해서 만들어진 해쉬값(해쉬문자열)은 160bits (20바이트)의 문자열입니다. 세상에 존재하는 모든 문서는 SHA1 해쉬를 하면 160bits의 해쉬값을 가집니다.

'기타 잡동사니 > Trends' 카테고리의 다른 글

구글의 성공사례 요약  (0) 2008.03.28
공개키 구조 (Public Key Infrastructure)  (0) 2008.03.25
UCC의 개념  (1) 2008.03.25
web2.0에 대하여  (0) 2008.03.25
SOA (Service Oriented Architecture)  (0) 2008.03.25
Posted by
,