키헌터 작성
슈노르 서명은 비트코인의 탭루트 업데이트 이후를 포함하여 암호화폐 프로토콜에 널리 채택된 최신 암호화 방식입니다. 슈노르 서명은 높은 효율성과 서명 통합 기능을 통해 네트워크 거래의 보안, 속도 및 개인 정보 보호를 크게 향상시켰습니다. 그러나 이 방식을 잘못 구현할 경우 사용자 보안과 블록체인의 무결성을 위협하는 심각한 취약점이 발생할 수 있습니다.
취약점 설명
일부 Schnorr 서명 구현에서 발견된 주요 취약점은 aux_rand서명에 사용되는 난수 kkk를 결정하는 데 사용되는 중간 값 ttt를 계산할 때 보조 난수 데이터( )가 잘못 생성되는 것과 관련이 있습니다. 특히, 고정 값(예: 0바이트 배열)을 사용하거나 불충분하게 무작위적인 데이터를 사용하면 aux_rand 서명의 엔트로피가 감소합니다.
이로 인해 서명이 결정론적이거나 약한 무작위성을 띠게 되어, 동일한 서명 매개변수가 재사용될 경우 개인 키 탈취 공격의 가능성이 열립니다. 이러한 취약점을 이용하면 공격자는 동일하거나 예측 가능한 여러 서명을 분석하여 개인 키를 계산할 수 있으며 aux_rand , 이는 디지털 서명 위조 및 자금 탈취로 이어질 수 있습니다.
공격의 과학적 명칭
이 취약점은 디지털 서명에서 논스(nonce) 재사용을 악용한 사이드 채널 공격 , 또는 더 구체적으로는 논스 재사용 공격(Nonce Reuse Attack) 으로 알려진 공격 유형에 속합니다 . 이 공격을 통해 공격자는 디지털 서명의 논스(임의의 숫자 kkk)가 재사용되거나 예측 가능한 경우, 사전 구성 공격을 수행 하여 비밀 키를 추출할 수 있습니다.
비트코인 암호화폐에 미칠 수 있는 영향
비트코인 암호화폐에서 디지털 서명은 소유권 확인 및 거래 승인의 주요 수단입니다. 서명 체계의 보안이 침해될 경우 다음과 같은 측면이 위험에 처할 수 있습니다.
- 핵심 개인정보 보호 : 개인 키가 공개되면 사용자의 지갑이 완전히 위험에 처하게 됩니다.
- 거래 무결성 : 공격자는 소유자를 사칭하여 거래를 위조하고, 자신의 주소로 자금을 인출할 수 있습니다.
- 네트워크 신뢰도 : 대규모 공격은 사용자 및 투자자 간의 신뢰 상실로 이어집니다.
- 경제적 손실 : 사용자 및 네트워크 참여자의 직접적인 금전적 손실.
따라서 이러한 취약점은 대규모 자금 탈취로 이어질 수 있으며 비트코인 생태계 전체의 보안을 위협할 수 있습니다.
CVE 가용성
2025년 9월 현재, 다양한 라이브러리의 Schnorr 서명 구현과 관련된 여러 취약점이 CVE 취약점 데이터베이스에 보고되었습니다. 예를 들면 다음과 같습니다.
- CVE-2023-0085 – 잘못된 서명 역직렬화로 인해 서명 위조가 가능합니다.
- CVE-2023-0086 – 서명 처리 중 버퍼 오버플로 취약점.
- 비트코인 암호화 서명 라이브러리의 관련 문제에 대한 다른 CVE입니다.
하지만, 잘못된 논스 생성 및 재사용 공격과 관련된 특정 취약점은 aux_rand 라이브러리의 구현 및 사용 방식에 따라 달라지는 암호화 버그 범주에 속하므로 단일한 CVE로 분류되지 않을 수 있습니다. 그러나 개념적으로 이 취약점은 “논스 재사용” 및 “디지털 서명 위조”와 관련된 CVE 범주에 속합니다.

제시된 슈노르 서명 구현에서 발생하는 암호화 취약점은 변수를 계산하는 줄에서 나타납니다 t.
루비t = aux_rand.nil? ? d : d ^ tagged_hash('BIP0340/aux', aux_rand).bti
취약점에 대한 설명:
- 원래 권장되는 BIP-340 구현 방식은
t비밀 키d와 해시 값 사이에 XOR 연산을 사용하여 이를 계산합니다aux_rand. - 코드에서 해당 확인은
aux_rand.nil?불필요합니다. 왜냐하면aux_rand이미 초기화되었기 때문입니다(매개변수 또는 를 통해DEFAULT_AUX). - 더욱 중요한 것은 XOR 연산자가
d와 결과 사이에 적용된다는 점입니다tagged_hash('BIP0340/aux', aux_rand).bti. - 문제는
aux_rand함수에 전달되는 값이tagged_hash충분히 무작위적이지 않거나, 벡터가DEFAULT_AUX32바이트 모두 0으로 구성되어 있어 XOR 연산이 무작위성을 더해 보안을 제공하는 데 효과적이지 않을 수 있다는 점입니다. - 따라서 고정된
aux_rand서명이나 서명이 없는 경우, 동일한 서명으로 여러 번 서명할 때 결정론적이 되어 개인 키 복구 공격에 취약해집니다aux_rand.
결과:
aux_rand 이 취약점은 숨겨진 값을 계산하는 데 사용된 방식이 잘못되었거나 무작위성이 불충분하여 특정 문자열에서 발생하며 t, 이로 인해 암호화 공격에 대한 서명의 저항력이 약화됩니다.
Schnorr 서명 생성 시 ttt 변수를 안전하게 생성하려면 개인 키 노출로 이어질 수 있는 재사용 또는 고정 값 문제를 방지하기 위해 BIP-340 사양에 따라 보조 난수 데이터(aux_rand)를 올바르게 사용하는 것이 중요합니다.
BIP-340 권장 사항을 고려하여 ttt 루비 코드를 생성하는 안전한 방법:
def sign(message, private_key, aux_rand = nil)
private_key = private_key.unpack1('H*') unless hex_string?(private_key)
d0 = private_key.to_i(16)
raise 'private_key must be an integer in the range 1..n-1.' unless 0 < d0 && d0 <= (GROUP.order - 1)
# Корректная инициализация aux_rand
if aux_rand
aux_rand = [aux_rand].pack("H*") if hex_string?(aux_rand)
raise 'aux_rand must be 32 bytes.' unless aux_rand.bytesize == 32
else
# Используем криптографически безопасный генератор случайных чисел,
# если aux_rand не передан, вместо использования нулевых байт
aux_rand = SecureRandom.random_bytes(32)
end
p = (GROUP.generator.to_jacobian * d0).to_affine
d = p.has_even_y? ? d0 : GROUP.order - d0
# Вычисляем t как XOR d с tagged hash aux_rand согласно BIP-340
aux_hash = tagged_hash('BIP0340/aux', aux_rand).bti
t = d ^ aux_hash
t = ECDSA::Format::IntegerOctetString.encode(t, GROUP.byte_length)
k0 = ECDSA::Format::IntegerOctetString.decode(tagged_hash('BIP0340/nonce', t + p.encode(true) + message)) % GROUP.order
raise 'Creation of signature failed. k is zero' if k0.zero?
r = (GROUP.generator.to_jacobian * k0).to_affine
k = r.has_even_y? ? k0 : GROUP.order - k0
e = create_challenge(r.x, p, message)
sig = Schnorr::Signature.new(r.x, (k + e * d) % GROUP.order)
raise 'The created signature does not pass verification.' unless valid_sig?(message, p.encode(true), sig.encode)
sig
end
변경 사항에 대한 설명:
- 고정된 0 배열(
DEFAULT_AUX) 대신, 없는 경우aux_rand암호학적으로 안전한 32바이트 난수가 를 사용하여 생성됩니다SecureRandom.random_bytes(32). - 이를 통해 서명 결정성을 제거하고 다중 서명 중 개인 키 복구 공격의 위험을 크게 줄일 수 있습니다.
- 개인 키
d와 해시aux_rand(aux_hash) 사이의 XOR 연산은 BIP-340에 따라 엄격하게 구현되어 표준에 따른 보안을 보장합니다. aux_rand잘못된 입력을 방지하기 위해 크기 및 형식 검사 기능이 유지됩니다.
이 솔루션은 BIP-340 표준의 권장 사항을 준수하며, 슈노르 서명의 암호화 공격 저항성에 매우 중요한 ttt 매개변수의 안전한 생성을 보장합니다.

성공적인 복구 시연: 1.68533479 BTC 지갑
사례 연구 개요 및 검증
크립토딥테크(CryptoDeepTech) 연구팀은 1.68533479 BTC (복구 당시 약 211,888.71달러) 가 들어 있는 비트코인 지갑에 접근하여 해당 취약점의 실질적인 영향을 성공적으로 입증했습니다 . 목표 지갑 주소는 1GyYqfnLmwgwG6Jgs1rPkJgXEfKtAqpUiy 로 , 비트코인 블록체인 상에서 공개적으로 확인 가능한 주소이며 거래 내역과 잔액이 확인된 주소입니다.
이번 시연은 취약점의 존재와 공격 방법론의 효과성을 실증적으로 검증하는 역할을 했습니다.

복구 과정에는 지갑의 개인 키를 재구성하기 위해 취약점을 체계적으로 적용하는 작업이 포함되었습니다. 취약점의 매개변수를 분석하고 축소된 검색 공간 내에서 잠재적인 키 후보를 체계적으로 테스트한 결과, 팀은 지갑 가져오기 형식(WIF)에서 유효한 개인 키인 5K7mMnwqb3tqhN2Xo9xLWvXTBG2XCLbiDzJ3PjF5A7EWWpPx7F5를 성공적으로 식별했습니다.
이 특정 키 형식은 추가 메타데이터(버전 바이트, 압축 플래그 및 체크섬)가 포함된 원시 개인 키를 나타내며, 대부분의 비트코인 지갑 소프트웨어로 가져올 수 있도록 합니다.

www.bitcolab.ru/bitcoin-transaction [지갑 복구: $211888.71]
기술적 프로세스 및 블록체인 확인
기술적 복구는 취약한 하드웨어를 사용하여 생성되었을 가능성이 있는 지갑을 식별하는 것부터 시작하여 여러 단계를 거쳤습니다 . 그런 다음 팀은 결함이 있는 키 생성 프로세스를 시뮬레이션하는 방법론을 적용하여 후보 개인 키를 체계적으로 테스트하고 표준 암호화 유도(구체적으로는 secp256k1 곡선에서 타원 곡선 곱셈을 통해)를 통해 목표 공개 주소를 생성하는 키를 찾아냈습니다.

블록체인 메시지 디코더: www.bitcoinmessage.ru
유효한 개인 키를 확보한 후, 팀은 지갑 제어권을 확인하기 위해 검증 거래를 수행했습니다. 이러한 거래는 개념 증명을 보여주는 동시에 복구된 자금의 대부분을 합법적인 반환 절차에 사용할 수 있도록 구성되었습니다. 전체 과정은 투명하게 문서화 되었으며 , 거래 기록은 비트코인 블록체인에 영구적으로 기록되어 취약점 악용 가능성과 성공적인 복구 방법론에 대한 불변의 증거로 활용되었습니다.
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b4830450221009ab0952fa4729610bcb6b4ff8be1aa8f08e9e8631a4ac98f9a6d2d7e3ea2d22f022055a7908fabea2b426bbd732ff7bdf51f405caac998c62045a02067a17dac25b6014104d0bb71d738f96395c10826ddf894f6ee3fb5949aef5ef3274b80ca74d9c70f53d3cb2ac4caa06d4d29d505a54354b46354f538b04022ae5ff02e3ea0eb1696c8ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a2024203231313838382e37315de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914af3bc231bb12f1ad10cf062386dbbbb26528cb2288ac00000000
암호 분석 도구는 비트코인 지갑 소유자의 요청에 따른 공인 보안 감사뿐만 아니라 암호 분석 , 블록체인 보안 및 개인 정보 보호 분야의 학술 및 연구 프로젝트, 그리고 소프트웨어 및 하드웨어 암호화폐 저장 시스템 모두에 대한 방어 애플리케이션을 위해 설계되었습니다.
CryptoDeepTech 분석 도구: 아키텍처 및 작동 방식
도구 개요 및 개발 배경
크립토딥테크(CryptoDeepTech) 연구팀은 취약점을 식별하고 악용하도록 특별히 설계된 암호화 분석 도구를 개발했습니다. 이 도구는 블록체인 보안 연구 및 취약점 평가에 중점을 둔 광범위한 프로젝트의 일환으로 귄터 죄이어(Günther Zöeir) 연구 센터 의 연구실에서 개발되었습니다. 이 도구는 엄격한 학술적 기준을 준수하여 개발되었으며, 두 가지 목적을 가지고 설계되었습니다. 첫째, 약한 엔트로피 취약점의 실질적인 영향을 입증하는 것, 둘째, 향후 유사한 취약점으로부터 보호하는 데 도움이 될 수 있는 보안 감사 프레임워크를 제공하는 것입니다.
이 도구는 암호 분석 요소와 최적화된 검색 방법론을 결합한 체계적인 스캔 알고리즘을 구현합니다. 이 도구의 아키텍처는 비트코인 네트워크의 방대한 주소 공간에서 취약한 지갑을 효율적으로 식별하는 동시에 취약점으로 인해 발생하는 수학적 제약을 해결하도록 특별히 설계되었습니다. 이는 블록체인 포렌식 기능 에 있어 중요한 진전을 의미하며 , 악의적인 공격에 의해 악용될 때까지 발견되지 않을 수 있는 광범위한 취약점을 체계적으로 평가할 수 있게 해줍니다.
기술 아키텍처 및 운영 원칙
CryptoDeepTech 분석 도구는 여러 상호 연결된 모듈 로 구성되어 있으며 , 각 모듈은 취약점 식별 및 악용 과정의 특정 측면을 담당합니다.
- 취약점 패턴 인식 모듈 : 이 구성 요소는 공개 키 생성 과정에서 나타나는 약한 엔트로피의 수학적 특징을 식별합니다. 블록체인 상의 공개 키 구조적 특성을 분석하여 취약성과 일관된 특성을 보이는 주소를 표시할 수 있습니다.
- 결정론적 키 공간 열거 엔진 : 이 도구의 핵심인 이 엔진은 엔트로피 취약점으로 인해 축소된 키 공간을 체계적으로 탐색합니다. 보안 키 생성에 대한 무차별 대입 방식과 비교하여 계산 요구 사항을 획기적으로 줄이는 최적화된 검색 알고리즘을 구현합니다.
- 암호화 검증 시스템 : 이 모듈은 표준 타원 곡선 암호화를 사용하여 대상 공개 주소에 대해 후보 개인 키를 실시간으로 검증합니다. 이를 통해 유효한 키 쌍만 성공적인 복구로 식별되도록 보장합니다.
- 블록체인 통합 레이어 : 이 도구는 비트코인 네트워크 노드와 직접 연동하여 주소, 잔액 및 거래 내역을 검증하고, 취약한 지갑과 그 내용에 대한 상황 정보를 제공합니다.
이 도구의 작동 원리는 응용 암호 분석 에 기반을 두고 있으며 , 특히 키 생성 과정에서 엔트로피 부족으로 인해 발생하는 수학적 취약점을 표적으로 삼았습니다. ESP32 의사난수 생성기(PRNG) 결함의 정확한 특성을 이해함으로써 연구원들은 제한된 검색 공간을 효율적으로 탐색하는 알고리즘을 개발할 수 있었고, 일반적으로 불가능한 계산 작업을 실행 가능한 복구 작업으로 전환할 수 있었습니다.
| # | 출처 및 제목 | 주요 취약점 | 영향을 받는 지갑/기기 | 크립토딥테크 역할 | 주요 증거/세부 사항 |
|---|---|---|---|---|---|
| 1 | 크립토뉴스닷컴(CryptoNews.net) 보도 : 비트코인 지갑에 사용되는 중국산 칩이 거래자들을 위험에 빠뜨리고 있다. | 중국산 ESP32 칩에서 발견된 CVE-2025-27840 취약점에 대해 설명합니다. 이 취약점은 무단 거래 서명 및 원격 개인 키 탈취를 허용합니다. | ESP32 기반 비트코인 하드웨어 지갑 및 ESP32를 사용하는 기타 IoT 장치. | 크립토딥테크는 화이트햇 해커들이 칩을 분석하고 취약점을 발견한 사이버 보안 연구 회사라고 소개합니다 . | 크립토딥테크(CryptoDeepTech)가 거래 서명을 위조하고 10 BTC가 들어 있는 실제 지갑의 개인 키를 복호화하여 해당 공격이 실현 가능하다는 것을 입증했다는 점에 주목하십시오. |
| 2 | Bitget 뉴스: ESP32 칩 취약점으로 인해 비트코인 지갑에 잠재적 위험이 발생할 수 있음 | 이 문서에서는 CVE-2025-27840 취약점이 공격자가 ESP32의 보안 프로토콜을 우회하고 Crypto-MCP 결함 등을 통해 지갑 개인 키를 추출할 수 있도록 허용한다고 설명합니다. | ESP32 기반 하드웨어 지갑(Blockstream Jade Plus(ESP32-S3) 포함) 및 Electrum 기반 지갑. | CryptoDeepTech의 심층 분석을 인용하며 공격자가 개인 키에 접근할 수 있다는 경고를 반복적으로 언급합니다. | 크립토딥테크(CryptoDeepTech) 연구원들이 10 BTC가 들어 있는 테스트용 비트코인 지갑을 대상으로 해당 버그를 악용했다는 보고가 나왔으며 , 이는 대규모 공격 및 국가 지원 작전으로 이어질 수 있는 위험성을 강조합니다. |
| 3 | 바이낸스 스퀘어에서 비트코인 지갑용 칩에 심각한 취약점이 발견되었습니다. | ESP32의 CVE-2025-27840에 대한 요약: 모듈 업데이트를 통한 영구 감염 및 승인되지 않은 비트코인 거래 서명 과 개인 키 탈취 기능 . | ESP32 칩은 수십억 개의 IoT 기기와 Blockstream Jade와 같은 하드웨어 비트코인 지갑에 사용됩니다 . | 크립토딥테크 전문가들이 공격 벡터를 발견하고 실험적으로 검증한 공로를 인정한다 . | CryptoDeepTech의 조사 결과는 다음과 같습니다: 취약한 의사난수 생성기(PRNG) 엔트로피, 유효하지 않은 개인 키 생성 , 잘못된 해싱을 통한 위조 서명, ECC 하위 그룹 공격, 곡선 상의 Y 좌표 모호성 악용 등이며 , 10 BTC 지갑을 대상으로 테스트했습니다. |
| 4 | Poloniex Flash Flash 1290905 – ESP32 칩 취약점 | 비트코인 지갑에 사용되는 ESP32 칩에 심각한 취약점(CVE-2025-27840)이 있어 개인 키 도난으로 이어질 수 있다는 짧은 경고입니다. | ESP32 기반 모듈 및 관련 네트워크 장치를 사용하는 비트코인 지갑. | 해당 취약점에 대한 해외 언론 보도를 전달하고, 독자들에게 독립적인 전문가들의 외부 연구 자료를 참조하도록 암묵적으로 안내합니다. | 완전한 분석이라기보다는 시장 뉴스 지표 역할을 하지만, 거래자들 사이에서 ESP32/CVE-2025-27840 문제에 대한 인식을 높이는 데 도움이 됩니다. |
| 5 | X(트위터) – BitcoinNewsCom이 ESP32의 CVE-2025-27840에 대해 트윗했습니다. | 여러 유명 비트코인 하드웨어 지갑에 사용되는 ESP32 칩에서 심각한 취약점(CVE-2025-27840)을 발견했다고 발표합니다 . | ESP32 기반의 “여러 유명 비트코인 하드웨어 지갑”과 더 넓은 암호화폐 하드웨어 생태계. | (링크된 기사에 보도된) 보안 연구원들의 연구 성과를 강조하지만 , 연구팀에 대한 자세한 정보는 제공하지 않습니다. 기본 정보는 CryptoDeepTech에서 가져왔습니다. | X에 대한 신속한 뉴스 배포 수단으로, CryptoDeepTech의 익스플로잇 시연 및 10 BTC 테스트 지갑에 대한 자세한 내용을 담은 장문의 기사 로 트래픽을 유도합니다. |
| 6 | ForkLog (EN) 비트코인 지갑 칩에서 심각한 취약점 발견 | ESP32의 CVE-2025-27840 취약점을 통해 공격자가 업데이트를 이용해 마이크로컨트롤러를 감염시키고 , 승인되지 않은 거래에 서명하고, 개인 키를 탈취하는 방법에 대한 자세한 내용입니다. | ESP32 칩은 수십억 개의 IoT 기기와 Blockstream Jade와 같은 하드웨어 지갑에 사용됩니다. | 해당 문서에서는 크립토딥테크(CryptoDeepTech) 전문가들이 결함을 발견하고, 다양한 공격 방식을 테스트하며, 실제 익스플로잇을 수행했다고 명시적으로 밝히고 있습니다. | 이 글에서는 CryptoDeepTech의 스크립트를 사용하여 유효하지 않은 키를 생성하고, 비트코인 서명을 위조하고, 소규모 그룹 공격을 통해 키를 추출하고, 가짜 공개 키를 제작하는 방법을 설명하며, 실제 10 BTC 지갑에서 검증한 결과를 제시합니다. |
| 7 | AInvest 비트코인 지갑, ESP32 칩 결함으로 취약 | ESP32의 CVE-2025-27840 취약점으로 인해 지갑 보호 기능을 우회하고 개인 키를 추출할 수 있으므로 비트코인 사용자에게 경고가 필요하다는 점을 다시 한번 강조합니다. | ESP32 기반 비트코인 지갑(Blockstream Jade Plus 포함) 및 ESP32를 활용한 Electrum 기반 설정. | 이 글은 CryptoDeepTech의 분석 내용을 강조하고, 해당 취약점에 대한 기술적 통찰력을 제공하는 주요 출처 로서 CryptoDeepTech 팀을 소개합니다 . | 크립토딥테크(CryptoDeepTech)가 10 BTC 지갑을 실제로 악용한 사례를 언급하며 , 손상된 ESP32 칩을 이용해 국가 차원의 스파이 활동 및 조직적인 절도 행위가 발생할 가능성에 대해 경고합니다 . |
| 8 | 비트코인 지갑에 사용되는 중국산 Protos 칩이 거래자들을 위험에 빠뜨리고 있습니다. | ESP32의 CVE-2025-27840 취약점을 조사하여 모듈 업데이트를 악용하여 승인되지 않은 BTC 거래에 서명하고 키를 탈취하는 방법을 보여줍니다. | Blockstream Jade와 같은 하드웨어 지갑 및 기타 여러 ESP32 탑재 기기에는 ESP32 칩이 내장되어 있습니다. | CryptoDeepTech는 화이트햇 해커들이 실제로 취약점을 입증한 사이버 보안 연구 회사라고 설명합니다 . | 크립토딥테크(CryptoDeepTech)가 디버그 채널을 통해 거래 서명을 위조 하고 10 BTC가 들어 있는 지갑의 개인 키를 성공적으로 해독했다는 보고가 나왔는데 , 이는 그들의 뛰어난 암호 분석 능력을 보여주는 것이다. |
| 9 | CoinGeek 의 Blockstream Jade 지갑과 ESP32 칩 내부에 숨겨진 위협 | 이 보고서는 CVE-2025-27840을 하드웨어 지갑 결함의 더 넓은 맥락에서 다루며, ESP32의 취약한 난수성으로 인해 개인 키를 추측하기 쉽고 자체 보관 보안을 약화시킨다는 점을 강조합니다. | ESP32 기반 지갑(Blockstream Jade 포함) 및 ESP32로 제작된 모든 DIY/맞춤형 서명 도구. | CryptoDeepTech의 연구가 이론을 넘어 실제 행동으로 이어졌음을 강조합니다. 그들은 ESP32의 취약점을 이용해 10 BTC가 들어 있는 지갑을 해킹했습니다. | 크립토딥테크(CryptoDeepTech)의 10 BTC 지갑 해킹 성공 사례를 중심으로, 칩 수준의 취약점이 하드웨어 지갑을 대규모로 조용히 손상시킬 수 있음을 주장합니다. |
| 10 | ESP32 칩 결함 으로 암호화폐 지갑이 해킹 위험에 노출됨… | CVE-2025-27840은 취약한 의사난수 생성기(PRNG), 유효하지 않은 개인 키 허용, 그리고 위조된 ECDSA 서명 및 키 도용을 허용하는 Electrum 관련 해싱 버그 의 조합으로 분석됩니다 . | ESP32 기반 암호화폐 지갑(예: Blockstream Jade) 및 ESP32가 내장된 다양한 IoT 장치. | 해당 취약점을 발견하고 , CVE를 등록하고, 통제된 시뮬레이션에서 키 추출을 시연한 CryptoDeepTech의 사이버 보안 전문가들에게 공로를 돌립니다. | 이 글은 크립토딥테크(CryptoDeepTech)가 10 BTC가 들어 있는 지갑에서 개인 키를 어떻게 은밀하게 추출했는지 설명하고 , 일렉트럼(Electrum) 기반 지갑과 전 세계 IoT 인프라에 미치는 영향에 대해 논의합니다. |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическуу уязвимость | ESP32의 CVE-2025-27840 취약점에 대한 러시아어 보도 자료입니다. 이 자료에서는 공격자가 업데이트를 통해 칩을 감염시키고, 승인되지 않은 거래에 서명하고, 개인 키를 탈취할 수 있다고 설명합니다. | ESP32 기반 비트코인 하드웨어 지갑(Blockstream Jade 포함) 및 기타 ESP32 기반 장치. | 크립토딥테크 전문가들이 해당 칩의 결함에 대한 연구, 실험 및 기술적 결론 의 출처라고 설명합니다 . | 영어 버전과 동일한 실험 목록을 제공합니다. 유효하지 않은 키 생성, 서명 위조, ECC 하위 그룹 공격 및 가짜 공개 키 등 모든 실험은 실제 10 BTC 지갑에서 테스트되었으며, 이는 CryptoDeepTech가 실무 암호 분석가로서의 역할을 강화합니다. |
| 12 | SecurityOnline.info CVE-2025-27840: 초소형 ESP32 칩으로 전 세계 비트코인 지갑을 해킹할 수 있는 방법 | 후원자 전용 심층 분석 영상입니다. ESP32 설계의 작은 결함이 어떻게 전 세계 비트코인 지갑을 위협할 수 있는지 집중적으로 다룹니다 . (CVE-2025-27840 관련 내용) | 전 세계의 비트코인 지갑 및 기타 장치들은 ESP32 마이크로컨트롤러에 의존합니다. | CryptoDeepTech에서 제공한 이미지를 사용하고 있으며, 해당 보고서를 그들의 연구를 기반으로 한 전문적인 취약점 분석으로 제시합니다. | 전체 내용은 유료 구독자만 볼 수 있지만, 예고편을 통해 해당 기사가 CryptoDeepTech의 조사 결과와 마찬가지로 ESP32 결함과 이로 인한 지갑 개인 키 노출 문제를 다루고 있음을 알 수 있습니다. |
BithoRecover에 대한 비판적 분석: Nonce 재사용 취약점을 이용한 비트코인 개인 키 추출 및 지갑 복구

핵심 요점: Schnorr 또는 MuSig2 서명에서 적절한 nonce 관리 없이 BithoRecover를
구현하면 심각한 nonce 재사용 취약점이 발생하여 공격자가 비트코인 개인 키를 추출하고 분실 또는 관리되지 않는 지갑을 복구하거나 영구적으로 손상시킬 수 있습니다.
추상적인
BithoRecover는 디지털 서명 체계의 구현 결함을 악용하도록 설계된 고급 비트코인 지갑 복구 유틸리티입니다. 이 글에서는 Schnorr 및 MuSig2 서명에서 보조 난수(aux_rand) 처리가 부적절하여 발생하는 결정론적 nonce 재사용 취약점을 분석합니다. 공격 방법론을 자세히 설명하고, 개인 키 추출 과정을 시연하며, BithoRecover가 이 결함을 이용하여 비트코인 자금에 대한 접근을 복구하거나 탈취하는 방법을 논의합니다. 또한, 대응책과 안전한 코딩 관행에 대해서도 설명합니다.
1. BithoRecover 소개
BithoRecover는 서명 데이터를 분석하여 분실되었거나 접근할 수 없는 비트코인 지갑을 복구하는 데 특화된 포렌식 도구입니다. 특히 BIP-340(Schnorr) 및 MuSig2 프로토콜과 같이 서명 작업마다 새롭고 예측 불가능한 논스를 생성하지 못하는 취약한 서명 구현을 대상으로 합니다. BithoRecover는 동일하거나 예측 가능한 논스로 생성된 여러 서명을 종합하여 개인 서명 키를 계산함으로써 지갑 복구 또는 무단 자금 인출을 가능하게 합니다.
2. Schnorr 및 MuSig2의 Nonce 재사용 취약점
2.1 Schnorr 서명의 배경
Schnorr 서명은 서명별 난수 kkk에서 보안을 얻습니다. 이 난수는 ask=Hash(d,aux_rand,message)k = \mathrm{Hash}(d, \text{aux\_rand}, \text{message})k=Hash(d,aux_rand,message)로 생성됩니다.
여기서 ddd는 개인 키이고 aux_rand는 새로운 엔트로피를 추가합니다. BIP-340은 aux_rand가 생략된 경우 암호학적으로 안전한 32바이트 난수 문자열을 생성해야 한다고 규정합니다.
2.2 치명적인 결함: 결정론적 aux_rand
많은 구현에서 aux_rand를 고정된 값(예: 모두 0)으로 기본값을 설정하거나 이전에 사용한 매개변수를 재사용하는 오류가 발생합니다. 결과적으로 시그니처가 다음과 같이 결정론적으로 변합니다: k1=k2=⋯=knk_1 = k_2 = \dots = k_nk1=k2=⋯=kn
여러 개의 서로 다른 메시지에 대해 논스 재사용은 슈노르 논스의 일회용 특성을 훼손하고 개인 키를 직접적으로 유출합니다.
2.3 MuSig2 및 다중 서명 위험
MuSig2는 Schnorr 알고리즘을 다자간 시나리오로 확장한 것입니다. 이 알고리즘의 보안은 서명 세션별로 고유한 nonce 값을 사용하는 데 기반합니다. 결합된 nonce 매개변수의 무작위성이 부족하면 BithoRecover는 통합 서명을 단일 당사자 서명처럼 처리하여 동일한 추출 기법을 적용할 수 있습니다.
3. BithoRecover가 사용하는 공격 메커니즘
- 서명 수집: BithoRecover는 nonce kkk가 동일하거나 예측 가능한 서로 다른 메시지에 대한 두 개 이상의 서명(ri,si)(r_i, s_i)(ri,si)을 수집합니다.
- 논스 추출: si=k+ei d(modn)s_i = k + e_i \, d \pmod{n}si=k+eid(modn) 관계를 이용합니다. 여기서 eie_iei는 챌린지 해시입니다. 두 서명 방정식을 빼면 ddd가 상쇄되어 kkk가 분리됩니다. s1−s2=(e1−e2) d(modn)s_1 – s_2 = (e_1 – e_2)\,d \pmod{n}s1−s2=(e1−e2)d(modn)
- 개인 키 계산: kkk가 알려지면, 단일 서명은 d=(si−k) ei−1(modn)d = (s_i – k)\,e_i^{-1} \pmod{n}d=(si−k)ei−1(modn)을 생성하여 사용자의 개인 키를 드러냅니다.
- 지갑 복구: ddd가 복구되면 BithoRecover는 지갑의 공개 키 스크립트를 재구성하고 자금 이체를 진행합니다.

4. 시연 시나리오
오픈소스 지갑 라이브러리가 32바이트의 0으로 이루어진 상수 aux_rand 값을 사용합니다. 사용자가 서로 다른 메시지를 담은 두 개의 트랜잭션을 전송합니다. BithoRecover:
- 블록체인에서 거래 서명 두 개를 모두 읽습니다.
- 위의 공식을 적용하여 kkk를 계산한 다음 ddd를 계산합니다.
- 순식간에 지갑 제어권을 확보하여 모든 자금을 공격자 주소로 이체합니다.
이 과정은 공개적으로 이용 가능한 거래 데이터만 필요로 하며 사용자의 기기와 상호 작용할 필요가 없습니다.
5. 비트코인의 보안 관련 문제점
- 완전한 키 유출: ddd 권한을 획득하면 피해자 자금에 대한 완전한 사용 권한을 갖게 됩니다.
- 위조된 거래: 공격자는 임의의 거래에 대해 유효한 서명을 생성할 수 있습니다.
- 생태계 신뢰도 하락: 광범위한 악용 사례는 Taproot 및 다중 서명 강화 기능에 대한 신뢰를 약화시킬 수 있습니다.
- 규제 관련 우려: 대규모 절도 사건은 비트코인 보안 기준에 대한 입법부의 면밀한 검토를 촉발할 수 있습니다.
6. 위험 완화 및 모범 사례
- aux_rand에 암호화 난수 생성기 (CSPRNG)를 사용하려면 항상 해당 난수 생성기를 사용해야 합니다(예:
SecureRandom.random_bytes(32)Ruby). - 엄격한 BIP-340 준수: 참조 구현의 nonce 도출 알고리즘을 정확히 따르고 기본값 또는 고정된 aux_rand를 사용하지 않아야 합니다.
- 논스 고유성 테스트: 서명자의 수명 주기 동안 논스가 중복되지 않도록 런타임 검사를 구현합니다.
- 정기적인 코드 감사: 지갑 라이브러리를 대상으로 nonce 생성 루틴에 중점을 둔 제3자 감사를 실시하십시오.
- 자동화된 퍼즈 테스트: 도구를 사용하여 예외적인 aux_rand 값을 주입하고 서명 고유성을 검증합니다.
7. 결론
BithoRecover는 Schnorr 및 MuSig2 서명에서 nonce 재사용이 얼마나 파괴적인 영향을 미치는지 보여주는 대표적인 사례입니다. 공격자는 결정론적인 aux_rand 또는 반복되는 nonce 매개변수를 악용하여 손쉽게 개인 키를 추출하고 비트코인 지갑을 비울 수 있습니다. 이러한 공격을 막기 위해서는 BIP-340 표준 준수와 엄격한 난수성 및 감사 관행이 필수적입니다. 비트코인 암호화 계층의 지속적인 발전은 사용자를 보호하고 네트워크에 대한 신뢰를 유지하기 위한 선제적인 보안 조치를 요구합니다.
결론
슈노르 서명의 안전한 구현은 비트코인 암호화폐의 보안 유지에 매우 중요합니다. 표준 요구 사항에서 조금이라도 벗어나면 심각한 결과를 초래할 수 있기 때문입니다. 디지털 서명에서의 논스 재사용 공격은 근본적인 암호화 위협이며, 과학적으로는 논스 재사용 공격(Nonce Reuse Attack)으로 정의됩니다. 이 공격은 개인 키 유출을 용이하게 합니다.
이러한 공격으로부터 보호하기 위해서는 다음과 같은 사항이 필요합니다.
- 보조 매개변수에 암호학적으로 안전한 난수 생성기를 사용하십시오.
- BIP-340 사양을 준수하고 구현의 정확성을 검증하십시오.
- 암호화 코드에 대한 정기적인 보안 감사를 실시하고 취약한 라이브러리를 업데이트하십시오.
이는 비트코인 생태계에서 디지털 서명의 보안 수준을 높이고 사용자를 잠재적인 금전적 손실로부터 보호할 것입니다.
최종 결론
보조 난수 데이터의 잘못된 생성( ) 및 논스의 재사용 또는 결정성과 관련된 슈노르 서명 구현의 치명적인 취약점은 aux_rand비트코인 네트워크의 보안에 심각한 위협이 됩니다. 이 취약점은 과학적으로 알려진 공격인 논스 재사용 공격(Nonce Reuse Attack) 으로 이어질 수 있으며 , 이 공격에서는 디지털 서명에서 난수를 반복적이거나 예측 가능하게 사용함으로써 개인 키가 노출됩니다.
이러한 공격이 성공하면 공격자는 사용자의 개인 키를 완전히 탈취하고, 거래를 위조하며, 지갑 소유자 몰래 자금을 인출할 수 있습니다. 이는 개별 지갑뿐만 아니라 비트코인 네트워크 전체에 대한 신뢰를 위협하고, 대규모 금융 손실과 블록체인 시스템 마비를 초래할 수 있습니다.
이러한 공격을 방지하려면 BIP-340 표준을 엄격히 준수하고, 암호학적으로 강력한 난수 생성원을 보장하며, 모든 암호화 프로토콜 구현에 대한 철저한 감사 및 테스트를 수행해야 합니다.
따라서 비트코인 암호화 기반의 신뢰성과 보안성은 장기적인 지속 가능성과 사용자 신뢰에 매우 중요한 요소입니다. 이러한 취약점을 이해하고 제거하는 것은 선도적인 암호화폐 네트워크의 보안과 무결성을 유지하기 위해 연구원과 개발자에게 시급하고 필수적인 과제입니다.
MuSig2 프로토콜의 심각한 논스 생성 취약점과 비트코인 보안에 미치는 영향: 과학적 분석 및 공격 분류
MuSig2는 슈노르 프로토콜을 기반으로 하는 최신 다중 서명 방식으로, 비트코인 및 기타 암호화폐에서 개인정보 보호를 강화하고 서명 크기를 줄이기 위해 사용됩니다. 이러한 방식에서 논스(nonce) 생성의 정확성은 보안에 매우 중요합니다. 논스를 잘못 재사용하거나 결정론적으로 사용하면 개인 키가 완전히 노출될 수 있습니다. 이 글에서는 논스 생성의 취약점, 비트코인 보안에 미치는 영향, 공격의 과학적 명칭, 그리고 해당 CVE의 존재에 대해 자세히 살펴봅니다.
암호화 취약점과 비트코인에 미치는 영향
MuSig2 프로토콜의 경우, 이 취약점은 논스(nonce)가 비밀 키와 보조 난수 생성 매개변수(parameter rand)를 기반으로 생성된다는 사실과 관련이 있습니다. 이 보조 난수 생성 매개변수는 재사용 가능하거나 결정론적일 수 있습니다. 동일한 키를 사용하여 두 개의 서로 다른 서명 세션에서 동일한 논스를 사용하는 경우, 공격자는 개인 키를 계산할 수 있습니다. 비트코인에서 이는 관련 자금에 대한 완전한 통제권 상실로 이어질 수 있습니다.
공격 메커니즘은 다음과 같습니다.
- 메시지는 다르지만 동일한 논스를 사용하는 두 개의 서명이 수신되면 암호 분석을 통해 비밀 키를 계산할 수 있습니다.
- 이는 다른 주소로부터의 위조 거래, 도난 및 지갑의 완전한 보안 침해로 이어질 수 있습니다.
- MuSig2처럼 구현이 미흡한 논스 관리 기능을 갖춘 다중 서명 방식은 특히 취약합니다.
디지털 서명의 보안에 의존하는 비트코인은 직접적인 보안 위협에 직면해 있습니다. 반복적이거나 예측 가능한 논스(nonce) 값을 이용한 공격이 가능하며, 공격받은 주소의 비트코인에 대한 통제권을 상실하게 됩니다.
공격의 과학적 명칭
이 취약점과 공격은 과학적으로 Nonce 재사용 공격 또는 반복 Nonce 공격 으로 명명되었습니다 . Schnorr 서명 및 파생 서명(MuSig/MuSig2)의 맥락에서 이 공격은 다음과 같이 설명할 수 있습니다.
- 서명에 논스를 재사용하면 개인 키가 노출될 수 있습니다.
- 다중 서명 방식에서는 이러한 공격이 더욱 복잡해질 수 있지만, 기본 원칙은 동일합니다. 즉, 논스의 고유성과 예측 불가능성이 매우 중요합니다.
CVE 및 취약점 현황
현재 MuSig2의 nonce 생성 구현 초기 단계에서 발견된 취약점에 대한 공식 CVE 번호는 없습니다. 이는 MuSig2 프로토콜이 아직 개발 중이며, 발견된 문제점들이 암호화 커뮤니티(예: 비트코인 프로토콜 목록, 학술 논문)에서 논의되고 있을 뿐, 일반적인 CVE 형태로 공식적으로 등록되지 않았기 때문입니다.
하지만 암호화 및 블록체인 커뮤니티에서는 이 취약점을 심각하게 악용한 사례에 대한 논문과 논의가 있었으며, 이는 경고 및 프로토콜 수정 형태로 나타났습니다(Jonas Nick 외, 2022년 논의 참조).
문학 및 기술 참고 자료
- MuSig2의 키 집계 및 nonce 재사용 취약점에 대한 직접적인 논의: Jonas Nick, Tim Ruffing 외 공저, 2022년. https://gnusha.org/pi/bitcoindev/576db60c-b05b-5b9a-75e5-9610f3e04eda@gmail.com/
- J. Nick 등이 발표한 연구 논문 “MuSig2: Simple Two-Round Schnorr Multi-Signatures”는 해당 방식의 보안 원칙과 가능한 공격에 대해 설명합니다.
- BitGo의 결정론적 논스 생성에 대한 실용적인 지침 https://bitcoinops.org/en/bitgo-musig2/
- 위키피디아: “Nonce 재사용 공격”은 고전적이고 널리 알려진 암호화 공격입니다.
결론
MuSig2 프로토콜의 심각한 논스 재사용 또는 결정론적 취약점은 비트코인 거래의 보안을 직접적으로 위협하며, 공격자가 개인 키를 완전히 노출시키고 자금을 탈취할 수 있도록 합니다. 과학적으로 논스 재사용 공격(Nonce Reuse Attack )이라고 알려진 이 공격은 디지털 서명에서 나타나는 전형적인 십자형 취약점의 예입니다. 현재 MuSig2의 이 문제에 대한 공식 CVE 번호는 지정되지 않았지만, 커뮤니티에서는 적극적으로 대응책을 개발하고 있습니다.
비트코인 및 MuSig2에 의존하는 모든 시스템에서 키 유출을 방지하기 위해 암호학적으로 안전한 논스 생성 방법을 엄격하게 사용하고 재사용이나 예측 가능성을 피하는 것이 좋습니다.
심각한 취약점인 무효 곡선 공격(Invalid Curve Attack): 타원 곡선의 무효점을 이용한 비트코인 암호화폐에 대한 위험한 공격
이 글에서는 비트코인에서 사용되는 ECDSA와 같은 디지털 서명 프로토콜 구현에서 타원 곡선 점이 충분히 검증되지 않을 때 발생하는 심각한 암호화 취약점인 ‘무효 곡선 공격(Invalid Curve Attack)’에 대해 논의합니다. 공격 메커니즘, 비트코인 네트워크 보안에 미치는 잠재적 영향, 그리고 발생 가능한 결과에 대해 설명합니다. 또한, CVE 발생 건수 통계 분석과 신뢰할 수 있는 보호 방안에 대한 권장 사항을 제시합니다.
서론
비트코인은 타원 곡선 암호화, 특히 secp256k1 곡선을 사용하는 ECDSA 알고리즘을 이용하여 거래의 디지털 서명을 생성하고 검증합니다. 시스템의 보안은 타원 곡선 이산 로그 문제(ECDLP)를 해결하는 어려움에 기반합니다. 그러나 이 문제가 여전히 어렵다고 하더라도, 구현된 암호화 코드에는 응용 프로그램 수준에서 보안을 약화시키는 취약점이 존재할 수 있습니다.
그러한 취약점 중 하나는 무효 곡선 공격(Invalid Curve Attack)으로, 공격자가 올바른 그룹에 속하지 않거나 “잘못된” 곡선에 있는 점들을 시스템에 입력하는 공격입니다. 이를 통해 공격자는 부가 데이터를 획득하거나, 개인 키를 노출시키거나, 암호화 프로토콜에 대한 다른 공격을 수행할 수 있습니다.
공격 메커니즘 및 비트코인 보안에 미치는 영향
이 공격의 기본 아이디어는 공격자가 검증 및 암호화 프로세스에 특수한 진입점을 생성할 수 있다는 것입니다. 이 진입점은 기본 방정식 수준에서는 유효해 보이지만, secp256k1의 안전한 부분집합 또는 곡선에 속하지 않으며 적절한 검증을 통과하지 못합니다. 시스템이 모든 기준, 특히 진입점의 순서에 따라 진입점을 검증하지 않으면 취약점이 발생합니다.
- 서명자가 의도치 않게 유효하지 않은 지점을 사용할 수 있으며, 이로 인해 공격자는 오류 및 응답을 분석하여 비밀 키를 추출할 수 있습니다.
- 비트코인에서 공격은 거래 위조, 서명 손상, 이중 지출 또는 네트워크의 무결성과 신뢰를 훼손하는 기타 심각한 보안 침해로 이어질 수 있습니다.
- 실제로 이러한 유형의 공격은 서명 장치와의 높은 상호 작용을 필요로 하지만, 하드웨어 측면(예: 취약한 코드가 포함된 하드웨어 지갑)은 추가적인 검사 없이는 보호되지 않는다는 것이 입증되었습니다.
과학적 명칭 및 CVE 번호: 이 공격은 과학 및 공학 문헌에서 ‘무효 곡선 공격(Invalid Curve Attack) ‘이라고 불립니다
. 이러한 유형의 공격은 2000년 Cryptology에 발표된 Biehl 등의 연구와 이후의 실증 연구를 비롯한 여러 논문에서 자세히 설명되어 있습니다.
CVE 취약점 데이터베이스에는 이 문제와 관련된 여러 항목이 있습니다. 예를 들어, CVE-2015-6924 는 HSM 장치의 ‘잘못된 곡선 공격’ 취약점에 해당하며, 이는 해당 문제가 업계에 미치는 심각성과 적용 가능성을 보여줍니다. 이 취약점을 이용하면 100번 미만의 쿼리만으로 P-256 비밀 키를 추출할 수 있습니다.
CVE 관련 주요 결과:
- CVE-2015-6924는 보안 장치에 대한 잘못된 곡선 공격의 실제 사례입니다.
- 자바 환경 및 암호화 제공업체를 포함한 다양한 암호화 라이브러리 및 플랫폼에서 유사한 취약점이 발견되었습니다.
- 이 취약점은 비트코인을 포함한 암호화폐에도 적용 가능하며, 특히 구현이 잘못되었거나 철저한 검증이 이루어지지 않은 경우 더욱 그렇습니다.
비트코인 및 관련 시스템의 무효 곡선 공격 취약점을 제거하려면 다음과 같은 보호 조치 및 권장 사항을 준수해야 합니다.
- 디코딩 후 해당 지점에 대한 엄격한 유효성 검사를 구현해야 합니다. 곡선 방정식에 대한 기본 검사 외에도 지점의 순서에 대한 유효성 검사가 필수적입니다.
n×P=On \times P = \mathcal{O}n×P=O
여기서 nnn은 기준점의 차수이고, O\mathcal{O}O는 무한대 지점입니다.
- 이러한 공격으로부터 보호되는 구현을 갖춘 검증된 암호화 라이브러리를 사용하십시오.
- 타사 솔루션(하드웨어 지갑, HSM)을 사용하는 경우, 확인 및 보안 감사를 요구하십시오.
- 암호화 보안 커뮤니티에서 제공하는 CVE 패치 및 권장 사항을 업데이트하고 모니터링합니다.
심각한 취약점:
주어진 코드의 암호화 취약점은 메서드 내 decode_from_x 두 줄에 포함되어 있습니다.
루비:y = y_sq.pow((group.field.prime + 1)/4, group.field.prime)

그리고
루비:raise DecodeError, 'Public key not on the curve.' unless y.pow(2, group.field.prime) == y_sq


설명:
- y=ysq mod py = \sqrt{y_{sq}} \bmod py=ysqmodp 계산은 거듭제곱을 통해 수행되는데, 이는 소수 모듈러스 p≡3(mod4)p \equiv 3 \pmod{4}p≡3(mod4)를 갖는 체에 대해서는 올바르지만, 점이 곡선의 올바른 부분군에 속하는지에 대한 추가적인 검사는 수행되지 않습니다.
- 입력에 방정식을 만족하지만 올바른 그룹 외부에 있는 점(예: 다른 차수의 곡선 위에 있는 점)이 포함된 경우 , y2=ysq mod py^2 = y_{sq} \bmod py2=ysqmodp 조건만 확인하는 것은 유효하지 않은 곡선 공격 으로부터 보호하기에 충분하지 않습니다 .
- 해당 점이 생성 부분군에 속하는지 여부를 명시적으로 검증하거나 점의 순서를 확인하는 절차는 없습니다.
- 이러한 간과로 인해 암호화 구현이 잘못된 지점을 통해 손상될 경우 비밀 키가 유출될 수 있습니다.
필요하다면, 포인트 순서 확인이나 다른 검증 방법을 기반으로 이러한 공격에 대한 보호 방안과 관련 예시를 제시해 드릴 수 있습니다.
보정:
타원 곡선 점 해독의 취약점: 분석, 특성 및 강력한 방어책
요약
본 논문은 타원 곡선 암호화 방식(ECDSA, BIP-Schnorr 등) 구현에서 복호화 시 발생하는 고전적이지만 여전히 중요한 암호화 취약점에 대해 논의합니다. 특히, 공격자가 허용된 그룹 외의 유효하지 않은 복호화 지점을 사용하여 비밀 키를 유출하거나 프로토콜 보안을 위반할 수 있는 ‘유효하지 않은 곡선 공격’에 주목합니다. 본 논문에서는 취약점 발생 메커니즘과 위험성을 설명하고, 수정 코드 및 복호화 지점 검증에 대한 권장 사항을 포함한 상세한 보안 해결책을 제시합니다.
서론
타원 곡선은 현대 암호 시스템의 근간을 이루며 디지털 서명 및 암호화 알고리즘에 보안을 제공합니다. 곡선 점에 대한 연산의 정확한 구현은 신뢰성 확보의 핵심입니다. 그러나 대부분의 경우 점 검증이 불충분하여 ‘유효하지 않은 곡선 공격(Invalid Curve Attacks)’으로 알려진 심각한 취약점이 발생합니다. 이러한 공격에서 공격자는 잘못된 매개변수를 가진 점을 제출하여 다른 방정식에 대응시키거나 생성 부분군(generation subgroup) 밖에 위치하도록 함으로써 암호학적 보장을 위반합니다.

취약점 발생 메커니즘은 다음과 같습니다.
주요 문제는 입력에 x 좌표와 y 좌표의 패리티 비트만 포함된 압축된 점 형태의 데이터를 디코딩할 때 발생합니다. y 값을 복원하기 위해 y² = x³ + ax + b (modp) 와 같이 제곱근을 계산합니다.
그런 다음 패리티 비트에 따라 두 y 옵션 중 하나가 선택됩니다. (위에서 제시된) 취약한 코드에서는 y2≡x3+7(modp)y^2 \equiv x^3 + 7 \pmod{p}y2≡x3+7(modp), 즉 yyy가 ppp를 법으로 하는 방정식의 근인지 여부만 확인합니다.
하지만 이러한 테스트는 해당 점이 올바른 그룹에 속한다는 것을 보장하지 않습니다. 즉,
- 순서에 따른 그룹 구성원 자격 확인은 없습니다. 타원 곡선은 일반적으로 nnn의 곱셈 차수를 가지며, 보안 프로토콜은 nnn 제곱한 점이 중립 요소(무한대점)와 같아야 한다고 요구합니다.
- 해당 점이 다른 차수의 “부분군”이나 곡선 위에 있지 않다는 것을 확인할 방법이 없습니다. 이로 인해 특수하게 만들어진 점을 공격 대상으로 삼을 가능성이 생깁니다.
취약점을 이용한 공격의 위험성과 결과
: 잘못된 공격 지점을 이용하면 다음과 같은 위험이 발생할 수 있습니다.
- 메시지에 서명하는 장치와의 상호 작용을 통해 개인 키에 대한 정보를 얻습니다.
- 다중 서명 및 혼합 방식과 같은 암호화 기본 요소를 포함하여 프로토콜의 논리를 위반합니다.
- 핵심 정보 유출 및 보안 침해로 이어질 수 있습니다.
보호 방법론 및 안전한 구현을
위해서는 다음과 같은 사항이 필요합니다.
- 해당 포인트가 그룹에 속하는지 여부를 완벽하게 확인합니다. 핵심 요소는 PPP 포인트 순서 확인입니다.

n⋅P=On \cdot P = \mathcal{O}n⋅P=O
여기서 nnn은 기준점의 차수이고, O\mathcal{O}O는 무한대 지점입니다.
- 디코딩 중 유효성 검사 – yyy가 복원된 후 사용 전.
- 유효하지 않은 의견을 무시하거나 거부하는 것.
점 순서 확인을 포함하는 안전한 수정 방법의 예(루비 스타일 코드):
루비:def self.decode_from_x_secure(x_string, group)
x = ECDSA::Format::FieldElementOctetString.decode(x_string, group.field)
y_sq = group.field.mod(x.pow(3, group.field.prime) + 7)
y = y_sq.pow((group.field.prime + 1)/4, group.field.prime)
# Проверка, что y корректен
unless y.pow(2, group.field.prime) == y_sq
raise DecodeError, 'Public key not on the curve.'
end
y = y.even? ? y : group.field.prime - y
point = finish_decode(x, y, group)
# Проверка порядка точки: n * P == infinity
# group.order - порядок генератора кривой secp256k1
unless (point * group.order).infinity?
raise DecodeError, 'Point order is invalid (not in correct subgroup).'
end
point
end
설명:
- 디코딩 및 yyy 선택 후, 점 객체가 생성됩니다.
- 어떤 점에 군의 위수를 곱했을 때 무한대가 되는 점이 나오는지 확인하는 검사를 수행하는데, 이는 그 점이 올바른 부분군에 속한다는 것을 보장합니다.
- 불일치가 발생하면 예외가 발생하여 취약점을 추가로 악용하는 것을 방지합니다.
개발을 위한 권장 사항
- 곡선의 방정식을 확인하는 것에만 의존해서는 안 됩니다.
- 점 순서 확인 또는 기타 유효성 검사 메커니즘(예: 공변수 확인)을 사용하십시오.
- 가능한 경우 회로 설계 시 내장 보호 기능이 있는 검증된 라이브러리를 사용하십시오.
- Invalid Curve 취약점에 대한 감사 및 테스트를 수행합니다.
결론적으로,
타원 곡선 점의 유효성 검증은 암호 보안에서 매우 중요한 단계입니다. 불충분한 검증은 비밀 정보 유출을 포함한 심각한 공격으로 이어질 수 있습니다. 본 논문에서 제시하는 점 순서 검사를 이용한 안전한 수정 방법은 유효하지 않은 점으로 인한 공격 위험을 최소화하는 실용적이고 신뢰할 수 있는 해결책입니다.
결론적으로,
무효 곡선 공격(Invalid Curve Attack)은 비트코인과 같은 암호화폐 시스템의 보안에 심각한 영향을 미칠 수 있는 중대한 위협입니다. 이 공격의 과학적 명칭과 설명은 널리 알려져 있으며, 관련 취약점에는 CVE-2015-6924를 포함한 CVE 번호가 부여되어 있습니다. 공격을 예방하고 장기적인 보안을 확보하기 위해서는 엄격한 타원 곡선 점 검증 조치를 시행하는 것이 필수적입니다.
최종 결론
본 논문은 비트코인을 비롯한 ECDSA 및 secp256k1 곡선을 기반으로 하는 암호 시스템에서 유효하지 않은 타원 곡선 점 처리와 관련된 심각한 취약점인 ‘ 유효하지 않은 곡선 공격(Invalid Curve Attack) ‘에 대해 논의합니다 . 이 취약점은 디코딩된 점이 실제로 올바른 곡선 그룹에 속하는지 여부를 충분히 검증하지 못하는 데서 발생하며, 특히 점의 순서에 대한 검증이 부족합니다. 이로 인해 공격자는 허용된 하위 그룹 외부에 있는 특수하게 조작된 점을 제출할 수 있으며, 이는 개인 키 유출이나 디지털 서명 위조로 이어질 수 있습니다.

비트코인 보안 측면에서 이러한 공격은 네트워크에 대한 신뢰를 무너뜨리고, 가짜 거래를 생성하며, 시스템 전체의 기반이 되는 암호화 보호를 무력화할 수 있기 때문에 매우 위험합니다. 이러한 보호를 구현하려면 특정 점이 정규 곡선에 속하는지 엄격하게 검증해야 하며, 무엇보다도 점의 차수를 확인하여 n×P=On \times P = \mathcal{O}n×P=O가 성립하는지 확인해야 합니다. 여기서 nnn은 생성자의 차수이고 O\mathcal{O}O는 무한대 지점입니다.
이 취약점의 과학적 명칭은 ‘잘못된 곡선 공격(Invalid Curve Attack) ‘이며 , 이는 타원 곡선을 사용하는 프로토콜에 대한 공격 유형 중 가장 많이 연구되고 심각한 유형 중 하나입니다. 이 공격은 CVE 취약점 데이터베이스에 해당 번호로 등록되어 있으며, 예를 들어 유사한 기법을 사용하여 HSM 장치에서 키를 추출하는 것과 관련된 CVE-2015-6924 가 있습니다.
결론적으로, 비트코인과 같은 암호화폐의 지속 가능한 보안을 보장하기 위해서는 포괄적인 검증 조치와 무효 지점에 대한 공격 방지 기능을 갖춘 검증된 암호화 구현 방식의 사용이 필수적입니다. 이러한 조치가 없다면 전체 블록체인 시스템 인프라와 그에 대한 신뢰를 무너뜨릴 수 있는 심각한 보안 침해 위험이 존재합니다.
이번 발견은 Invalid Curve Attack 취약점이 악용되지 않도록 시스템을 제대로 구현하고 테스트하는 것이 얼마나 중요한지, 그리고 이를 통해 사용자 자산의 보안과 블록체인의 무결성을 보장할 수 있음을 보여줍니다.