TL;DR
- 메타마스크 등 웹3 브라우저 확장 프로그램은 개인키를 브라우저 내 IndexedDB에 암호화된 볼트(Vault) 형태로 저장합니다.
- 일반적인 브라우저 설정의 '인터넷 사용 기록 삭제(쿠키 및 캐시 삭제)'는 IndexedDB 저장소나 확장 프로그램 자체 스토리지를 완벽히 비우지 못하는 경우가 많습니다.
- 유출된 볼트 파일은 오프라인 상태에서 무차별 대입(Brute-force) 공격 대상이 되므로, 확장 프로그램 삭제 후 OS 경로 내 데이터 폴더를 직접 삭제해야 안전합니다.
- 드라이브 전체 포맷을 진행하지 않고 PC를 양도하거나 브라우저 프로필만 정리할 경우, 남아 있는 잔여 데이터베이스 파일을 영구 소거해야 합니다.
핵심 개념: 브라우저 캐시 삭제로 지갑 볼트가 사라지지 않는 이유
메타마스크(MetaMask), 팬텀(Phantom), 라비(Rabby)와 같은 비수탁형(Non-custodial) 암호화폐 지갑 확장 프로그램은 사용자의 비밀 복구 구문(시드 문구)과 개인키를 중앙 서버가 아닌 로컬 PC에 보관합니다. 이때 브라우저의 IndexedDB 및 LocalStorage API를 사용하여 데이터를 파일 시스템 형태로 기록합니다.
사용자가 지갑에서 '로그아웃' 버튼을 누르면 메모리 상의 복호화 세션만 종료될 뿐, 비밀번호로 암호화된 볼트 바이너리 데이터는 로컬 디스크에 그대로 유지됩니다. 또한 브라우저 설정에서 흔히 수행하는 '캐시된 이미지 및 파일', '쿠키 및 기타 사이트 데이터' 삭제 작업은 일반 웹사이트의 임시 캐시를 비울 뿐, 설치된 브라우저 확장 프로그램의 고유 식별자(Extension ID) 디렉터리 내부에 생성된 IndexedDB 데이터베이스(.ldb, .log 파일)까지 일괄 정리해주지 않습니다.
만약 이 볼트 파일이 포함된 상태로 중고 PC가 타인에게 넘어가면, 구매자나 제3자가 전문 복구 툴이나 파일 탐색기를 통해 해당 데이터베이스를 추출할 수 있습니다. 볼트 자체가 AES 등으로 암호화되어 있더라도, 공격자는 웹 브라우저의 비밀번호 입력 시도 횟수 제한을 우회하여 자신의 고성능 GPU 연산 장비에서 해시캣(Hashcat) 등의 도구로 오프라인 무차별 대입(Brute-force) 공격을 수행할 수 있습니다. 비밀번호가 복잡하지 않다면 단시간 내에 시드 문구가 노출될 위험이 존재합니다.
단계별 실행 가이드: 크롬·엣지 지갑 볼트 및 IndexedDB 수동 영구 소거
윈도우 기반 환경에서 브라우저 확장 프로그램의 암호화폐 지갑 데이터를 안전하게 파기하는 공식 절차입니다.
1단계: 브라우저 내 확장 프로그램 정식 삭제
- 크롬 또는 엣지 브라우저를 실행합니다.
- 주소창에
chrome://extensions또는edge://extensions를 입력하여 확장 프로그램 관리 페이지로 이동합니다. - 설치된 지갑 확장 프로그램(예: MetaMask)의 [삭제] 버튼을 클릭하여 브라우저 등록 정보를 제거합니다.
- 브라우저를 완전히 종료합니다. (작업 관리자
Ctrl + Shift + Esc를 열어 백그라운드 프로세스에 브라우저가 실행 중인지 확인하고 모두 종료합니다.)
2단계: 실제 저장 디렉터리 접근 및 볼트 파일 삭제
브라우저 UI에서 확장 프로그램을 제거했더라도 디스크의 프로필 폴더 내에 잔여 데이터베이스 조각이 남아 있을 수 있습니다.
Win + R키를 눌러 실행 창을 엽니다.- 사용 중인 브라우저 경로를 입력하고 확인을 누릅니다.
- Google Chrome:
%LOCALAPPDATA%\Google\Chrome\User Data\Default\IndexedDB- Microsoft Edge:%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\IndexedDB(다중 프로필을 사용 중이었다면Default대신Profile 1,Profile 2경로도 확인해야 합니다.) - 폴더 내부에서 확장 프로그램 ID가 포함된 폴더를 탐색합니다.
- 메타마스크 크롬/엣지 고유 확장 프로그램 ID:
nkbihfbeogaeaoehlefnkodbefgpgknn- 탐색 대상 폴더명 예시:chrome-extension_nkbihfbeogaeaoehlefnkodbefgpgknn_0.indexeddb.leveldb - 해당 폴더 전체를 선택하여 완전히 삭제(
Shift + Delete)합니다. - 상위 경로인
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Local Extension Settings폴더로 이동하여 동일한 확장 프로그램 ID 폴더가 남아있는지 확인하고 함께 삭제합니다.
3단계: 파일 슬랙 및 잔여 클러스터 덮어쓰기
단순 파일 삭제는 파일 할당 테이블(FAT/MFT)의 인덱스만 지울 뿐 디스크 섹터에 데이터 본문이 남아 있을 수 있습니다. SSD의 경우 TRIM 기능이 활성화되어 있다면 일정 시간 후 가비지 컬렉션을 통해 지워지지만, 즉각적인 안전을 위해 빈 공간을 소거하는 것이 바람직합니다.
Win + X키를 누르고 '터미널(관리자)' 또는 '명령 프롬프트(관리자)'를 실행합니다.- 브라우저 데이터가 있던 C 드라이브의 미사용 빈 공간을 0으로 덮어쓰기 위해 다음 내장 명령어를 실행합니다.
cmd cipher /w:C:\Users\사용자계정명\AppData\Local - 작업이 완료될 때까지 대기합니다. 이 과정은 지정된 디렉터리가 속한 볼륨의 여유 공간을 덮어써 복구 프로그램의 시그니처 스캔을 무력화합니다.
비교/체크리스트: 브라우저 정리 방식별 암호화폐 흔적 소거 범위
| 처리 방식 | 쿠키/세션 삭제 | 암호화 볼트(IndexedDB) 삭제 | 오프라인 브루트포스 방어 | 복구 도구 스캔 방어 |
|---|---|---|---|---|
| 브라우저 일반 캐시 삭제 | ○ | ✕ (대부분 유지됨) | 위험 | 복구 가능 |
| 지갑 앱 로그아웃만 수행 | ○ | ✕ (볼트 파일 보존) | 위험 | 복구 가능 |
| 확장 프로그램 '삭제' 버튼 클릭 | ○ | △ (일부 레벨DB 잔여) | 부분 방어 | 딥스캔 시 복구 가능 |
| 로컬 IndexedDB 경로 직접 삭제 + Cipher 소거 | ○ | ○ | 안전 | 스캔 무력화 |
| 드라이브 Secure Erase / Sanitize | ○ | ○ | 최상 | 영구 파기 확인 |
실무 사례: 중고 PC에서 복원된 지갑 볼트와 오프라인 무차별 대입 공격 위험
실제 하드웨어 점검 현장에서는 윈도우 계정을 삭제하지 않고 단순히 바탕화면 정리와 웹 브라우저 캐시 삭제만 진행한 채 매각된 PC를 종종 접하게 됩니다. 이러한 기기에서 상용 데이터 복구 도구나 포렌식 분석기를 가동하면 AppData\Local 하위 디렉터리에서 *.ldb 및 *.log 포맷의 LevelDB 트랜잭션 로그가 손쉽게 검출됩니다.
이 파일들을 텍스트 편집기나 데이터베이스 뷰어로 열어보면 시드 문구 자체가 평문으로 보이진 않지만, {"data":... , "iv":... , "salt":...} 구조를 갖는 암호화된 JSON 볼트 블록이 그대로 노출됩니다. 공격자는 웹사이트의 5회 비밀번호 오류 제한과 같은 브라우저 보안 정책의 통제를 받지 않습니다. 해당 텍스트를 파싱하여 GPU 해시 크래커에 입력하면 일반적인 8~10자리 영문·숫자 조합의 비밀번호는 수 시간에서 수일 내에 복호화될 수 있습니다. 개인키 잔여 파일 삭제가 단순 캐시 비우기 수준에서 끝나선 안 되는 이유입니다.
자주 묻는 질문(FAQ)
Q1. 브라우저 동기화(구글 계정 동기화)를 켜둔 상태라면 로컬 폴더만 지워도 되나요?
아닙니다. 구글이나 MS 계정 동기화 항목에 '확장 프로그램'이 포함되어 있으면, 새 기기에서 로그인할 때 해당 지갑 앱이 자동 재설치될 수 있습니다. 다만 메타마스크와 같은 탈중앙화 지갑은 보안상 시드 문구와 볼트 파일 자체를 구글 클라우드로 동기화하지 않으므로, 로컬 디렉터리의 볼트 파일만 파기하면 해당 PC에서의 개인키 유출은 차단됩니다.
Q2. 윈도우 'PC 초기화(내 파일 유지)'를 실행하면 지갑 볼트도 함께 삭제되나요?
'내 파일 유지' 옵션은 사용자 계정 폴더와 AppData 내부의 일부 설정 데이터를 보존하므로 IndexedDB 볼트가 잔존할 가능성이 높습니다. 처분을 목적으로 초기화를 진행할 때는 반드시 '모든 항목 제거'를 선택하고, 드라이브 정리(데이터 완전 삭제) 옵션을 활성화해야 파일 시스템 레벨에서 영구 삭제됩니다.
Q3. 비밀번호를 16자리 이상 특수문자를 섞어 길게 설정했다면 볼트가 남아도 안전한가요?
암호학적으로 AES-256 암호화 볼트를 복잡한 무작위 16자리 이상의 패스워드로 보호하고 있다면 현실적인 시간 내에 브루트포스로 해독하기는 매우 어렵습니다. 그러나 자산 탈취의 위험을 확률에 맡길 이유는 없습니다. 복호화 연산 기술의 발전이나 취약점 발견 가능성을 배제할 수 없으므로 디스크에서 물리적 흔적을 원천 삭제하는 것이 기본 원칙입니다.
용어 설명
- IndexedDB: 웹 브라우저가 사용자의 컴퓨터 로컬 디스크에 대용량 구조화 데이터를 저장할 수 있도록 지원하는 트랜잭션 데이터베이스 시스템입니다.
- 볼트(Vault): 암호화폐 지갑에서 개인키와 니모닉 시드 문구를 사용자가 지정한 비밀번호를 통해 암호화(AES 등)하여 저장해 둔 데이터 블록입니다.
- 오프라인 무차별 대입(Brute-force) 공격: 온라인 서비스의 로그인 방어 체계를 거치지 않고, 로컬에 저장된 암호화 데이터 원본을 대상으로 무차별 비밀번호 조합을 고속으로 대입해 암호를 풀어내는 공격 기법입니다.
- LevelDB: 구글이 개발한 고성능 키-값(Key-Value) 임베디드 데이터베이스 엔진으로, 크롬 계열 브라우저의 IndexedDB 내부 백엔드 저장소로 활용됩니다.
마무리
중고 PC 처분 시 운영체제를 재설치하지 않거나 단순 포맷만으로 기기를 넘길 경우, 브라우저 깊숙한 곳에 남아 있는 웹3 지갑의 잔여 데이터는 예기치 못한 금융 자산 유출로 이어질 수 있습니다. 판매 전 지갑 확장 프로그램의 캐시와 IndexedDB 디렉터리를 물리적으로 정리하고 여유 공간 소거 작업을 반드시 병행하십시오.
기기를 매각하기 전 복잡한 소프트웨어 라이선스 해제나 브라우저 개인정보 정리, 저장장치의 물리적 데이터 파기 작업이 부담스럽다면 체계적인 데이터 소거 방침을 갖춘 전문 업체를 통해 안전하게 처리하는 것도 좋은 방법입니다. 데이터 정리가 끝났다면 이제 가치를 확인할 차례입니다. 무료 견적 받기로 안전한 PC 처분을 시작해 보세요.