데이터를 복구할 수 없도록 터미널을 통해 USB 플래시 드라이브를 삭제하는 방법(가능한 경우)을 알고 싶습니다.
답변1
TL/DR: 장치 이름이 올바른지 확인하고, 마운트되지 않았는지 확인하고, 가능한 한 많은 무작위 적용 범위를 수행하십시오. 새로운 배포판을 사용하는 경우 플래시 하드웨어용으로 설계된 삭제 명령을 나중에 수행할 수 있습니다. 이러한 검사에서는 항상 드라이브(예: /dev/sd)를 사용하십시오.시간) 대신 파티션 이름( /dev/sdh1)
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
이론적으로는 0으로 덮는 것이 dd
좋습니다. 그러나 플래시 드라이브가 내부적으로 구성되는 방식으로 인해 단일 덮어쓰기를 사용하는 경우 여전히 나머지 정보를 저장하고 있는 실제 블록 뒤에 숨겨진 여러 데이터 레이어가 있을 수 있습니다.
플래시 스토리지의 일부가 제조 과정에서 실패하고 플래그가 지정되는 경우가 많습니다. 잘못될 수 있는 다른 비트(변경 불가능, 설정 불가능 또는 취소 불가능)가 있으며 이러한 부품도 수명 동안 결함이 있는 것으로 표시되어야 합니다. 이 정보는 귀하의 데이터와 동일한 칩의 예약된 공간에 저장됩니다. 이는 4GB 썸 드라이브가 2^32바이트 용량을 표시하지 않는 여러 가지 이유 중 하나입니다.
플래시 스토리지는 내부적으로 더 큰 블록으로 구성되며 때로는 드라이브에서 작동하는 파일 시스템보다 훨씬 더 큽니다. 일반적인 파일 시스템 블록 크기는 4KB이며, 한 번에 지울 수 있는 플래시 세그먼트는 64KB에서 수 메가바이트까지 다양합니다. 이러한 대형 블록은 전체만 지울 수 있으며, 이로 인해 모든 블록이 알려진 상태(모두 1 또는 모두 0)로 재설정됩니다. 이후 데이터 쓰기는 어떤 비트라도 변경할 수 있지만(필요한 경우 기본값은 1에서 0으로, 기본값은 0에서 1로)한 번. 조금이라도 바꾸세요뒤쪽에기본 상태로 들어간 후 모든 세그먼트를 다시 지워야 합니다!
따라서 4KB 블록을 변경하려는 경우(파일 시스템이 파일 중간에 있는 단일 문자를 변경해야 함) 플래시 컨트롤러는 이전 데이터의 64KB를 모두 읽고 버퍼링한 다음 모든 데이터를 삭제한 다음 써야 합니다. 새로운 콘텐츠를 다시 돌려보세요. 이는 매우 느립니다. 세그먼트를 지우는 작업은 가장 느린 작업입니다. 또한 세그먼트는 제한된 횟수(보통 수만 번)만 지울 수 있으므로 단일 파일을 너무 많이 변경하면 드라이브가 빠르게 손상될 수 있습니다.
그러나 그것은 진실이 아니다. 스마트 플래시 컨트롤러는 단순히 4KB의 새 데이터를 다른 곳에 쓰고 이전 블록의 중간에 읽기를 리디렉션하는 4KB의 데이터를 기록합니다. 더 많은 공간이 필요하지만 리디렉션에 대한 정보를 저장할 공간을 볼 수 없습니다. 또한 데이터를 저장하기 위해 액세스 가능한 모든 세그먼트를 통과하도록 시도합니다. 이를 호출합니다.웨어 레벨링.
이는 일반적으로오래된 데이터가 아직 드라이브에 남아 있습니다.어딘가에! 액세스 가능한 모든 블록을 방금 지운 경우 모든 숨겨진 블록에는 여전히 최신 버전의 데이터가 유지됩니다. 공격자로부터 데이터를 보호하고 싶은데 이는 다른 문제입니다.
최신 배포본이 있고 USB 드라이브가 플래시 드라이브임을 표시하도록 프로그래밍된 경우 위에서 설명한 세그먼트 지우기인 blkdiscard
하위 수준 작업을 사용할 수 있습니다 . TRIM
또한 보이지 않는 숨겨진 데이터도 하드웨어에 의해 완전히 지워지도록 보장하는 추가 플래그가 있습니다.
# blkdiscard -s /dev/myusbdevice
-s, --secure 보안 폐기를 수행합니다. 안전한 폐기는 가비지 수집으로 생성되었을 수 있는 폐기된 블록의 모든 복사본도 지워야 한다는 점을 제외하면 일반 폐기와 동일합니다. 이를 위해서는 장치 지원이 필요합니다.
위에서 설명했듯이 반드시 작동하는 것은 아닙니다. 이 메시지가 나타나면 Operation not supported
커널, 유틸리티 또는 USB 게이트웨이 칩(플래시 컨트롤러가 USB를 통해 드라이브처럼 보이도록 허용) TRIM
이 명령 전달을 지원하지 않는 것입니다. (플래시 컨트롤러는 여전히 자체적으로 세그먼트를 지울 수 있어야 합니다.) 드라이브 공급업체가 지원하는 경우 가장 안전한 방법입니다.
덜 안전한 또 다른 접근 방식은 가능하다면 오래된 데이터를 임의의 값으로 여러 번 덮어써 덜 오래된 데이터가 어딘가에 남아 있도록 하는 것입니다.
왜 무작위로 물어보나요? USB 드라이브가 너무 똑똑하게 수행하여 특정 섹터를 지우고 싶다는 것을 감지하고 비트맵만 변경했다면 해당 섹터는 이제 비어 있고 나중에 지워야 할 것입니다. 이는 0을 쓰는 속도가 빨라지고 펜 드라이브가 작동하게 됨을 의미하기 때문입니다.나타나다더 효율적이죠? 귀하의 드라이브가 이를 수행하는지 여부를 말하기는 어렵습니다.
가장 극단적인 경우, 드라이브는 처음부터 삭제한 데이터의 양만 기억할 수 있으며, 이를 위해서는 약 4바이트의 정보를 저장해야 하며, 삭제하려는 데이터는 전혀 삭제되지 않습니다. 이 모든 작업은 정말 빠르게 보이도록 하기 위해 수행됩니다.
예측할 수 없는 임의의 값으로 데이터를 덮어쓰면 이러한 최적화가 불가능합니다. 따라서 드라이브는 데이터가 궁극적으로 플래시 메모리 칩 내에 저장되도록 보장해야 합니다. 그러나 이전에 사용된 일부 섹터에 여전히 이전 데이터의 일부가 남아 있지만 드라이브는 정상적으로 액세스할 수 없기 때문에 아직 삭제하는 것이 중요하지 않다고 생각한다는 점을 배제할 수 없습니다. 실제 TRIM
명령만이 이를 보장할 수 있습니다.
shred
임의의 값으로 자동 덮어쓰려면 다음과 같이 사용하는 것이 좋습니다 .
# shred -vzn88 /dev/myusbdrive
사용된 옵션:
- -v 진행 상황을 표시합니다.
- -z 최종 단계로 0으로 설정
- -n8은 8번의 무작위 덮어쓰기를 수행합니다.
가능하다면 두 가지를 모두 사용 blkdiscard
하고 shred
드라이브가 이를 지원하는 경우 이것이 최선의 솔루션이지만 blkdiscard -s
펌웨어 오류를 배제하기 위해 미리 수행하는 것도 나쁘지 않습니다.shred
아, 그리고 지우고 싶은 기기를 꼭 다시 한번 확인해주세요! dmesg는 최근에 연결된 장치가 무엇인지 확인하는 데 도움이 될 수 있으며 장치 이름 ls -al
과 지우는 데 사용하려는 장치 노드 번호는 물론 blkid
지우고 싶은 사용할 수 없는 파티션을 확인하는 출력도 확인하는 것이 좋습니다.
계속 사용하려는 내부 드라이브에는 이 명령을 사용하지 마십시오. blkdiscard
솔리드 스테이트 드라이브에서만 작동하지만 데이터를 잃어버릴 가치는 없습니다!
기술이 발전함에 따라 데이터를 안전하게 삭제할 수 있는 다른 방법이 있을 수 있습니다.
언급된 또 다른 방법은 명령을 SECURITY ERASE
통해 hdparm
실행할 수 있는 ATA 명령 입니다. 내 경험상 플래시 드라이브는 실제로 이를 지원하지 않습니다. 이는 기업용 하드 드라이브용으로 설계되었으며 가장 저렴한 저장 장치에서는 해당 기능을 항상 사용할 수 있는 것은 아닙니다.
TRIM
/ 작업은 DISCARD
명령보다 훨씬 새로운 것이며 SECURITY ERASE
플래시 기능에 대한 응답으로 생성되었으므로 값싼 USB 드라이브에서도 구현 가능성이 더 높지만 여전히 보편적이지는 않습니다. USB 동글에서 SD/마이크로 SD 카드를 삭제하려고 하는데 blkdiscard
해당 카드가 지원되지 않는다고 보고되는 경우 다른 동글/카드 리더기를 사용하거나 직접 SD/MMC 슬롯이 있는 시스템에서 시도해야 할 수도 있습니다. 이 작업을 수행.
답변2
나는 이것이 실제로 귀하의 질문에 대한 대답이 아니라는 것을 알고 있지만 가장 쉬운 방법은 드라이브를 물리적으로 파괴하는 것입니다. 일반적으로 큰 망치로 드라이브를 반복적으로 부수는 것이 트릭이지만 산업 분쇄 또는 소각도 옵션입니다. 보안에 대해 심각하게 우려하고 데이터를 복구할 수 없도록 하고 싶다면 해당 데이터의 가치는 드라이브 자체 비용보다 몇 배 더 높을 것이며 물리적인 방법은 저렴하고 신뢰할 수 있습니다.
답변3
내가 아는 가장 간단하고 빠른 방법은 전체 드라이브에 0을 쓰는 것입니다.
dd if=/dev/zero of=/dev/sdX
/dev/sdX
썸 드라이브의 장치 노드는 어디에 있습니까?
일부에서는 더 많은 반복과 기타 모드를 통해 보다 철저한 프로세스를 제안했습니다. 이 작업을 수행하기 위해 특정 유틸리티를 사용할 수 있습니다. GNU coreutils 패키지에는 shred
특별히 이 목적을 위한 명령이 포함되어 있습니다. 또한 많은 사람들이 사용하며 badblocks -w
e2fsprogs 패키지의 일부입니다. FreeBSD에서는 이 shred
유틸리티가 호출되며 gshred
또는 포트에서 사용할 수 있어야 합니다./usr/ports/sysutils/coreutils
/usr/ports/sysutils/fileutils
답변4
플래시 드라이브를 재사용하려는 경우 안전하게 삭제해야 합니다. http://linux.die.net/man/1/scrub 안되면 녹여주세요...