항목 | 상태 | 설명 |
---|---|---|
지갑 주소 (Account Address) | ✅ 공개 | 누구나 확인 가능 |
잔액 (Balance) | ✅ 공개 | 주소별로 모두 열람 가능 |
트랜잭션 내역 (History) | ✅ 공개 | 송·수신 기록이 투명하게 노출됨 |
개인키 (Private Key) | ❌ 비공개 | 사용자만 보유, 지갑 외부에 절대 노출 X |
트랜잭션 서명 (Signature) | ✅ 공개되지만 위조 불가 | 수학적으로 검증 가능하지만 원본 개인키 유추 불가 |
✍️ 서명의 역할 = 소유 증명 + 위변조 방지
- 사용자는 트랜잭션을 만들고 개인키로 서명합니다.
- 이 서명된 트랜잭션은 블록체인 네트워크에 전파됩니다.
- 노드들은 서명을 검증합니다:
- “이 주소의 주인이 실제로 보낸 게 맞는가?”
- “거래가 위변조되지 않았는가?”
👉 핵심: 공개키 기반 암호학(ECDSA, EdDSA 등)을 통해 서명은 공개되더라도 개인키는 노출되지 않고, 정당성은 누구나 검증할 수 있습니다.
🔐 왜 이 구조가 강력한가?
- 개인키 없이는 거래 생성 불가능
- 주소와 트랜잭션이 모두 공개되어도, 아무도 승인 없이 전송 불가
- 탈중앙화 구조임에도 보안이 유지됨 (→ 신뢰 없는 환경에서의 신뢰)
📌 예시: 이더리움 주소 0xabc...
- 누구나: 이 주소의 ETH, 토큰 잔액과 트랜잭션 내역 확인 가능
- 오직 개인키 보유자만: ETH 전송이나 스마트 계약 호출 가능
✅ 요약
개념 | 핵심 내용 |
---|---|
🔎 조회는 누구나 | 잔액, 거래, 주소는 완전 공개 |
✍️ 전송은 서명 필수 | 개인키 기반 서명 없이는 전송 불가 |
🔐 보안의 핵심 | 서명은 공개되어도 위조/복제가 불가능 |
📉 개인키 유출시 | 즉시 자산 탈취 가능 → 절대 보안 필요 |
🧠 1. 기본 개념 요약
요소 | 역할 |
---|---|
개인키 (private key) | 비밀 키, 본인만 알고 있음 |
공개키 (public key) | 개인키로부터 생성, 모두에게 공개 |
서명 (signature) | 개인키로 메시지를 ‘서명’ |
검증 (verification) | 공개키로 서명이 정당한지 확인 |
👉 공개키는 누구나 알고 있지만, 개인키가 없으면 서명 생성은 불가능합니다.
🔐 2. ECDSA 서명의 핵심 구조
Elliptic Curve Digital Signature Algorithm
(Ethereum, Bitcoin 등에서 사용)
🧮 Step 1: 키 생성
- 개인키
d
는 임의의 정수 (비밀) - 공개키
Q = d·G
G
: 타원곡선 위의 고정된 생성점·
: 타원곡선 상의 점 곱셈 연산
✍️ Step 2: 서명 생성 (Sign)
메시지 m
에 대해:
- 해시 계산:
z = HASH(m)
→SHA-256
등 - 무작위 정수
k
생성 (절대 재사용 금지!) - 계산:
R = k·G → (x₁, y₁)
r = x₁ mod n
(서명의 첫 번째 값)s = k⁻¹ · (z + r·d) mod n
(두 번째 값)
- 결과: 서명 (r, s)
🔐 k
, d
없이 s
를 만들 수 없음 → 위변조 불가
🔎 Step 3: 서명 검증 (Verify)
- 메시지 해시:
z = HASH(m)
- 계산:
w = s⁻¹ mod n
u₁ = z·w mod n
,u₂ = r·w mod n
P = u₁·G + u₂·Q
x₁ = Pₓ
, 확인:r ≡ x₁ mod n
결과가 일치하면 → 서명은 해당 공개키로 유효함
🔐 왜 위변조가 불가능한가?
공격 시도 | 불가능한 이유 |
---|---|
📥 공개키로 서명 생성 | 타원곡선 이산 로그 문제 (ECDLP) 때문에 불가능 |
🧪 서명 위조 | s = k⁻¹(z + rd) 구조를 역산할 수 없음 |
🔁 서명 재사용 | k 가 재사용되면 개인키 d 유출됨 (실제로 도난 사례 존재) |
🔁 수학적 비유
서명은 **”퍼즐 조각 두 개가 맞아야만 문이 열리는 자물쇠”**와 같습니다.
퍼즐을 맞추는 키는 개인키, 퍼즐 그림은 공개키.
퍼즐만 보고는 키를 복원할 수 없습니다.
🔐 블록체인에선?
- 트랜잭션 =
msg
- 사용자는 개인키로
msg
에 서명 →signature
- 체인 노드는 공개키로
msg
,signature
를 검증 → 소유자 인증
💡 개인키 노출 없이도 서명은 모든 사람에게 유효성을 증명
✅ 요약
항목 | 내용 |
---|---|
서명 원리 | 타원곡선 암호(ECDSA), 일방향 함수 기반 |
위변조 방지 | 개인키 없이 서명 위조 불가 |
공개키 검증 가능성 | 모든 사람이 서명의 정당성 검증 가능 |
수학적 보장 | 타원곡선 이산 로그 문제 (ECDLP)의 난이도에 기반 |