btrfs 파일 시스템에서 파일을 안전하게 삭제

btrfs 파일 시스템에서 파일을 안전하게 삭제

때로는 파일 시스템에서 파일을 삭제하고 해당 파일이 실제로 사라졌는지 확인해야 하는 경우가 있습니다. 예를 들어 중요한 비밀번호가 포함된 파일은 디스크에서 완전히 지워야 합니다.

일반적인 파일 시스템에서 간단한 명령을 실행하면 rm파일의 inode("포인터")가 삭제되지만삭제하지 마세요실제 디스크에 있는 파일의 내용 - 이러한 내용은 파일 시스템에 여유 공간이 필요할 때 덮어쓸 때까지 그대로 유지됩니다.

많은 파일 시스템에서파쇄 프로그램이 안전한 삭제를 구현하십시오. 그러나 CoW 파일 시스템(예: btrfs)에서는이 방법은 작동하지 않습니다. 파일이 볼륨 스냅샷에 존재할 수 있다는 사실로 인해 문제가 더욱 악화됩니다.

안전하게 삭제하는 방법이 있나요?하나의 문서btrfs 파일 시스템에서? 모든 볼륨의 모든 포인터를 삭제하는 것으로 충분합니까?사용 가능한 공간을 0으로 채우기?

답변1

안전한 삭제는 모든 파일 시스템에서 어려운 작업입니다. 파일 시스템이 매우 특별하고 주변에 파일의 다른 복사본이 없다는 것을 보장하지 않는 한 장치의 여유 공간을 모두 지워야 합니다. 기록 중 복사 파일 시스템에서 많은 비트의 파일을 찾을 가능성이 더 높지만 실제로는 더 많은 "정적" 파일 시스템이 이러한 보장을 제공하지 않습니다. 왜냐하면 많은 파일이 편집되어 이전 버전의 비트가 있기 때문입니다. 문서는 어디에나 있습니다.

0으로 지우는 것은 임의의 바이트로 지우는 것만큼 좋으며 여러 번 지울 필요가 없습니다. 1980년대의 하드 드라이브 기술을 사용하면 실험실 조건에서 제로 와이프(Zero Wipe)로 남겨진 잔여 데이터를 부분적으로 복구할 수 있지만 오늘날에는 더 이상 그렇지 않습니다. 바라보다하드 드라이브에 0(또는 무작위 데이터)을 한 번만 쓰는 것보다 여러 번 쓰는 것이 더 나은 이유는 무엇입니까?

디스크의 모든 것을 암호화하여 일반 텍스트 기밀 데이터를 제거할 수 있습니다. 설정하다암호화된 파일 시스템이 파일 시스템의 볼륨을 선택하고 모든(기밀) 파일을 이 파일 시스템으로 이동합니다. 그런 다음 파일 시스템에서 사용되지 않는 모든 공간을 덮어씁니다. 파일 시스템을 cat /dev/zero >zero. 불완전한 블록(파일의 마지막 청크를 포함하는 블록, 그 뒤에 일부 쓰레기(아마도 기밀 파일의 나머지 부분)가 포함된 블록)에 일부 정보가 남아 있을 수 있습니다. 불완전한 블록이 없는지 확인하려면 파일 시스템의 모든 것을 ecryptfs로 이동하십시오(ecryptfs 파일은 적어도 블록이 4kB인 일반적인 설정에서 전체 블록을 사용함). 이를 모든 볼륨에 적용하고 일반 텍스트 기밀 데이터가 포함된 모든 스냅샷을 삭제하십시오.

일기장에는 아직 정보가 남아 있을 수도 있습니다. 어떻게 지우는지 모르겠어요.

SSD에서는 블록 재할당으로 인해 일반적인 소프트웨어 수단으로는 읽을 수 없는 데이터가 남겨질 수 있지만 펌웨어 크래킹이나 물리적 액세스를 통해 복구할 수 있습니다. 유일한 방법은 SSD를 완전히 지우는 것입니다.

답변2

글쎄, btrfs는 일반적인 스매싱 방법을 모두 능가하는 것 같습니다 ...

  • 라는 설치 옵션이 있지만 nodatacow이미 존재하는 파일에는 영향을 미치지 않는 것 같습니다.
  • 이미 디스크에 민감한 파일이 있으므로,btrfs FAQ입력해도 도움이 되지 않습니다.
  • 그런 다음 debugfsext 파일 시스템에서만 작동하지만수리하다효과가 있을 수도 있으니까요. 이를 사용하여 영향을 받는 블록 주소를 찾은 다음 /dev/sdXY에서 직접 덮어쓸 수 있습니다. 그러나 이는 매우 위험하며 작동하지 않을 수 있습니다(특히 파일에 더 많은 스냅샷이 있는 경우).
  • 특정 스냅샷이나 전체 파일의 수정(또는 스매싱)을 허용하는 btrfs 패치 작성
  • 매우 민감한 데이터에 대한 가장 깨끗한 시도는 다음과 같습니다.

    • 다른 디스크 구입(첫 번째 디스크에 영향을 받는 파티션의 복사본을 저장할 수 있는 충분한 여유 공간이 없는 경우)
    • 전체 디스크 암호화 및 파일 시스템 설정
    • a 드라이브의 모든 내용을 b 드라이브에 복사합니다.
    • 시스템 b로 부팅하고 전체 디스크 a를 파쇄합니다.

    이 방법이 가장 저렴한 방법은 아닐 수도 있지만 오늘날의 낮은 보관 비용과 다른 옵션으로 인한 번거로움을 고려하면 실제로는 (인건비 측면에서) 가장 저렴할 수 있습니다.

답변3

Unix/Linux에서 사용 가능합니다 shred(1)(배포판 패키지에 있어야 함). 나는 EFF이다추천하다.

관련 정보