대부분 블록체인의 개인 키는 256비트 문자열입니다. 특정 주소의 비밀번호를 찾으려면 현대 컴퓨터로 수백만 년이 걸릴 것입니다.
그러나 암호화폐 지갑은 애플리케이션 버그와 사용자 오류로 인해 여전히 해커 공격에 취약합니다. 해킹의 6가지 방법을 알려드리고, 자금 도난을 방지하는 방법을 설명드리겠습니다.
1. 약한 주소 – 취약한 키
난수 생성기(RNG)의 버그로 인해 지갑은 몇 개의 난수 바이트로만 개인 키를 만들 수 있습니다. 이상적으로는 이 애플리케이션은 다음과 같이 작동합니다.
- 주어진 길이의 난수를 생성합니다.
- 이를 해당 블록체인의 짧은 키 형식으로 변환합니다.
- 키로부터 공개 주소를 생성합니다.
이 경우, 숫자 ffffffffffffffffffffffffffffffffffffffbaaedce6af48a03bbfd25e8cd0364110은 주소 1CaZUpjd7VmsyWDFrk9WG9nTYMLcLLvvCw를 제어하는 키 5Km2kuu7vtFDPpxywn4u3NLpbr5jKpTB3jsuDU2KYEqeoQJAair로 변환됩니다.
하지만 가끔 RNG가 실수를 해서 00000000000000000000000000000000000000000000000ffa3cafff00000000000000000000과 같이 0이 많이 들어간 문자열을 생성할 때가 있습니다. 실제로는 무작위 숫자가 아닌 것이죠. 해커들은 이러한 지갑을 약한 주소라고 부릅니다.
공격자는 봇을 생성합니다. 해당 알고리즘은 비트코인과 이더리움 네트워크의 취약한 주소 잔액을 정기적으로 확인합니다. 만약 사용자가 그러한 주소를 생성하고 해당 주소로 암호화폐를 보내면, 봇은 즉시 그 주소를 훔칩니다.
자신을 보호하는 방법: 지갑을 만든 후, 그 안에 있는 심볼이 정말 무작위인지 확인하세요. Swippcore와 같은 오픈소스 도구를 사용하여 로컬 컴퓨터에서 짧은 키를 긴 키로 변환합니다.
2. 무작위 취약점 – 거래에서 개인 키 추출
비트코인은 UTXO, 즉 사용되지 않은 출력의 형태로 존재합니다. 자금을 보낼 때 지갑은 필요한 금액을 수집하고 개인 키와 난수(nonce)를 조합하여 거래에 서명합니다.
RNG 버그로 인해 애플리케이션이 동일한 nonce로 여러 거래에 서명할 수 있습니다. 공격자가 해당 거래의 서명을 일치시키고 해독하면 개인 키를 추출할 수 있습니다.
이 방법을 무작위 취약성이라고 합니다. 해커들은 이를 이용해 484 BTC 상당의 지갑 2,000개 이상을 해킹했습니다.
Kudelski Security의 조사에 따르면 이러한 취약점은 Ethereum 및 EVM 호환 네트워크의 지갑에서도 발생합니다.
자신을 보호하는 방법: Bitcoin Core 및 다른 블록체인의 유사 항목을 포함하여 지갑 애플리케이션을 적시에 업데이트하세요.
3. 약한 Brainwallet – 비무작위 데이터에서 키 생성
Brainwallet은 무작위 숫자 대신 사용자 문구를 기반으로 개인 키를 생성하는 방법입니다. 쉽게 기억할 수 있기 때문에 문자 그대로 “머리 속에 간직”할 수 있습니다.
사용자는 종종 12341234와 같은 명확한 조합이나 전화번호, 영화 대사 등 단일 단어에서 키를 생성합니다. 해커는 인간의 예측 가능성을 이용합니다. 널리 사용되거나 유출된 비밀번호로 키를 만든 후 해당 지갑에서 암호화폐를 인출합니다. 따라서 2009년 이후 공격자들은 19,000개가 넘는 비트코인 지갑을 해킹하여 최소한 4,000개의 BTC를 훔쳤습니다.

자신을 보호하는 방법: Brainwallet을 사용하지 말고, 적어도 소문자와 대문자, 숫자, 특수 문자로 구성된 정말 복잡한 비밀번호를 만드세요.
4. 피싱 – 사용자가 직접 키를 제공함
기술적인 관점에서 지갑에 접근하는 가장 쉬운 방법은 소유자에게 키를 보내달라고 설득하는 것입니다. 이를 위해 공격자는 거래소 및 지갑 지원 직원, 유명인사 또는 보안 전문가인 척합니다.
예를 들어, 2023년 2월 해커는 회사를 대신하여 Trezor 사용자에게 가짜 이메일을 보내 지갑 소프트웨어가 해킹당했다는 사실을 알리고 “검증”을 위한 시드 문구를 제공하도록 요청했습니다.
또한 공격자는 온체인 분석 도구를 사용하여 비트코인 고래(유명 인사, 블록체인 프로젝트 매니저, 암호화폐 영향력자)의 지갑을 공격합니다. 그들은 개인화된 편지를 쓰고 개인적인 의사소통 채널을 통해 피해자에게 연락합니다.
자신을 보호하는 방법: 누구에게도 개인 키나 시드 문구를 보내지 마세요.
5. 공개 키 – GitHub 모니터링
블록체인 애플리케이션과 스마트 계약 개발자는 때때로 개인 지갑을 사용하여 코드의 기능을 테스트합니다. 호스팅 서비스에 프로젝트를 게시할 때 실수로 파일에 키를 남겨둘 수 있습니다.
해커는 GitHub, Pastebin 및 기타 인기 플랫폼의 저장소에 대한 업데이트와 다운로드를 모니터링하여 텍스트 노트를 저장합니다. 이들은 “5”로 시작하는 문자열(WIF 형식 비트코인 키)을 확인하고, 시드 구문 사전의 단어를 포함하는 문자열을 확인하거나, 개인 키의 길이와 일치하는 문자열을 확인합니다.
자신을 보호하는 방법: 암호화되지 않은 파일로 컴퓨터의 비밀번호를 저장하지 말고, 개인 지갑을 업무 목적으로 사용하지 마세요.
6. 사기 사이트 – 손상된 키 생성
2019년부터 해커들은 온라인 지갑 생성기를 해킹 도구로 사용해 왔습니다. 이러한 서비스는 서로 다른 사용자에게 동일한 키를 발급하거나 가로채기 위한 취약점을 포함할 수 있습니다.
예를 들어, 2023년 7월, 사용자 r/jdmcnair는 온라인 서비스에서 생성한 종이 지갑에서 3,000달러 상당의 비트코인이 도난당했다고 신고했습니다.
자신을 보호하는 방법: 웹사이트를 사용하지 마세요. 하드웨어 장치나 지갑 애플리케이션에만 주소를 생성하세요.
안전한 지갑을 만드는 방법
개인 키는 대부분의 비밀번호보다 안전하지만, 애플리케이션 버그와 인간의 실수에 여전히 취약할 수 있습니다.
해킹을 방지하려면 안전한 비트코인 지갑을 만드는 방법에 대한 지침을 따르세요.
- 웹사이트를 사용하여 주소를 생성하지 마세요. 하드웨어 지갑과 앱만 사용하세요.
- 기억할 수 있는 문구와 비밀번호로 키를 만들지 마세요. RNG로 만든 조합보다 취약할 수 있습니다.
- 지갑을 생성한 후, 지갑 안의 심볼이 실제로 무작위인지 확인하세요. 키에 있는 문자의 절반 이상이 0이면 무차별 대입 공격에 취약해집니다.
또한, Web3 애플리케이션을 개발할 때 개인 암호화폐 주소를 사용하지 않고 지갑을 정기적으로 업데이트하는 것이 중요합니다.
기억하세요: 개인 키는 제3자에게 보내서는 안 됩니다. 그들이 무슨 말을 하든 말입니다.