프라이빗 키 생성에서 엔트로피 소스가 중요한 이유

Author logo
Patrick Dike-Ndulue
Post image

비트코인 프라이빗 키가 256비트 숫자라는 사실, 알고 계셨나요? 이는 약 2^256가지 조합이 가능하다는 의미로, 이 수치는 관측 가능한 우주에 존재하는 모든 원자의 수보다도 훨씬 많아요.
Private keys are the linchpin of cryptocurrency security, serving as the cryptographic equivalent of a master password for your digital assets. Their security relies heavily on randomness or entropy, which is crucial in generating them. Entropy is measured in bits, quantifying a system's degree of randomness or uncertainty.

무작위성(랜덤성)의 중요성을 실감할 수 있는 사례가 있어요. 프라이빗 키 생성 시 엔트로피가 부족하면 심각한 취약점이나 해킹으로 이어질 수 있습니다. 실제로 2024년에는 프라이빗 키가 유출되어 2억 3,900만 달러 이상의 피해가 발생했어요. 이처럼 키가 고품질 엔트로피로 생성되는 것이 얼마나 중요한지 알 수 있습니다.

그렇다면 비트코인 프라이빗 키가 단순한 숫자라면, 슈퍼컴퓨터로 무작위 대입(브루트포스) 공격을 한다면 얼마나 걸릴까요? 이 글의 마지막에서 그 답을 알려드릴게요.

엔트로피란 무엇인가요?

엔트로피는 무작위성 또는 예측 불가능성을 나타내는 지표로, 안전한 암호화 키를 생성하는 데 꼭 필요해요. 정보 이론에서 유래한 개념으로, 시스템 내 불확실성의 정도를 수치화합니다. 쉽게 말해, 예측이 어려울수록 엔트로피가 높다고 할 수 있습니다.

암호화폐 프라이빗 키는 엔트로피가 높아야 예측이나 무작위 대입이 거의 불가능해져요. 이 무작위성은 하드웨어 이벤트, 환경 노이즈, 마우스 움직임이나 키보드 입력 등 다양한 소스에서 얻을 수 있습니다. 운영체제는 이런 예측 불가한 이벤트들을 모아 진짜 무작위 숫자를 만들어 안전한 프라이빗 키의 기반으로 사용해요.

엔트로피가 충분하지 않으면 생성된 키가 예측 가능해져 공격에 취약해질 수 있어요. 예를 들어, 엔트로피 소스에 문제가 있으면 동일하거나 유사한 값이 반복적으로 생성되어 공격자가 프라이빗 키를 예측하거나 복원할 위험이 생깁니다.

이 무작위성은 매우 중요해서, 클라우드 플랫폼이나 가상 머신처럼 복잡한 시스템에서도 암호화 작업을 위해 전용 하드웨어로 고품질 엔트로피를 안정적으로 공급합니다.

엔트로피는 어떻게 작동하나요?

하드웨어 지갑에서는 엔트로피가 안전한 프라이빗 키를 생성하는 핵심 역할을 해요. 그 과정을 살펴볼게요.

엔트로피 소스

Tangem Wallet과 같은 하드웨어 지갑에는 전용 하드웨어 난수 생성기(HRNG)가 탑재되어 있습니다. 이 장치는 전자 노이즈나 온도 변화 같은 물리적 현상을 측정해 무작위성을 만들어내요. 이렇게 얻은 원시 엔트로피는 예측 불가능한 프라이빗 키를 만드는 데 꼭 필요합니다.
일부 하드웨어 지갑은 사용자가 주사위 굴리기 등 직접 무작위 데이터를 입력해 엔트로피에 기여할 수 있도록 해요. 사용자 입력 엔트로피와 하드웨어 생성 엔트로피를 섞는 것이 실제 엔트로피 수준에 큰 영향을 주지는 않지만, 재미있는 추가 기능입니다.

키 생성

엔트로피가 충분히 모이면, 지갑은 이를 이용해 프라이빗 키를 생성합니다. 이 과정에서는 종종 SHA-256 같은 암호화 알고리즘과 엔트로피를 결합해 256비트 키를 만들어내요. 많은 하드웨어 지갑은 BIP39 표준을 사용해 엔트로피로부터 12~24개의 단어로 이루어진 니모닉 문구를 생성합니다. 이 문구는 필요할 때 프라이빗 키 복구에 사용돼요.

보안 프로세스

지갑 펌웨어는 엔트로피가 충분히 섞여 예측이 불가능하도록 관리해요. 그리고 프라이빗 키는 장치 내부의 변조 방지 환경에 안전하게 저장됩니다. 그래서 대부분의 하드웨어 지갑에는 CC 인증 보안 칩이 들어가요. Tangem의 펌웨어도 Kudelski Security와 Riscure 같은 유명 독립 보안 기관의 감사를 두 차례 받았습니다.
일반적으로 하드웨어 지갑은 엔트로피 생성과 키 저장 과정을 장치의 다른 기능과 분리해 운영해요. 이런 분리는 악성코드나 외부 위협에 노출될 위험을 최소화합니다.

백업과 복구

엔트로피로 생성된 니모닉 문구는 종이에 적어 안전하게 보관할 수 있습니다. 이 문구는 기기를 분실하거나 손상했을 때 지갑을 복구하는 데 꼭 필요해요. 문구 자체에 키를 생성한 엔트로피가 담겨 있어 안전한 백업 방식이 됩니다.

하드웨어 지갑은 고품질 엔트로피를 바탕으로 안전하고 공격에 강한 프라이빗 키를 만들어내기 때문에 암호화폐 보관에 가장 안전한 방법 중 하나로 꼽혀요.

엔트로피가 왜 중요한가요? 

엔트로피와 복구 문구는 서로 다른 형태일 뿐 동일한 정보를 담고 있으니, 엔트로피 역시 복구 문구만큼이나 비밀로 지켜야 해요. 다시 강조하지만, 누군가 엔트로피에 접근하면 전체 지갑에 접근할 수 있습니다!

복구 문구가 모든 프라이빗 키와, 그 지갑으로 보호되는 모든 계정에 접근할 수 있게 해주듯, 엔트로피도 마찬가지예요. 따라서 엔트로피가 최대한 무작위이고, 쉽게 추측할 수 없도록 관리하는 것이 보안에 매우 중요합니다.

누군가 엔트로피를 추측해 자산에 접근하는 일은 절대 원하지 않으시겠죠? 그래서 이 숫자가 예측 불가해야 하며, 같은 조합이 두 번 나올 확률이 통계적으로 불가능할 정도로 낮아야 해요.

엔트로피가 쉽게 추측 가능하다면 해커가 이를 악용해 자산에 접근할 수 있습니다. 그렇기 때문에 엔트로피 생성 방식을 신경 쓰는 암호화폐 지갑을 선택하는 것이 정말 중요해요.
 

엔트로피와 시드 문구 이해하기

시드 문구의 무작위성은 지갑 보안을 지키는 핵심이에요. 단어를 직접 고르거나 예측 가능한 패턴을 사용하면 지갑 방어력이 크게 약해집니다. Tangem이 사용하는 엔트로피 기반 방식은 다양한 암호화폐 공격에 견딜 수 있는 필수 무작위성을 보장해요.

Tangem은 안전한 엔트로피 생성을 위한 도구를 제공하지만, 시드 문구를 안전하게 지키는 일은 사용자 책임입니다. 이 정보를 누구와도, Tangem 직원에게도 절대 공유하지 마세요. 시드 문구는 디지털 자산의 열쇠이며, 그 비밀성이 지갑 보안의 핵심이에요.
 

Trust Wallet 해킹 사례: 강력한 엔트로피의 중요성

암호화폐 지갑을 고를 때는 무작위성(엔트로피) 생성 방식을 꼭 확인해야 해요. 2022년 발생한 Trust Wallet 보안 사고도 엔트로피 생성이 예측 가능했던 것이 주요 원인이었습니다.

SecBit에서는 이 취약점을 자세히 연구해 블로그에 소개했어요: Trust Wallet's Fomo3D Summer: Fresh Discovery of Low Entropy Flaw From 2018. 여기서는 주요 내용을 정리해볼게요.

Trust Wallet의 iOS 버전은 BIP39 니모닉 단어를 생성할 때 trezor-crypto 라이브러리를 사용했습니다. 이 라이브러리에는 실제 환경에서 사용하면 안 되는 샘플 코드가 포함되어 있었고, 테스트 용도임을 경고하는 문구도 있었어요.

  1. 코드는 random32()와 random_buffer()라는 두 가지 주요 부분으로 구성되어 있습니다.
  2. random32():
    - 이 부분은 난수를 생성하지만, 보안성이 떨어지는 방식이에요.
    - 난수 생성 시작에 현재 시간을 사용합니다.
    - 숫자가 언제 생성됐는지 대략 알면 추측이 가능해집니다.
    - 심지어 두 사람이 같은 초에 생성하면 동일한 "난수"가 나올 수도 있어요.
  3. random_buffer():
    - 이 부분은 데이터를 담는 공간을 무작위 바이트로 채웁니다.
    - random32()를 사용하기 때문에 동일한 보안 문제가 있습니다.
  4. 핵심 문제:
    - 이 코드는 사용자의 암호화폐 지갑에 접근할 수 있는 시드 문구 생성에 사용됐어요.
      - 무작위성이 진짜 무작위가 아니어서 해커가 이 문구를 훨씬 쉽게 추측할 수 있었습니다.
      - 수백만 가지 중에서 추측해야 하는 대신, 생성 시점만 알면 수천 가지 중에서 찾을 수 있었어요.
  5. 실수:
      - Trust Wallet은 경고를 무시하고 이 코드를 실제로 사용했습니다.
      - 그 결과, 사용자 지갑을 만드는 데 쓰인 엔트로피가 너무 쉽게 복원될 수 있었습니다.

최근 Trust Wallet의 보안 사고는 암호화폐 지갑 보호를 위해 강력한 엔트로피 생성이 얼마나 중요한지 다시 한 번 일깨워줍니다. Trust Wallet은 피해를 본 사용자에게 보상을 제공하며 문제를 해결했어요.

Tangem Wallet의 엔트로피 생성 방식

Tangem Wallet은 엔트로피 생성 단계부터 자산을 안전하게 지키는 강력한 보안 체계를 갖추고 있어요. 이 지갑은 인증된 True Random Number Generator를 사용하며, 독립 전문가의 테스트를 거쳤습니다. 덕분에 생성된 숫자는 예측이 불가능해 해킹 위험에서 자산을 보호할 수 있습니다.

비트코인 프라이빗 키, 브루트포스로 뚫으려면 얼마나 걸릴까요?

이 질문에 답하려면 과정을 단계별로 살펴보고, 그 규모를 생각해봐야 해요.

비트코인 프라이빗 키는 결국 하나의 숫자지만, 그 크기는 상상을 초월합니다. 구체적으로 256비트 숫자이며, 2^256개의 프라이빗 키가 존재해요.

오늘날 가장 강력한 슈퍼컴퓨터를 동원해도 비트코인 프라이빗 키를 무작위 대입으로 찾으려면 상상할 수 없을 만큼 오랜 시간이 걸립니다. 우주의 나이보다도 훨씬 긴 시간이에요.

 

만약 슈퍼컴퓨터가 1초에 1조(10^12)개의 키를 검사할 수 있다 해도, 하나의 프라이빗 키를 찾는 데 평균 3.67 x 10^57년이 걸려요. 참고로 우주의 나이는 약 138억 년(1.38 × 10^10년)입니다.

즉, 비트코인 프라이빗 키를 브루트포스로 찾는 데 걸리는 시간은 우주 나이의 약 1.33 × 10^47배에 달합니다.

이처럼, 우리가 지구라는 젊고 작은 행성에서 이룬 성취는 정말 놀라워요.

Author logo
작가 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
검토자: Rukkayah Jigam

Writer & editor covering digital assets and product updates.