
USB 메모리에 민감한 파일을 담아야 할 때, 보통은 비트로커(BitLocker)나 베라크립트(VeraCrypt) 같은 소프트웨어 암호화를 쓰죠. 그런데 여기서 한 발 더 나아간 사람이 있어요. Rootkit Labs 블로그의 저자는 아예 USB 드라이브의 펌웨어 레벨에서 숨겨진 암호화 볼트를 구현하는 프로젝트를 진행 중인데요. 컴퓨터에 꽂으면 그냥 평범한 USB로 보이지만, 특정 조건을 만족시켜야만 숨겨진 암호화 영역이 모습을 드러내는 물건이에요. 데이터를 잠그는 걸 넘어 "존재 자체를 숨긴다"는 점에서 소프트웨어 방식과는 차원이 다른 접근이거든요.
USB 메모리는 사실 작은 컴퓨터예요
이 프로젝트를 이해하려면 USB 메모리의 구조부터 알아야 해요. 우리가 '그냥 저장장치'라고 생각하는 USB 메모리는 사실 컨트롤러(작은 CPU)와 낸드 플래시(실제 저장 공간)로 이뤄진 작은 컴퓨터예요. 컴퓨터에 꽂으면 컨트롤러 안의 펌웨어(장치에 내장된 소프트웨어)가 USB 대용량 저장장치 프로토콜(Mass Storage Class)로 호스트와 대화하면서 "저는 몇 GB짜리 디스크입니다"라고 자기소개를 하고, 운영체제는 그 말을 그대로 믿어요.
여기가 핵심 포인트예요. 호스트 컴퓨터는 펌웨어가 보여주는 것만 볼 수 있어요. 실제 플래시가 더 큰데 펌웨어가 일부만 있다고 말하면, 운영체제 입장에서 나머지 공간은 세상에 존재하지 않는 거예요. 포맷을 해도, 파티션 도구로 샅샅이 뒤져도 안 보여요. 저자의 접근은 바로 이 '펌웨어가 곧 진실'이라는 성질을 이용하는 거예요. 평소엔 일반 영역만 노출하다가, 정해진 언락 절차(특정 데이터 패턴을 써 넣는다든지 하는 약속된 신호)가 들어오면 그때서야 숨겨진 영역을 열어주는 거죠. 물론 숨김 영역 자체는 AES 같은 검증된 알고리즘으로 암호화해서, 설령 영역이 열리더라도 키 없이는 읽을 수 없게 이중으로 방어하고요.
소프트웨어 히든 볼륨과 뭐가 다를까
"베라크립트에도 히든 볼륨 기능 있잖아?" 하실 수 있는데, 결정적인 차이가 있어요. 소프트웨어 방식은 어쨌든 호스트 OS 위에서 동작해요. 베라크립트가 설치돼 있다는 사실, 컨테이너 파일의 존재, 최근 연 문서 목록 같은 흔적이 OS 어딘가에 남을 수 있죠. 반면 펌웨어 레벨 숨김은 OS가 볼 수 있는 세계의 바깥에 있어요. 어떤 프로그램 설치도 필요 없고, 겉으로는 정말 그냥 흔한 USB거든요.
물론 만능은 아니에요. 칩을 물리적으로 분리해서 낸드 플래시를 직접 읽어내는 수준의 포렌식 분석이라면 "선언된 용량보다 실제 칩이 크다"는 것, 즉 숨겨진 영역의 '존재'까지는 들킬 수 있어요. 그래서 암호화가 반드시 함께 가야 하는 거고요. 존재를 숨기는 것과 내용을 지키는 것(암호화)은 서로 다른 방어선이라는 게, 이런 프로젝트에서 배울 수 있는 중요한 보안 개념이에요.
양날의 검, 그리고 업계 맥락
한 가지 흥미로운 관점은 이 프로젝트가 BadUSB 공격과 동전의 양면이라는 거예요. "USB 펌웨어를 내 마음대로 만들 수 있다"는 사실은 방어(비밀 금고)에도 쓰이지만, 공격(키보드로 위장해서 명령어를 몰래 입력하는 USB)에도 쓰이거든요. 그래서 이런 프로젝트를 이해하는 건 곧 USB라는 물건을 얼마나 믿어야 하는지 감각을 기르는 일이기도 해요. 출처 모를 USB를 함부로 꽂으면 안 되는 이유를 원리부터 이해하게 되죠. 상용 제품 쪽을 보면 킹스턴 IronKey나 Apricorn처럼 키패드가 달린 하드웨어 암호화 USB가 이미 있는데, 과거 일부 하드웨어 암호화 제품에서 인증 로직 결함이 발견된 사례도 있었어요. "하드웨어니까 무조건 안전"이 아니라, 구현을 들여다보고 검증할 수 있느냐가 중요하다는 교훈이에요.
한국 개발자에게는
이 프로젝트의 진짜 가치는 '따라 만들어보기 좋은 임베디드 + 보안 교재'라는 점이에요. 요즘은 라즈베리파이 피코(RP2040) 같은 몇 천 원짜리 보드와 TinyUSB 라이브러리 덕분에 USB 장치를 직접 만들어보는 진입장벽이 확 낮아졌거든요. USB 프로토콜, 플래시 메모리의 특성, 디스크 암호화까지 한 프로젝트에서 전부 만져볼 수 있어요. 다만 한 가지는 꼭 기억하세요. 실제로 중요한 데이터는 직접 만든 암호화 장치보다 검증된 도구에 맡기는 게 원칙이에요. 암호학의 오랜 격언처럼, 자기가 만든 암호 시스템의 허점은 자기 눈에는 절대 안 보이거든요.
한 줄 정리: USB의 '진실'은 펌웨어가 정한다 — 이걸 이해하면 나만의 비밀 금고도 만들 수 있고, 남의 USB를 함부로 믿으면 안 되는 이유도 알게 된다.
여러분이라면 정말 민감한 데이터를 어디에 보관하시겠어요? 클라우드 암호화, 소프트웨어 볼트, 하드웨어 암호화 USB… 각자의 위협 모델에 따른 선택이 궁금하네요.
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공