파일을 삭제해도 다른 내용으로 명시 적으로 덮어 쓰지 않는 한 파일 시스템에 내용이 남아있을 수 있습니다. 이 wipe
명령은 파일을 안전하게 지울 수 있지만 파일이 사용하지 않는 디스크 여유 공간을 지울 수는 없습니다.
이것을 달성하기 위해 무엇을 사용해야합니까?
파일을 삭제해도 다른 내용으로 명시 적으로 덮어 쓰지 않는 한 파일 시스템에 내용이 남아있을 수 있습니다. 이 wipe
명령은 파일을 안전하게 지울 수 있지만 파일이 사용하지 않는 디스크 여유 공간을 지울 수는 없습니다.
이것을 달성하기 위해 무엇을 사용해야합니까?
답변:
경고 : 최신 디스크 / SSD 하드웨어 및 최신 파일 시스템은 데이터를 삭제할 수없는 곳에 데이터를 다람쥐로 만들 수 있으므로이 프로세스는 여전히 디스크에 데이터를 남길 수 있습니다. 데이터를 지우는 유일한 안전한 방법은 ATA Secure Erase 명령 (정확하게 구현 된 경우) 또는 물리적 파기입니다. 하드 드라이브의 모든 정보를 확실하게 지울 수 있는 방법을 참조하십시오 .
보안 삭제라는 도구 모음을 사용할 수 있습니다.
sudo apt-get install secure-delete
여기에는 네 가지 도구가 있습니다.
srm
-기존 파일을
smem
안전하게 삭제
sfill
- 램에서 파일의 흔적을 안전하게 삭제 -하드 드라이브에 빈 공간으로 표시된 모든 공간을
sswap
지우십시오-교체 공간에서 모든 데이터를 지우십시오.
의 맨 페이지에서 srm
srm은 도둑, 법 집행 기관 또는 기타 위협으로 복구 할 수없는 안전한 방식으로 매체의 데이터를 삭제하도록 설계되었습니다. 와이프 알고리즘은 선도적 인 민간 암호 해독가 중 한 명인 Peter Gutmann이 6 번째 유닉스 보안 심포지엄에서 발표 한 "자기 및 솔리드 스테이트 메모리에서 데이터의 안전한 삭제"를 기반으로합니다.
srm의 안전한 데이터 삭제 프로세스는 다음과 같습니다.
- 0xff로 1 패스
- 5 개의 무작위 패스.
/dev/urandom
사용 가능한 경우 보안 RNG에 사용됩니다.- Peter Gutmann이 정의한 특별한 값으로 27 개의 패스.
- 5 개의 무작위 패스.
/dev/urandom
사용 가능한 경우 보안 RNG에 사용됩니다.- 파일 이름을 임의의 값으로 바꿉니다.
- 파일 자르기
추가적인 보안 수단으로 파일은 O_SYNC 모드에서 열리고 각 패스 후에
fsync()
호출이 수행됩니다.srm
속도를 위해 32k 블록을 작성하고 디스크 캐시 버퍼를 채워서 파일에 속하는 오래된 데이터를 플러시하고 덮어 씁니다.
cat /dev/zero >nosuchfile; rm nosuchfile
.
단일 패스 만 필요하고 모든 것을 0으로 바꾸려면 가장 빠른 방법은 다음과 같습니다.
cat /dev/zero > zero.file
sync
rm zero.file
(지울 파일 시스템의 디렉토리에서 실행)
( sync
명령은 모든 데이터가 디스크에 기록되도록하는 편집증 측정입니다. 지능형 캐시 관리자는 파일이 링크 해제 될 때 보류중인 블록에 대한 쓰기를 취소 할 수 있도록 조치 할 수 있습니다. )
파일 시스템에 여유 공간이 전혀 없을 때이 작업을 수행하는 데 시간이 걸립니다. 결과 파일이 크거나 조각화 된 경우 수십 초가 걸릴 수 있으므로 삭제하는 데 시간이 걸립니다. 여유 공간이 완전히 0 인 시간을 줄이려면 다음을 수행하십시오.
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file
값 비싼 법 의학적 조작없이 누군가가 오래된 파일 내용을 읽는 것을 막기에 충분해야합니다. 약간 더 안전하지만, 느린, 변형 들어 교체 /dev/zero
와 함께 /dev/urandom
. 더 많은 편집증을 위해서는로 여러 단계를 실행하십시오 /dev/urandom
.하지만 많은 노력이 필요한 경우 shred
coreutils 패키지 의 유틸리티를 사용하는 것이 좋습니다 .
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file
위의 작은 파일은 더 큰 파일을 만들기 전에 파쇄되므로 큰 파일이 파쇄 될 때까지 기다리지 않고 파일 시스템에 여유 공간이없는 상태에서 파일 시스템을 남겨 두는 대신 큰 파일이 완성되 자마자 제거 할 수 있습니다. 큰 파일을 처리하는 데 시간 이 오래 걸리며 NSA에서 무언가를 숨기려고하지 않는 한 실제로는 필요한 IMO가 아닙니다.
위의 모든 파일 시스템에서 작동해야합니다.
파일 크기 제한 :
DanMoulding이 아래 주석에서 지적한 것처럼 일부 파일 시스템에서 파일 크기 제한에 문제가있을 수 있습니다.
FAT32의 경우는 것입니다 확실히 인해 2GiB 파일 제한에 대한 우려 : 대부분의 볼륨은 요즘 (8TiB 볼륨 크기 제한 IIRC입니다)이보다 큰. 큰 cat /dev/zero
출력 출력을 파이핑하여 split
여러 개의 작은 파일을 생성하고 파쇄 및 삭제 단계를 적절하게 조정 하여이 문제를 해결할 수 있습니다 .
외부 2 / 3 / 4로 그것은 우려의 작은 : 당신이 가지고해야 할 것 있도록 기본 / 일반 4K로 파일 크기 제한이 2TiB입니다 차단 거대한 이 문제 (이러한 조건에서 최대 볼륨 크기가 될 때까지 볼륨을 16TiB입니다).
(여전히 실험적인) btrfs를 사용하면 최대 파일 및 볼륨 크기는 모두 16EiB입니다.
NTFS에서는 최대 파일 길이가 최대 볼륨 길이보다 큰 경우도 있습니다.
자세한 정보의 시작점 :
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Scalability
가상 장치
최근 의견에서 언급했듯이 가상 장치에 대한 추가 고려 사항이 있습니다.
드문 드문 할당 된 가상 디스크의 같은에서 사용하는 것과 같은 다른 방법은 zerofree
빠른 (하지만 달리 할 것이다 cat
그리고 dd
이것은 당신이 거의 모든 유닉스-A와 같은 OS에서 사용할 수있는 신뢰할 수있는 표준 도구가 아닙니다).
스파 스 가상 장치의 블록을 0으로 설정하면 기본 물리적 장치 의 블록이 지워지지 않을 수 있습니다 . 실제로는 가능하지 않다고 말할 수 있습니다. 가상 디스크 관리자는 더 이상 사용하지 않는 블록을 만듭니다. 나중에 다른 것에 할당 할 수 있습니다.
고정 크기 가상 장치의 경우에도 장치의 물리적 위치를 제어 할 수 없으므로 언제든지 현재 위치를 중심으로 또는 새로운 물리 디스크 세트로 이동할 수 있으며 가장 많이 닦을 수있는 것은 현재 위치가 아닙니다. 과거에 블록이 있었던 이전 위치
가상 장치에 대한 위의 문제의 경우 : 호스트를 제어하고 VM에서 디스크를 지우거나 가상 장치를 이동 한 후 할당되지 않은 공간을 안전하게 지울 수없는 경우가 아니면이 작업을 수행 할 수있는 작업이 없습니다. 것. 유일한 해결책은 처음부터 전체 디스크 암호화 를 사용하는 것입니다따라서 암호화되지 않은 것은 무엇이든 먼저 물리적 매체에 기록됩니다. 물론 VM 내에서 여유 공간 제거를 요구할 수도 있습니다. 또한 가상화 계층에서 사용되지 않는 블록을 실제로 볼 수 없으므로 FDE는 스파 스 가상 장치의 유용성을 떨어 뜨릴 수 있습니다. OS의 파일 시스템 계층이 가상 장치에 트림 명령을 전송하고 (SSD 인 경우) 가상 컨트롤러가이를 해석하면이 문제가 해결 될 수 있지만 실제로 이러한 상황이 더 넓은 상황은 알 수 없습니다. 그 문제에 대한 논의는 다른 곳의 문제입니다 (원래 질문에 대한 주제를 벗어난 것에 가까워지고 있습니다. 이로 인해 관심을 끌면 몇 가지 실험 및 / 또는 후속 질문이 순서에있을 수 있습니다).
secure-delete
도구를 사용하여 수행 할 수도 있습니다 sfill -llz
.
cat
그리고 dd
그들이 어디에 표준 도구로 간주되므로 거의 모든 유닉스-A와 같은 OS에서 사용할 수있는 zerofree
명시 적으로 추가되지 않는 한 아마되지 않습니다.
zerofree
확실히 물론 작동합니다, (거의하지만 확실히 내 예제에서 small.file jiggery의 pokery에 의해 완화) 매뉴얼 페이지에서 언급 한 "전체 파일 시스템을 임시로 전체"일이 있다 진짜 관심사는 경우에 당신은 현재 활성화 된 시스템에이 일을하고 있으며, zerofree
실제로이 최적화되어 특정 인스턴스에서 빠른 것 : 드문 드문 할당 된 가상 블록 장치. 보안 목적으로 가상 장치를 지우는 데 의존 할 수는 없지만,이 경우 유일한 대답은 처음부터 전체 장치를 암호화하는 것입니다.
닦아 낸 후에도 photorec 이 디스크에서 검색 할 수있는 파일 수 에 충격을 받았습니다 .
"여유 공간"을 0x00으로 1 회 채우거나 다른 언어 적 표준으로 38 회 채우는 데 더 많은 보안이 있는지 여부는 학문적 논의에 더 가깝습니다. 파쇄에 관한 1996 년 논문의 저자는 현대 하드웨어에는 쓸모없고 불필요하다고 말하는 에필로그를 썼습니다 . 데이터가 물리적으로 0으로 대체되고 이후에 복구 된 경우에 대한 문서화 된 사례는 없습니다.
이 절차에서 실제로 깨지기 쉬운 링크 는 파일 시스템 입니다. 일부 파일 시스템은 특수 용도로 사용 가능한 공간을 예약하며 "사용 가능한 공간"으로 사용할 수 없습니다. 그러나 데이터가있을 수 있습니다 . 여기에는 사진, 개인 일반 텍스트 이메일 등이 포함됩니다. reserved + space + ext4를 방금 검색 한 결과 home
파티션 의 5 % 가 예약되어 있음을 알게 되었습니다. 나는 이것이 photorec
내 물건을 너무 많이 찾은 곳이라고 생각한다 . 결론 : 파쇄 방법이 가장 중요하지는 않지만 다중 패스 방법으로도 여전히 데이터를 그대로 둡니다 .
# tune2fs -m 0 /dev/sdn0
장착하기 전에 시도해 볼 수 있습니다 . (다시 부팅 한 후 루트 파티션이되면 실행 -m 5
하거나 -m 1
마운트 해제 한 후 확인하십시오 ).
그러나 여전히 어떤 방법 으로든 남은 공간이있을 수 있습니다.
진정으로 안전한 유일한 방법은 전체 파티션을 지우고 파일 시스템을 다시 만든 다음 백업에서 파일을 복원하는 것입니다.
빠른 길 (권장)
지우려는 파일 시스템의 디렉토리에서 실행하십시오.
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file
작은 파일의 목적은 여유 공간이 완전히 0 인 시간을 줄이는 것입니다. 동기화의 목적은 데이터가 실제로 기록되도록하는 것입니다.
이것은 대부분의 사람들에게 충분해야합니다.
느린 길 (편집증)
위의 정리 후에 데이터가 복구 된 경우에 대해서는 기록 된 사례가 없습니다. 가능하다면 비용이 많이 들고 자원이 많이 필요할 것입니다.
그러나 비밀 기관이 파일을 복구하는 데 많은 리소스를 소비 할 것이라고 생각할만한 이유가 있다면 다음과 같이 충분합니다.
dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file
시간이 훨씬 더 걸립니다.
경고. 편집증 방식을 선택했다면, 그 후에도 여전히 빠른 닦기를하고 싶을 것입니다. 그것은 편집증이 아닙니다. 순전히 임의의 데이터가 있으면 쉽고 저렴하게 감지 할 수 있으며 실제로 암호화 된 데이터라는 의심이 제기됩니다. 암호 해독 키를 공개하지 않으면 고문을 당할 수 있습니다.
매우 느린 길 (미친 편집증)
파쇄에 관한 1996 년 논문의 저자조차도 이것이 현대 하드웨어에는 쓸모없고 불필요하다는 에필로그를 썼습니다.
그러나 아직 자유 시간이 많고 디스크를 너무 많이 쓰지 않고 낭비하지 않는다면 다음과 같이 진행됩니다.
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file
참고 : 이는 기본적으로 보안 삭제 도구를 사용하는 것과 같습니다.
편집하기 전에이 게시물은 David Spillett의 글을 다시 썼습니다. "cat"명령은 오류 메시지를 생성하지만 다른 사람의 게시물에 대한 의견을 쓸 수 없습니다.
cat
명령은 실행이 끝날 때 내 예제에서 "공백 없음"오류가 발생합니다. stderr을 /dev/null
문제가있는 경우 리디렉션하여 이를 숨길 수 있습니다 . 나는 일반적으로 사용하는 pv
것보다 cat
또는 dd
유용한 진행 표시를 얻기 위해, 이런 종류의 물건에 대해.
...raises the suspicion that it is actually encrypted data. You may die under torture for not revealing the decryption key.
허, 정확히 내가 생각한 것입니다. 나는 그것이 편집증이라는 것을 의미한다고 생각합니다 ...
dd
루트로 실행하면 루트가 dd
없는 것보다 더 많은 파일 시스템에 액세스 할 수 있음을 나타내는 소스가 있습니까? 나는 이것이 사실이라고 믿고 싶지만 현재로서는 이유가 없다.
적어도 우분투에는 제로 프리 유틸리티가 있습니다.
http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html
zerofree — zero free blocks from ext2/3 file-systems
zerofree finds the unallocated, non-zeroed blocks in an ext2 or ext3
filesystem (e.g. /dev/hda1) and fills them with zeroes. This is useful
if the device on which this file-system resides is a disk image. In
this case, depending on the type of disk image, a secondary utility may
be able to reduce the size of the disk image after zerofree has been
run.
The usual way to achieve the same result (zeroing the unallocated
blocks) is to run dd (1) to create a file full of zeroes that takes up
the entire free space on the drive, and then delete this file. This has
many disadvantages, which zerofree alleviates:
· it is slow;
· it makes the disk image (temporarily) grow to its maximal extent;
· it (temporarily) uses all free space on the disk, so other
concurrent write actions may fail.
filesystem has to be unmounted or mounted read-only for zerofree to
work. It will exit with an error message if the filesystem is mounted
writable. To remount the root file-system readonly, you can first
switch to single user runlevel (telinit 1) then use mount -o remount,ro
filesystem.
또한 zerofree :에 관한이 링크를 확인하십시오 : 파일 시스템 이미지를 드문 드문 유지하십시오 -그것은 작성자의 것입니다-Ron Yorston (2012 년 8 월 9 일)
다음은 GUI를 사용하여 수행하는 방법입니다.
dd에 비해 BleachBit의 발전은 디스크가 마지막으로 가득 찼을 때 BleachBit가 작은 파일을 만들어 inode (파일 이름과 같은 메타 데이터를 포함)를 지우는 것입니다.
내가 사용 dd
후 빈 공간을 채우기 안전한 삭제 유틸리티를 사용하여 하나 개 이상의 큰 파일을 할당 할 수 있습니다.
dd로 파일을 할당하려면 :
dd if=/dev/zero of=delete_me bs=1024 count=102400
delete_me
100MB 크기 의 파일이 생성됩니다 . (여기서 bs
"블록 크기"는 1k로 설정되어 count
있으며 할당 할 블록 수입니다.)
그런 다음 shred
생성 된 파일에서 즐겨 사용하는 보안 삭제 유틸리티 (사용했습니다 )를 사용하십시오.
그러나 참고 : 버퍼링은 전체 디스크를 사용 하더라도 모든 것을 얻지 못할 수도 있음을 의미합니다 !
scrub
한 번 시도해 전체 파일 시스템을 손상 시켰습니다. 운 좋게도 실제 데이터가 아닌 테스트 파일 시스템에서 처음 실험하는 것이 좋습니다.
최고 속도로 드라이브를 닦습니다.
요즘 드라이브 암호화에 대한 일반적인 지침은 먼저 드라이브를 WIPE하도록 지시합니다.
아래 명령은 AES 암호문으로 드라이브를 채 웁니다.
기본 부팅 드라이브를 닦아야 할 경우 라이브 CD를 사용하십시오.
터미널을 열고 권한을 높이십시오.
sudo bash
안전을 위해 시스템의 모든 드라이브를 나열하십시오.
cat /proc/partitions
참고 : /dev/sd{x}
닦으려는 장치로 교체하십시오 .
경고 : 이것은 아마추어를위한 것이 아닙니다! 시스템을 부팅 할 수 없게 만들 수 있습니다 !!!
sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}
이것이 얼마나 빠른지 놀랐습니다.
시스템에 이미 GNU coreutils 패키지가 설치되어 있을 것입니다 . shred 명령을 제공합니다 .
보안 삭제 패키지를 사용하여 여유 공간을 정리할 수 있습니다.
이 패키지에는 sfill
도둑, 법 집행 기관 또는 기타 위협으로 복구 할 수없는 안전한 방식으로 매체의 사용 가능한 디스크 공간에있는 데이터를 삭제하도록 설계된 도구가 있습니다.
Linux (Ubuntu)에서 보안 삭제 패키지를 설치하려면 다음 명령으로 설치하십시오.
$ sudo apt-get install secure-delete
여유 공간이없는 데이터 를 지우 려면 다음 명령을 시도하십시오.
sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY
여기서 / YOUR_MOUNTPOINT / OR_DIRECTORY는 여유 공간을 지우는 마운트 지점 ( df -h
, mount
) 또는 디렉토리입니다.
http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html 에서 설명서를 읽으십시오 .
dd를 사용하고 여유 공간을 0으로 만드십시오. 신화 데이터는 여러 번 덮어 써야하며 (Peter Guntmann에게 물어보십시오) 무작위 데이터는 1과 반대로 0은 부 자연스러운 활동을 암시합니다. 최종 결과는 쓰기에 소요되는 시간이 적은 깨끗한 드라이브입니다. 게다가, 안전한 삭제 프로그램은 심지어 최신 파일 시스템 (journaled)에서 실제 파일을 덮어 쓸 수 없습니다. 자신에게 호의를 베풀고 photorec를 얻고, 드라이브를 스캔하여 엉망을보고, 1로 지우고 선택적으로 0으로 닦아서 손대지 않게하십시오. photorec에서 여전히 항목을 찾으면 사용 가능한 모든 항목을 스캔하고 있으므로 루트 사용자로 다시 신중하게 수행하십시오.
cia / fbi / nsa에는 자기 미디어 비트의 실제 상태를 읽을 수있는 멋진 기계가 없습니다. 그것은 오래 전에 쓰여진 논문 일뿐입니다. "가정". 1 번만 닦으면됩니다.
scrub 을 사용하는 것이 더 쉽습니다 .
scrub -X dump
dump
현재 위치에 폴더 가 생성 되고 디스크가 가득 찰 때까지 파일이 생성됩니다. -p
옵션 ( nnsa|dod|bsi|old|fastold|gutmann
)을 사용하여 패턴을 선택할 수 있습니다 .
스크럽을 설치하는 것은 쉽지 않지만 (이 부분 의 우분투 포럼 참조 ) 설치가 완료되면 실제로 간단하고 효율적인 도구를 사용할 수 있습니다.
scrub
되면 한 번 시도 하고 전체 파일 시스템이 손상되었습니다. 운 좋게도 실제 데이터가 아닌 테스트 파일 시스템에서 처음 실험하는 것이 좋습니다.
scrub -X dump_dir
하고 잘 작동 한 것 같습니다. BTW, Ubuntu 14.04에 설치하는 것은 매우 간단 apt-get install scrub
합니다.
내가 사용하는 "sdelete.sh"스크립트는 다음과 같습니다. 자세한 내용은 의견을 참조하십시오.
# Install the secure-delete package (sfill command).
# To see progress type in new terminal:
# watch -n 1 df -hm
# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.
# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill
sudo tune2fs -m 0 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
sudo sfill -vfllz /
# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file
sudo tune2fs -m 5 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
이것은 대답이 아닙니다! 사용하고자하는 사람들을위한 코멘트 일 뿐이 pv
므로 투표를 귀찮게하지 마십시오.
에 리눅스 민트 17.3 당신은 사용할 수 있습니다 pv
( 파이프보기를 쓰기의 진행 상황을 얻기 위해). 예를 들면 다음과 같습니다.
# Install pv (pipe view)
sudo apt-get install pv
# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file
여기서 장점은 진행률 표시 줄, ETA 및 지속적으로 업데이트되는 데이터 속도를 얻는 것입니다. 단점은 한 줄에 기록되며 디스크가 가득 차면 (오류를 반환) 사라집니다. OS가 디스크를 사용할 가능성이 높기 때문에 특히 OS 볼륨에서 전체 크기가 대략적으로 발생하기 때문입니다.
아주 오래된 HD에서는을 사용하여 약 13MB / s ,을 사용하면 약 70MB / s의 데이터 속도를 얻습니다 . 원료를 사용하는 경우 이것은 아마도 더 향상시킬 것이다 나 , 그리고 ./dev/urandom
/dev/zero
dd
cat
pv