디지털 서명이란 무엇인가?
디지털 서명(Digital Signatures)이란 일종의 검증 알고리즘입니다. 블록체인에서 디지털자산의 트랜잭션에 서명하고 승인하는 데 사용되기도 하며, 데이터 전송, 계약, 분산신원인증(DID, Decentralized Identity) 등에도 사용됩니다.
디지털 서명은 전자 서명(Electronic Signatures)과 다릅니다. 아무래도 용어가 비슷하다 보니 혼용되기도 하지만 전자 서명의 정의가 디지털 서명보다 더 넓은데요. 미국 전자 상거래법에서는 전자 사명을 전자적 수단에 의해 생성, 전송, 전달, 수신 또는 저장되는 서명의 역할로 계약을 위해 포함되거나 논리적으로 만들어진 기호, 또는 프로세스라고 정의하고 있습니다.
전자 서명에는 비밀번호, PIN번호, 이메일 인증, 디지털화된 손으로 쓴 서명 이미지 등이 모두 포함되며 높은 보안이 필요할 경우 다중으로 인증을 사용할 수 있습니다.
디지털 서명이란?
디지털 서명은 일반적으로 해싱, 서명, 검증 이 세 가지 알고리즘으로 이루어진 전자 서명의 일종이라 할 수 있습니다.
1) 개인키와 공개키 생성
보내야 할 데이터, 문서, 메시지 등을 해시 알고리즘으로 암호화하여 개인키와 공개키를 생성합니다. 데이터는 해시 함수를 사용하여 암호화되기 때문에 데이터의 길이에 상관없이 고정된 크기의 해시를 생성하는데요. 이렇게 해싱을 통해 개인키와 이에 상응하는 공개키를 생성합니다. 이때 단 1비트라도 변하게 된다면 완전 다른 해시값을 내놓기 때문에 역산해서 암호를 푸는 것은 사실상 불가능합니다.
2) 서명
서명은 데이터나 문서에 발신자의 개인키가 포함됨으로써 서명을 하게 됩니다. 또한 발신자는 수신자에게 개인키에 부합하는 공개키를 함께 보냅니다. 데이터가 해시화되었기 때문에 메시지 별로 모두 다른 디지털 서명을 갖게 됩니다.
3) 검증
수신자는 발신자가 보낸 공개키를 통해 디지털 서명의 유효성을 확인할 수 있습니다.
디지털 서명이 갖는 기술적 의의
1) 무결성 보장
무결성 보장이란 데이터나 문서 등이 전송되는 동안 변경되지 않았음을 의미합니다. 만약 해킹 공격으로 인해 데이터가 변경이 된다면 서명이 무효화가 되기 때문에 데이터가 위변조된 것을 바로 알 수 있게 됩니다.
2) 인증
발신자 인증이란 데이터를 전송하는 주체에 대한 인증입니다. 서명이 유효하다면 개인키를 보유한 사람이 발신했다는 것을 확인할 수 있습니다. 또한 서명한 발신자가 다른 사람이 아니라는 것을 확인시켜주기 때문에 서명을 하지 않았다고 부인하는 것을 방지하기도 합니다.