Key management on DApp Service (2/3)

Jinho Lee(Jason)
Hexlant
Published in
3 min readMar 23, 2018

Blockchain Account

Account의 생성

Account 하면 일반적인 온라인 서비스(인터넷 뱅킹, 온라인쇼핑, 포탈 서비스 등)에서 사용하는 ID, Password 가 생각납니다. 블럭체인 위에서의 Account도 비슷한 개념입니다.
아마 블럭체인 서비스를 많이 사용하신 분들은 개인키(Private Key)와 공개키(Public Key)얘기를 많이 들어보셨을 겁니다.

블럭체인에서의 Account는 개인키와 공개키로 구성됩니다.

그렇다면 우리가 흔히 말하는 지갑주소는 어떻게 생성이 될까요?

<Account 생성과정>

우리가 블럭체인 위에서 Account를 생성하게 되면 랜덤한 숫자가 생성되고, 이를 기반으로 개인키가 생성됩니다. 개인키를 타원곡셈 함수를 통하여 공개키가 생성되고, 이 공개키를 해싱하여 우리가 흔히 지갑 주소라고 말하는 값이 나오게 됩니다.

공개키 기반의 암호기술에 대해서는 나중에 또 설명할 기회가 있을것이지만, 오늘은 간단하게 블럭체인 위에서 개인키와 공개키가 어떻게 쓰이는지 확인해볼까 합니다.

Blockchain Transaction

우리가 이더리움을 전송하기 위해선우선 트랜잭션을 생성해야 합니다.
그리고 이 트랜잭션이 여러분이 생성한 것이 맞다는 증거로, 트랜잭션위에 개인키로 서명을 하게됩니다.

채굴노드 또는 트랜잭션을 검증하는 노드는 여러문의 트랜잭션의 서명 정보를 여러분의 공개키를 통하여 확인을 하게 됩니다.

개인키는 여러분만 아는 암호로, 서명정보를 통해 여러분이 실제 트랜잭션을 만든 사람인지 아닌지 확인이 가능합니다.

일상에서 이뤄지는 계약에 빗대어 보면, 개인키는 인감도장, 공개키는 인감증명서 같은 존재입니다. 따라서 여러분의 개인키는 아무나 보지 못하도록 보관에 신경을 써야합니다.

Private key Encryption

MyEtherWallet에서 지갑을 생성하신분들은 흔히UTC파일이라고 부르는 키스토어 파일을 보신 분들이 있을것입니다. 이 키스토어 파일 안에는 여러분 지갑의 개인키가 암호화되어 저장되어있습니다.

<키스토어 파일의 구조>

실제로 키스토어 파일을 열어보시면 JSON 형태의 문서가 들어 있습니다.
여기에 Crypto 라고 되어 있는 부분이 여러분 지갑의 개인키의 암호화된 정보입니다. 따라서 키스토어 파일의 암호를 모르면 여러분의 개인키를 복원할 수 가 없습니다.

--

--