본문 바로가기
기타/CS

전자서명

by oneny 2023. 9. 11.

전자서명

 

위키백과 - 디지털 서명

송신자는 네트워크에서 송신자의 신원을 증명하는 방법으로, 자신의 유일한 신분(identity)을 증명할 수 있는 서명을 메시지와 함께 보낸다. 서명(signature)를 계산할 때, 메시지의 내용을 자신의 비밀키로 암화하면 수신자는 송신자의 공개키로 암호문을 해독한다.

사이버 공간에서는 정보들을 쉽게 위변조 할 수 있다. 따라서 전자 서명은 쉽게 사이버 공간에서의 인감으로 프로그램의 제작자를 확인하고, 거래를 한 사람이 자신이 맞다는 것을 증명하기 위해 나오게 되었다.

송신자의 서명은 다음과 같은 특징을 가진다.

  • 변경 불가(Unalterable): 메시지가 변조되지 않았음을 증명할 수 있다.
  • 서명자 인증(User Authentication): 메시지를 보낸 송신자의 신분을 증명할 수 있다.
  • 부인 불가(Non repudiation): 나중에 송신자가 이 메시지를 보낸 것을 부인하는 것을 막을 수 있다.
  • 재사용 불가(Not reusable): 전자서명의 서명은 다른 전자문서의 서명으로 사용될 수 없다.
  • 위조 불가(Unforgettable): 합법적인 서명자만이 전자 문서에 대한 전자서명을 생성할 수 있어야 한다.

 

공개키의 이용

공개키를 이용한 암호화 방식에는 아래와 같이 여러 방법이 있다.

 

 

암호화

  • 수신자(receiver)의 공개키로 메시지를 암호화
  • 수신자(receiver)의 개인키로 메시지를 복호화

 

전자서명

  • 송신자(sender)의 개인키로 메시지를 암호화함으로써 서명(sign)
  • 수신자는 송신자의 공개키로 메시지를 복호화하여 서명을 증명한다.

암호화는 송신자가 수신자의 공개키를 받아서 메시지를 암호화하는 반면, 전자 서명은 송신자가 보내는 메시지를 자신의 개인키로 암호화시키고, 이를 서명이라고 한다. 그러면 수신자는 송신자의 공개키로 메시지를 복호화한다. 암호화 방식과 전자 서명은 공개키와 개인키를 사용하는 순서가 반대이다.

 

대칭키를 이용한 서명

대칭키로 암호화를 할 경우 누가 메시지를 보냈는지 증명할 수 있다. 즉, 대칭키로 서명할 경우에는 송신자의 신원(Sender identity), 메시지 무결성(Message integrity)를 증명할 수는 있지만, 같은 대칭키를 가지고 있기 때문에 부인 방지(non-repudiation)는 할 수 없다. 이 말은 위에서 나중에 송신자가 이 메시지를 보낸 것을 부인하는 것을 막을 수 있다고 했는데 같은 대칭키를 가짐으로써 송신자 쪽에서 같은 대칭키를 가졌기 때문에 수신자 쪽에서 암호화한 것 아니냐는 부인을 할 수 있게 되어 부인 방지를 할 수 없게 된다.

 

개인키로 서명

개인키는 송신자의 유일한 신분(unique identity)을 나타낸다. 따라서 개인키로 서명을 할 경우에는 송신자의 신원, 메시지 무결성, 부인 송쇄 모두 증명할 수 있다.

 

 

RSA 전자서명

RSA는 대표적인 공개키 암호화 방식이다. 송신자는 먼저 공개키와, 개인키를 생성하여 공개키를 상대방에게 알려준다. 그리고 송신자는  자신의 개인키로 보내고자 하는 정보를 암호화시켜 그 결과(서명)를 메시지와 함께 수신자에게 보낸다. 그러면 수신자는 송신자가 보낸 서명값을 송신자의 공개키를 가지고 복호화시킨다. 복호화시킨 그 결과값과 송신자가 보낸 메시지와 비교하여 메시지 무결성을 증명할 수 있다.

RSA 암호화 방식의 동작 원리에 대한 내용을 아래 블로그를 참고하자.

 

HTTPS(with 공개키 암호화 방식)

HTTPS HTTPS는 웹 브라우저와 서버 간에 데이터를 전송하는데 사용되는 기본 프로토콜인 HTTP의 보안버전이다. HTTPS는 데이터 전송의 보안을 강화하기 위해 암호화된다. 이는 사용자가 은행 계좌, 이

oneny.tistory.com

 

해시 함수 + 전자서명

위 방식은 공개키를 사용한 서명 방식의 동작 원리이고, 실제로 전자 서명을 할 때에는 메세지 자체를 가지고 서명을 구하지 않고 해시 함수를 사용하게 된다.

 

먼저 메세지를 해시함수를 통해 해시값을 구한 다음 자신의 개인키를 가지고 해시값에 대해 서명값을 구한다. 그리고 해시값에 대해 개인키로 암호화된 서명을 메시지와 함께 수신자에게 보낸다. 그러면 수신자는 메세지를 같은 해시함수를 통해 해시를 만들고, 받은 서명에 대해 송신자의 공개키로 복호화하여 그 둘을 비교하여 메시지 무결성을 증명한다.

 

 

출처

전자서명(디지털 서명)

해시넷 - 전자서명