파일을 안전하게 파쇄

파일을 안전하게 파쇄

*NIX 시스템에서 파일을 안전하게 파쇄하는 방법은 다음과 같습니다.

슈레더

#!/bin/bash
# Define number of rewrites
COUNT=20
# Define file size
FILE_SIZE=`wc -c < "$1"`
# Begin rewriting file
while [ $COUNT -ge 0 ]
do
   # Write random data to file
   echo `dd if=/dev/urandom bs=1 count="$FILE_SIZE"` > $1
   COUNT=$(( $COUNT - 1 ))
done

파일이 올바른 오프셋(시작점)에 다시 작성되고 있습니까?

더 짧고, 더 좋고, 더 이식성이 뛰어난 방법이 있나요?

답변1

아니, 그것과는 거리가 멀다.

당신이 하고 싶은 일은 불가능하므로 실패하는 것도 당연합니다. 가장 심각한 문제는 파일을 덮어쓰려고 시도조차 하지 않는다는 것입니다. … > $1먼저 파일이 잘려서 모든 블록이 사용 가능한 것으로 표시되고 명령의 출력이 새로 할당된 블록에 기록됩니다. 새로 할당된 블록이 파일에서 방금 할당된 블록일 이유가 없습니다.

달리면 dd if=/dev/urandom bs=1 count="$FILE_SIZE" of="$1"이 장애물을 극복할 수 있습니다 . 이 파일 복사본을 덮어썼는지 확인할 수 있습니다. 그러나 파일의 다른 복사본이 다른 곳에 있을 수도 있습니다. 예를 들면 다음과 같습니다.

  • 파일이 생성되거나 편집될 때 생성되는 임시 복사본입니다.
  • 이전 버전(파일이 과거에 편집된 경우)
  • 파일에 액세스할 수 있는 사람은 누구나 백업을 만들 수 있습니다.
  • 파일 시스템 스냅샷에 추가 복사본이 있습니다.
  • 저장 장치 내에 생성될 수 있는 기타 복사본입니다. SSD에서 지우기는 비용이 많이 드는 작업입니다(장치의 속도와 마모 측면 모두에서). 따라서 한 섹터에서 새 콘텐츠를 쓰는 것은 실제로는나중에 삭제할 섹터를 표시하고 다른 섹터에 데이터를 씁니다..

데이터를 안전하게 지우는 방법은 첫날부터 전체 디스크를 암호화하는 것입니다. 그런 다음 데이터를 복구할 수 없도록 하려면 일반적으로 잘 정의된 위치에 저장되어 있는 키를 지우면 됩니다. 실제 키를 디스크에 전혀 저장하지 않는 것이 좋습니다. 사람의 개입 없이 기계가 부팅되면 강력한 비밀번호를 사용하고, 사람의 개입 없이 키가 부팅되면 키를 스마트 카드나 저렴한 USB 키 키 또는 SD에 저장하세요. 카드가 있으면 주저 없이 물리적으로 파괴할 수 있습니다.

위에서 언급한 것처럼 단순히 SSD의 데이터를 덮어쓴다고 해서 공격자가 하드웨어에 액세스할 수 있거나 SSD의 펌웨어를 크랙할 수 있는 경우 복구할 수 없다는 보장은 없습니다. 작동하는 기능이 있다고 가정하면 SSD의 보안 삭제 기능을 사용해야 합니다(불행히도 일부 SSD 모델에서는 이 기능이 있다고 주장하지만 실제로 데이터를 삭제하지는 않습니다).

답변2

스크립트는 반드시 정확하지 않은 가정을 합니다.

  • 파일의 일부를 덮어쓰면 이전 섹터에 새 데이터가 기록됩니다.
  • 이는 특히 SSD의 경우에 해당됩니다(웨어 레벨링 확인).
  • 쓰기 복사본이나 오버레이 파일 시스템(예: btrfs 또는 aufs)을 사용하지 않습니다.

편집: 위의 내용은 스크립트와 관련된 대략적인 문제 목록으로만 간주되어야 합니다. 보안 문제에 대해 완전히 무지한 것은 아니지만 파일 편집 시 임시 복사본, 원격 서버로 전송, 다른 캐시, 스왑 공간, 로그 등 여기에서 처리되지 않는 상황이 많이 있습니다. 내가 모르는 다른 것들.

가능한 대책(항상 100% 안전하지는 않음):

  • 파쇄를 사용하지만 SSD와 같은 플래시 기반 미디어에서는 작동하지 않으며 ext3와 같은 일반 파일 시스템을 포함한 모든 파일 시스템에서도 작동하지 않습니다.
  • SSD 제조업체에서 제공하는 도구를 사용하지 못할 수도 있습니다.
  • 파일을 저장하기 전에 전체 디스크 암호화를 사용하고 OS 파티션, 스왑 파티션, 다른 모든 파티션, 바람직하게는 다른 모든 HDD/USB 스틱/…에도 (임시) 복사본을 작성하세요. 삭제하려는 파일을 제외한 다른 모든 데이터를 암호화된 드라이브에 백업한 다음 파일과 접촉하는 모든 미디어(운영 체제 파티션 포함)를 다시 포맷하고 다시 암호화한 다음 다른 데이터를 디스크에 다시 넣습니다.

관련 정보