본문 바로가기
Computer Security

암호를 이용한 전자상거래 - 전자 서명

by Doromi 2017. 12. 9.
728x90
반응형

● 전자 서명

서명이란 도장이라고 생각하면 쉽습니다. 법적 효력이 생기는 일에 서명을 할때는 인감 도장을 쓰는데 인감 도장을 주민자치센터에 가서 나의 신분증과 대면확인이 이루어져야 합니다. 이 도장이 이 사람의 것이 맞다는 확인 후에  이 도장을 당신의 인감 도장으로 사용하라는 증명서를 발행하게 되고 나중에 인감도장을 쓸때는 이 증명서를 가지고 다녀야 합니다.

 

이러한 기능을 갖는 것을 디지털적으로 해결을 해보자 해서 나온 것이 바로 전자 서명입니다.

 

▶ 전자 서명이 가져야 할 보안 요구사항

- 위조 불가(나 이외에 아무도 흉내내서는 안됨)

- 인증(이 서명이 나의 것인지 확인 가능해야함)

- 재사용 불가(이 문서에 한 서명은 이 문서에서만 효력이 있고 다른 문서에 서명만 떼서 붙이면 서명과 문서내용이

                     안맞는 것을 검증할 수 있어야 함)

- 변경 불가(서명이 된 문서에 대해서 내용을 변경하면 안됨, 바꼈으면 서명할 당시와 다른 것을 알아챌 수 있어야 함)

- 부인 방지(서명해놓고 서명자가 나중에 부인할 수 없음)

 

시스템은 앞서 배웠던 비대칭키 암호 시스템과 굉장히 유사합니다.

암호화와 전자서명의 목적은 완전히 다릅니다.

암호화의 목적은 데이터의 기밀성(노출이 되면 안된다), 서명의 목적은 인증(문서내용은 노출되도 상관없고 메세지에 대한 인증과 서명자에 대한 인증)이 목적입니다.

 

암호화는 Alice가 Bob에게 메세지를 보낼 때 Bob의 공개키로 암호화를 합니다. 암호화할 때 공개키로 암호화 했다는 것은 그와 짝꿍이 맞는 개인키로만 복호화가 가능합니다. Bob의 개인키는 Bob만 알기 때문에 본인만 메세지를 복호화 가능합니다.

 

서명은 어떤 문서에 대해서 서명을 할 때 나만 할 수 있어야 합니다. 따라서 나만 아는 비밀키로 메세지를 암호화(서명 생성)합니다. 이 메세지를 가지고 이 서명이 이 메세지에 대한 것이 맞냐라는 검증(복호화)은 누구나 다 할 수 있어야 합니다.

누구나가 나의 공개키로 이 서명을 검증할 수 있습니다.

 

▶ 전자 서명 생성

전자서명은 원문은 그대로 두고 추가적으로 무언가를 생성하는 겁니다. 이렇게 되면 원문도 있는 데다가 원문에 대한 서명까지 생기니까 메세지의 길이가 두배로 늘어납니다. 정보의 양이 너무 많아지게 되니까 원본은 내용 확인이 필요하므로 원본 메세지 그대로 있되, 서명은 굳이 원본 메세지에 대해서 할 필요가 없습니다. 원본 메세지의 사이즈를 줄이는 겁니다. 이때 사용하는 것이 해시입니다. 해시는 원본 메세지의 크기가 어찌됐든 간에 무조건 output이 160bit입니다. 이러한 해시를 쓰면 서명의 길이는 고정이 됩니다. 그래서 굉장히 짧아진 해시값을 가지고 서명을 생성합니다.

여기서 드는 생각은 원본 내용하고 해시값이 다른데 원본 내용의 인증이 될까?

여기서 쓰는 해시는 암호학적 해시를 사용하기 때문에 원문이 1bit차이만 나도 해시값은 확 차이가 납니다. 따라서 해시값은 원문에 따라서 재사용이 안됩니다. 원문이 달라지면 해시값은 무조건 달라지기 때문에 원문의 내용이 변경되지 않았다라는 사실을 증명하는 데도 사용할 수 있습니다.

해시를 사용하는 이유는 원문은 그대로 전송이 되기 때문에 해시값을 통해서 원문을 복구하고 그럴 필요는 전혀 없습니다.

단순히 원문의 사이즈를 줄이기 위한 용도로만 사용을 합니다.

 

 

▶ 전자 서명 검증

원본 문서에 대해서 그대로 해시를 시키고 보낸 사람의 공개키로 복호화를 시킵니다. 전달 받은 해시값하고 검증자가 새롭게 생성한 해시값이랑 같으면 보낸 사람이 만든 것이 맞구나를 증명할 수 있습니다.

그리고 검증자가 원본을 보고 해시를 한 것이기 때문에 사용자가 준 해시하고 검증자가 생성해낸 해시값하고 같다는 건 원본의 틀림이 없음을 증명해 줍니다. 즉 원본의 위변조되지 않음과 이 서명은 이 원본에 대한 서명이다를 다 검증할 수 있습니다.

 

대표적으로 사용되는 전자서명 알고리즘이 있습니다.

 

☞ RSA Signature

 

☞ DSA(digital signature algorithm)

 

다음 글에서 하나씩 살펴보도록 합시다~

728x90
반응형