본문 바로가기
Block Chain/블록체인 구조와 기술

[블록체인] 9장, 전자 서명과 해시

by Y06 2021. 2. 24.

9.1 전자 서명을 통한 위조 및 변조 방지

9.1.1 전자 서명 개요

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

 

단순한 전자 데이터의 송신을 예로 서명 생성부터 검증까지의 흐름을 설명한다.

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

  1.  보내는 사람은 '비밀키'와 '공개키'로 구성된 키 쌍을 생성한다. 비밀키는 서명 생성 용도의 키, 공개키는 서명 검증 용도의 키다.
  2. 보내는 사람은 1에서 만든 공개키를 미리 받는 사람에게 전달한다.
  3. 보내는 사람은 1에서 만든 비밀키를 이용해 전자 데이터를 암호화한다. 암호화로 만들어진 암호문을 '전자 서명'이라고 한다.
  4. 보내는 사람은 3에서 생성한 전자 서명을 전자 데이터에 붙여 받은 사람에게 전달한다.
  5. 받는 사람은 2에서 받은 공개 키를 이용해 4에서 받은 전자 서명을 복호화한다. 복호화하면 원본 전자 데이터가 생성된다.
  6. 받는 사람은 4에서 받은 전자 데이터와 5에서 복호화한 결과를 비교해 내용이 같은지 확인한다. 비교 결과가 같다면 전자 데이터는 위조나 변조되지 않은 것이다.

전자 서명은 공개키 암호화 방식의 구조를 응용한 것이다. 전자 서명은 공개키 암호화 방식에서 사용되는 키 쌍이 가진 다음과 같은 특성을 이용하고 있다.

 

  • 비밀키로 암호화한 것은 공개키로 복호화할 수 있음(반대로 공개키로 암호화한 것은 비밀키로 복호화 가능)
  • 비밀키는 다른 사람에게 공개하지 않음
  • 공개키는 다른 사람에게 공개

블록체인은 전자 서명에 의해 트랜잭션의 정당성을 보증한다.

 

9.1.2 블록체인에서 전자 서명 이용

블록체인에서는 각 트랜잭션에 한 개씩 전자 서명이 부여된다. 또한 전자 서명을 검증하기 위한 공개키도 세트로 부여된다.

 

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

 

  • 제삼자가 트랜잭션 내용을 위조하거나 변조하지 않았는지 여부
  • 제삼자가 도용 등을 통해 트랜잭션을 수행했는지 여부
  • 코인의 정당한 소유자가 제대로 트랜잭션을 수행했는지 여부

그리고 트랜잭션을 발행하려면 공개키와 비밀키의 키 쌍이 필요하다. 비트코인 등 많은 블록체인 기반 기술에서는 키 쌍의 생성에 타원 곡선 암호(ECDSA)라는 알고리즘을 사용해 키 길이는 256비트 이상을 사용한다. 장점으로는 RSA나 ElGamel 암호 등 다른 방식과 동등한 수준의 암호 강도를 보다 짧은 키를 사용해 구현할 수 있으며 결과적으로 처리 성능을 빠르게 할 수 있다.

 

9.2 해시를 통한 위조 및 변조 방지

9.2.1 해시 개요

해시는 전자 서명과 마찬가지로 전자 데이터로부터 생성되는 값이다. 전자 서명과의 차이점은 생성된 해시는 다시 원래 데이터로 변환할 수 없다는 것이다. 해시도 전자 데이터의 내용마다 고유한 값을 가진다.

 

해시 함수는 전자 데이터의 해시를 생성하는 함수이며 다음과 같은 특성이 있다.

 

  • 전자 데이터의 고유한 해시를 생성함
  • 전자 데이터의 길이(비트 길이)와 상관없이 고정된 크기의 해시를 생성함(해시 사이즈는 사용하는 해시 함수가 결정)
  • 전자 데이터가 1비트라도 변하면 완전히 다른 해시가 만들어짐(해시는 전자 데이터의 내용에 따라 고유한 값을 가짐)

추가적으로 해시끼리 충돌할 확율이 0이 아니다. 표현할 수 있는 해시의 수는 해시 사이즈(비트 수)로 결정되기 때문이다. 전자 데이터가 5종류 이상이라면 충돌하게 된다.

 

9.2.2 블록체인에서 해시 이용

블록체인은 복수의 트랜잭션을 모은 블록을 만들고, 블록에는 이전 블록의 해시를 포함시킨다. 블록체인에서 블록은 '블록 헤더 + 트랜잭션 정보(복수)'로 만들어지며 블록 헤더는 '이전 블록 헤더의 해시 값 + Nonce + 트랜잭션의 해시값으로 구성된다. 어떤 블록 내용을 위조하고나 변조하면 해시 함수 특성에 따라 그 다음 블록에 포함된 해시값이 변하며 동시에 이후이 모든 블록에 포함된 해시값이 변한다. 위조나 변조를 성공시키기 위해서는 이런 모든 해시를 다시 계산하지 않으면 안 된다.

 

9.3 향후 과제

9.3.1 암호 기술로서의 과제

블록체인 기술에서 이용하기 위한 유효성이 충분히 검증된 것은 아니다. '트랜잭션 전성' 문제가 있다.

 

비트코인은 앞서 설명한 것과 같이 트랜잭션 정보를 전자 서명의 대상으로 해서 제 3자의 위조와 변조를 방지하고 있지만 비트코인 사양에서는 트랜잭션에서 중요한 역할을 담당하는 부분(실제로 거래를 실행하는 스크립트)이 서명 대상에서 제외돼 있었다.

 

9.3.2 기업 이용에 있어서의 과제

제 1 과제는 은닉 정보를 어떻게 취급하느냐다.

 

제 2 과제는 계정의 타당성 검증에 관한 문제다.

 

 


출처: 블록체인 구조와 이론_아키하네 요시하루, 아키하네 마나부 지음