전자 서명

전자서명이라 함은 서명자를 확인하고 서명자가 당해 전자문서에 서명을 하였음을 나타내는 데 이용하기 위하여 당해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보를 말한다.

http://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90%EC%84%9C%EB%AA%85

공개키기반구조(PKI) 기술측면에서 전자서명이란 전자문서의 해쉬값(HASH)에 서명자의 개인키(전자서명생성정보)로 변환(암호화)한 것으로서 RSA사에서 만든 PKCS#7 의 표준이 널리 사용되고 있다.
전자서명의 검증은 생성과정의 역변환이다. 즉 전자서명을 서명자의 공개키(전자서명검증정보)로 변환(복호화)하고 검증대상 전자문서의 해쉬값(HASH)과 비교했을 때, 동일한 값이면 서명이 올바른 것이고 값이 서로 다르거나 변환에 오류가 있으면 서명이 틀린 것이다.
전자서명은 수기서명과 동일한 효력을 지닌다.

http://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90%EC%84%9C%EB%AA%85


전자 서명은 위키피디아에 위와 같이 설명 되어 있다.

그런데 전자 문서란 무엇인가?

전자문서란 컴퓨터 등 정보처리능력을 가진 장치에 의하여 전자적인 형태로 작성되어 송수신되거나 저장된 문서형식의 자료로서 표준화된 것을 말한다.(정보통신망 이용촉진 및 정보보호 등에 관한 법률 제2조 제5호) 이와 비슷한 규정으로, 전자거래기본법에 따르면, “전자문서”라 함은 정보처리시스템에 의하여 전자적 형태로 작성, 송신ㆍ수신 또는 저장된 정보를 말한다(전자거래기본법 제2조 제1호). 한편, 전자서명법에도 유사하게, “전자문서”라 함은 정보처리시스템에 의하여 전자적 형태로 작성되어 송신 또는 수신되거나 저장된 정보를 말한다고 규정한다.(전자서명법 제2조 1호)

http://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90%EB%AC%B8%EC%84%9C

이런 기본 단어를 익혀두고 전자 서명에 대해 간단히 알아보자.

해시는 SHA1 알고리즘을, 암호화는 RSA 알고리즘으로 전자서명을 한다고 하자.
우선 서명하고자 하는 전자문서를 준비한다.
이 전자문서 내용에 대하여 SHA1 해시 값을 구한다.
해시 값을 서명자의 개인 키로 암호화(RSA) 한다.

서명자는 이렇게 전자문서에 대해 서명(암호화된 해시 값)을 할 수 있다.

예를 들어 위의 그림대로 서명을 해보자.
전자문서 = “이 제품의 단가는 5억원입니다. 다른 업체에는 이 보다 높은 가격으로 납품할 것을 약속합니다.”
이 전자문서에 SHA1 해시 값을 구하여
SHA1(전자문서) = 6abac51b70c96adedbb86225dedc4d18b102d40e
이 해시 값을 서명자 개인 키로 암호화 한다.
전자서명 = RSAEncode(privateKey, SHA1(전자문서))

이 전자문서와 전자서명을 인터넷을 통해 전송하는데 우연찮게도 오류가 발생하여 전자문서의 내용중 단가가 5만원으로 바뀌었다고 하면 이 전자서명은 잘못된 것으로 검증될 수 있다.
이 검증은 어떻게 할까?

위 그림과 같이 서명자의 공개키로 전자서명을 복호화하면 전자문서 원문에 대해 해시를 취했던 값이 나온다.
이 값을, 함께 수신된 전자문서 원문을 다시 해시한 값과 비교하여 똑같으면 올바른 전자서명이 되고 그렇지 않으면 잘 못된 전자서명으로 간주할 수 있다.

수신된 전자서명을 복호화 한다.
서명한 해시 값 = RSADecode(publicKey, 전자서명)
= 6abac51b70c96adedbb86225dedc4d18b102d40e
수신된 전자문서의 해시 값을 구한다.
수신된 전자문서 = “이 제품의 단가는 5만원입니다. 다른 업체에는 이 보다 높은 가격으로 납품할 것을 약속합니다.”
SHA1(수신된 전자문서) = f68549d14995a4213bdfe802ef292fb096de7fa8
두 해시 값을 비교한다.
6abac51b70c96adedbb86225dedc4d18b102d40e != f68549d14995a4213bdfe802ef292fb096de7fa8
이렇게 수신된 내용 중 하나라도 바뀌면 해시 값이 일치하지 않는 것을 알 수 있다.

이러한 방식의 전자서명은 전자문서에 대한 해시 값을 구하여 비교하므로써 원문에 대한 무결성(원문을 조금이라도 조작하게 되면 해시 함수의 확산 효과로 인해 이전 해시 값과 완전히 다르게 나온다)이 어느 정도 보장되고, 개인 키로 암호화하고 공개 키로 복호화 하는 비대칭 암호화 알고리즘을 사용하므로써 부인 방지(개인 키는 본인만 가지고 있기 때문에 서명자의 개인 키로 암호화를 하게 되면 본인이 스스로 도장을 찍은 것과 같은 법적 효력을 지닌다) 기능과 기밀성을 충족하고 있다.

전자서명을 검증하기 위해서는 위의 예에서처럼 전자원문과 서명자의 공개 키 정보가 부수적으로 필요 했다.
이 외에도 인증서(인증서 유효성 확인 등), 서명자와 인증서가 일치하는지 확인하는 등 완벽하게 전자문서를 전송하고 검증하기 위해서는 전자 봉투가 필요하다.
다음엔 전자 봉투에 대해 알아본다.

공개 키 암호해시에 대해서는 이전 글을 참조바란다.

]]>

도큐멘트 에 올린 글

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.