용어집 / 지갑과 수탁
브레인 월렛
- 브레인 월렛이란 무엇입니까?
- 브레인 월렛은 외워 둔 문구를 해시하여 곧바로 개인 키로 바꾸는 설계로, 연구자들이 대규모로 이를 비웠으며 유지 관리되는 지갑 중 이 기능을 아직 제공하는 지갑은 없습니다.
매력은 분명했습니다. 문장을 외우고, 아무것도 지니지 않고 국경을 넘은 뒤, 다른 쪽에서 지갑을 다시 만드는 것입니다. 결함도 똑같이 단순했습니다. 사람들은 추측 가능한 문장을 고르고, 공격자는 후보를 오프라인에서 무료로 시험할 수 있기 때문입니다. 2016년의 한 학술 연구는 2011년과 2015년 사이에 1,806 비트코인을 보유한 브레인 월렛 884개를 식별했으며, 그중 21개를 제외한 모두가 비워져 있었습니다.
작동 방식
현황: 브레인 월렛은 2015년에 공개적인 크래킹 도구가 등장한 뒤 폐기되었으며, 현재 유지 관리되는 지갑 중 이 옵션을 제공하는 지갑은 없습니다. 기기가 생성한 복구 문구가 이를 완전히 대체했습니다.
구성은 코드 한 줄입니다. 문구를 가져다 SHA-256을 적용하고, 그 결과로 나온 32바이트를 개인 키로 취급합니다. 솔트도, 무작위 요소도, 의도적인 지연도 없습니다. 따라서 같은 문구는 지구상에서 그 문구를 떠올리는 모든 사람에게 같은 키를 만들어 내며, 이는 비밀을 검색 문제로 바꿉니다.
공격자는 이를 곧바로 악용합니다. 한 번이라도 잔액을 보유한 모든 주소의 목록을 만들고, 이를 빠른 구성원 판별 구조에 적재한 뒤, 후보 문구를 수백만 건 단위로 해시합니다. 가사, 성경 구절, 영화 대사, 과거 유출 자료의 비밀번호, 그리고 그 출처들을 순열로 조합해 만들 수 있는 모든 문자열이 대상입니다. 각 해시는 마이크로초 단위로 주소 목록과 대조됩니다. Ryan Castellucci는 2015년 8월에 DEF CON 23에서 이 공격을 시연하고 brainflayer를 공개했으며, 이 도구가 그 기법을 일상적인 것으로 만들었습니다. 같은 연구팀은 새로운 입금을 감시하는 경쟁 드레이너가 십여 곳 남짓이라고 집계했으며, 그래서 자금이 있는 브레인 월렛은 보통 하루 안에, 흔히 몇 분 안에 비워졌습니다.
인간의 문구 선택은 고칠 수 없는 부분입니다. 여러분이 독창적이라고 믿는 문장조차 무작위 키가 차지하는 2의 256제곱보다 훨씬 작은 검색 공간에 들어가며, 공격자는 사람들이 실제로 고르는 문구만 있으면 됩니다.
어디에서 보이는가
브레인 월렛은 역사적인 것이지만, 그 발상은 새로운 이름으로 계속 돌아오므로 알아볼 가치가 있습니다. Keybase가 2014년에 공개한 WarpWallet은 scrypt와 PBKDF2에 이메일 주소를 솔트로 더하는 방식으로 이 개념을 구하려 했으며, 이는 시도당 비용을 높이지만 입력을 사람이 골랐다는 사실은 바꾸지 못합니다.
실제로 혼동이 일어나는 지점은 제대로 된 복구 문구를 외우는 경우입니다. 하드웨어 지갑이 생성한 열두 단어는 128비트의 기계 엔트로피를 지니며, 여러분이 그것을 함께 외우든 아니든 강도를 유지합니다. 여러분이 지어낸 문구는 여러분의 상상력이 담고 있는 만큼의 엔트로피를 지니며, 이는 체감보다 훨씬 적습니다. 어떤 웹사이트, 앱, 또는 "custom vanity seed" 도구가 여러분이 떠올린 문장을 입력하라고 하면서 그 대가로 지갑을 약속한다면, 그것을 닫으십시오.
브레인 월렛 vs 패스프레이즈
브레인 월렛은 비밀 전체이고, BIP-39 패스프레이즈는 기계가 생성한 단어 위에 덧쌓는 추가 요소입니다. 그 차이가 공격을 결정합니다. 브레인 월렛을 무차별 대입하려면 공격자는 주소가 공개되어 있으므로 단어 목록과 전력 외에 아무것도 필요로 하지 않습니다. 패스프레이즈를 무차별 대입하려면 공격자는 이미 여러분의 복구 단어를 보유해야 하며, 이는 공격이 물리적 침해 이후에야 시작된다는 뜻입니다. 약한 인간 입력은 두 경우 모두 위험하지만, 그중 하나만 자금이 들어오는 순간부터 인터넷 전체에 노출됩니다.