125. ECDSA (Elliptic Curve Digital Signature Algorithm)

⚠️ 이 문서는 타원곡선 위에서의 핀볼 놀이(ECC)를 단순히 키를 숨기는 데 쓰지 않고, "이 문서는 내가 쓴 게 확실하다"는 것을 증명하는 전자서명 도장(Signature)으로 개조하여, 비트코인 블록체인과 현대 인터넷 서명을 장악한 알고리즘인 ECDSA를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: ECDSA는 원본 문서의 해시 지문(Hash)을 뽑은 뒤, 임의의 난수($k$)와 내 개인키($d$)를 버무려 타원곡선 위에서 두 번의 점 튕기기 연산을 통해 2개의 짧은 서명 조각 $(r, s)$을 툭 뱉어내는 디지털 서명 알고리즘이다.
  2. 가치: 기존 서명 제왕이었던 RSA-PSS 서명 데이터가 256바이트(무거움)를 훌쩍 넘길 때, ECDSA는 고작 **64바이트(가벼움)**의 쥐꼬리만 한 서명 꼬리표만으로도 동급의 위조 방지 능력을 뽐내어 모바일 네트워크와 블록체인 원장 용량을 극적으로 구원했다.
  3. 한계/융합: 극강의 다이어트에 성공했지만, 서명을 찍을 때마다 굴려야 하는 주사위(난수 $k$)가 단 한 번이라도 재사용되거나 품질이 구리면 개인키($d$)가 수학적으로 역산되어 털리는 치명적 급소가 있어 현대 아키텍처는 이를 RFC 6979(결정론적 난수)로 융합 방어한다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

내가 문서를 보낼 때 도장(서명)을 꾹 찍어서 "이건 진짜 내가 쓴 거야"라고 증명하고 싶다. 과거에는 RSA 서명을 썼다. 하지만 스마트폰이 나오고 IoT 기기가 등장하면서 네트워크 대역폭(Bandwidth) 1바이트가 아까운 시대가 되었다. 10바이트짜리 메시지를 보내는데, 그 뒤에 RSA 서명 꼬리표가 무려 256바이트씩 징그럽게 붙어 날아가니 통신망이 미어터졌다.

블록체인(비트코인) 시대가 도래하자 상황은 더 끔찍해졌다. 거래(Transaction) 장부를 모든 컴퓨터가 영원히 하드디스크에 저장해야 하는데, 거래 내역보다 서명 도장이 10배 더 큰 RSA를 쓰면 전 세계의 하드디스크가 1년도 안 돼서 꽉 차버린다.

해결책은 **"도장 크기를 10분의 1로 확 줄이면서도 절대 위조할 수 없는 마법의 잉크"**를 찾는 것이었고, 타원곡선 수학을 서명용으로 개조한 ECDSA가 그 완벽한 구원투수로 등판했다.

📢 섹션 요약 비유: RSA 서명이 엄청나게 큰 A4 용지만 한 '거대 옥새' 도장이라서 소포 배송비가 엄청나게 들었다면, ECDSA는 새끼손톱만 한 '나노 바코드 스티커'입니다. 스티커는 코딱지만 하지만 안에 들어있는 보안 패턴은 거대 옥새와 똑같아서 위조가 불가능합니다.


Ⅱ. ECDSA 서명과 검증의 핵심 작동 원리

ECDSA는 서명을 찍을 때(생성) 2개의 숫자 $(r, s)$ 쌍을 만들어낸다.

1. 도장 찍기 (Signing - 앨리스의 역할)

  1. 해시 뜨기: 내가 쓴 문서(10GB)를 통째로 SHA-256 믹서기에 갈아 256비트 지문 $z$ 를 만든다.
  2. 주사위 굴리기 (치명적 난수 $k$): 서명할 때마다 반드시 1회용 무작위 난수 $k$ 를 뽑는다.
  3. 첫 번째 도장 조각 ($r$): 타원곡선 위의 출발점 $G$를 방금 뽑은 난수 $k$번 튕긴다 (당구 핀볼). 딱 멈춰선 점의 X 좌표를 뚝 떼어내서 $r$ 이라고 부른다.
  4. 두 번째 도장 조각 ($s$): 원본 지문($z$)과 내 개인키($d$)와 첫 번째 조각($r$)을 $k$값으로 요리조리 수학적으로 비벼서(모듈러 역원 곱셈) $s$ 를 뽑아낸다.
    • 완성!: 원본 문서 뒤에 서명 조각 2개 $(r, s)$ 를 딱 붙여서 밥에게 보낸다. (고작 64바이트!)

2. 도장 검증하기 (Verification - 밥의 역할)

  1. 밥은 받은 문서로 자기도 해시 지문 $z$를 뜬다.
  2. 앨리스가 인터넷에 뿌려둔 **앨리스의 공개키($Q$)**를 가져온다.
  3. 수학의 기적: 밥이 $z$와 서명 $s$, 공개키 $Q$를 섞어서 타원곡선 당구대를 한 번 탕! 튕겨본다.
  4. 공이 멈춰 선 위치의 X 좌표가, 앨리스가 보내준 서명 꼬리표 $r$ 과 1비트도 안 틀리고 완벽하게 일치하면? "오! 앨리스 개인키($d$)로 찍은 진짜 도장 맞네!" 하고 100% 확신(통과)하게 된다.
┌─────────────────────────────────────────────────────────────────────┐
│           ECDSA 초소형 디지털 서명 메커니즘 (r, s의 탄생) 시각화    │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│ [ 👩 앨리스의 서명 도장 쾅! ]                                       │
│   비밀 재료: 개인키(d) + 1회용 주사위(k) + 문서 지문(z)             │
│                                                                     │
│     (1) 주사위(k)를 타원곡선에 튕김 ─────▶ 도장 1호 (r) 획득!       │
│     (2) r과 d와 z를 수식에 믹스함 ──────▶ 도장 2호 (s) 획득!        │
│                                                                     │
│   🚀 전송: [ 진짜 문서 데이터 ] + 서명(r, s 64바이트)               │
│                                                                     │
│ [ 👨 밥의 서명 감식반 ]                                             │
│   공개 재료: 앨리스 공개키(Q) + 서명(r, s) + 자기가 뜬 지문(z)      │
│                                                                     │
│   (1) Q와 s와 z를 타원곡선에 다시 튕김 ──▶ 멈춘 점 좌표 (r') 획득!  │
│   (2) 앨리스가 보낸 r == 내가 튕긴 r' 인가?                         │
│       일치하면 🟢 PASS! "앨리스가 보낸 진짜 문서 완벽 증명!"        │
└─────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] ECDSA는 RSA처럼 문서를 덮어씌우는(암호화하는) 방식이 아니다. 방정식의 밸런스(저울)를 맞추는 놀이다. 앨리스가 $d$(개인키)를 써서 수학 저울의 왼쪽을 맞춰 $(r, s)$라는 기울기를 던져주면, 밥이 $Q$(공개키)를 써서 저울의 오른쪽을 올려놓았을 때 신기하게도 양팔 저울이 수평($r = r'$)으로 딱 맞아떨어지는 마법이다. 개인키 $d$를 모르는 해커는 절대 저 양팔 저울을 수평으로 맞출 수 있는 숫자 $s$를 위조해 낼 수 없다.

  • 📢 섹션 요약 비유: 앨리스가 비밀의 물감 3개를 섞어서 세상에 하나뿐인 '보라색 스티커(r, s)'를 문서에 붙였습니다. 감식반(밥)이 특수 용액(공개키)을 스티커에 떨어뜨렸을 때, 투명하게 색이 딱 변하면 진짜 앨리스가 붙인 게 증명되는 완벽한 초소형 홀로그램 씰입니다.

Ⅲ. 치명적 아킬레스건: 난수 K 재사용의 파국 (소니 PS3 해킹 사건)

ECDSA는 수학적으로 완벽하지만, 코딩을 짜는 개발자의 실수 하나에 우주가 박살 나는 급소가 있다. 서명을 할 때 굴리는 주사위(난수 $k$)를 절대로 똑같은 숫자로 두 번 쓰면 안 된다!

  • 수학의 저주: 만약 앨리스가 [사과]를 살 때 서명하며 난수 $k=123$을 쓰고, 다음날 [포도]를 사며 서명할 때 난수 생성기 버그로 똑같이 $k=123$을 썼다고 치자.
  • 해커의 환호: 해커가 이 두 개의 서명 데이터 $(r, s_1)$ 와 $(r, s_2)$ 를 주워 온다. 두 식을 위아래로 놓고 빼버리면(연립방정식 풀기), 놀랍게도 모르는 값들이 다 지워지고 오직 앨리스의 마스터 개인키($d$)가 화면에 툭 떨어져 버린다.
  • 실제 대형 참사 (소니 플레이스테이션 3 해킹): 2010년, 소니(Sony)는 PS3 게임팩이 정품인지 확인하는 서명 기술로 최첨단 ECDSA를 썼다. 하지만 개발자가 바보같이 난수 $k$를 뽑는 함수에 **고정된 상수(상시 똑같은 숫자)**를 박아버렸다. 전 세계 해커들이 "어? $k$값이 안 변하네?" 하고 식을 역산해 소니의 마스터 개인키를 완벽하게 털어버렸다. 해커들은 이 키로 해적판 게임에 '정품 인증 도장'을 쾅쾅 찍어댔고 소니는 패닉에 빠졌다.

방어책: 결정론적 서명 (RFC 6979)

컴퓨터의 랜덤 함수를 믿을 수 없게 된 학자들은 꼼수를 없앴다. $k$를 주사위로 굴리지 않고, **"원본 문서 지문($z$)과 내 개인키($d$)를 해시 믹서기(HMAC)에 돌려서 나온 난수"**를 $k$로 쓰도록 규칙을 바꿨다 (RFC 6979). 이렇게 하면 개발자가 코드를 잘못 짜도, 문서가 달라지면 무조건 $k$값도 자동으로 완전히 다르게 뽑히기 때문에 "동일 $k$ 재사용의 저주"가 원천 봉쇄된다 (결정론적 ECDSA).


Ⅳ. 결론

"디지털 시대의 가장 작고 가벼운, 그러나 가장 치명적인 인감도장." ECDSA는 배터리가 없고 칩 용량이 바닥인 모바일과 IoT, 그리고 네트워크 트래픽 절감이 목숨과도 같은 블록체인 생태계를 나락에서 건져 올린 구세주다. 비트코인 거래소가 매초 수만 건의 비트코인 송금 서명을 처리할 수 있는 것은 전적으로 이 가벼운 당구공 덧셈 공식 덕분이다. 하지만 난수 $k$의 품질에 모든 생명 줄이 걸려있는 '유리 대포' 같은 특성 때문에, 후속 세대 학자들은 이 꼬장꼬장한 약점마저 완전히 걷어낸 궁극의 신형 도장, **EdDSA (Ed25519)**의 시대로 바통 터치를 준비하고 있다.


📌 관련 개념 맵

  • 전체 분류: 비대칭키 암호 (ECC) 기반 전자서명 알고리즘
  • 적용처: 비트코인(secp256k1 + ECDSA), TLS 1.3 인증서 서명, FIDO 생체 인증
  • 대체한 구형 기술: RSA-PSS (안전하나 너무 무겁고 뚱뚱함)
  • 치명적 안티패턴: Nonce($k$) 재사용, 불량 난수 생성기 사용 (개인키 전면 노출 발생)

👶 어린이를 위한 3줄 비유 설명

  1. 내가 쓴 숙제에 "이건 100% 내 숙제야!"라고 아주아주 작고 가벼운 홀로그램 스티커(ECDSA)를 붙였어요.
  2. 이 스티커는 RSA라는 옛날 도장보다 10배나 작아서 가볍지만, 위조를 막는 방어력은 탱크만큼 강력해서 비트코인 아저씨들도 다 이 스티커만 써요!
  3. 그런데 스티커를 만들 때 꼭 넣어야 하는 '마법의 물약(난수 K)'을 실수로 똑같은 물약 병에서 두 번 연속으로 떠서 쓰면, 도둑이 역추적해서 내 집 마스터 열쇠를 훔쳐 갈 수 있는 무서운 약점이 숨어 있답니다!