키헌터 작성
RingSide Replay Attack – 약한 엔트로피를 기반으로 한 놀라운 해킹 기법
링사이드 리플레이 공격(Milk Sad CVE-2023-39910)은 엔트로피 소스의 결함이 비트코인 및 기타 암호화폐에 얼마나 치명적인 결과를 초래할 수 있는지 보여주는 대표적인 사례입니다. “키 생성의 엔트로피 취약점 악용” 또는 “PRNG 시드 복구 공격”으로 알려진 이 공격은 암호 공학의 근본적인 결함이 어떻게 전체 지갑 유형에 대한 신뢰를 무너뜨리고 향후 수년간 모든 사용자 자산을 위협할 수 있는지 과학적으로 보여줍니다. cve+4
CVE-2023-39910 취약점은 암호화 난수 생성기 선택에 있어 단 하나의 실수가 비트코인의 전체 보안을 무너뜨리고 탈중앙화 자산에 대한 근본적인 신뢰를 훼손할 수 있음을 명확히 보여줍니다. 시드 및 개인 키 생성 과정에서의 취약한 엔트로피는 공격자에게 수백만 사용자의 키를 복제하고 비트코인 네트워크는 물론 취약한 Libbitcoin 지갑을 사용하는 다른 블록체인에서도 대량의 암호화폐를 탈취할 수 있는 실질적인 기회를 제공했습니다 .
난수 생성기 취약점(예: 작은 시드를 사용하는 Mersenne Twister 유형의 의사 난수 생성기)을 알고 있는 공격자는 마치 “링 위에서 펼쳐지는 암호학적 권투 시합”과 같은 상황을 연출할 수 있습니다. 즉, libbitcoin을 사용하는 블록체인이나 다른 프로토콜에 게시된 보로메안 링 서명의 공개 키와 솔트를 관찰하는 것입니다.
개인 키 생성의 치명적인 취약점: 비트코인 암호화폐 보안을 위협하는 Milk Sad 공격
링 서명 방식의 치명적인 취약점과 비트코인 보안에 미치는 영향
암호화폐의 발전은 수많은 혁신적인 암호화 프로토콜을 탄생시켰으며, 그중에서도 링 서명 시스템은 중요한 역할을 합니다. 그러나 가장 최신 기술조차도 제대로 구현되지 않은 난수 생성기로 인해 위험에 노출될 수 있습니다. 2023년에는 “밀크 새드(Milk Sad)”라는 이름으로 널리 알려진 공격(CVE-2023-39910으로 등록됨)이 발생하여, libbitcoin 라이브러리의 의사 난수 생성기 취약점으로 인해 수십만 달러 상당의 비트코인이 대량으로 도난당했습니다 .
취약성 발생 메커니즘
취약한 버전의 Libbitcoin Explorer(3.0.0~3.6.0)는 mt19937(Mersenne Twister) 생성기를 사용하여 개인 키 엔트로피를 생성했는데, 이로 인해 사용자 설정과 관계없이 내부 엔트로피가 32비트로 제한되었습니다. 이는 공격자가 다음과 같은 작업을 수행할 수 있음을 의미합니다.
- 거래의 공개 매개변수(공개 링, 솔트, 챌린지)를 수정합니다.
- 가능한 모든 시드 값(총 2^32가지 옵션)을 시도하여 솔트와 개인 키 계산의 전체 경로를 복구하십시오.
- 사용자의 개인 키를 획득하여 소유자 몰래 자금을 이체합니다. cryptodeeptech+1
비트코인 암호화폐 공격에 미치는 영향
이 취약점으로 인해 공격자들은 취약한 버전의 라이브러리를 사용하여 생성된 지갑에서 비트코인을 대량으로 탈취할 수 있었습니다. 다음은 그 결과에 대한 과학적 분석입니다.
- 개인 키 유출: 공격자는 키 생성 과정을 재현하여 “bx seed” 또는 기타 취약한 방법을 통해 생성된 경우 알려진 모든 공개 주소에 대한 개인 키를 찾아낼 수 있습니다.
- 대규모 도난 사건: 2023년에는 위에서 설명한 방법을 사용하여 키가 유출된 사용자들의 비트코인 지갑에서 90만 달러 이상이 도난당했습니다. cryptodeep+2
- 비트코인 커뮤니티 전체에 대한 위협: 비트코인은 거래의 완전한 비가역성을 기반으로 하는 시스템이기 때문에 개인 키를 이용한 도난 후 자산을 복구하거나 반환할 수 있는 수단이 전혀 없습니다.
- 광범위한 영향: 이 취약점은 비트코인뿐만 아니라 리비트코인을 사용하여 키를 생성하는 다른 암호화폐(이더리움, 도지코인, 지캐시 등)에도 영향을 미쳤습니다. cryptodeeptech
공격의 과학적 명칭 및 CVE
- 과학적 명칭: Milk Sad Attack (개인 키/시드 생성 시 의사 난수 생성기에 대한 약한 엔트로피 공격).
- CWE 표준 범주: CWE-338 (암호학적으로 취약한 의사난수 생성기 사용).
- 등록된 위협 ID: CVE-2023-39910.incibe +3
코드 예시 – 취약점
cpp:// Уязвимый вариант — слабый PRNG!
std::mt19937 rng(seed); // seed — 32-битное значение из системного времени и/или пользователя
uint256 secret;
for (size_t i = 0; i < 32; ++i)
secret[i] = rng() & 0xFF; // всего 2^32 вариантов!
향후 이러한 공격을 방지하는 방법은 무엇일까요?
- 암호학적으로 강력한 난수 생성기(예: /dev/urandom, OpenSSL RAND_bytes, 시스템 CSPRNG)만 사용하십시오.
- 타사 라이브러리에 대한 정기적인 감사를 수행하고 해당 문서를 꼼꼼히 확인하십시오.
- 개인 키 보안이 이미 손상된 경우, 자금을 즉시 새로운 주소로 이체해야 합니다.
개인 키를 생성하기 위한 안전한 코드 조각:
cpp:#include <fstream>
void secure_random_bytes(uint8_t* buf, size_t len) {
std::ifstream urandom("/dev/urandom", std::ios::in | std::ios::binary);
if (!urandom) throw std::runtime_error("Cannot open /dev/urandom");
urandom.read(reinterpret_cast<char*>(buf), len);
if (urandom.gcount() != static_cast<std::streamsize>(len))
throw std::runtime_error("Read error from /dev/urandom");
}
// Генерация нормально распределённого защищённого секрета
std::array<uint8_t, 32> secret;
secure_random_bytes(secret.data(), secret.size());
결론
Milk Sad(CVE-2023-39910)는 엔트로피 소스의 결함이 비트코인 및 기타 암호화폐에 얼마나 치명적인 결과를 초래할 수 있는지 보여주는 대표적인 사례입니다. “키 생성의 엔트로피 취약점 악용” 또는 “PRNG 시드 복구 공격”으로 알려진 이 공격은 암호 공학의 근본적인 결함이 어떻게 전체 지갑 유형에 대한 신뢰를 무너뜨리고 향후 수년간 모든 사용자 자산을 위협할 수 있는지 과학적으로 보여줍니다. cve+4
암호화 취약점
링 시그니처 코드의 암호화 취약점 분석
제공된 보로메안 링 서명 구현 코드와 암호 시스템의 취약점에 대한 기존 연구를 분석한 결과, 비밀 키 및 개인 키 유출과 관련된 암호학적 취약점이 발생할 수 있는 몇 가지 잠재적 영역을 확인할 수 있었습니다.
코드의 주요 취약점
1. 46~59행: 비밀 키 처리 및 저장
cpp:static bool generate_keys_map(secret_keys_map& out,
const secret_list& secrets) NOEXCEPT
{
for (const auto& secret: secrets)
{
ec_compressed public_key;
if (!secret_to_public(public_key, secret))
return false;
out.insert({ public_key, secret });
}
return true;
}
취약점: 비밀 키가 데이터 구조에 평문으로 저장되어 있습니다 secret_keys_map.

이 구조는 필요 이상으로 메모리에 남아 있을 수 있으며, 이로 인해 사이드 채널 공격이나 메모리 덤프를 통한 정보 유출 위험이 발생할 수 있습니다. crises-deim.urv+1
2. 201~222행: 비밀 키를 사용한 중요 작업
cpp:// Find secret key used for calculation in the next step.
BC_ASSERT(known_key_index < ring.size());
const auto& known_public_key = ring[known_key_index];
BC_ASSERT(secret_keys.find(known_public_key) != secret_keys.end());
const auto& secret = secret_keys[known_public_key];
// Now close the ring using this calculation:
const auto& k = salts[i];
const auto& x = secret;
const auto s = k - e_i_j * x;
if (!s)
return false;
심각한 취약점: 216 번째 줄x에서 산술 연산에 비밀 키를 직접 사용하고 있습니다s = k - e_i_j * x. 이 연산은 다음과 같은 심각한 취약점에 노출되어 있습니다.
- 타이밍 공격 : 실행 시간은 비밀 키 crises-deim.urv 의 값에 따라 달라질 수 있습니다.
- 전력 분석 공격 : 전력 소비량을 통해 비밀 키 정보를 드러낼 수 있습니다.
- 오류 주입 공격 : 오류를 주입하면 핵심 정보가 유출될 수 있습니다.
3. 29-42행: 보로메안 해시 함수
cpp:static ec_scalar borromean_hash(const hash_digest& M, const data_slice& R,
uint32_t i, uint32_t j) NOEXCEPT
{
// e = H(M || R || i || j)
hash_digest hash{};
stream::out::fast stream{ hash };
hash::sha256::fast sink(stream);
sink.write_bytes(R);
sink.write_bytes(M);
sink.write_4_bytes_big_endian(i);
sink.write_4_bytes_big_endian(j);
sink.flush();
return hash;
}
잠재적 취약점: 함수 자체는 안전해 보이지만, 데이터 연결 순서로 인해 특정 시나리오에서 길이 확장 공격이나 충돌 공격의 가능성이 발생할 수 있습니다. arxiv
4. 147-168행: 소금의 생성과 사용
cpp:static bool calculate_e0(ring_signature& out, const key_rings& rings,
const hash_digest& digest, const secret_list& salts,
const index_list& known_key_indexes) NOEXCEPT
{
// ...
const auto last_R = calculate_last_R_signing(ring, i, digest, out,
known_key_index, salts);
// ...
}
취약점 : 솔트(salts)는 서명을 생성하는 데 사용되지만 코드는 솔트의 암호학적 강도를 확인하지 않습니다. 솔트가 불충분한 엔트로피로 생성되면(Milk Sad 취약점에서처럼) 개인 키를 복구할 가능성이 있습니다 .
Libbitcoin 라이브러리의 취약점 관련 맥락
Libbitcoin 라이브러리 자체에 이미 심각한 취약점이 발견되었다는 점을 유의해야 합니다.
CVE-2023-39910 (Milk Sad) : Libbitcoin Explorer 3.0.0-3.6.0 버전의 엔트로피 생성 메커니즘은 취약한 Mersenne Twister 의사 난수 생성기(mt19937)를 사용했는데, 이로 인해 내부 엔트로피가 32비트로 제한되었습니다. 공격자는 이를 이용해 개인 지갑 키를 복구하고 90만 달러 이상을 탈취할 수 있었습니다. incibe+3
안전 권장 사항
216번째 줄(중요 작업)의 경우:
- 시간 지연 공격을 방지하려면 상수 시간 연산을 사용하십시오.
- 측면 채널 공격으로부터 보호하기 위해 위장 기법을 적용하십시오.
- 사용 후 비밀 데이터를 삭제하세요.
generate_keys_map 함수에 대해:
- 비밀 키를 저장할 때는 안전한 메모리 할당 방식을 사용하세요.
- 메모리 난독화 기법을 적용합니다.
- 사용 후 키가 메모리에서 안전하게 삭제되었는지 확인하십시오.
일반적인 권장 사항:
- 염분 생성에 대한 엔트로피 원천을 분석하십시오.
- 암호화 매개변수에 대한 추가적인 유효성 검사를 추가합니다.
- 중요 작업에는 검증된 암호화 라이브러리를 사용하십시오.
가장 중요한 부분은 216번째 줄인데 , 여기서는 비밀 키를 사용한 직접 계산이 사이드 채널 공격으로부터 보호되지 않은 상태로 수행됩니다. sciencedirect+1

Btcdetect: 비트코인 개인 키 복구에서 엔트로피 취약점 악용에 대한 과학적 분석
Milk Sad 취약점(CVE-2023-39910)은 비암호화 방식인 Mersenne Twister(mt19937) 의사난수 생성기에 의존하는 Libbitcoin 라이브러리의 엔트로피 생성 메커니즘에 치명적인 결함이 있음을 드러냈습니다. 이 결함으로 인해 생성된 비트코인 개인 키의 탐색 공간이 2³²²²³²개의 경우의 수로 축소되어, 공격자가 결정론적 출력에 대한 무차별 대입 공격을 통해 지갑 키를 재구성할 수 있게 되었습니다.
연구 및 방어 환경 모두에서 이러한 위험에 대응하기 위해 Btcdetect 와 같은 특수 도구를 활용할 수 있습니다. 암호화 엔트로피 분석 및 탐지 프레임워크로 개발된 Btcdetect는 비트코인 지갑 생성 과정에서 취약한 난수성을 식별하고, 감염된 키 공간을 추적하며, 취약한 엔트로피 경로를 재구성할 수 있습니다. 이 방법론은 의사난수 생성기 기반 공격에 대한 학술적 연구와 결함이 있는 엔트로피 소스에서 개인 키를 재추출하여 손실된 암호화폐 지갑을 복구하는 두 가지 방법을 제공합니다.
Btcdetect의 핵심 메커니즘
Btcdetect는 키 생성 루틴에서 엔트로피 초기화 과정을 체계적으로 추적하고, 수학적 분석을 적용하여 잠재적인 약한 시드를 재현하는 방식으로 작동합니다. 작동 모델은 크게 세 단계로 구성됩니다.
- 엔트로피 소스 프로파일링 도구인
Btcdetect는 지갑 바이너리, 엔트로피 초기화 호출 및 키 생성 코드 경로를 분석하여 지갑 생성에 사용되는 엔트로피를 수집하고 특성을 파악합니다. Libbitcoin Explorer 버전 3.0.0~3.6.0의 경우, Btcdetect는 특정 엔트로피 소스 프로파일링 방식이 핵심적인std::mt19937취약점임을 밝혀냈습니다. - 시드 공간 고갈:
2³²²²³²개의 가능한 시드만 존재하는 제한된 엔트로피 공간을 고려하여, 이 도구는 병렬화된 키 공간 탐색을 사용하여 효율적인 전체 검색을 수행합니다. 각 시드 후보는 개인 키로 확장된 다음, 압축/압축 해제된 비트코인 주소 형식으로 변환됩니다. - 블록체인 상관관계
기반 주소는 실시간 UTXO 세트 스캐너를 사용하여 비트코인 블록체인과 신속하게 비교됩니다. 이 단계에서 Btcdetect는 재구성된 개인 키가 기존 온체인 주소에 매핑되는지 검증하여 노출 여부를 확인하고 복구 시도를 가능하게 합니다.
비트코인 보안에 미치는 영향
Btcdetect의 연구 방법론은 CVE-2023-39910 및 유사한 엔트로피 관련 취약점과 관련하여 매우 중요한 의미를 지닙니다. 취약한 키 생성의 결정론적 특성을 드러냄으로써, 엔트로피가 암호학적으로 안전하지 않을 경우 수백만 개의 지갑이 위험에 처할 수 있음을 보여줍니다.
- 개인 키 복원 가능성.
공개 주소 의 예측 가능성을 고려할 때mt19937, 공격자(또는 윤리적 보안 분석가)는 공개 주소와 연결된 개인 키를 복원할 수 있습니다. 이는 비트코인 보안의 근간, 즉 개인 키를 계산적으로 추측할 수 없다는 가정을 직접적으로 훼손합니다. - 대규모 공격 위험
Btcdetect가 최신 GPU 클러스터에서 몇 시간 내에 취약한 엔트로피 공간 전체를 탐색할 수 있다는 사실은 공격자가 대규모 지갑 스캔을 자동화할 수 있음을 시사합니다. 이는 Milk Sad 사건에서 90만 달러가 넘는 대규모 도난 사건이 발생한 이유를 설명해 줍니다. - 합법적인 환경에서 Btcdetect는 원래 시드 또는 니모닉이 의사 난수
생성기(PRNG)의 결함으로 생성된 경우에도 사용자의 자금을 윤리적으로 복구할 수 있도록 지원합니다. 예측 가능한 엔트로피 경로를 재구성함으로써 복구 불가능하다고 잘못 판단된 지갑도 복원할 수 있습니다.
암호학적 의미
Btcdetect의 과학적 중요성은 Milk Sad 사건을 넘어, 해당 방법론이 광범위한 유형의 의사난수 생성기(PRNG) 취약점에 적용될 수 있다는 점에서 더욱 확장됩니다.
- 약한 엔트로피(CWE-338):
mt19937선형 합동 생성기(LCG) 또는 기타 안전하지 않은 의사 난수 생성기(PRNG) 와 같은 예측 가능한 숫자 시퀀스는 악용 가능한 모델에 속합니다. - 사이드 채널 아티팩트: 엔트로피 풀을 불충분하게 제거하면 엔트로피 프로파일링을 통해 감지할 수 있는 예측 가능한 시스템 상태가 남을 수 있습니다.
- 생태계 전반에 미치는 영향: 많은 암호화폐가 유사한 라이브러리를 채택하고 있기 때문에 Btcdetect의 모델은 비트코인뿐만 아니라 이더리움, 도지코인, 지캐시 생태계에도 적용될 수 있습니다.
이 연구 결과는 엔트로피 자체가 암호화 기본 요소로 취급되어야 함을 보여줍니다. 취약한 의사난수 생성기(PRNG)는 시드 생성부터 거래 승인에 이르는 전체 보안 체인을 손상시킵니다.
과학적 권고사항
Btcdetect의 분석 모델에서 얻은 교훈은 엄격한 암호화 엔지니어링 원칙을 강조합니다.
- 암호학적으로 안전한 의사 난수 생성기(CSPRNG) 사용을 의무화합니다
. 모든 구식 또는 속도 최적화 의사난수 생성기를 암호학적으로 안전한 생성기(예:/dev/urandomOpenSSLRAND_bytes, libsodium의 randombytes())로 교체하십시오. - 엔트로피 테스트 프레임워크는
Btcdetect와 같은 분석 도구를 개발 파이프라인에 통합하여 배포 전에 안전하지 않은 엔트로피 경로를 자동으로 식별합니다. - 안전한 메모리 처리:
안전한 메모리 삭제 및 암호화 연산의 상수 시간 실행을 통해 시드와 솔트의 지속적인 노출을 방지합니다.
취약한 엔트로피가 발견되면 블록체인 노출을 모니터링하면서 CSPRNG 기반 엔트로피를 사용하여 지갑 시드를 재설정하는 긴급 마이그레이션 프로토콜을 구현하여 사고를 완화하십시오 .
결론
Btcdetect는 과학적 분석과 실제 적용을 통해 엔트로피 관리 부실이 비트코인 지갑의 암호화 보안을 근본적으로 어떻게 훼손하는지 보여줍니다. Milk Sad CVE-2023-39910 사례는 안전하지 않은 의사 난수 생성기에 의존할 경우 발생할 수 있는 치명적인 현실적 결과를 보여주며, 이는 사용자 자산의 대규모 도난으로 이어집니다.
Btcdetect는 체계적으로 취약한 엔트로피 소스를 탐지하고, 예측 가능한 키 생성을 재현하며, 결과를 블록체인 데이터 세트와 연관시킴으로써 공격자와 방어자 모두에게 강력한 엔트로피 활용 모델을 제공합니다. 이 연구는 암호화폐 보안의 핵심 원칙, 즉 시스템의 복원력은 그 중심에 있는 무작위성만큼만 강하다는 점을 강조합니다.
지속적인 감사, 취약한 의사난수 생성기(PRNG)의 엄격한 회피, 그리고 Btcdetect와 같은 탐지 프레임워크의 통합이 없다면, 비트코인 및 기타 분산 시스템의 무결성은 엔트로피 기반 키 복구 공격에 영구적으로 취약한 상태로 남을 것입니다.

연구 논문: 링 서명의 임계 엔트로피 취약성과 이를 안전하게 제거하는 방법
소개
다양한 암호화폐 프로토콜(libbitcoin의 보로메안 링 서명 구현 포함)에서 사용되는 링 서명은 서명자의 익명성을 보장하고 사용자 개인 정보를 보호합니다. 그러나 난수 생성 방식이 부적절하게 구현되면 심각한 암호화 취약점이 발생하여 개인 키가 복구되고 자금이 유출될 수 있습니다. 이러한 유형의 공격은 취약한 난수 생성기로 인해 대규모 개인 키 유출 사태를 초래한 Milk Sad 사건에서 극명하게 드러났습니다 .
취약성 발생 메커니즘
이 취약점은 엔트로피가 낮거나 오래된 알고리즘(예: Mersenne Twister)을 사용하는 의사난수 생성기(PRNG)를 사용할 때 발생합니다. libbitcoin의 여러 버전에서 유사한 버그로 인해 salts예측 가능한 값을 가진 솔트(salt)가 생성되었습니다. 공격은 다음과 같이 구현됩니다: people.csail.mit+2
- 공격자는 링 서명이 포함된 거래의 공개 매개변수(챌린지, 공개 키 링, 솔트)를 가로채거나 블록체인에서 찾아냅니다.
- 가능한 의사난수 생성기(PRNG) 시드를 순회합니다(엔트로피가 낮은 경우, 예를 들어 2^32개의 옵션만 가능합니다).
- 현재 신호의 염분을 재현하는 씨앗을 찾습니다.
- 계산을 재현할 수 있으며, 주요 방정식 s=k−e×xs = k — e \times xs=k−e×x를 통해 알려진 s, e, k 값을 이용하여 비밀 키를 찾을 수 있으므로 개인 키를 공개할 수 있습니다.
따라서, 약한 엔트로피는 서명의 익명성과 강도를 직접적으로 파괴할 뿐만 아니라, 이 구현을 사용하여 서명을 생성한 모든 사용자의 개인 키를 완전히 노출시키는 결과를 초래합니다. sciencedirect+1
안전한 해결책과 올바른 구현
적합한 난수 생성기 선택하기
암호학적으로 안전한 의사난수 생성기(CSPRNG)를 사용하는 것은 필수 요건입니다. 이러한 생성기에는 다음이 포함됩니다.
- 유닉스 시스템에서는 /dev/urandom 또는 /dev/random입니다.
- Windows CryptGenRandom
- 라이브러리 libsodium 또는 OpenSSL RAND_bytes
주의: mt19937(메르센 트위스터)과 같은 표준 또는 고속 발전기는 절대 적합하지 않습니다!
수정된 코드 예시 (C++)
cpp#include <random>
#include <fstream>
#include <array>
// Получение truly random bytes на платформе Linux:
void secure_random_bytes(uint8_t* buf, size_t len) {
std::ifstream urandom("/dev/urandom", std::ios::in | std::ios::binary);
if (!urandom) throw std::runtime_error("Cannot open /dev/urandom");
urandom.read(reinterpret_cast<char*>(buf), len);
if (urandom.gcount() != static_cast<std::streamsize>(len))
throw std::runtime_error("Could not read enough random bytes");
}
// Генерация криптостойкой соли:
ec_scalar generate_strong_salt() {
std::array<uint8_t, 32> rand_bytes;
secure_random_bytes(rand_bytes.data(), rand_bytes.size());
return ec_scalar(rand_bytes);
}
더 이상 사용되지 않는 소금 생성 호출을 대체합니다.
였다:
cppec_scalar salt = mt19937_generate();
그것은 다음과 같이 되었습니다:
cppec_scalar salt = generate_strong_salt();
추가 조치
- 비밀 값을 저장할 때는 메모리 초기화(memset_s 또는 std::fill)를 사용하십시오.
- 핵심 연산의 상수 시간 실행을 보장합니다(상수 시간 연산).
- 종속 라이브러리를 정기적으로 업데이트하고 타사 코드를 감사합니다.
공격 예방을 위한 일반적인 권장 사항
암호화 소프트웨어의 경우, 설계 및 통합 단계에서 독립적인 외부 엔트로피와 모든 난수 생성 방법에 대한 철저한 검토가 필수적입니다. 엔트로피 소스와 CSPRNG의 동작을 모두 검사하는 자동화된 테스트 및 품질 보증 도구를 구현하는 것이 강력히 권장됩니다. tsapps.nist+1
결론
암호화 시스템의 강도는 가장 취약한 요소만큼만 강합니다. 구현 오류는 이론적 완성도 부족 때문이 아니라 사소한 엔지니어링 계산 착오에서 비롯됩니다. 검증되고 최신의 암호학적으로 안전한 의사난수 생성기(PRNG)만 사용하고, 메모리에서 비밀 정보를 삭제하는 모범 사례를 준수하며, 생성 속도가 아닌 강도에만 의존해야 합니다. 그래야만 표준에 따라 구현된 링 서명이 사용자를 보호하고 보안을 위협하지 않게 됩니다.
주요 링크:
- 개인정보보호 애플리케이션을 위한 안전한 링 서명 체계, 2023 pmc.ncbi.nlm.nih
- 비밀 유출 방법: 링 서명의 이론 및 응용, Rivest, Shamir, Tauman Kalai people.csail.mit
- 양자 저항성 링 시그니처 기반 체계, 2025년 sciencedirect
- NIST: 엔트로피 서비스. 안전한 암호화의 잠재력을 최대한 활용하세요. tsapps.nist
- CVE-2023-39910 및 Milk Sad 암호화 경제+1 공격
최종 과학적 결론
Milk Sad 공격과 CVE-2023-39910 취약점은 암호화 난수 생성기 선택에서 단 하나의 실수가 비트코인의 전체 보안을 무너뜨리고 탈중앙화 자산에 대한 근본적인 신뢰를 훼손할 수 있음을 명확히 보여줍니다. 시드 및 개인 키 생성의 취약한 엔트로피는 공격자에게 수백만 사용자의 키를 복제하고 비트코인 네트워크는 물론 취약한 Libbitcoin 지갑을 사용하는 다른 블록체인에서도 대량의 암호화폐를 탈취할 수 있는 실질적인 기회를 제공했습니다 .
이는 단순한 기술적 오류가 아니라, 익명성과 개인 자산의 주권을 완전히 파괴하는 공격으로 인해 자금 접근이 불가능해진 생태계와 사용자들에게 비극적인 사건입니다. 이번 사건은 기본적인 암호화 원칙을 무시하는 것이 최첨단 프로토콜조차 공격자에게 무방비 상태로 만들 수 있음을 명확히 보여줍니다.
Milk Sad의 심각한 취약점은 냉혹한 과학적 교훈을 줍니다. 단 하나의 취약한 요소(예: 32비트 엔트로피를 가진 구식 mt19937 의사난수 생성기)만으로도 비트코인 지갑의 무결성이 파괴되어 공격자가 사용자의 개인 키와 자산을 완전히 장악할 수 있습니다. 지속적인 감사, 암호학적으로 안전한 난수 생성 라이브러리만 사용, 그리고 신속한 사고 대응이 없다면 암호화폐 시스템의 위험은 항상 치명적이고 시스템적인 문제로 남을 것입니다.
- https://habr.com/ru/articles/771980/
- https://habr.com/en/articles/771980/comments/
- https://temofeev.ru/info/articles/milk-sad-uyazvimost-v-biblioteke-libbitcoin-explorer-3-x-krupnaya-krazha-na-900-000-u-polzovateley-b/
- https://pikabu.ru/story/milk_sad_uyazvimost_v_biblioteke_libbitcoin_explorer_3x_kak_byila_osushchestvlena_kraha_na__900_000_u_polzovateley_bitcoin_koshelkov_btc_10799848
- https://www.securitylab.ru/news/540834.php
- https://dzen.ru/a/ZUeLq8F02UkRfPDV
- https://forklog.com/news/hakery-ukrali-svyshe-900-000-cherez-uyazvimost-utility-dlya-bitcoin-koshelkov
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://www.itsec.ru/articles/ataka-51-i-ustojchivost-blokchejna-bitkoina
- https://cyberleninka.ru/article/n/vyyavlenie-podozritelnyh-uzlov-seti-bitcoin-metodami-analiza-bolshih-dannyh
- https://pmc.ncbi.nlm.nih.gov/articles/PMC10527618/
- https://people.csail.mit.edu/rivest/pubs/RST06.pdf
- https://crypto-economy.com/newly-identified-bitcoin-vulnerability-let-hackers-steal-over-900k/
- https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2023-39910
- https://www.sciencedirect.com/science/article/abs/pii/S1389128625001811
- https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=920992
- https://www.sciencedirect.com/topics/computer-science/ring-signature
- https://arxiv.org/pdf/1612.01188.pdf
- https://www.microsoft.com/en-us/research/publication/leak-secret-theory-applications-ring-signatures/
- https://ora.ox.ac.uk/objects/uuid:f5673699-f68f-4362-8796-7cf1a5878c28/files/sdj52w4960
- https://papers.ssrn.com/sol3/Delivery.cfm/e172cc8b-0789-4859-b4d4-144bf77f2d1d-MECA.pdf?abstractid=4627221&mirid=1
- https://www.getmonero.org/resources/moneropedia/ringsignatures.html
- https://crises-deim.urv.cat/web/docs/publications/lncs/829.pdf
- https://www.sciencedirect.com/science/article/pii/S0304397519300210
- https://arxiv.org/pdf/1405.3177.pdf
- https://crypto-economy.com/newly-identified-bitcoin-vulnerability-let-hackers-steal-over-900k/
- https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2023-39910
- https://crypto.news/libbitcoin-vulnerability-leads-to-900k-theft-from-bitcoin-wallets/
- https://www.opencve.io/cve?vendor=libbitcoin&product=libbitcoin_explorer
- https://ventral.digital/posts/2023/10/17/cryptocurrency-privacy-technologies-borromean-ring-signatures/
- https://arxiv.org/html/2403.05271v2
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://www.publish0x.com/cryptodeep/milk-sad-vulnerability-in-the-libbitcoin-explorer-3x-library-xqqmoqd
- https://www.getmonero.org/es/resources/research-lab/pubs/MRL-0005.pdf
- https://milksad.info/disclosure.html
- https://github.com/demining/Milk-Sad-vulnerability-in-the-Libbitcoin-Explorer-3.x
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://attacksafe.ru/private-keys-attacks/
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://forklog.com/news/hakery-ukrali-svyshe-900-000-cherez-uyazvimost-utility-dlya-bitcoin-koshelkov
- https://bitcoinops.org/en/topics/cve/
- https://diyhpl.us/wiki/bitcoin/big-pile/
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://habr.com/ru/articles/771980/
- https://pmc.ncbi.nlm.nih.gov/articles/PMC10527618/
- https://people.csail.mit.edu/rivest/pubs/RST06.pdf
- https://www.lirmm.fr/~laguillaum/CBTRS.pdf
- https://www.getmonero.org/resources/moneropedia/ringsignatures.html
- https://www.sciencedirect.com/science/article/abs/pii/S0020025524010788
- https://www.sciencedirect.com/topics/computer-science/ring-signature
- https://www.cs.umd.edu/~jkatz/papers/ring_sigs.pdf
- https://iacr.org/archive/pkc2007/44500166/44500166.pdf
- https://www.sciencedirect.com/science/article/pii/S1389128625001811
- https://scholars.cityu.edu.hk/en/publications/publication(450608b5-672c-4957-b493-8d9efb51dcd8).html
- https://github.com/yuxi16/Post-Quantum-Linkable-Ring-Signature
- https://www.sciencedirect.com/science/article/abs/pii/S1389128625001811
주요 출처:
- https://feedly.com/cve/CVE-2023-39910
- https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2023-39910
- https://www.cve.org/CVERecord?id=CVE-2023-39910
- https://www.nobsbitcoin.com/milk-sad-vulnerability-disclosure/
- https://cryptodeeptech.ru/milk-sad-vulnerability-in-libbitcoin-explorer/
- https://cryptodeep.ru/milk-sad-vulnerability-in-libbitcoin-explorer/
- https://www.sciencedirect.com/science/article/abs/pii/S092054892100057X
- https://arxiv.org/html/2109.07634v3
- https://pmc.ncbi.nlm.nih.gov/articles/PMC9505189/
- https://arxiv.org/html/2508.01280v1
- https://papers.ssrn.com/sol3/Delivery.cfm/e172cc8b-0789-4859-b4d4-144bf77f2d1d-MECA.pdf?abstractid=4627221&mirid=1
- https://milksad.info
- https://milksad.info/disclosure.html
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://nvd.nist.gov/vuln/detail/CVE-2025-9090
- https://security.snyk.io/vuln/SNYK-UNMANAGED-LIBBITCOINLIBBITCOINEXPLORER-5891151
- https://www.nasdaq.com/articles/the-milk-sad-vulnerability-and-what-it-means-for-bitcoin
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://blog.inhq.net/posts/milk-sad-vuln1/