문제

파쇄 문서에 따르면 파쇄는 "효과적인 것이 보장되지 않는다"고 말합니다 (하단 참조). 내 Ext3 파일 시스템이나 공격에 문서를 파쇄하면 어떻게됩니까? 파일의 일부를 파쇄합니까? 때로는 모든 것을 파쇄하고 때로는 그렇지 않습니까? 다른 물건을 손상시킬 수 있습니까? 파일 헤더 만 파쇄합니까?

주의 : Shred는 파일 시스템이 데이터를 덮어 쓰는 매우 중요한 가정에 의존합니다. 이것은 전통적인 방법이지만 많은 현대 파일 시스템 설계는이 가정을 충족시키지 못합니다. 다음은 Shred가 효과적이지 않거나 모든 파일 시스템 모드에서 효과적이지 않은 파일 시스템의 예입니다.

  • AIX 및 Solaris (및 JFS, ReiserFS, XFS, Ext3 등)와 같은 로그 구조화 또는 저널링 파일 시스템.

  • RAID 기반 파일 시스템과 같은 일부 쓰기가 실패하더라도 중복 데이터를 작성하고 수행하는 파일 시스템

  • 네트워크 어플라이언스의 NFS 서버와 같은 스냅 샷을 만드는 파일 시스템

  • NFS 버전 3 클라이언트와 같은 임시 위치에 캐시하는 파일 시스템

  • 압축 파일 시스템

ext3 파일 시스템의 경우, 위의 면책 조항은 데이터 = 저널 모드에서만 적용되며 (및 파쇄는 제한된 효율성) 메타 데이터 외에도 데이터를 제출합니다. 데이터 = 순서 (기본값) 및 Data = WriteBack 모드 모두에서 Shred는 평소와 같이 작동합니다. MANT MAN PAGE (MAN MOUNT)에 문서화 된대로 /etc /fstab 파일의 특정 파일 시스템의 마운트 옵션에 데이터 = 무언가 옵션을 추가하여 ext3 저널링 모드를 변경할 수 있습니다.

도움이 되었습니까?

해결책

모든 파쇄는 덮어 쓰고, 플러시하고, 성공을 확인하고, 반복하는 것입니다. 파일을 덮어 쓰는 것이 실제로 원래 데이터를 덮어 쓰고있는 블록에서 실제로 발생하는지 여부를 찾는 것은 전혀 없습니다. 기본 파일 시스템에 대해 비표준을 알지 못하면 할 수 없기 때문입니다.

따라서, 저널링 파일 시스템은 원래 블록을 덮어 쓰지 않습니다. 왜냐하면 변경 사항이 중간에 작성된 오류에서 깨끗하게 회복되는 것을 막을 수 있기 때문입니다. 데이터가 저널링되면 파쇄의 각 패스는 디스크의 새로운 위치에 기록 될 수 있으며,이 경우 아무것도 파쇄되지 않습니다.

RAID 파일 시스템 (RAID 모드에 따라)은 원래 블록의 모든 사본을 덮어 쓰지 않을 수 있습니다. 중복성이있는 경우 하나의 디스크를 파쇄 할 수 있지만 다른 디스크는 없거나 다른 패스가 다른 디스크에 영향을 미쳐 각 디스크가 부분적으로 파쇄되도록 다른 디스크에 영향을 줄 수 있습니다.

파일 시스템에서 디스크 하드웨어 자체는 오류를 감지 할 수 있습니다 (또는 플래시의 경우 오류없이 마모 레벨을 적용하고 원본이 IS가되도록 논리적 블록을 다른 물리적 블록으로 재발 명합니다. 잘못된 결함 (또는 사용되지 않은)이지만 덮어 쓰지 않았습니다.

압축 된 파일 시스템은 원래 블록을 덮어 쓰지 않을 수 있습니다. 왜곡 된 데이터는 각 패스에서 무작위 또는 매우 압축성이 높기 때문에 파일이 압축 크기를 급격히 변경하여 재배치 할 수 있기 때문입니다. NTFS는 MFT에 작은 파일을 저장하고 파일 크기를 하나의 블록의 배수로 반올림하면 첫 번째 "덮어 쓰기"가 일반적으로 파일을 새 위치로 이전하게하여 작은 곳으로 파일이 새 위치로 옮겨집니다. MFT 슬롯은 손대지 않았습니다.

Shred는 이러한 조건을 감지 할 수 없습니다 (FS 및 블록 드라이버를 직접 해결하는 특별한 구현이 없다면 실제로 그러한 것들이 실제로 존재하는지 모르겠습니다). 그렇기 때문에 파일 시스템보다 전체 디스크에서 사용될 때 더 신뢰할 수 있습니다.

파쇄는 다른 파일의 의미에서 "다른 물건"을 파쇄하지 않습니다. 위의 일부 경우에는 데이터가 포함 된 블록 대신 이전에 언어되지 않은 블록을 파쇄합니다. 또한 파일 시스템의 메타 데이터를 파쇄하지 않습니다 ( "파일 헤더"가 의미하는 것 같아요). -U 옵션은 파일 이름을 삭제하기 전에 같은 길이의 새 이름으로 이름을 바꾸고 한 번에 한 문자를 1 char로 단축하여 파일 이름을 덮어 쓰려고 시도합니다. -V를 지정하면 이것을 실제로 볼 수 있습니다.

다른 팁

다른 답변은 이미 Shred가 왜 그 일을 제대로 수행 할 수 없는지 설명하는 데 도움이되었습니다.

이것은 다음과 같이 요약 할 수 있습니다.

Shred는 개별 파일이 아닌 파티션에서만 작동합니다

다른 답변에 설명 된 바와 같이, 단일 파일을 파쇄 한 경우 :

  • 파일 시스템이 디스크의 다른 위치로 동일한 파일에 쓰기를 보낼 수 있기 때문에 실제 데이터가 실제로 덮어 쓰는 것이 보장되지 않습니다.
  • FS가 다른 곳에서 데이터의 사본을 생성하지 않았다는 보장은 없습니다.
  • FS는 동일한 파일을 반복적으로 작성하기 때문에 글을 "최적화"하기로 결정할 수도 있습니다 (동기화는이를 방지해야하지만 다시 : 보증 없음)

그러나 당신이 그것을 알고 있더라도 당신의 FileSystem은 위의 불쾌한 일을 수행하지 않으며 많은 응용 프로그램이 파일 데이터 사본을 자동으로 생성 할 것임을 고려해야합니다.

  • 충돌 복구 파일 워드 프로세서, 편집자 (예 : VIM) 등이 주기적으로 쓸 것입니다.
  • 파일 관리자의 썸네일/미리보기 파일 (때로는 이미지 파일이 아닌 경우도)
  • 많은 응용 프로그램이 사용하는 임시 파일

따라서 데이터와 함께 작업하는 데 사용하는 모든 단일 바이너리를 확인하지 않으면 모르면 오른쪽, 왼쪽 및 센터가 복사되었을 수 있습니다. 유일한 현실적인 방법은 항상 완전한 파티션 (또는 디스크)을 파쇄하는 것입니다.

우려 사항은 디스크의 둘 이상의 장소에 데이터가 존재할 수 있다는 것입니다. 데이터가 정확히 하나의 위치에 존재하면 Shred는 해당 정보를 결정적으로 거절 할 수 있습니다. 그러나 저널 또는 기타 고급 파일 시스템이 파일의 데이터를 일시적으로 디스크에 여러 위치에 작성하는 파일 시스템. Shred (사실 후)는 이것에 대해 알 수있는 방법이 없으며 데이터가 일시적으로 디스크에 기록 될 수있는 곳을 알 수있는 방법이 없습니다. 따라서 디스크 섹터를 지우거나 덮어 쓰는 방법은 없습니다.

이것을 상상해보십시오 : 당신은 저널이 메타 데이터뿐만 아니라 파일 데이터도하는 저널링 된 파일 시스템에서 디스크에 파일을 작성합니다. 파일 데이터는 일시적으로 저널에 기록 된 다음 최종 위치에 기록됩니다. 이제 파일에 파쇄를 사용합니다. 데이터가 작성된 최종 위치는 파쇄로 안전하게 덮어 쓸 수 있습니다. 그러나 Shred는 파일 내용을 일시적으로 포함하는 저널의 부문이 파일을 실제로 복구 할 수 없다고 약속 할 수 있도록 덮어 쓰여 있음을 보장 할 수있는 방법이 있어야합니다. 저널이 고정 된 위치 나 고정 길이에 있지 않은 파일 시스템을 상상해보십시오.

Shred를 사용하는 경우 데이터를 재구성 할 수있는 방법이 없는지 확인하려고합니다. Shred의 저자는이 보장을 할 수없는 곳이 통제 할 수없는 조건이 있다는 사실에 정직합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top