BloCCat

전자 서명 본문

1. 전자 서명 개요

전자 서명은 데이터의 타당성을 증명하는 것.

전자 데이터를 보내는 사람이 서명을 생성하고 받는 사람은 그 서명을 검증해 타인에 의한 위조나 변조가 이루어졌는지를 확인할 수 있다.

 

전자 서명의 생성 및 검증의 흐름 

  1) 전자 서명을 보내는 사람은 '비밀키'와 '공개키'로 구성된 키 쌍을 생성한다.

     비밀키는 서명 생성 용도의 키, 공개키는 서명 검증 용도의 키다.

  2) 보내는 사람은 위에서 만든 공개키를 미리 받는 사람에게 전달한다.

  3) 보내는 사람은 1에서 만든 비밀키를 이용해 전자 데이터를 암호화한다.

     이때 암호화로 만들어진 암호문을 '전자 서명'이라고 한다.

  4) 보내는 사람은 3에서 생성한 전자 서명을 전자 데이터와 함께 받는 사람에게 전달한다.

  5) 받는 사람은 2에서 받은 공개키를 이용해 4에서 받은 전자 서명을 복호화 한다. 

     복호화에 성공하면 원본 전자 뎅터가 생성된다. 

  6) 받는 사람은 4에서 받은 전자 데이터와 5에서 복호화한 결과를 비교해 내용이 같은지 확인한다.

     비교 결과가 같다면 진짜 데이터는 위조나 변조되지 않은 것이다.

 

 이처럼 전자 서명은 공개키 암호화 방식의 구조를 응용한 것인데, 이 구조의 특징은 다음과 같다.

  1) 비밀키로 암호화한 것은 공개키로 복호화할 수 있으며 반대로 공개키로 암호화 한것은 비밀키로 복호화 가능하다.

  2) 비밀키는 다른 사람에게 공개하지 않고 공개키만 다른 사람에게 공개한다. 

 

2. 블록체인에서 전자 서명 이용

블록체인에서는 각 트랜잭션에 한 개씩 전자 서명이 부여된다.

또한 전자 서명을 검증하기 위한 공개키도 세트로 부여된다.

 

블록체인에는 발행된 모든 트랜잭션이 저장돼 있으며 각 트랜잭션에 전자 서명과 공개키가 세트로 부여돼 있다. 그렇기 때문에 비트코인 네트워크의 참가자는 과거 블록체인 상에서 수행된 모든 트랜잭션을 순차 검증할 수 있다. 트랜잭션의 전자 서명을 검증하면 다음과 같은 것을 확인할 수 있다. 

  1) 제3자가 트랜잭션 내용을 위조하거나 변조하지 않았는지 여부

  2) 제3자가 도용 등을 통해 트랜잭션을 수행했는지 여부

  3) 코인의 정당한 소유자가 제대로 트랜잭션을 수행했는지 여부 

 

또한 트랜잭션을 발행하려면 공개키와 비밀키의 키 쌍이 필요하다. 

블록체인 기반 기술에서는 키 쌍의 생성을 위해 타원 곡선 암호(ECDSA)라는 알고리즘을 사용해 키 길이는 256비트 이상을 사용한다. 

타원 곡선 암호를 사용해 얻을 수 있는 장점은 다른 방식의 암호와 동등한 수준의 암호 강도를 보다 짧은 키를 사용해 구현할 수 있으며 결과적으로 처리 성능을 빠르게 할 수 있다.