본문으로 건너뛰기

타원 곡선 암호

강한 자물쇠를 만들수록 열쇠가 길어지는 것이 보통입니다. 열쇠를 짧게 줄이면 약해질 것 같지만, 타원 곡선 암호는 상대적으로 짧은 열쇠로도 강한 보안을 만들어 내는 수학 기술입니다. 비트코인의 열쇠 체계도 이 원리 위에 서 있습니다.

비트코인에 필요한 열쇠

은행에서는 창구 직원이나 카드사의 서버가 신분을 확인해 줍니다. 비트코인에는 그런 중앙의 확인 기관이 없습니다. 비트코인 거래를 승인할 권한이 있다는 사실은 열쇠를 통해 스스로 검증해야 합니다.

이 열쇠에는 두 가지 조건이 필요합니다.

  • 다른 사람이 흉내 낼 수 없을 만큼 강해야 합니다.
  • 네트워크에서 다루기 쉽도록 가벼워야 합니다.

열쇠가 책 한 권 분량이라면 여러 컴퓨터가 거래를 전달하고 확인할 때 네트워크가 부담을 받습니다. 강하면서도 짧은 열쇠가 필요한 이유입니다.

특별한 당구대의 비유

특별한 당구대를 상상해 보겠습니다. 공을 정해진 출발점에 놓고, 모두가 아는 규칙에 따라 쿠션에 튕깁니다. 공을 한 번, 두 번, 세 번 움직이면 매번 새로운 자리로 옮겨 갑니다.

이제 공을 몰래 아주 많이 튕긴 뒤 마지막에 멈춘 자리만 보여 준다고 해 보겠습니다. 규칙과 최종 위치를 알아도 공을 몇 번 튕겼는지 거꾸로 알아내기는 어렵습니다. 다만 ‘수십만 번’처럼 작은 범위라면 순서대로 대조할 수 있으므로, 이 비유의 횟수 자체가 암호학적 안전성을 뜻하는 것은 아닙니다.

여기서 비밀로 간직한 튕김 횟수가 개인키이고, 공이 멈춘 최종 위치가 공개키입니다. 앞으로 계산하는 것은 쉽지만, 결과만 보고 과정을 되짚는 것은 매우 어려운 한 방향 성질이 핵심입니다.

비유와 실제 수학

실제 타원 곡선 암호에서도 비슷한 구조가 나타납니다.

  • 당구대는 수학의 곡선에 해당합니다.
  • 당구공은 곡선 위에 놓인 점에 해당합니다.
  • 쿠션에 튕기는 규칙은 점을 옮기는 정해진 계산에 해당합니다.
  • 튕긴 횟수는 그 계산을 반복한 횟수이며 개인키에 해당합니다.
  • 계산을 반복한 뒤 도착한 점은 공개키에 해당합니다.

개인키는 상상하기 어려울 만큼 큰 숫자입니다. 비트코인의 개인키 후보 수는 대략 2²⁵⁶ 규모입니다. 남의 개인키를 무작위로 맞히는 일은 현실적으로 기대하기 어렵다는 뜻입니다.

개인키에 해당하는 횟수만큼 계산한다는 설명은 수학적 의미를 나타내는 비유입니다. 실제 공개키 계산은 점 덧셈을 처음부터 하나씩 반복하는 대신, 두 배 연산 등을 활용하는 효율적인 스칼라 곱 알고리즘으로 단축해 수행합니다. 그래서 개인키에서 공개키를 만드는 계산은 현실적인 시간 안에 끝낼 수 있습니다.

반대로 공개키만 보고 개인키를 알아내는 계산은 지금까지 알려진 방법으로 현실적인 시간 안에 끝나지 않는 것으로 설명됩니다.

거래 승인을 검증하는 데 쓰이는 방식

비트코인에서 돈을 사용할 때는 개인키를 공개하지 않고도 그 키에 의한 거래 승인을 검증해야 합니다. 타원 곡선의 한 방향 성질은 이러한 서명을 만드는 수학적 바탕이 됩니다.

개인키는 감춰 둔 채 서명을 만들고, 공개키를 이용해 다른 사람들이 그 서명이 유효한지 확인합니다. 따라서 개인키 자체를 네트워크에 보여 주지 않고도 해당 개인키에 의한 거래 승인을 검증할 수 있습니다. 다만 개인키를 탈취한 사람도 유효한 서명을 만들 수 있으므로, 서명 검증만으로 실제 소유자를 구별하거나 보증할 수는 없습니다. 공개키 암호화개인키도 함께 참고할 수 있습니다.

짧은 열쇠가 주는 효율

암호 방식에 따라 같은 수준의 강도를 얻는 데 필요한 열쇠 길이는 다릅니다. NIST SP 800-57 Part 1 Rev. 5(2020년)의 표 2는 RSA 3072비트와 타원 곡선 암호(ECC) 256~383비트를 같은 128비트 보안 강도 범주로 분류합니다. ECC 256비트와 RSA 3072비트를 비교하면 열쇠 길이는 12배 차이 나지만, 처리 속도나 안전성이 12배라는 뜻은 아닙니다. 이 비교는 양자 컴퓨터의 공격에 대한 내성을 뜻하지도 않습니다.

열쇠와 서명이 작으면 여러 컴퓨터가 거래를 확인하는 네트워크에서 전달하고 저장해야 하는 데이터도 줄어듭니다. 짧고 가벼운 열쇠는 처리 속도와 데이터 부담 측면에서 이점이 있습니다. 타원 곡선 암호가 강도와 효율을 함께 고려하는 방식으로 선택되는 이유입니다.

이름과 안전성에 관한 오해

타원 곡선이라는 이름 때문에 달걀처럼 생긴 도형 위에서 계산한다고 생각할 수 있습니다. 실제 곡선은 타원과 전혀 다르게 생겼습니다. 이름은 옛 수학자들이 타원의 둘레를 재는 문제를 풀다가 이 곡선을 만나면서 굳어진 것으로 설명됩니다.

또 열쇠가 짧으면 약할 것이라고 생각하기 쉽지만, 자물쇠의 강도는 열쇠 길이만으로 결정되지 않습니다. 공개된 결과에서 비밀을 거꾸로 계산하기가 얼마나 어려운지가 중요한 기준입니다.

타원 곡선 암호에서 말하는 보안은 내용을 숨기는 암호화와 같은 의미도 아닙니다. 비트코인에서는 이 수학을 열쇠를 만들고 개인키에 의한 거래 승인을 검증하는 데 사용하며, 장부와 거래 내역 자체는 공개된 상태로 남습니다.

타원 곡선 암호를 한 문장으로 정리하면, 개인키에 해당하는 비밀 정보를 이용해 공개키를 효율적으로 만들 수 있지만 공개키만으로 그 비밀을 되짚기는 매우 어렵게 하여, 개인키를 공개하지 않고도 해당 키에 의한 거래 승인을 검증하게 하는 기술입니다. 다만 개인키가 탈취되면 탈취한 사람도 유효한 승인을 만들 수 있습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유