WIPE(1) General Commands Manual WIPE(1)

wipe - ابزار پاک‌سازی امن فایل‌ها

wipe

[-ucwsiIhfFdDnNvVzZrRtTkKaAeE] [-B(count)] [-S(size)] [-C(size)] [-o[size] -O] [-l[0-2]] [-x[1-32] -X] [-p(1-32)] [-b(0-255)] [files]

wipe -ZdNTVEAkO -S512 -C4096 -l1 -x1 -p1

برنامه Wipe یک ابزار پاک‌سازی امن فایل است. برخی مسائل سطح‌پایین وجود دارد که باید در نظر گرفته شوند. یکی از آن‌ها نیاز به نوعی سد نوشتن (write barrier) میان مراحل بازنویسی است. Wipe از fdatasync(2) (یا fsync(2)) به عنوان سد نوشتن استفاده می‌کند، یا اگر fsync(2) در دسترس نباشد، فایل با پرچم O_DSYNC یا O_SYNC باز می‌شود. برای اینکه wipe مؤثر واقع شود، هر مرحله بازنویسی باید به‌طور کامل روی دیسک نوشته شود. جهت اطمینان از این امر، گرداننده (drive) باید از نوعی سد نوشتن، تخلیه حافظه موقت نوشتن (write cache flush) یا غیرفعال‌سازی حافظه موقت نوشتن (write cache disabling) پشتیبانی کند. پروتکل SCSI از برچسب‌های دستورات مرتب‌شده (ordered command tags) پشتیبانی می‌کند، بیتی برای دسترسی اجباری به رسانه (force media access) دارد، و حافظه موقت نوشتن در آن از طریق mode page 8 قابل غیرفعال‌سازی است. درایوهای IDE/ATA از تخلیه حافظه موقت نوشتن و غیرفعال‌سازی آن پشتیبانی می‌کنند. متأسفانه همه درایوها در عمل هنگام درخواست، حافظه موقت نوشتن را غیرفعال نمی‌کنند؛ این درایوها معیوب هستند. حافظه موقت نوشتن همواره باید غیرفعال باشد، مگر اینکه سیستم شما مجهز به باتری پشتیبان باشد و همیشه به‌صورت ایمن خاموش شود.

در linux، برای فعال‌سازی قفل‌های اجباری فایل (mandatory file locks)، باید از گزینه mount با عنوان "mand" استفاده شود (linux/Documentation/mandatory.txt را ببینید). ابزار Wipe باید بازیابی داده‌های اصلی به صورت متن ساده (plaintext) را برای همه، به جز مصمم‌ترین افراد، بسیار دشوار کند. ابزارهایی مانند PGP و GNU Privacy Guard رمزنگاری قوی ارائه می‌دهند، اما اگر متن ساده اصلی قابل بازیابی باشد، رمزنگاری بی‌فایده خواهد بود. هنگام استفاده از PGP و GPG، فایل‌های موقتی که روی دیسک ذخیره می‌شوند باید روی یک سیستم فایل رمزشده نگهداری شوند. بدین ترتیب متن ساده هیچ‌گاه به صفحات دیسک مغناطیسی نمی‌رسد. برنامه Wipe برای شرایطی طراحی شده است که استفاده از یک سیستم فایل رمزشده عملی نیست.

ابزار Wipe از /dev/urandom، یا در صورت در دسترس نبودن، از /dev/random به عنوان منبع آنتروپی استفاده می‌کند. برای سرعت بیشتر، از تولیدکننده شبه‌تصادفی Mersenne Twister PRNG استفاده می‌شود. وبگاه MT در آدرس زیر قرار دارد:

http://www.math.keio.ac.jp/~matumoto/emt.html

برای اطلاعات بیشتر در مورد پاک‌سازی امن رسانه‌های مغناطیسی و دستگاه‌های ذخیره‌سازی حالت جامد (مانند DRAM)، مقاله USENIX به قلم Peter Gutmann را در آدرس زیر ببینید:

http://www.cs.auckland.ac.nz/~pgut001/secure_del.html

نمایش صفحه راهنما؛ گزینه‌ها و عملکرد هر یک را نشان می‌دهد.
نحوه استفاده (usage) - گزینه‌ها را نشان می‌دهد.
اطلاعات حق نشر (copywrite) را نشان می‌دهد.
ضمانت‌نامه (warranty) را نشان می‌دهد.
تعاملی (interactive) - برای حذف هر فایل از کاربر تأیید می‌گیرد؛ مجوزهای فایل را به‌صورت صریح بررسی می‌کند.
حالت تعاملی را غیرفعال می‌کند.
پاک‌سازی فایل را تحمیل کرده و هشدارهای مربوط به مجوزها را نادیده می‌گیرد.
بازگشتی (recursion) - پیمایش زیرپوشه‌ها.
حالت بی‌صدا (silent) - گزارش درصد پیشرفت و برخی هشدارها را غیرفعال می‌کند.
پرحرف (verbose) - در صورتی که اندازه فایل از حد معینی بیشتر باشد، درصد پیشرفت را نشان می‌دهد (wipe -h را ببینید).
حالت پرحرف اجباری - همیشه درصد پیشرفت را نشان می‌دهد.
حالت روشن (-e) با فراخوانی fdatasync() قبل از هر به‌روزرسانی، درصد پیشرفت را (تنها در صورت نمایش) دقیق‌تر می‌کند. حالت خاموش (-E) دقت اندکی کمتر خواهد داشت، اما wipe فقط بین مراحل بازنویسی fdatasync() را فراخوانی می‌کند.
حذف (-d) یا نگه‌داشتن (-D) فایل پس از پاک‌سازی.
حذف (-n) یا نادیده گرفتن (-N) لوله‌های fifo، سوکت‌ها، پیوندهای نمادین، و دستگاه‌های کاراکتری.
قفل کردن (-k) یا قفل نکردن (-K) فایل‌ها هنگام پاک‌سازی.
صفر کردن فایل - یک مرحله بازنویسی با صفر را انجام می‌دهد.
انجام مراحل بازنویسی عادی - لغو اثر -z.
فعال‌سازی (-t) یا غیرفعال‌سازی (-T) مراحل بازنویسی ایستا (static passes).
نوشتن تا اتمام فضای دیسک (-a) یا عدم انجام آن (-A).
نوشتن [size] در خروجی استاندارد stdout (-o) یا استفاده از فایل‌ها (-O).

از آنجا که wipe بر خلاف دستگاه‌های بلوکی، پشتیبانی خاصی از دستگاه‌های کاراکتری ندارد، این روشِ ترجیحی برای پاک‌سازی آن‌ها مانند گرداننده‌های نوار مغناطیسی (tape drives) است؛ برای مثال: wipe -za -o | buffer > /dev/nst0 همچنین می‌توان از آن برای دستگاه‌های بلوکی استفاده کرد؛ برای مثال: wipe -To | dd count=size of=blkdev

همچنین می‌توانید از این قابلیت برای ایجاد فایل‌های حاوی خروجی شبه‌تصادفی از MT PRNG استفاده کنید؛ برای مثال: wipe -To10240 -x1 > prand

برای مراحل بازنویسی ایستا، باید طول stdout را مشخص کنید.

تغییر مقدار پیش‌فرض تعداد سکتورهای دستگاه بلوکی.
تغییر مقدار پیش‌فرض اندازه سکتور دستگاه بلوکی.
اندازه تکه (chunk size) - حداکثر اندازه بافر فایل.
تنظیم سطح امنیتی عمومی:

سطح ۰: PRNG تنها یک‌بار مقداردهی اولیه (seed) می‌شود.

سطح ۱: PRNG به ازای هر فایل یک‌بار مقداردهی اولیه می‌شود.

سطح ۲: PRNG به ازای هر مرحله تصادفی یک‌بار مقداردهی اولیه می‌شود.

مراحل بازنویسی تصادفی و در صورت تمایل تعداد آن‌ها را فعال می‌کند - توجه داشته باشید که این گزینه اکنون تعداد مراحل تصادفی به ازای هر چرخه پاک‌سازی را تنظیم می‌کند - به عبارت دیگر، تعداد کل مراحل تصادفی برابر خواهد بود با مراحل تصادفی * چرخه‌های پاک‌سازی (-p).
مراحل تصادفی را غیرفعال می‌کند.
تکرار مراحل در چرخه (loop passes) - اجرای توالی پاک‌سازی به تعداد مشخص‌شده، شامل مراحل تصادفی.
بایت سفارشی - یک‌بار بازنویسی با یک بایت خاص.

/dev/urandom
برنامه Wipe از این دستگاه کاراکتری به عنوان منبع آنتروپی استفاده می‌کند.
/dev/random
در صورتی که /dev/urandom در دسترس نباشد، Wipe به عنوان جایگزین از این دستگاه استفاده می‌کند.

در صورت بروز خطا، کد خروج برابر با مقدار errno خواهد بود. کد خروج ۲ بیانگر استفاده نادرست از دستور است.

برنامه Wipe بر روی سیستم‌فایل‌های مبتنی بر گزارش وقایع (log structured file systems) یا هر نوع سیستم‌فایل یا دستگاه بلوکی دیگری که سکتورها را هنگام نوشتن مجدداً تخصیص می‌دهد، کار نمی‌کند.

برخی برنامه‌ها در برابر شرایط رقابتی پیوندهای نمادین (symlink races) آسیب‌پذیر هستند. برای جلوگیری از این مشکل در wipe، فایل‌ها را فقط در پوشه‌هایی پاک‌سازی کنید که توسط کاربران غیرقابل اعتماد قابل نوشتن نباشند.

نوارها و سایر دستگاه‌های با دسترسی ترتیبی

اندازه بافر مناسبی متناسب با اندازه بلوک منطقی یا فیزیکی دستگاه انتخاب کنید. هنگام استفاده از مراحل بازنویسی با الگو، باید فشرده‌سازی درایو را غیرفعال کنید، و عموماً بهتر است برای سایر مراحل نیز همین کار را انجام دهید.

برای گرداننده‌های VXA، من از mt-st در linux برای تنظیم اندازه بلوک روی 0 (متغیر) و غیرفعال کردن فشرده‌سازی استفاده کردم، و wipe را با اندازه بلوک 64k اجرا کردم تا با اندازه بلوک بومی قالب روی نوار مطابقت داشته باشد.

مثال:

mt-st setblk 0

mt-st compression 0

wipe -C64 /dev/st0

سایر ابزارهای پاک‌سازی فایل:

یک "wipe" دیگر توسط Berke Durak <durakb@crit2.univ-montp2.fr>

برنامه sterilize اثر Colin Plumb <colin@nyx.net>.

ابزار srm اثر Todd Burgess <tburgess@eddie.cis.uoguelph.ca> در sunsite/metalab در آدرس زیر در دسترس است:

ftp://metalab.unc.edu/pub/Linux/system/filesystems

/usr/doc/wipe/README

Wipe
Copyright (C) 1998-2009 Thomas M. Vier, Jr. <nester@users.sf.net>

Mersenne Twister PRNG module
Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura