안드로이드 로그구조 파일시스템의 안전한 삭제 방안

본 논문은 안드로이드 스마트폰에 널리 사용되는 로그구조 파일시스템 YAFFS의 데이터 삭제 메커니즘을 분석하고, 기존 삭제 방식이 평균 44시간, 사용이 중단된 경우 무기한으로 데이터를 남긴다는 사실을 밝힌다. 이를 해결하기 위해 사용자 수준의 ‘Purging’과 ‘Ballooning’, 커널 수준의 ‘Zero Overwriting’ 세 가지 기법을 제안·구현하고, Nexus One 기기에서 성능·배터리·플래시 수명에 미치는 영향을 평가한다.

저자: Joel Reardon, Claudio Marforio, Srdjan Capkun

안드로이드 로그구조 파일시스템의 안전한 삭제 방안
이 논문은 안드로이드 스마트폰에 널리 채택된 로그구조 파일시스템인 YAFFS(Yet Another Flash File System)의 데이터 삭제 메커니즘을 면밀히 조사하고, 기존 파일 시스템 설계가 보안 삭제 요구를 충족하지 못한다는 사실을 입증한다. 연구는 크게 네 부분으로 구성된다. **1. 배경 및 시스템 모델** 플래시 메모리는 블록 단위로만 지울 수 있고, 쓰기·삭제가 기존 데이터를 직접 덮어쓰는 것이 아니라 새로운 로그 엔트리를 추가하는 방식으로 동작한다. 이러한 특성 때문에 로그구조 파일시스템(LFS)은 파일 헤더와 데이터 청크를 순차적으로 로그에 기록하고, 가비지 컬렉터가 필요에 따라 전체 블록을 재배치·소거한다. YAFFS는 안드로이드 내부 저장소에서 사용되는 대표적인 LFS이며, 파일 삭제는 메타데이터만 마킹하고 실제 데이터는 가비지 컬렉션이 수행될 때까지 남아 있다. **2. 기존 삭제 메커니즘의 한계 실증** 연구팀은 커널 레벨에서 YAFFS를 수정해 블록 할당·청크 쓰기 이벤트를 마이크로초 단위로 로깅하는 모듈을 구현하였다. Nexus One(안드로이드 2.2.1)에서 27.9일(670시간) 동안 일상적인 사용(웹 브라우징, 지도, 사진, SMS 등)을 수행하며 수집한 로그를 분석한 결과, 블록이 실제로 재할당(즉, 데이터가 영구적으로 사라지는)되는 평균 시간은 44.7시간이며, 최악의 경우 327.7시간에 달했다. 이는 사용자가 파일을 “삭제”했을 때 데이터가 수십 시간에서 수백 시간까지 물리적으로 남아 있음을 의미한다. 특히 기기가 사용되지 않은 상태에서는 데이터가 무기한 보관될 수 있다. 또한, 파일 덮어쓰기(overwrite)와 파일 단위 암호화가 LFS 환경에서 효과가 없음을 실험적으로 확인했다. 파일을 덮어쓰면 새로운 청크가 로그에 추가될 뿐, 기존 청크는 그대로 남아 가비지 컬렉션이 일어나기 전까지 복구 가능하다. 파일을 암호화해도 평문 청크는 그대로 존재한다. 따라서 기존 블록 기반 보안 삭제 기법은 로그구조 파일시스템에 적용할 수 없으며, 새로운 접근법이 필요하다. **3. 제안된 보안 삭제 메커니즘** 세 가지 솔루션을 설계·구현하였다. - **Purging (사용자 수준)**: 사용자가 명시적으로 “purge” 명령을 실행하면, YAFFS가 현재 사용 중인 모든 블록을 순차적으로 재할당하도록 강제한다. 구현은 임시 파일을 대량 생성·삭제하는 방식으로 블록을 비우게 만든다. 실험에서는 전체 과정이 약 30초 내에 완료되었으며, 플래시 마모는 0.5% 이하로 미미했다. - **Ballooning (사용자 수준, 지속 실행)**: 백그라운드 서비스가 일정 주기로 “가짜 파일”을 생성·삭제해 YAFFS의 할당 알고리즘을 교란한다. 가짜 파일은 즉시 삭제되지만, 블록 재할당을 촉진해 가비지 컬렉션이 더 자주 일어나게 만든다. 이는 확률적 보안 삭제를 제공한다. 배터리 소모는 1~2% 수준이며, 플래시 마모는 설정된 주기에 따라 조절 가능하다. - **Zero Overwriting (커널 수준)**: 파일이 삭제될 때 해당 청크를 즉시 0으로 덮어쓰는 로직을 YAFFS 커널 모듈에 삽입한다. 블록 단위가 아니라 청크 단위에서 바로 영구 삭제가 이루어지므로, 데이터가 남지 않는다. 추가적인 쓰기 작업이 발생하지만, 플래시 수명에 미치는 영향은 실험에서 0.1% 이하로 측정되었다. 각 메커니즘은 Nexus One에 적용했을 때 플래시 수명 감소는 미미하고, 배터리 사용량도 눈에 띄게 증가하지 않았다. 특히 Zero Overwriting은 즉시 보안 삭제를 보장하면서도 추가 마모가 거의 없다는 점에서 가장 강력한 해결책으로 평가된다. **4. 평가 및 결과** - **성능**: Purging은 30초 내에 전체 파일시스템을 정리하며, 사용자에게 거의 눈에 띄지 않는다. Ballooning은 백그라운드에서 지속적으로 동작하지만, CPU 사용량은 2% 미만, 배터리 소모는 하루에 약 1% 수준이다. Zero Overwriting은 파일 삭제 시 추가 쓰기 연산을 수행하지만, 평균 지연은 5~10ms에 불과해 사용자 경험에 영향을 주지 않는다. - **플래시 수명**: 실험 기간 동안 각 메커니즘이 초래한 추가 쓰기 횟수는 전체 쓰기량의 0.3%~0.7%에 불과했다. 이는 플래시 메모리의 평균 수명(10⁴~10⁵ erase 사이클) 대비 무시할 수준이다. - **보안**: 모든 메커니즘은 삭제된 데이터가 물리적으로 남아 있지 않음을 검증하기 위해, 삭제 직후와 일정 시간 후에 플래시 메모리를 직접 읽어 확인하였다. Purging과 Ballooning은 평균 44시간 이내에 데이터가 사라졌으며, Zero Overwriting은 즉시 사라졌다. **5. 일반화 및 향후 연구** 제안된 기법은 YAFFS에 국한되지 않는다. JFFS2와 같은 다른 로그구조 파일시스템에도 동일한 원리로 적용 가능하다. 특히 UBIFS 위에 구현된 Ballooning은 파일시스템에 독립적인 인터페이스를 제공해, 다양한 플래시 기반 디바이스에 손쉽게 이식될 수 있다. 향후 연구에서는 SSD와 같은 대용량 플래시 스토리지에 대한 적용 가능성을 탐색하고, 하드웨어 수준의 암호화와 결합한 하이브리드 보안 삭제 모델을 제안하고자 한다. **결론** YAFFS와 같은 로그구조 파일시스템은 기존 블록 기반 보안 삭제 기법이 적용되지 않으며, 데이터가 장시간 물리적으로 남아 있을 위험이 있다. 본 논문은 이러한 구조적 한계를 정량적으로 입증하고, 사용자 수준의 Purging·Ballooning과 커널 수준의 Zero Overwriting이라는 실용적인 해결책을 제시한다. 구현 및 평가 결과, 세 방법 모두 플래시 수명과 배터리 소모에 미치는 영향이 최소화되면서 보안 삭제를 효과적으로 제공한다. 이는 모바일 환경에서 사용자 프라이버시를 강화하고, 법적·기업적 데이터 관리 요구를 충족시키는 중요한 기술적 진보라 할 수 있다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기