블록체인 기초 — 니모닉에서 작업증명까지
학습일: 2026. 10. 21.
Ⅰ. 블록체인의 정의와 구성 기술
1. 정의
- 다수의 노드가 동일한 장부 사본을 나누어 보관하고, 기록을 추가만 할 수 있으며 과거 기록은 사실상 수정할 수 없는 분산 장부임
- 비트코인은 ‘블록(Block)’ 단위로 거래를 묶고, 각 블록에 앞 블록의 해시값을 넣어 사슬(Chain)로 연결함
- 장부는 적힌 내용을 정확히 보존할 뿐, 적힌 거래의 실질적 정당성(사기 여부 등)은 판단하지 않음
- 수정 불가는 수학적 절대가 아니라 비용상 불가능을 의미함. 최신 블록 일부는 드물게 재편될 수 있고, 전체 채굴 능력의 과반을 확보하면 이론상 조작 가능함
2. 등장 배경
- 비트코인 백서(2008. 10.) 제목은 ’Bitcoin: A Peer-to-Peer Electronic Cash System’임
- 목적은 금융기관 없이 개인 간 직접 지급하는 전자 화폐였고, 블록체인은 이를 위한 수단으로 고안됨
- 백서에는 ’blockchain’이라는 단어가 쓰이지 않았으며, 이후 독립 개념으로 분리되어 명칭이 정착됨
3. 구성 기술
| 구분 | 기술 | 등장 | 원래 용도 | 비트코인에서의 역할 |
|---|---|---|---|---|
| 기존 기술 | 해시 함수 | 1953 개념, 2001 SHA-256 | 데이터 검색, 위변조 확인 | 블록 해시, 채굴, 주소 |
| 기존 기술 | 해시 사슬 타임스탬프 | 1991 | 문서 작성 시점 증명 | 블록 연결 |
| 기존 기술 | 머클 트리 | 1979 | 대량 데이터 검증 | 블록 내 거래 요약 |
| 기존 기술 | 공개키 암호·전자 서명 | 1976~1985 | 신원·문서 인증 | 소유권 증명 |
| 기존 기술 | 작업증명 | 1992 구상, 1997 해시캐시 | 스팸 메일 차단 | 채굴, 위조 비용 부과 |
| 기존 기술 | P2P 네트워크 | 1999~2001 | 파일 공유 | 노드 간 장부 복사·전파 |
| 독자 설계 | 합의 규칙 | 2008 | — | 작업량이 가장 많이 쌓인 체인을 정답으로 인정, 이중 사용 방지 |
| 독자 설계 | 채굴 보상 | 2008 | — | 정직한 참여 동기 |
| 독자 설계 | 난이도 자동 조정 | 2008 | — | 2,016블록(약 2주)마다 조정, 평균 약 10분에 1블록 유지 |
- 기존 기술은 각기 다른 목적으로 이미 존재했고, 비트코인은 이를 조합하고 합의 규칙과 보상 구조를 더해 관리자 없이 작동하는 최초의 블록체인을 구현함
Ⅱ. 니모닉·시드·키
1. 생성 순서
- 무작위 난수(엔트로피) → 니모닉 → 시드 → 마스터 개인 키 → 개인 키 → 공개 키 → 주소
- 모든 단계는 한 방향으로만 계산되며 역산할 수 없음
- 따라서 니모닉·시드·개인 키는 비공개, 공개 키·주소는 공개 가능함
2. 니모닉(BIP39)
(1) 정의
- 지갑의 원본 난수를 사람이 기록·보관하기 쉽도록 단어로 표시한 것임
- BIP39(Bitcoin Improvement Proposal 39) 표준의 단어 목록을 사용함
(2) 단어 목록
- 2,048개(= 2^11) 단어가 0번부터 2047번까지 고정된 순서로 등록됨
- 단어 1개는 11비트 번호를 나타내며, 철자 길이와 무관함
- 예: water = 1982번 = 이진수 11110111110 / 0번 abandon, 1번 ability, 2047번 zoo
- 모든 지갑이 같은 목록·같은 순서를 사용하므로 어느 지갑에서나 동일하게 복구됨
- 한국어·일본어 등 언어별 목록도 각 2,048개로 별도 존재함. 호환성 때문에 영어 목록이 일반적임
- 앞 4글자만으로 모든 단어가 구별되도록 설계됨
(3) 비트 구성
| 단어 수 | 총 비트 | 엔트로피 | 체크섬 |
|---|---|---|---|
| 12개 | 132 | 128 | 4 |
| 18개 | 198 | 192 | 6 |
| 24개 | 264 | 256 | 8 |
- 체크섬은 엔트로피를 SHA-256으로 해시한 값의 앞부분임
- 마지막 단어의 일부가 체크섬으로 결정되므로 임의의 12단어는 대부분 유효하지 않음
- 체크섬은 입력 오류 검출용이며 보안 강도를 높이지 않음
- 12단어 니모닉의 경우의 수는 2^128 ≈ 3.4 × 10^38임
(4) 유의사항
- 니모닉의 안전성은 단어가 아니라 최초 난수의 무작위성에서 나옴
- 사람이 단어를 직접 고르면 실질 엔트로피가 크게 낮아짐
3. 시드
(1) 생성 방법
- 니모닉 문장을 PBKDF2-HMAC-SHA512에 넣어 2,048회 반복 계산함
- 솔트는 “mnemonic” 문자열 + 패스프레이즈(없으면 “mnemonic”만)
- 결과 512비트(64바이트)가 시드임
(2) 512비트인 이유
- HMAC-SHA512의 출력 크기가 512비트이기 때문임
- 다음 단계(BIP32)에서 512비트를 절반으로 나누어 앞 256비트는 마스터 개인 키, 뒤 256비트는 체인 코드로 사용함
(3) 유의사항
- 시드가 512비트여도 실질 엔트로피는 최초 니모닉의 128비트 그대로임
- 2,048회 반복은 대입 공격의 비용을 높이기 위한 것임
- 패스프레이즈를 추가하면 같은 니모닉으로도 전혀 다른 지갑이 생성됨. 분실 시 본인도 복구 불가함
4. 개인 키·공개 키·주소
| 단계 | 생성 방법 | 공개 여부 |
|---|---|---|
| 마스터 개인 키 | 시드를 “Bitcoin seed”와 함께 HMAC-SHA512 처리 | 비공개 |
| 개인 키 | 마스터 키 + 체인 코드 + 번호로 파생 (BIP32, 파생 경로 예: m/84’/0’/0’/0/0) | 비공개 |
| 공개 키 | 개인 키 × 기준점 G (타원곡선 secp256k1 곱셈) | 공개 가능 |
| 주소 | 공개 키를 SHA-256 → RIPEMD-160 처리 후 인코딩 | 공개 |
- 하나의 시드에서 개인 키를 사실상 무한히 파생할 수 있음(HD 지갑)
- 확장 공개 키(xpub)로는 하위 공개 키·주소를 모두 만들 수 있으나 개인 키는 만들 수 없음. 유출 시 도난 위험은 없으나 전체 잔액·거래 내역이 노출됨
- 한 번도 송금하지 않은 주소는 공개 키가 해시 뒤에 감추어져 있음. 공개 키는 최초 송금(서명) 시 공개됨
- 초기 비트코인 지갑은 난수를 개인 키로 직접 사용했으며, 주소별 백업 불편 때문에 현재의 HD 지갑 방식이 표준이 됨
Ⅲ. 거래소와 개인 지갑
1. 거래소 계정의 실체
- 거래소 가입은 거래소 내부 장부에 회원 계정을 만드는 것이며, 사용자에게 니모닉·개인 키가 생성·제공되지 않음
- 화면의 ’지갑’과 잔액은 거래소 데이터베이스에 기록된 회원별 몫이며, 법적으로는 거래소에 대한 반환 청구권에 해당함
- 실제 코인은 거래소 지갑(핫월렛·콜드월렛)에 회원 전체 몫이 함께 보관되고, 회원별 구분은 내부 장부로만 이루어짐
- 거래소 표시 자산 = 입금 + 매수 − 매도 − 출금 − 수수료
2. 거래소 내부 거래와 블록체인 거래
| 구분 | 거래소 내부 매매 | 외부 출금 |
|---|---|---|
| 처리 장소 | 거래소 매칭 엔진·내부 장부 | 블록체인 |
| 개인 키 서명 | 없음 | 거래소가 자기 개인 키로 서명 |
| 블록체인 기록 | 없음 | 있음 (거래소 주소 → 수신 주소) |
| 처리 시간 | 즉시 | 블록 확정 대기 |
- 원화 입금 후 매수하는 단계에서는 블록체인에 아무것도 기록되지 않음. 매도자 몫이 매수자 몫으로 장부상 변경될 뿐임
- 블록체인은 거래소 밖으로 출금할 때 처음 사용됨
- 블록체인에는 주소 간 이동만 기록되며 회원 이름은 기록되지 않음
3. 출금 처리 과정 (업비트 → 바이낸스, 비트코인)
(1) 바이낸스가 자기 시드에서 파생한 입금 주소를 회원에게 배정함
(2) 업비트 출금 신청 시 트래블룰(송·수신인 정보 확인) 절차를 거침. 허용되지 않은 해외 거래소로는 출금이 제한될 수 있음
(3) 업비트 장부에서 출금 수량과 출금 수수료를 차감함
(4) 업비트 핫월렛이 보유 UTXO를 입력으로, 수신 주소와 거스름돈 주소를 출력으로 하는 거래를 작성하고 서명함
(5) 노드가 서명·이중 사용·금액을 검증하고, 채굴자가 블록에 기록함
(6) 바이낸스가 정해진 확인 수를 확인한 뒤 자기 장부에 회원 잔액을 반영함
- 출금되는 코인은 매수한 특정 코인이 아니라 핫월렛의 임의 UTXO임
- 사용자는 업비트 출금 수수료(고정액)를 부담하고, 네트워크 수수료는 업비트가 채굴자에게 지급함
4. 코인별 차이
| 구분 | 비트코인 | 리플(XRP) |
|---|---|---|
| 장부 구조 | UTXO 방식 | 계정 방식 |
| 최소 단위 | 1사토시 = 0.00000001 BTC | 0.000001 XRP |
| 거래소 입금 방식 | 회원별 다른 주소 | 공용 주소 + 데스티네이션 태그 |
| 확정 시간 | 블록당 평균 약 10분 | 수 초 |
- 리플 입금 시 데스티네이션 태그를 누락하면 입금 처리가 지연되거나 분실될 수 있음
5. 개인 지갑
- 메타마스크·하드웨어 지갑 등은 사용자 기기에서 니모닉·개인 키를 생성하고 사용자가 직접 보관함
- 블록체인상 자기 주소에 직접 기록되며, 송금 시 사용자가 서명함
- 기술적으로 거래소의 지갑과 동일한 출발점(시드·키·주소)이며, 거래소는 여기에 회원 장부·매매 시스템·원화 연결·보안 설비·법적 자격을 더한 것임
- 니모닉 분실 시 복구 불가, 회사 파산·해킹과는 무관함
| 구분 | 거래소 | 개인 지갑 |
|---|---|---|
| 니모닉·개인 키 | 거래소 보관 | 사용자 보관 |
| 잔액 기록 | 거래소 내부 장부 | 블록체인 |
| 서명 주체 | 거래소 | 사용자 |
| 분실 시 | 본인 인증으로 복구 | 니모닉 없으면 복구 불가 |
| 회사 파산·해킹 | 자산 위험 | 영향 없음 |
6. 거래소의 키 관리
- 코인별 분리, 핫월렛·콜드월렛 분리, 회원별 입금 주소 파생, 다중 서명을 사용하는 것이 일반적임
- 다중 서명(예: 키 3개 중 2개 서명 필요)은 블록체인이 제공하는 기본 기능으로, 개인·법인도 사용 가능함
- 국내 가상자산이용자보호법(2024. 7. 시행)은 고객 자산 1:1 보관, 콜드월렛 보관 비율, 원화 예치금 은행 별도 보관 등을 규정함. 해외 거래소는 이 보호를 받지 않음
7. 개인 간 거래 시 유의사항
- 원화(은행 장부)와 코인(블록체인)은 동시에 교환되지 않으므로 먼저 이전하는 쪽이 상대방 신용 위험을 부담함
- 블록체인 송금은 취소할 수 없음. 주소 한 글자 오류도 복구 불가하므로 소액 시험 전송을 권장함
- 주소 형식과 네트워크를 일치시켜야 함(예: bc1 주소는 Bitcoin 네트워크)
- 수령한 원화가 보이스피싱 피해금이면 수령 계좌가 지급정지될 수 있음
- 타인의 코인을 영업으로 보관·중개하면 특정금융정보법상 가상자산사업자 신고 대상이 될 수 있음
8. 과세 (2026. 10. 기준)
- 가상자산 양도·대여 소득 과세는 개정을 거쳐 2027. 1. 1. 시행 예정으로 유예된 상태임
- 현행 개정 규정상 기타소득으로 분리과세(세율 20%, 지방소득세 별도), 연 250만원 기본공제 구조임
- 시행 시 신고·납부기한: 소득 발생 연도의 다음 연도 5. 1. ~ 5. 31.
- 추가 개정 가능성이 있으므로 시행 여부·세부 내용은 거래 시점에 별도 확인 필요
- 거래소별로 취득·처분 내역이 분산되므로 취득가액 증빙을 별도 보관할 필요가 있음
Ⅳ. 해시 함수
1. 정의
- 임의 길이의 입력을 정해진 규칙에 따라 고정 길이 출력(해시값)으로 변환하는 함수임
- 같은 입력에는 장소·시간·기기와 무관하게 항상 같은 출력이 나옴
- 수학적 함수의 정의를 충족하는 다대일 함수이며, 역함수는 존재하지 않음
2. 연혁
(1) 검색용 해시
-
-
- 한스 피터 룬(IBM) 사내 메모: 키로 저장 위치를 계산하고 충돌 시 연결(체이닝)하는 방법 제안
-
-
- 아놀드 듀미가 ’해시 코딩’을 최초 공개 기술
-
- 피터슨, 대용량 파일 검색 논문 / 에르쇼프, 선형 탐사 독자 발견
-
- ’해싱’이라는 용어가 처음 책에 인쇄됨
- 목적: 느린 기억장치에서 순차 검색·정렬 없이 저장 위치를 바로 계산해 접근
(2) 암호용 해시
| 함수 | 설계·공개 | 출력 | 상태 |
|---|---|---|---|
| MD5 | 리베스트(1992) | 128비트 | 2004년경 취약점 발견, 보안용 폐기 |
| SHA-1 | NSA 설계·NIST 공개 | 160비트 | 2017 충돌 실증, 단계적 퇴출 |
| SHA-256·SHA-512 | NSA 설계·NIST 공개(2001) | 256·512비트 | 현재까지 실용적 공격 없음 |
| SHA-3 | 공모전(2015 표준) | 가변 | SHA-2 대체 후보 |
| RIPEMD-160 | 루뱅대(1996) | 160비트 | 비트코인 주소 생성 |
3. 검색용 해시의 충돌 처리
| 방식 | 방법 | 장점 | 단점 |
|---|---|---|---|
| 체이닝 | 같은 칸의 데이터를 연결 정보로 이어 붙임 | 칸이 차도 계속 추가 가능 | 데이터마다 연결 정보 공간 필요 |
| 선형 탐사 | 칸이 차 있으면 다음 빈칸에 저장 | 연결 정보 불필요, 구조 단순 | 일정 비율 빈칸 필요, 붐비면 급격히 느려짐 |
- 1950년대 IBM 701 구현에는 선형 탐사가 먼저 사용됨
4. 성질
(1) 결정성: 같은 바이트 입력 → 같은 출력
(2) 고정 길이: 입력 크기와 무관하게 SHA-256은 256비트(16진수 64자리)
(3) 역산 불가: 출력으로 입력을 알아낼 수 없음
(4) 눈사태 효과: 입력 1바이트 차이로 출력의 약 절반이 바뀜
(5) 충돌 저항: 같은 출력을 내는 서로 다른 입력은 수학적으로 반드시 존재하나, 계산상 찾을 수 없음
5. 내부 구조 (SHA-256)
- 입력을 64바이트 단위로 나누고, 마지막 조각에 원문 길이를 덧붙임(패딩)
- 256비트 내부 상태를 조각마다 갱신하며 다음 조각으로 넘김(머클-담고르 구조). SHA-3은 스펀지 구조를 사용함
- 조각마다 64라운드 동안 회전·XOR·AND·모듈러 덧셈을 반복함(혼돈과 확산)
- 초기값은 처음 8개 소수 제곱근의 소수부, 라운드 상수는 처음 64개 소수 세제곱근의 소수부에서 취함. 설계자의 은닉 상수가 없음을 보이기 위한 것임
- 처리 시간은 입력 크기에 비례함. 실측: 약 6MB 0.016초, 약 60MB 0.162초
6. 입력은 바이트
- 해시 함수는 문자의 의미·언어를 구별하지 않고 바이트만 처리함
- 문자는 UTF-8 등 인코딩으로 바이트로 바꾼 뒤 해시함. 한글 1자 = 3바이트, 이집트 상형문자 1자 = 4바이트(UTF-8)
- 같은 문자라도 인코딩·공백·줄바꿈·해시 함수가 다르면 결과가 다름
- 이미지·동영상도 파일 바이트를 해시하며, 바이트 그대로의 복사본은 같은 해시값을 가짐. 재저장·압축·캡처본은 다른 해시값을 가짐
- 해시값은 기록물(바이트)에 대해서만 존재하며, 기록되지 않은 행위에는 해시값이 없음
7. 실측 예 (SHA-256, UTF-8)
| 입력 | 해시값 |
|---|---|
| 안녕 | e8f817f346d1d411cc59d5bdda64fab3763890e1f0f8f4c15805cf78874d68bf |
| 안녕. | 52009c1cc96a80ff00ea6a073170bda86dc42a23f06e6927641cc9188bad7803 |
| 안녕하세요 | 2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4 |
| 𓂀 (U+13080) | 840ce7db9eb471fc8dca7cb202a9591e882e04c2f3533188cb0017c2d599cdbe |
- ’안녕’과 ’안녕.’의 해시값은 256비트 중 132비트가 다름
8. 규모
- SHA-256 출력 공간: 2^256 ≈ 1.16 × 10^77
- 우연한 충돌이 50% 확률로 나타나는 개수: 약 2^128 ≈ 3.4 × 10^38
- 관측 가능한 우주의 원자 수(추정 약 10^80)는 SHA-256 출력 공간보다 큼. 출력이 공간을 벗어나지는 않으며 충돌이 늘어날 뿐임
- 인류가 다루는 데이터 규모에서는 충돌 가능성을 무시할 수 있음
9. 종류와 용도
| 분류 | 예 | 특징 |
|---|---|---|
| 암호용 | SHA-256, SHA-3, Keccak-256, BLAKE2/3, LSH | 충돌·역산 저항 |
| 비밀번호용 | PBKDF2, bcrypt, scrypt, Argon2 | 대입 공격 방지를 위해 의도적으로 느리게 설계 |
| 비암호용 | CRC32, MurmurHash, xxHash | 오류 검출·검색용, 빠르나 보안 기능 없음 |
- 해시 함수는 누구나 만들 수 있으나 안전성은 장기간 공개 검증을 통해서만 확보됨. 보안 용도에는 검증된 표준만 사용함
10. 양자컴퓨터와 해시
- 그로버 알고리즘으로 원문 탐색 계산량이 2^256에서 약 2^128로 줄어드나 여전히 실행 불가능한 규모임
- 위협이 큰 쪽은 전자 서명(쇼어 알고리즘)이며, 해시 기반 서명(SLH-DSA, 2024 미국 표준)이 양자 내성 대안으로 채택됨
- 해시는 결정론적 계산으로, 측정 전 상태가 확정되지 않는 양자역학과 성격이 다름
Ⅴ. 해시 사슬 타임스탬프와 머클 트리
1. 해시 사슬 타임스탬프
(1) 개요
-
- 하버·스토르네타(벨코어)가 고안함. 디지털 문서의 작성 시점을 조작 불가능하게 증명하는 방법임
- 비트코인 백서 참고문헌 8개 중 3개가 이들 관련 논문임
(2) 절차
- 문서를 해시해 해시값만 타임스탬프 기관에 제출함(내용 비공개)
- 새 해시값을 직전 사슬 결과와 이어 붙여 다시 해시함: 결과(n) = 해시(문서 해시(n) + 결과(n−1))
- 사슬 끝값을 정기적으로 신문 광고란에 게재함(Surety, 1994~ 뉴욕타임스)
(3) 효과
- 과거 문서 하나를 바꾸면 이후 모든 결과값이 달라짐
- 순서가 고정되어 나중 문서를 앞에 끼워 넣을 수 없음
- 끝값 하나를 고정하면 이전 기록 전체가 고정됨
- 신문 게재는 타임스탬프 기관 자신의 사슬 재계산 조작을 막기 위한 장치임
(4) 실측 예
| 순서 | 문서 해시 | 사슬 결과(원래) | 사슬 결과(1번 문서 변경 후) |
|---|---|---|---|
| 1 | 0ed273c0… → 2b959a87… | 0ed273c0… | 2b959a87… |
| 2 | e6a51608… | 0c7c4a09… | 1e0ed581… |
| 3 | effb6616… | d4fb89dc… | 6bcd74b3… |
- 2·3번 문서는 변경하지 않았으나 사슬 결과가 모두 바뀜
(5) 타임스탬프 기관과 공증
| 구분 | 공증 | 타임스탬프 기관(TSA) |
|---|---|---|
| 증명 대상 | 문서 내용과 당사자 의사 | 데이터가 특정 시점에 존재했다는 사실 |
| 내용 확인 | 확인함 | 확인하지 않음(해시값만 받음) |
| 표준 | 공증인법 등 | RFC 3161 등 |
2. 머클 트리
(1) 개요
-
- 랄프 머클이 고안함
- 여러 데이터를 각각 해시한 뒤 둘씩 묶어 다시 해시하는 과정을 반복해 최종 해시값(머클 루트) 하나로 요약함
(2) 효과
- 어느 데이터가 바뀌어도 머클 루트가 바뀜
- 바뀐 위치를 경로를 따라 추적할 수 있음
- 특정 데이터의 포함 여부를 전체 없이 경로상 해시값 몇 개로 증명할 수 있음(약 4,000건 중 1건 증명에 약 12개)
- 경량 지갑이 전체 블록체인 없이 거래 포함 여부를 확인하는 근거가 됨
3. 해시 함수·해시 사슬·머클 트리 비교
| 구분 | 해시 함수 | 해시 사슬 | 머클 트리 |
|---|---|---|---|
| 성격 | 계산 규칙 | 해시를 일렬로 엮는 구조 | 해시를 계층으로 엮는 구조 |
| 엮는 대상 | — | 새 해시 + 앞 결과 | 같은 층의 이웃 해시끼리 |
| 목적 | 데이터 지문 | 시간 순서 고정 | 다수 데이터 요약·부분 증명 |
| 비트코인 적용 | 전반 | 블록과 블록 사이 | 블록 내부 거래 |
4. 블록 구조
(1) 헤더(80바이트)
| 항목 | 크기 | 내용 |
|---|---|---|
| 버전 | 4바이트 | 규칙 버전 |
| 이전 블록 해시 | 32바이트 | 앞 블록과의 연결(해시 사슬) |
| 머클 루트 | 32바이트 | 블록 내 거래 요약 |
| 시각 | 4바이트 | 생성 시각 |
| 난이도 | 4바이트 | 목표값 |
| 논스 | 4바이트 | 채굴로 찾는 값(0 ~ 약 43억) |
(2) 본문: 거래 목록
- 머클 루트 덕분에 80바이트 헤더만 해시해도 블록 전체가 보호됨
Ⅵ. 전자 서명(공개키 암호)
1. 탄생 배경
- 대칭 암호(같은 열쇠로 잠그고 여는 방식)는 열쇠 전달, 열쇠 수 증가(n명이면 n(n−1)/2개), 작성자 증명 불가 문제가 있었음
-
- 디피·헬먼 「암호학의 새로운 방향」: 잠그는 열쇠와 여는 열쇠를 분리하는 공개키 개념과 전자 서명 개념 제시
-
- RSA(리베스트·샤미르·애들먼) 실용화: 큰 소수의 곱은 쉽고 소인수분해는 어려운 성질 이용
- 영국 GCHQ가 1970~1974년 동일 개념을 먼저 고안했으나 기밀로 유지되다 1997년 공개됨
-
- 코블리츠·밀러가 타원곡선 암호를 각자 제안. 짧은 키로 동등 보안 확보(RSA 3072비트 ≈ 타원곡선 256비트)
- 비트코인은 타원곡선 secp256k1과 ECDSA를 채택함
2. 서명과 검증
(1) 서명: 거래 내용 해시 → 개인 키로 서명값 생성 → 내용 + 서명값 + 공개 키 전송
(2) 검증: 받은 내용 해시 → 공개 키·서명값·해시로 검증 → 참/거짓
(3) 보장 사항: 본인 확인, 무결성, 부인 방지
(4) 시연(secp256k1): 원래 거래 + 올바른 서명 통과 / 금액 변경 시 실패 / 다른 개인 키로 서명 시 실패
3. 암호화와 서명의 구분
| 구분 | 잠그는 열쇠 | 여는 열쇠 | 목적 | 비트코인 사용 |
|---|---|---|---|---|
| 암호화 | 수신자 공개 키 | 수신자 개인 키 | 내용 비밀 유지 | 사용하지 않음 |
| 전자 서명 | 송신자 개인 키 | 송신자 공개 키 | 작성자·무결성 증명 | 사용함 |
- 비트코인 거래 내용은 공개되며, 공개키 암호는 소유권 증명(서명)에만 쓰임
4. 공동인증서 로그인과의 비교
(1) 인증서 폴더 구성: 인증서 파일(signCert.der — 공개 키 + 인증기관 서명), 개인 키 파일(signPri.key — 비밀번호로 잠김), 일부 인증서는 암호화용 kmCert.der·kmPri.key 포함
(2) 로그인 절차
- 사이트 접속 시 브라우저가 서버 인증서를 검증함
- 인증서 선택 화면은 인증서 파일(공개 정보)을 표시하는 것임
- 비밀번호 입력 시 PC 안에서 개인 키 잠금이 해제되고, 서버가 보낸 값에 서명함. 비밀번호는 서버로 전송되지 않음
- 서버는 인증서의 진위(인증기관 서명), 유효기간·폐지 여부, 서명을 검증함
(3) 복사
- 인증서 폴더를 복사하면 다른 PC에서도 로그인됨. 증명 기준이 기기가 아니라 개인 키 보유이기 때문임
- 개인 키와 인증서 파일이 모두 있어야 함. 인증기관 서명은 다시 만들 수 없음
- 인증서 파일만으로는 로그인 불가함
- 이메일 전송도 복사의 한 방식이며, 메일함·서버에 사본이 남아 유출 위험이 큼. 파일과 비밀번호는 다른 경로로 전달하고 수신 후 삭제함
- 보안토큰·금융인증서·휴대폰 인증서는 개인 키가 장치 밖으로 나오지 않아 복사되지 않음
| 구분 | 공동인증서 | 비트코인 |
|---|---|---|
| 서명 방식 | RSA(주로 2048비트) | 타원곡선 secp256k1 |
| 공개 키 소유자 보증 | 인증기관 | 없음(서명이 맞으면 주인으로 인정) |
| 복구에 필요한 것 | 개인 키 + 인증서 | 니모닉(또는 개인 키)만 |
| 분실 시 | 재발급 | 복구 불가 |
- 국내 연혁: 1999. 전자서명법 제정(공인인증서) → 2020. 개정으로 공동인증서로 명칭 변경, 민간 인증서 확산
Ⅶ. 작업증명
1. 정의
- 블록 헤더의 해시값이 목표값 이하가 되도록 하는 논스를 찾는 과정임
- 정답 찾기는 반복 계산으로만 가능하고, 정답 확인은 해시 1회로 끝나는 비대칭 구조임
- 지분증명(코인을 담보로 블록 생성권을 얻는 방식, 이더리움 2022 전환)과 구별됨
2. 탄생 배경
-
- 드워크·나오르: 메일 발송 시 계산을 요구해 스팸 발송 비용을 높이는 방법 제안
-
-
- 아담 백, 사이퍼펑크 메일링 리스트에 해시캐시 발표
-
-
- 야콥슨·쥘스가 ’작업증명’으로 명명
- 이메일 적용 실패 원인: 봇넷을 통한 비용 전가, 기기 간 성능 격차, 계산에 대한 보상 없음, 표준화 실패
- 1998~2004. b-money(웨이 다이), bit gold(닉 재보), RPOW(할 피니) 등 작업증명 기반 화폐 구상
-
- 비트코인이 작업증명에 채굴 보상·합의 규칙·P2P를 결합해 구현함
- 사이퍼펑크: 1992년 미국에서 결성된, 암호 기술로 개인의 사생활과 자유를 지키려는 소규모 개발자·학자 집단. 메일링 리스트 구독자는 수백~2천 명 내외로 추정됨
3. 해시캐시 구조
(1) 형식: 버전:난이도:날짜:수신자::숫자
(2) 수신자와 날짜는 고정이므로 결과를 바꿀 수 있는 것은 숫자 칸뿐임. 숫자 칸 없이는 해시값이 하나로 고정되어 조건을 맞출 수 없음
(3) 수신자·날짜가 포함되어 있어 한 번 만든 값을 다른 메일에 재사용할 수 없음
(4) 실측(SHA-1, 수신자 client@example.com, 날짜 261021)
| 조건 | 찾은 숫자 | 시도 횟수 | 소요 시간 |
|---|---|---|---|
| 0이 4개로 시작 | 144,242 | 144,243 | 약 0.18초 |
| 0이 5개로 시작 | 1,071,818 | 1,071,819 | 약 1.3초 |
- 결과값:
1:20:261021:client@example.com::1071818→ 00000ae2438d5a1d254c318bf4cc2d94ffff9701 - 같은 숫자로 수신자만 바꾸면 395b59fc…, 날짜만 바꾸면 7439fd8b…로 조건 불충족
(5) 확률: 16진수 0 하나가 늘 때마다 1/16. 0이 5개면 1회 통과 확률 1/1,048,576
(6) 숫자 칸 길이는 설계에 따라 다름. 해시캐시는 자유 길이, 비트코인 논스는 4바이트 고정
4. 비트코인 채굴
(1) 조건: SHA-256(SHA-256(헤더 80바이트)) ≤ 목표값
(2) 논스(0 ~ 약 43억)를 모두 시도해도 실패하면 시각 또는 보상 거래의 메모 칸(엑스트라 논스)을 바꿔 다시 시도함
(3) 1회 시도의 통과 확률은 극히 낮으나 전 세계 장비의 시도 횟수로 평균 약 10분에 1블록이 생성됨
(4) 몇 번째 시도에서 찾았는지와 무관하게 조건을 만족하면 정답으로 인정됨. 계산력이 클수록 당첨 빈도가 높을 뿐임
5. 위조 방지 효과
- 과거 블록의 거래를 바꾸면 머클 루트 → 블록 해시가 바뀌어 해당 블록과 이후 모든 블록을 다시 채굴해야 함
- 그 사이 정직한 채굴자들이 계속 블록을 추가하므로, 따라잡으려면 전체 채굴 능력의 과반이 필요함
- 해시 사슬만으로는 재계산이 쉬워 신문 같은 외부 고정 장치가 필요했으나, 작업증명은 재계산 비용 자체를 높여 외부 기관 없이 고정함
- 투표권을 노드 수가 아닌 계산력에 부여해 가짜 노드 생성 공격을 무력화함
6. 제네시스 블록
- 생성: 2009. 1. 3. 18:15:05 (UTC)
- 이전 블록 해시: 전부 0
- 난이도 bits 1d00ffff → 목표값 00000000ffff0000…(16진수 0이 8개로 시작하면 통과, 약 43억 분의 1)
- 논스: 2,083,236,893 (16진수 7C2BAC1D). 값 자체에 의미는 없음
- 블록 해시: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
- 헤더 원본(16진수, 리틀 엔디언)
01000000
0000000000000000000000000000000000000000000000000000000000000000
3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a
29ab5f49
ffff001d
1dac2b7c
- 보상 거래: 50 BTC. 구조상 사용 불가
- 메모 칸: 당일 영국 더타임스 1면 헤드라인(은행 2차 구제금융 임박)
- 1번 블록은 2009. 1. 9. 생성(약 6일 공백). 2009. 1. 12. 할 피니가 최초의 비트코인 송금을 받음
7. 한계
- 막대한 전력 소비
- 블록 크기 제한으로 처리량이 적고, 혼잡 시 수수료가 오름
- 대안으로 지분증명, 메모리 의존형 작업증명(scrypt 등)이 사용됨
Ⅷ. 분산 네트워크와 저장
1. 노드의 확산
- 사토시가 제네시스 블록을 만들고 프로그램을 오픈소스로 공개함
- 새 노드는 기존 노드에 접속해 첫 블록부터 최신 블록까지 복사하며 모든 블록을 직접 재검증함
- 이후 새 거래·블록은 연결된 노드끼리 전파함. 중앙 서버가 없어 일부 노드가 꺼져도 장부가 유지됨
- 노드 운영 동기: 채굴 보상(채굴자), 입출금 검증(거래소), 자체 검증(개인·기업)
2. 저장 용량 (2026. 10. 기준, 추정)
- 비트코인 전체 블록체인: 수백 GB 규모(1TB 이하)
- 블록 크기 제한과 약 10분 간격 생성으로 증가 속도가 제한됨
| 방식 | 저장 | 특징 |
|---|---|---|
| 풀 노드 | 전체 | 모든 블록 보관·검증 |
| 프루닝 노드 | 수 GB | 검증 후 오래된 블록 삭제 |
| 경량 지갑 | 거의 없음 | 다른 노드에 질의해 잔액·거래 확인 |
핵심 정리
- 블록체인은 다수의 노드가 동일한 사본을 보관하며 추가만 가능하고 과거 수정이 비용상 불가능한 분산 장부이다.
- 니모닉은 128비트 난수와 4비트 체크섬을 11비트씩 나누어 BIP39 단어로 표시한 것이며, 보안 강도는 최초 난수가 결정한다.
- 니모닉 → 시드 → 개인 키 → 공개 키 → 주소는 한 방향으로만 계산되며, 앞의 세 가지는 비공개, 뒤의 두 가지는 공개 가능하다.
- 거래소 잔액은 거래소 내부 장부상의 청구권이며, 블록체인은 거래소 밖으로 출금할 때 처음 사용된다.
- 해시 함수는 같은 바이트에 항상 같은 고정 길이 값을 내고, 1바이트 차이에도 결과의 약 절반이 바뀌며, 역산할 수 없다.
- 블록끼리는 해시 사슬로 순서를 고정하고, 블록 안 거래는 머클 트리로 요약한다.
- 비트코인에서 공개키 암호는 암호화가 아니라 전자 서명을 통한 소유권 증명에 쓰인다.
- 작업증명은 만들기 어렵고 확인은 쉬운 계산을 블록마다 요구해 과거 위조 비용을 전체 채굴 능력 수준으로 높인다.
자주 틀리는 내용
| 틀린 이해 | 바른 이해 |
|---|---|
| 12단어 니모닉의 엔트로피는 132비트임 | 132비트 중 128비트가 엔트로피, 4비트는 체크섬임 |
| water는 5글자이므로 40비트임 | BIP39 단어 1개는 철자와 무관하게 11비트임 |
| 단어 번호가 지갑마다 달라질 수 있음 | BIP39 영어 목록의 순서는 고정됨(water는 항상 1982번) |
| 단어 목록이 공개되어 있으므로 위험함 | 비밀은 목록이 아니라 선택된 단어와 순서이며, 경우의 수는 2^128임 |
| 시드가 512비트이므로 더 안전함 | 시드의 실질 엔트로피는 최초 니모닉의 128비트 그대로임 |
| 니모닉·시드는 보안을 강화하는 수단임 | 보안은 최초 난수가 담당하며, 니모닉은 백업·복구 편의를, 시드는 키 일괄 관리를 위한 것임 |
| 거래소 가입 시 내 지갑(개인 키)이 생성됨 | 거래소 장부에 계정이 생길 뿐이며 개인 키는 거래소가 보관함 |
| 거래소에서 매수하면 블록체인에 기록됨 | 거래소 내부 장부만 변경되며, 블록체인은 출금 시 사용됨 |
| 비트코인 거래는 공개 키로 암호화해 전송함 | 비트코인은 암호화하지 않고 서명만 함. 거래 내용은 공개됨 |
| 다중 서명은 거래소 고유의 보안 방식임 | 블록체인이 제공하는 기본 기능으로 누구나 사용 가능함 |
| 주소·거래 ID 등 해시값을 복사하면 코인을 쓸 수 있음 | 해시값은 공개 정보이며, 송금에는 개인 키 서명이 필요함 |
| 복사본의 해시값이 같은 것은 보안상 결함임 | 결정성은 검증·합의의 전제 조건이며, 복제 방지는 해시의 역할이 아님 |
| 공동인증서 선택 화면에서 고르는 것은 개인 키임 | 선택 화면은 인증서(공개 키 쪽)이며, 개인 키는 비밀번호 입력 후 서명에 사용됨 |
| 인증서 파일(공개 키)만 복사해도 로그인됨 | 개인 키 파일과 인증서 파일이 모두 있어야 함 |
| 해시값 계산을 날짜 등 앞부분에서 멈출 수 있음 | 해시는 입력 전체를 한 번에 계산하므로 숫자 칸을 포함한 전체가 조건을 만족해야 함 |
| 숫자 칸(논스)은 6자리로 정해져 있음 | 길이는 설계에 따라 다름. 비트코인 논스는 4바이트 고정임 |
| 숫자 칸을 바꿔 조건을 맞추는 과정은 지분증명임 | 작업증명임. 지분증명은 코인을 담보로 맡기는 방식임 |
| 해시 사슬과 머클 트리는 같은 구조임 | 해시 사슬은 앞 결과와 엮는 일렬 구조, 머클 트리는 이웃끼리 엮는 계층 구조임 |
| 블록체인은 해시 기술만으로 완성됨 | 해시·전자 서명·작업증명·P2P에 합의 규칙과 보상 구조가 결합되어야 작동함 |
| 블록체인이 비트코인보다 먼저 나옴 | 구성 기술은 이전부터 있었으나, 블록체인 시스템은 비트코인과 함께 처음 등장함 |
| 해시는 양자역학처럼 계산 전에는 값이 정해지지 않음 | 해시값은 입력이 정해지는 순간 결정되며, 계산 전에는 알 수 없을 뿐임 |
G.S.KIM