[암호학 03] 작지만 강력한 방패, 타원곡선 암호(ECC)의 수학적 원리

이전 글 보기

1. 서론: 왜 새로운 암호 기술이 필요했을까?

디지털 환경이 PC에서 스마트폰, 워치 등 소형 기기로 이동하며 암호 기술에도 ‘다이어트’가 필요해졌습니다. 비대칭키 시스템을 구현하는 두 알고리즘의 세대교체를 이해해야 합니다.

① RSA (Rivest-Shamir-Adleman)

‘아주 큰 두 소수를 곱하면 다시 나누기(소인수분해) 어렵다’는 원리를 씁니다. 문제는 컴퓨터 성능이 좋아지면서 해커들이 숫자를 나누는 속도가 빨라졌다는 것입니다. 이를 막으려면 숫자의 길이를 무지막지하게 늘려야 합니다. 현재 표준인 RSA 3,072비트는 숫자의 자릿수가 너무 많아, 한 번 계산할 때마다 스마트폰의 CPU와 배터리를 과도하게 사용합니다. 마치 도둑을 막으려고 현관문에 수 톤짜리 강철판을 덧대어 문을 열 때마다 온 힘을 다해야 하는 상황과 같습니다.

  • 참고: RSA는 이 함호체계를 개발한 세 명의 수학자(Rivest, Shamir, Adleman) 성을 딴 명칭입니다.

② ECC (Elliptic Curve Cryptography, 타원곡선 암호)

ECC는 단순히 숫자를 키우는 방식이 아니라, 곡선 위에서 점을 복잡하게 옮겨 다니는 규칙을 사용합니다. 이 규칙은 RSA의 방식보다 훨씬 강력해서, RSA가 3,072비트의 거대한 숫자를 쓸 때 ECC는 단 256비트의 짧은 숫자만으로도 똑같은 보안 수준을 유지합니다. 덩치는 12배 이상 작지만 방어력은 동일한, 첨단 신소재로 만든 가벼운 방탄조끼와 같은 셈입니다.

  • 참고: ECC는 타원곡선(Elliptic Curve)이라는 특수한 수학적 곡선의 성질을 이용한 암호학(Cryptography)이라는 뜻입니다.

2. RSA와 ECC, 어떻게 다른가?

① RSA: “아주 큰 숫자 맞추기” (소인수 분해)

RSA는 두 개의 아주 큰 숫자를 곱해서 나온 결과값을 이용합니다.

  • 수학 예시: “어떤 두 숫자를 곱해서 143이 나왔을까?” (정답: 11, 13)
  • 실제 상황: 실제 RSA에서는 이 숫자가 수천 자리에 달합니다.
  • 단점: 컴퓨터 성능이 좋아지면서, 예전보다 더 큰 숫자를 써야 해킹을 막을 수 있게 되었습니다. 숫자가 너무 커지니 계산기(CPU)가 열을 받고 전기를 많이 쓰게 된 것이죠.

② ECC: “미로 속 점프 게임” (타원곡선 연산)

ECC는 숫자를 곱하는 대신, 특이하게 생긴 곡선 위에서 공을 튀기며 이동하는 방식을 씁니다.

ECC 타원곡선 그래프 이미지. 현대 암호학에서 보안 열쇠를 생성하는 데 사용되는 수학적 토대를 보여줌.
ECC 곡선(출처: blog.cloudflare.com)
  • 수학 예시: “시작점에서 공을 특정한 규칙대로 100번 튀겼어. 자, 이제 이 공은 어디에 있을까?”
  • 특징: 공이 어디 있는지(도착점)는 금방 계산하지만, 그 위치만 보고 “공을 몇 번 튀겼게?”라고 물으면 슈퍼컴퓨터도 대답을 못 합니다.
  • 장점: 숫자를 크게 키우지 않아도 규칙 자체가 워낙 복잡해서, RSA보다 훨씬 적은 노력으로 높은 보안을 유지합니다.

4. ECC의 기하학적 규칙, 점의 덧셈과 이배

단순히 공을 튀긴다고 표현했지만, 실제 타원곡선 위에서는 매우 정교한 기하학적 규칙이 작동합니다. 우리가 개인키를 이용해 공개키를 만드는 과정은 크게 두 가지 연산으로 나뉩니다.

① 점의 덧셈 (Point Addition)

곡선 위의 두 점을 직선으로 잇고, 그 선이 곡선과 만나는 지점을 가로축 반대편으로 옮겨 새로운 지점을 찾는 과정을 나타낸 도식. 암호가 생성되는 핵심 원리인 점 이동 방식을 설명함.
출처: 유튜브 redshiftzero (Elliptic Curve Cryptography 101)

곡선 위의 두 점 P와 Q를 더한다는 것은 일반적인 산수가 아닙니다. 두 점을 직선으로 연결했을 때 곡선과 만나는 또 다른 지점을 찾고, 그 지점을 x축 기준으로 반전(대칭 이동)시킨 곳이 최종 결과값이 됩니다.

② 점의 이배 (Point Doubling)

같은 점을 두 번 더하는(P+P=2P) 과정은 더 절묘합니다. 점 에서 곡선에 접하는 접선을 그어 만나는 점을 찾고, 다시 대칭 이동을 시킵니다.

③ 왜 해킹이 불가능한가? (비가역성)

개인키(x)만큼 이 과정을 반복해서 도착한 지점인 공개키(Q)를 구하는 것은 컴퓨터에게 매우 쉽습니다. 하지만 해커가 결과값인 와 시작점 만 보고 “도대체 몇 번을 점프해서 여기까지 왔느냐”를 맞히는 것은 수학적으로 불가능에 가깝습니다.

점프를 할 때마다 좌표가 곡선 위를 무작위로 날아다니는 것처럼 보이기 때문입니다. 이를 이산 로그 문제(Discrete Logarithm Problem)라고 부르며, 이것이 현대 암호학이 자산을 지키는 핵심 방패입니다.


4. 핵심 용어 풀이

이 암호 시스템에서 쓰이는 용어들은 다음과 같습니다.

  • 개인키 (Private Key): “내가 공을 튀긴 횟수(x)”입니다. 나만 아는 비밀 숫자입니다.
  • 공개키 (Public Key): “공이 최종적으로 도착한 위치”입니다. 남들에게 보여줘도 공을 몇 번 튀겼는지 알아낼 수 없기에 안전합니다.
  • 기준점 (Generator Point, P): 모든 사람이 똑같이 시작하는 “공의 출발지”입니다.
  • 이산 로그 문제 (Discrete Logarithm Problem): 도착점(Q)과 출발점(P)을 알아도, 튀긴 횟수(x)를 알아내는 것이 불가능하다는 수학적 난제의 이름입니다.


5. 비트코인과 스마트폰에 사용되는 ECC

RSA는 덩치가 너무 커서 작은 기기에 넣기 부담스럽습니다. 반면 ECC는 가볍고 빠르기 때문에 다음과 같은 곳에서 활용됩니다.

  • 애플페이 / 삼성페이: 결제할 때 0.1초 만에 암호 인증이 끝나야 하므로 빠른 ECC가 필수입니다.
  • 암호화 메신저 (카카오톡 비밀채팅 등): 대화 내용이 즉각 암호화되어야 하므로 가벼운 ECC를 씁니다.
  • 블록체인(비트코인 등): 수많은 거래를 빠르게 검증해야 하고, 지갑 주소를 효율적으로 관리해야 하기 때문에 ECC를 표준으로 삼았습니다.

마무리

RSA가 ‘커다란 자물쇠’라면, ECC는 ‘복잡한 지문 인식’과 같습니다. 현대 암호학은 더 이상 숫자의 크기에 집착하지 않고, 연산의 복잡함을 통해 효율적으로 자산을 보호하는 방향으로 진화했습니다.

제4강에서는 비트코인이 선택한 특별한 곡선인 secp256k1의 정체와, 실제 내 지갑 주소가 어떤 과정을 거쳐 화면에 출력되는지 그 마지막 단계를 알아보도록 하겠습니다.

댓글 남기기