관리 메뉴

평행우주 : world 1

[블록체인이론] 디지털 서명 본문

텃밭 1 : BlockChain/이론

[블록체인이론] 디지털 서명

parallelworlds 2022. 3. 27. 05:23

디지털 서명 용도

디지털 서명은 이더리움에서 세 가지 용도로 사용된다

1. 서명은 이더리움 계정과 개인키의 소유자가 이더 지출 또는 컨트랙트 이행을 승인했음을 증명

2.부인 방지를 보장한다. 즉, 허가의 증거는 부인할 수 없다

3.서명은 트랜잭션이 서명된 후에는 트랜잭션 데이터가 수정되지 않았고 어느 누구도 트랜잭션 데이터를 수정할 수 없음을 증명한다

 

 

디지털 서명 작동 방법

디지털 서명은 두 단계로 구성된 수학적 체계다

1 단계 : 메세지(트랜잭션)에서 개인키(서명키)를 사용하여 서명을 만드는 알고리즘

2 단계 : 누구나 메세지와 공개키만 사용하여 서명을 검증할 수 있게 해주는 알고리즘

 

 

서명 확인

서명을 확인하려면 서명(r, s)과 시리얼라이즈된 트랜잭션, 그리고 서명을 만드는 데 사용된 개인키에 상응하는 공개키가 있어야 한다.

본질적으로 서명 확인은 공개키를 생성한 개인키의 소유자만이 트랜잭션에서 서명을 생성할 수 있음을 의미한다

서명 검증 알고리즘은 메세지(우리가 사용하기 위한 트랜잭션 해시), 서명자의 공개키 및 서명(r,s)을 가져와서 

서명이 메세지와 공개키에 유효하면 true를 반환한다

 

 

트랜잭션 서명 실습

유효한 트랜잭션을 생성하려면 발신자는 ECDSA를 사용하여 메시지에 디지털 서명을 해야한다

'트랜잭션에 서명하시오' 라는 의미는 'RLP 시리얼라이즈된 트랜잭션 데이터의 keccak-256해시에 서명하시오'와 같다

즉, 서명은 트랜잭션 자체가 아니라 트랜잭션 데이터의 해시에 적용된다

 

발신자는 이더리움에서 트랜잭션을 발생하기 위해 반드시 다음 과정을 거쳐야 한다

1. nonce, gasPrice, gasLimit, to, value, data, chainID(v), 0(r), 0(s)의 9개 필드를 포함하는 트랜잭션 구조를 만든다

2. RLP로 인코딩된 트랜잭션 데이터 구조의 시리얼라이즈된 메시지를 생성한다

3.이 시리얼라이즈된 메세지의 kaccak-256 해시를 계산한다

4.원래 EOA의 개인키로 해시에 서명하여 ECDSA 서명을 계산한다

5.ECDSA 서명의 계산된 v,s,r 값을 트랜잭션에 추가한다

 

 

+) 특수 서명 변수 v

ECDSArecover함수가 서명을 확인하는 데 도움이 되는 복구 식별자와 체인 ID를 나타낸다

 

 

공개키 복구

드랜잭션 메시지는 발신자(from) 필드를 포함하지 않는다

발신자의 공개키가 ECDSA서명을 통해 직접 계산될 수 있기 떄문이다

공개키가 있으면 쉽게 주소를 계산할 수 있다

서명자의 공개키를 복구하는 프로세스를 공개키복구라고 한다

 

 

 

 

 

Comments