이더리움 거래를 위한 Trezor, Ledger Nano 하드웨어 월렛 2종 사용

knil nissim
RayonProtocol
Published in
6 min readJun 22, 2018

이 글은 하드웨어 월렛의 역할, 선택시 고려사항, 사용 절차를 간략하게 설명합니다.

하드웨어 월렛은 키를 암호화하여 보관하며 키가 외부 인터페이스를 통해 노출되지 않습니다. 인터넷에 연결된 컴퓨터에서 구동되는 소프트웨어 월렛를 사용하여 서명하는 것은 하드웨어 월렛에 비해 더 많은 외부 리스크요인을 갖습니다. 하드웨어 월렛은 오프라인에서 오직 트랜잭션의 서명만을 담당하기 때문에 온라인의 소프트웨어 월렛보다 더 안전하다고 할 수 있습니다.

하드웨어 월렛의 역할

트랜잭션 처리에서 월렛의 역할

  • 작성(트랜잭션 내용을 기입)
  • 서명(트랜잭션 내용을 sign)
  • 전파(트랜잭션을 네트워크에 전파)

소프트웨어 월렛은 트랜잭션 작성, 서명, 전파 모두 수행 가능합니다.

소프트웨어 월렛과 함께 하드웨어 월렛 사용

하드웨어 월렛은 서명만 수행합니다. 소프트웨어 월렛에서 작성한 트랜잭션을 하드웨어 월렛이 전달받아 서명하고 트랜잭션이 네트워크에 전파 될 수 있도록 다시 소프트웨어 월렛에 전달합니다.

선택시 고려사항

우리는 Trezor, Ledger Nano S로 하드웨어 월렛을 선택했습니다. 동일한 단하나의 디바이스로 선택하지않은 이유는 하나의 제품에 결함(HW, SW)이 있을경우 Single Point of Failure가 될 수 있기 때문입니다. 리스크를 낮추기위해 각각 다른 제조사의 디바이스를 선택했습니다.

두 하드웨어 월렛 선택할 때 고려한 사항은 아래와 같습니다

이더리움 월렛을 지원해야한다.

이더리움 자산 관리를 위해 당연하게도 이더리움 월렛을 지원해야합니다. Trezor, Ledger Nano S 모두 이더리움, 비트코인, 라이트코인 등 다수의 암호화폐를 지원합니다.

월렛에서 트랜잭션을 직접 확인할 수 있도록 화면이 있어야한다.

하드웨어 월렛은 닫힌 환경에서 트랜잭션 처리를 수행합니다. 하드웨어 월렛에서 어떤 트랜잭션 내용이 수행되는지 확인할 필요가 있습니다. 화면이 있으면 트랜잭션 내용이 소프트웨어 지갑에서와 달리 악의적으로 변조 뒤 전달되어도 confirm 과정에서 충분히 검증될 수 있습니다. 또한 화면이 있으면 생성된 mnemonic words(recovery phrase와 seed는 동의어, 이하 니모닉)를 확인할 수 있습니다.

송금 뿐만아니라 스마트 컨트랙트 트랜잭션 수행할 수 있어야 한다.

일반적인 송금 뿐만아니라 MultiSig Wallet을 비롯한 스마트 컨트랙트에 트랜잭션 처리를 수행할 수 있어야합니다. 해당 사항은 사실 소프트웨어 월렛에 해당하는 요구사항입니다. 하드웨워 월렛은 서명만 하기 때문이죠. MyEtherWallet과 MyCrypto가 해당 사항을 지원합니다. Trezor와 Ledger Nano S는 이 두 소프트웨어 월렛과 연동하여 하드웨어 월렛은 궁극적으로 스마트 컨트랙트 트랜잭션 수행할 수 있습니다.

사용하기

완전히 분리된 환경

하드웨어 월렛을 사용하기위해 월렛에 니모닉을 설정(생성/복원)합니다.

니모닉 생성: Trezor, Ledger Nano S 모두 기기에서 니모닉을생성할 수 있습니다. 해당 니모닉은 기기 화면에만 디스플레이 됩니다.

Ledger Nano S의 화면에 출력된 Mnemonic word

니모닉 복원: 이미 만든 니모닉이 있다면, 월렛으로 복원하여 사용할 수 있습니다.

Trezor의 Mnemonic 입력 가이드(좌), 입력 인터페이스(우)

Trezor는 복원과정(advanced recovery)에서 외부 인터페이스에 의존하지만 기기 화면에서 니모닉을 찾기위한 입력 보조수단일 뿐 값을 입력하는것이 아니므로 외부 인터페이스에서 니모닉을 추론할 수 없습니다.

Ledger Nano S의 Mnemonic 입력

Ledger Nano S는 기기 완전히 버튼으로만 니모닉을 전부 입력합니다. 시간이 다소 소요되지만 완전한 offline 처리를 보장합니다.

거래하기

MyEtherWallet에 연동

하드웨어 월렛과 소프트웨어 월렛을 이용해 송금 트랜잭션을 수행해보겠습니다. 이더리움 송금을 위해 https://www.myetherwallet.com/#send-transaction에 접속합니다.

(1) 월렛으로 Trezor를 선택합니다. public key를 export하여 연동하기 전에 PIN 넘버를 입력합니다.

(2) 송금 트랜잭션을 수행할 월렛 주소를 선택합니다. 상단의 유도 경로를 선택하면 해당 경로로 생성된 주소들이 하단에 나옵니다.

(3) 송금을 위해 수신주소와 수량을 기입하고 “Generate Transaction” 버튼을 누릅니다. 이 때 하드웨어 월렛이 서명 요청을 받게 되고, 사용자는 하드웨어 월렛 화면에서 서명된 트랜잭션 내용을 확인후 confirm합니다.

(4) 서명된 트랜잭션이 소프트웨어 월렛(MyEtherWallet)으로 전달되고 “Send Transaction” 하면 네트워크에 전파됩니다.

여기까지 하드웨어 월렛의 역할과 하드웨어 선택 시 고려사항을 알아보고 트랜잭션의 생성과 서명이 어떻게 분리되어 수행되는지 살펴봤습니다. 감사합니다.

사진 촬영: Joontae Kim

--

--