Cómo realizar un borrado seguro con shred

Imagen de Epe

[b]Antes de comenzar, quiero aclarar que si aplicas estos conocimientos VAS A DAÑAR seriamente tu información. Éste precisamente es el objetivo. SI BORRAS ALGO Y TE ERA DE UTILIDAD, ES TU CULPA, NO LA MÍA!!!![/b]

Bueno, vayamos al tema, cuando en tu Linux haces "rm archivo" realmente lo que estás es desenlazando el inodo que hacía referencia a ese archivo con el espacio en disco donde estaba guardado, de esta forma el espacio en disco en cuestión y el inodo quedan libres para ser usados para cualquier otra necesidad de disco del sistema.

Sin embargo, esta "necesidad" puede no ocurrir pronto, quizá nunca, en dependencia del tamaño del disco y de la cantidad de transacciones que realices.

Qué tal que borres un archivo con rm, pensando que nadie lo va a ver y después alguien habilidoso logre acceder directamente al espacio en disco donde estaba presente? Esto es lo que a la final hacen las herramientas de desborrado.

Ahora, cómo podemos hacer para de verdad borrar un archivo? La solución más cómoda siempre ha sido sobreescribirlo con otra información, varias veces para mayor seguridad, y que esta información tenga datos aleatorios. Así te aseguras de que por mi madre no la vas a volver a leer nunca más en tu vida, al menos no de ahi.

Tenemos varias técnicas que podemos aplicar, una de ellas es usar el comando "shred".

shred es la técnica usada por las trituradoras de papel que a veces venden para oficinas (shredding, shredders), lo que hace es tomar un archivo de papel, una hoja de papel y convertirla en minúsculas partículas casi imposibles de rearmar.

Eso mismo hace el comando shred, toma un archivo y lo invierte, lo revierte, lo recombina con elementos aleatorios y otros patrones y te devuelve un archivo de casi el mismo tamaño que el original, pero hasta ahí las semejanzas... el archivo es ilegible.

El comando shred es parte del paquete coreutils de RHEL, fedora y sus clones. Seguramente existirá en otros instaladores de linux también.

Probemos con uno cualquiera que no querramos, en mi caso escogí uno llamado playlist.txt, veamos cómo comienza mi archivo:


head playlist.txt
/home/epe/musica/Yanni/in_the_mirror/a_love_for_life.mp3
/home/epe/musica/Yanni/in_the_mirror/before_i_go.mp3
/home/epe/musica/Yanni/in_the_mirror/chasing_shadows.mp3
/home/epe/musica/Yanni/in_the_mirror/enchantment.mp3
/home/epe/musica/Yanni/in_the_mirror/face_in_the_photograph.mp3
/home/epe/musica/Yanni/in_the_mirror/forbidden_dreams.mp3
/home/epe/musica/Yanni/in_the_mirror/in_the_mirror.mp3
/home/epe/musica/Yanni/in_the_mirror/in_the_morning_light.mp3
/home/epe/musica/Yanni/in_the_mirror/once_upon_a_time.mp3
/home/epe/musica/Yanni/in_the_mirror/one_mans_dream.mp3

Muy bien, el punto es que tiene contenidos y que es legible (habla de algo de mp3 y demás).

Ahora hagámosle un sencillo shred:


shred -v playlist.txt
shred: playlist.txt: pass 1/25 (random)...
shred: playlist.txt: pass 2/25 (333333)...
shred: playlist.txt: pass 3/25 (6db6db)...
shred: playlist.txt: pass 4/25 (111111)...
shred: playlist.txt: pass 5/25 (000000)...
shred: playlist.txt: pass 6/25 (eeeeee)...
shred: playlist.txt: pass 7/25 (cccccc)...
shred: playlist.txt: pass 8/25 (dddddd)...
shred: playlist.txt: pass 9/25 (b6db6d)...
shred: playlist.txt: pass 10/25 (999999)...
shred: playlist.txt: pass 11/25 (555555)...
shred: playlist.txt: pass 12/25 (ffffff)...
shred: playlist.txt: pass 13/25 (random)...
shred: playlist.txt: pass 14/25 (222222)...
shred: playlist.txt: pass 15/25 (db6db6)...
shred: playlist.txt: pass 16/25 (888888)...
shred: playlist.txt: pass 17/25 (666666)...
shred: playlist.txt: pass 18/25 (777777)...
shred: playlist.txt: pass 19/25 (bbbbbb)...
shred: playlist.txt: pass 20/25 (249249)...
shred: playlist.txt: pass 21/25 (aaaaaa)...
shred: playlist.txt: pass 22/25 (444444)...
shred: playlist.txt: pass 23/25 (924924)...
shred: playlist.txt: pass 24/25 (492492)...
shred: playlist.txt: pass 25/25 (random)...

Qué lindo, le hizo 25 pases, con diversos patrones, incluido números aleatorios.. así que chao pescao, mi archivo ahora es ilegible:


head playlist.txt
w��C���4��K%�U�G��%y���dy9/�F��}�ݴ�DVv4Oq��nA�F��|�v�Z�@#_�HE�-�8ìûÿ±Ê±␉,Õ±"B3¹Jπ佫␊Ü␉\Þ¨ ¶>Òþ
Pà!H¿W²¬Õ└!Î␊\´␊ù
▒ßG8°ç
N└│ëùµ[␤ÄK#ÄÜ
,¤½»5ØùÏ ␉´)Q?ÖòÎø┘_âV­8◆FMüJKË£çÒZ±ôñ┐[ö▒6÷à≠¾␉P%ÎÇ61┤*ØÍ*èÕÏ ±¹YI¢Õ¡7ß6_·ö´Ï▒J»⎼LãÕ·┴û7"3¾─Ù95;··Û´å£⎻Ù§/¡·Ñ³KÒ¾9¸>û
πó â·Ü"Á;ñõÉãKÁ┘πý®─>ø±"ãFÊç⎼áU*��(�ôö

X���0�zq�f��B�qoz�]�y����Q�^�J@�'BZ��
�-$�$b�|�Z���(c@�2��5��Kb��.Km&�.j��Y�>j�M
�+�Cߋ�'��r�@����D D�T�w^
mEo�� ��K3�r�<*�i}�;�*3�� )*A����:OSp4J2��zK�p���C�?�9#��h�lO3ڤ( B��k���s���kua���_��R
Ȫ��JWӚd��$�np{���
���3�|��̸�������R��>,��{ \w2��C�~�~�g J���.U�ͧ�tC�ɀ�¿≤CÃZ␍è0 3G>õÑ┬⎺Æ×û2ÐOåò┤µ;æ8¦Ëø>#┼ÈñJ9·

ï ûªßî$ê
â"ɤ¡ó1┴òYÓ§ñ┌Áp;�'�!��/I����&U��>�D��q����s�ʐ�8ɹ9�q^^)B2����A�x��H��w�Dm��.�剟ðN4âD≠½´
Í$êVÚLÏ×¥3│ÛL+¥├ã»ô R¥┐¼Ô¯5ò$ò_Ñ N"L¬¬¿±ÌH×8³ÆSóÀGIÚX¨┘│Õ°└IÇÖ⎼£⎺ÐÔ§ú3◆≤£Âì┤B%²␤üTîDl��iJ���b�1�!v������4TW�2�/w����`��~4����F޲k[�~Q�Y�0{��F��ď7����6�{���$�.����V�����L��fVs8�d�ゥCRuΪ
B���� db:f�*����J��f��a����4�.u��&���|���^���h5�k0��M�H
m_'�tH
e/:���ݐ!(H>��� ���a�
��S��(5���ܴʾ[��
���zR;�4kEOG���K
�Hn��!��N�o^�?��"&ln�(�ʌN6� ��6g:��}�M��}C"]~)�b�Mt
�{~xJ��q��dIj�s�i����L�@���e
�6@|�������i���=��
����?�b<���趹y�E4XzvK��.��-)���J��I�&�Xz���H��}eW�nJ���%�xE|� ��~l?b���F�fH���tɜ�Ka�c>A�����8��AE������9��8�Y�u2���y/��%�O�u��������G��$���+�L�0b��L�������S����(
��[~<��&��\ZdW�yN�0jp��9�@zE�2hBG Ǜ`QJ���w`����C���ZM�x��n~�����&aF���V�
���8�T�°,È@I£[Þ#J└ìáð≠␊ݤCùNî\ FÃ7Cè ¼]ÇÛS└>≥¤5¿Ç"¡çãØC⎼
êÑ┴Qæ≤1æàß×üäî¿ Kð┴└)[[öùÚ)¼Ä┌í▒@␋π␤Ͻ��1�؃�[��^%}���&�J�g`w��&M���Ҵ�cO��1%A�lA9��^8�YM�������8�H�ٞw��B�X� \P!;$�_�iĒ
i�|�

Bien, en verdad mis contenidos son ilegibles, por supuesto ahora puedo hacer rm playlist.txt porque sé que lo que queda en disco es basura total, aunque lo recuperen, no obtendrán la info.