[암호학 04] 비트코인이 선택한 secp256k1

이전 글 보기

1. 서론: 암호 규격에도 ‘이유’가 있다

비트코인이 선택한 secp256k1 타원곡선
secp256k1 타원곡선 (출처: learmeabitcoin.com)

디지털 세상의 모든 자물쇠에는 각기 다른 수학적 규격이 존재합니다. 비트코인이은 그 중에서도 secp256k1라는 자물쇠를 선택했습니다. 이는 앞서 살펴본 타원곡선 암호(ECC) 기술 중 하나로, 수많은 타원곡선 규격 중에서 비트코인의 표준으로 채택된 모델입니다.

비트코인의 창시자 사토시 나카모토는 왜 수많은 수학적 모델 중 이 생소한 이름의 곡선을 선택했을까요? 오늘은 주사위를 던져 비밀번호를 만드는 순간부터, 이 특정 곡선을 거쳐 지갑 주소가 탄생하기까지의 전 과정을 팩트 중심으로 살펴보겠습니다.


2. secp256k1이란 무엇인가?

이 이름은 일종의 ‘성능 규격서’와 입니다. 이 곡선은 비트코인을 위해 태어난 것이 아니라, 2000년 캐나다의 암호학 전문 기업인 Certicom에서 발표한 표준 문서에 이미 포함되어 있던 규격입니다.

  • sec (Standards for Efficient Cryptography): ‘효율적인 암호화 표준’ 그룹에서 정한 규칙이라는 뜻입니다.
  • p (Prime): 수학적으로 매우 큰 ‘소수(1과 자신으로만 나누어지는 수)’를 사용해 보안의 벽을 높였다는 의미입니다. 소수는 곱하기는 쉽지만 다시 나누기(분해)는 매우 어렵다는 특성이 있어, 해커가 암호를 거꾸로 풀어내는 것을 막는 역할을 합니다.
  • 256: 보안의 강도를 결정하는 숫자의 길이(256비트)를 말합니다. 이 숫자가 길수록 자물쇠가 정교해집니다.
  • k (Koblitz): 이 곡선 구조를 설계한 수학자 닐 코블리츠(Neal Koblitz)의 이름을 땄습니다.
  • 1: 이 방식의 첫 번째 버전을 의미합니다.

3. 왜 사토시는 이 곡선을 선택했을까?

비트코인이 나오기 전까지 secp256k1은 암호학 논문 속에나 존재하는 조용한 규격이었습니다. 대다수 IT 기업과 정부 기관은 미국 국가보안국(NSA)이 설계에 관여한 표준 곡선(secp256r1)만을 사용했습니다. 그럼에도 사토시가 이 곡선을 택한 데에는 몇가지 이유가 있다고 합니다.

첫째, 외부 간섭으로부터의 자유
당시 암호학계에서는 정부 주도로 만든 표준 곡선에 대한 의심이 끊이지 않았습니다. 사토시 나카모토는 이러한 논란에서 자유로우며, 수학적 상수가 명확한 규칙에 의해 정해져 조작 가능성이 낮은 secp256k1을 비트코인의 규격으로 채택한 것으로 보입니다.

둘째, 압도적인 계산 효율성입니다.
이름에 ‘k’가 들어간 코블리츠 곡선은 다른 일반적인 곡선들보다 컴퓨터가 수학적 연산을 수행할 때 훨씬 더 빠르고 효율적으로 처리할 수 있는 구조를 가지고 있습니다. 특히 거래를 빠르게 검증해야 하는 환경에서는 엄청난 강점입니다. 현재는 이더리움을 비롯한 수많은 블록체인의 세계 표준으로 사용되고 있습니다.


4. 주사위 던지기부터 주소 생성까지의 3단계

우리가 사용하는 비트코인 등의 지갑 주소는 아래의 3단계를 거쳐 만들어집니다.

1단계: 주사위를 던져 만드는 비밀번호 (개인키)

비트코인 지갑 생성의 시작은 ‘무작위성’입니다. 가장 확실한 방법은 주사위나 동전을 던지는 것입니다.

  • 과정: 동전의 앞면을 0, 뒷면을 1이라고 정하고 256번을 던집니다.
  • 결과: 이렇게 나온 256개의 0과 1의 조합이 바로 개인키(Private Key)가 됩니다. 이 숫자는 우주의 원자 수만큼이나 방대해서 누군가와 우연히 겹칠 확률이 사실상 제로에 가깝습니다. 이것이자산을 여는 유일한 열쇠입니다.

2단계: 곡선 위에서 벌어지는 점프 연산 (공개키)

이제 내가 만든 256비트의 비밀번호를 secp256k1이라는 수학적 곡선에 통과시킵니다.

  • 과정: 곡선 위에는 약속된 시작점(기준점)이 있습니다. 여기서 내가 주사위로 만든 숫자(개인키)만큼 곡선을 따라 복잡하게 점프를 반복합니다. 이때 시작점은 개별 사용자가 정하는 것이 아니라, secp256k1 규격 내에 전 세계 공통으로 약속된 고정 좌표를 사용합니다. 모두가 같은 출발지에서 시작해야만 서로의 지갑 주소를 올바르게 인식하고 검증할 수 있기 때문입니다
  • 결과: 점프를 모두 마친 후 최종적으로 도착한 좌표를 공개키(Public Key)라고 부릅니다. 이 과정은 ‘순방향’으로 계산하기는 매우 빠르지만, 결과값만 보고 거꾸로 “몇 번을 점프해서 왔는지” 맞히는 것은 수학적으로 불가능에 가깝습니다. 이것이 지갑의 보안을 책임지는 핵심 기술입니다.

3단계: 가독성을 위한 데이터 압축 (지갑 주소)

마지막으로, 복잡한 좌표 형태인 공개키를 우리가 읽기 편한 주소 형태로 바꿉니다.

  • 과정: 너무 길고 복잡한 좌표 데이터를 ‘해시 함수’라는 기술을 사용하여 짧고 고유한 문장으로 압축합니다. 그다음, 숫자 0과 알파벳 O처럼 헷갈리기 쉬운 문자를 제외하고 읽기 좋게 다듬습니다.
  • 결과: 드디어 우리가 흔히 사용하는 1이나 3 혹은 bc1로 시작하는 비트코인 지갑 주소가 출력됩니다.

5. 마무리: 수학이 만든 완벽한 독립

오늘날 secp256k1은 비트코인을 지탱하는 가장 강력하고 투명한 수학적 방패라고 할 수 있습니다거듭났습니다. 주사위 한 알에서 시작된 무작위 숫자가 수학적 곡선을 거쳐 나의 지갑 주소가 되는 과정은 비트코인이 추구하는 누구에게도 통제받지 않는 독립성을 상징합니다. 암호학은 단순한 기술을 넘어, 만든 이의 철학이 담길 때 비로소 완성된다는 것을 이 곡선이 증명하고 있습니다.

제5강에서는 현대 암호를 위협하는 가장 큰 존재, 양자 컴퓨터에 대해 다룹니다. 도대체 양자 컴퓨터가 무엇이길래 우리가 공들여 만든 이 단단한 곡선들을 순식간에 풀어버린다는 것인지 공부해보도록 하겠습니다.

댓글 남기기