Skip to content
Seong-il Lee edited this page Oct 26, 2018 · 20 revisions

개인키 & 공개키

개인키

  • 랜덤 한 256bit로 이뤄진 값
  • 일반 난수 생성기로 개인키를 생성하는 것보다 엔트로피 (무작위성)가 높은 함수로 생성해야 안전하다.
  • 최소 값 : 0x1
  • 최대 값 : 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  • 2^256 = 1.1579209e+77, 가시적 우주의 원자 개수로 표현되는 10^80과 맞먹는 숫자
  • 비트코인 주소 생성기

공개키와 주소

  • 개인키를 생성했으면 타원곡선 곱셈을 이용해서 공개키를 계산할 수 있다.
  • 비트코인은 secp256k1을 사용한다.
  • Base64 : 64가지의 문자로 수를 표현. A-Z(26), a-z(26), 0-9(10), +, / (2)
  • Base58 : 58가지의 문자로 수를 표현. Base64에서 헷갈릴 수 있는 0-O(숫자 영, 대문자 오), I-l(대문자 아이, 소문자 엘), +, / 6문자를 뺀 것

개인키 생성 방식에 따른 분류

  • 비트코인에서는 보안을 위해서 비트코인 주소를 일회용으로 사용하길 권장한다.
  • 그래서 100개의 거래를 위해서는 100개의 주소가 필요하다. (100개의 개인키를 저장해야 한다.)

비결정적 지갑 (Non-deterministic Wallet)

  • 매번 무작위하게 개인키를 생성하고, 그에 따른 비트코인 주소를 사용한다.
  • 보관이 어렵다. 공개키 - 개인키 쌍을 모두 백업해야 한다.

결정적 지갑 (Deterministic Wallet)

  • 하나의 시드를 기반으로 규칙을 가지고 주소를 생성한다.

계층 결정적 지갑 (Hierarchical Deterministic Wallet - HD Wallet)

  • 말 그대로 계층적으로 구분되어 상위 계층의 키를 이용해서는 하위 계층을 제어할 수 있지만, 하위 계층의 키를 이용해서는 상위 계층을 제어할 수 없다.
  • BIP-0032

Mnemonic

* ENT : initial entropy length
* CS : the checksum length
* MS : the length of the generated mnemonic sentence in words.

CS = ENT / 32
MS = (ENT + CS) / 11

|  ENT  | CS | ENT+CS |  MS  |
+-------+----+--------+------+
|  128  |  4 |   132  |  12  |
|  160  |  5 |   165  |  15  |
|  192  |  6 |   198  |  18  |
|  224  |  7 |   231  |  21  |
|  256  |  8 |   264  |  24  |

저장 방법에 따른 분류 (핫 월렛 vs 콜드 월렛)

데이터

  • 핫 데이터
    자주 사용하는 데이터
  • 콜드 데이터
    자주 사용되지 않지만 보관이 필요한 데이터

스토리지

데이터 저장소

  • 핫 스토리지

    • 일반 : 핫 데이터를 저장하는 저장소. 빠르게 접근할 수 있어야 한다. (속도 > 용량)
    • 암호화폐 : 온라인으로 연결 되어 바로 출금이 가능한 저장소
    • 예시
      • 인터넷에 연결 된 PC
      • 데이터베이스
      • 클라우드
  • 콜드 스토리지

    • 일반 : 콜드 데이터를 저장하는 저장소. 많은 데이터를 저장할 수 있어야 한다. (속도 < 용량)
    • 암호화폐 : 오프라인 상태를 유지하여 바로 출금이 불가능한 저장소
    • 예시
      • USB 메모리
      • 종이에 적어 놓음
      • 머리 속에 기억

월렛

단순히 개인키를 저장하는 것 이 외의 더 많은 기능을 제공

  • 새로운 계정 생성
  • 서명 생성
  • 트랜잭션 생성
  • 추가 적인 보안 설정 (패턴, 지문, 안면 인식 등)

트랜잭션 전송 과정

  1. 트랜잭션 내용 작성
    A가 B한테 1 ETH를 보내겠다.
  2. 개인키로 서명
    이 트랜잭션은 A가 생성한 트랜잭션이 맞다.
  3. 서명 된 트랜잭션 내용을 블록체인 네트워크에 전송
    Parity, MyEtherWallet, MetaMask 등등

핫 월렛 vs 콜드 월렛

다양한 종류의 월렛

거래소의 월렛 운영방식

  • 핫 월렛을 사용하지만 콜드월렛에 대부분 자산을 저장해두면서 안전하게 보호함
  • 은행의 지급 준비율처럼 당장 필요로 하는 만큼만 핫 월렛에 저장해서 사용
  • 거래소 내에서 일어나는 거래들은 블록체인에 기록되지 않는다.
  • 거래소 밖에서 입금 또는 출금을 해야 되는 경우에만 블록체인에 기록된다.
  • 거래소별 콜드월렛 비율 문의 결과

멀티 시그 월렛

  • M of N : N개의 개인키 중에서 M개의 키에 의해 출금 서명이 되어야지만 출금이 이루어지는 월렛
  • 자산을 1인이 단독으로는 출금하지 못하고 2인 이상의 동의가 있어야 출금할 수 있는 형태
  • 스마트 컨트랙트 형태로 구현되어 있는 일종의 dApp

예시

  • 에스크로 : 구매자, 판매자, 중개자의 2 of 3
    • 정상적인 구매/판매가 이뤄진 경우 3명 모두 서명
    • 구매자가 정당한 사유로 환불 요청한 경우 : 구매자, 중개자 만 서명하면 환불 가능
    • 판매자가 정당한 사유로 판매를 철회 한 경우 : 판매자, 중개자 만 서명하면 철회 가능

참고자료

Clone this wiki locally