본문 바로가기

알기쉬운 블록체인

전자서명 (Digital signature)

지난 시간 트랜잭션을 알아보았다.

트랜잭션에는 원본데이터와 전자서명이 포함돼 있으며블록체인상에서 각 노드로 전파된 해당 트랜잭션이 진짜인지 유효성을 검증하려면 디지털서명(Digital signature) 즉, 전자서명이 필요하다고 언급했다.

그래서 비트코인을 거래한다면 원본 데이터와 전자 서명된 데이터를 함께 보내 해당 트랜잭션 데이터 내용이 수정되었거나 올바른 메시지인지 '검증' 하게 된다.

이 때  전자서명은 공개키 암호화 알고리즘을 이용하여 전자서명 한다.

암호화 알고리즘은 비대칭 암호화 방식이다.

'개인 키'로 암호화 데이터는 오직 '공개 키'로만 해석할 수 있는데 이 방식은 '공개 키'를 가진 사용자라면 그 누구라도 암호화된 데이터 내역을 복호화 할 수 있지만 이러한 암호화 데이터는 오직 '개인 키'를 가진 사람만 할 수 있다.

 

위 내용을 다시 정리하면 다음과 같다.

 

1. 노드에 전파된 트랜잭션이 진짜인지 검증하는데 전자서명이 필요하다.

2. 공개키 암호화 알고리즘에 의해 송신자의 '개인키' 암호화했을 경우 '전자서명'된 데이터를 만들 수 있다.

3. 트랜잭션에는 '원본데이터'와 '전자서명'이 포함되어 있다. 각 노드로 전파된 트랜잭션이 진짜 인지 검증하기 위해 사용된다. 

4. 노드는 '전자서명'된 데이터를 난독화하여 난독화된 데이터와 원본 데이터가 완전히 일치할 경우만 유효한 트랜잭션으로 인정한다. 이 거래를 업데이트 한 후 주변 노드들에게 해당 트랜잭션을 전파한다.   

 


그렇다면 정확한 트랜잭션의 유효성 검사가 어떻게 이뤄지는지 확인해보자.

1. 원본데이터를 자신의 개인키로 암호화를 진행하여 '전자서명'을 진행한다. 

2. 원본데이터와 '전자서명'된 데이터를 노드에 전파한다. 

3. 노드는 해당 트랜잭션이 진짜인지 검증하기 위해 트랜잭션을 송신한 'A'의 공개키를 이용하여 암호화를 진행한다. 

4. 암호화된 거래 데이터와 원본데이터를 비교하여 수정된 데이터가 있는지 데이터의 무결성을 검증한다. 

5. 수신받은 트랜잭션이 진짜 거래로 판단될 경우 블록체인에 해당 트랜잭션을 업데이트하고 블록체인 네트워크에 연결된 노드들에게 해당 트랜잭션을 전파하게 된다.  

B가 A인척하고 트랜잭션을 전파할 경우를 살펴본다.

'B'가 거래 내용을 마치 'A'가 'C'에게 BTC를 송금한것 처럼 메시지를 작성한 후 자신의 개인 키 정보를 이용하여 전자 서명 후 비트코인 네트워크에 있는 노드들에게 해당 거래내역을 전파한다.

트랜잭션을 수신 받은 노드는 해당 메시지를 확인 후 A가 보낸 메시지가 맞는지 확인하기 위하여 A가 가진 공개 키 정보로 디지털 서명을 복호화한다.

A의 공개키로 암호화된 데이터를 복호화 하였지만, 복호화한 데이터와 트랜잭션의 원본 내용이 일치하지 않기 때문에 해당 거래내역은 '가짜' 혹은 조작된 거래내역으로 판별하고 해당 트랜잭션을 무시하게된다.


위 내용처럼 조작된 거래에 대해 판별하는 시나리오를 살펴보았다. 

이처럼, 전자서명은 비대칭 암호화 방식을 사용하며 전자서명된 데이터를 통해 해당 트랜잭션이 진짜인지 데이터 내용에 대한 유효성 검증을 하게 된다.