- 디지털 서명은 디지털 메시지나 문서의 진 위를 표한하기 위한 수학적 기법
- 이더리움은 세 가지 용도로 디지털 서명을 사용한다
- 유효한 디지털 서명은 메시지가 알려진 발신자에 의해 생성되었다
- 보낸 사람이 메시지를 보내지 않았음을 부인할 수 없다
- 메시지가 전송 중에 변경되지 않았다
2 디지털 서명 작동 방법
- 메시지에서 개인키를 사용하여 서명을 만드는 알고리즘
- 누구나 메시지와 공개키만 사용하여 서명을 검증할 수 있는 알고리즘
2.1 디지털 서명 만들기
- 이더리움 ECDSA 구현에서 서명된 메시지는 트랜잭션이다.
Sig = (r, s) = F_sig(F_keccak256(m), k)
- m: RLP 인코딩된 트랜잭션
- F_keccak256: keccak-256 해시 함수
- F_sig: 서명 알고리즘
- Sig: 결과 서명
2.2 서명 확인
- 서명을 확인하려면 서명(r, s)과 시리얼라이즈된 트랜잭션, 그리고 서명을 만드는 데 사용된 개인키에 상응하는 공개키가 필요하다
3 EIP-155
- 한 네트워크에서 전파된 트랜잭션이 다른 네트워크에서 재생 되는 것을 방 지하는 역할
- 서명하기 전에 트랜잭션 데이터 내부에 체인 식별자를 포함한다.
- 트랜잭션이 인코딩되고 해싱되기 전에 트랜잭션 데이터 구조의 주요 6개 필드에 체인 식별자, 0, 0 3개의 필드를 추가한다.
- 이렇게 하면 이더리움 메인 네트워크 블록체인에 대해 생성된 트랜잭션이 이더리움 클래식 또는 롭스텐 테스트 네트워크 블록체인에서는 유효하지 않다