BY KEYHUNTER 13.03.2025
약한 의사난수 생성기(PRNG)를 사용한 암호화 키 생성은 블록체인 시스템의 중요한 보안 취약점입니다. 이 분석은 함수의 구조적 결함 random_key
, 이를 악용하는 메커니즘, 암호화폐 지갑에 대한 의미를 살펴봅니다.
PRNG 취약점의 이론적 기초
PRNG에 대한 암호화 요구 사항 :
비트코인에서 사용되는 ECDSA 알고리즘에서 난수는 k
서명 형성에서 핵심적인 역할을 합니다. 난수의 재사용 또는 예측 가능성을 통해 다음 공식을 사용하여 개인 키를 계산할 수 있습니다.
s=k−1(H(m)+rd)mod Ns = k^{-1}(H(m) + rd) \mod Ns=k−1(H(m)+rd)modN
여기서 누출로 인해 방정식이 (개인 키) 2k
에 대해 풀릴 수 있습니다 .d
일반적인 취약점 분석
공격 유형 | 구현 메커니즘 | 실습에서의 예 |
---|---|---|
약한 엔트로피 시드 | 시간을 초기값으로 사용 | 케이크월렛(2018-2021) 1 |
알고리즘 북마크 | PRNG 상태의 고의적 누출 | BitcoinJS 6 라이브러리 의 경우 |
국가를 회복하다 | 출력 시퀀스 분석 | Windows XP PRNG 3 공격 |
브라우저를 사용하는 BitcoinJS 라이브러리의 경우 Math.random()
예측 가능성은 다음과 같이 향상되었습니다.
실제적인 의미
- Cakewallet 사건 (2021년):
3년에 걸쳐 9,500만 개의 취약한 주소가 생성되었으며, 평균 몇 개월 안에 장비에 대한 무차별 대입 테스트가 가능할 가능성이 있습니다. 1 . - Randstorm 취약점 : 취약한 PRNG 6을
통해 생성된 키가 있는 지갑에서 21,000 BTC(2023년 기준 약 7억 5천만 달러)가 발견되었습니다 . k
비트코인 복제 통계 :
개선을 위한 권장 사항
- 하드웨어 엔트로피 소스 :
최소 2비트/초 속도의 TRNG(Thermal Noise RNG) 사용 5 . - 암호화 프로토콜 : CTR_DRBG 5
의 546.72에 비해 277.96 사이클/바이트의 사이클로바이트 성능을 제공하는 BKRNG 유형 알고리즘 구현 . - 구현 검증 :
실험 데이터는 HMAC-SHA512를 사용하여 결정론적 BIP-32 키 생성 체계로 전환하면 기존 솔루션에 비해 예측 가능성 위험이 3배 감소한다는 것을 보여줍니다 . FIPS 140-3 레벨 3 과 같은 최신 구현은 지속적인 테스트 검증 메커니즘을 통해 생성기 상태가 손상되어도 보호를 제공합니다 .
인용문:
- https://dzen.ru/a/ZZ7rl5jhoGyK-Bsj
- https://habr.com/ru/articles/430240/
- https://kiwibyrd.org/2013/06/06/0712/
- https://phemex.com/ru/academy/public-key-vs-private-key
- https://www.oaepublish.com/articles/jsss.2023.45
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://vc.ru/education/1575030-pochemu-ne-sushestvuet-sluchainosti-v-kompyuterah-i-blokcheine
- https://habr.com/ru/articles/773412/
- https://tangem.com/ru/blog/post/entropy/
- https://cryptomus.com/ru/blog/how-to-secure-your-crypto-wallet
- https://habr.com/ru/articles/771980/
- https://ru.tradingview.com/news/forklog:3031939c867b8:0/
- https://wiki.pztrn.name/software/qemu/not_enough_entropy/
- https://www.computerra.ru/183451/prng/
- https://crypto.stackexchange.com/questions/113456/can-we-construct-a-cpa-secure-scheme-with-a-prng-and-a-random-key
- https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D 1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D1%81%D1%82%D0%BE%D0%B9%D0%BA%D0%B8%D0%B9_%D0 %B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB
- https://blog.whitebit.com/what-is-a-private-key-in-crypto/
- https://www.hx.technology/ru/blog-ru/top-blockchain-security-threats-in-2024-ru
- https://intuit.ru/studies/courses/3520/762/lecture/32518
- https://www.smart-soft.ru/blog/informatsionnaja-bezopasnost/
- https://ru.stackoverflow.com/questions/523929/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%BA%D0%BB% D1%8E%D1%87%D0%B0-%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%BE%D0%BC-securerandom-getinstancestrong
- https://vc.ru/dev/62779-generatory-sluchainyh-chisel-v-smart-kontraktah
- https://encyclopedia.pub/entry/30451
- https://firstvds.ru/technology/kak-sozdat-klyuch-dlya-avtorizacii-po-ssh-i-dobavit-ego-na-server
- https://habr.com/ru/companies/distributedlab/articles/413627/
- https://tangem.com/ru/blog/post/how-to-create-a-private-key-for-a-crypto-wallet-with-and-without-a-seed-phrase/
- https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%D0%BD