选择一种永久销毁电子档案中文件的工具

销毁文档的存储期限已到期,并且不需要进一步存储的文档-任何组织的存档元素之一。对于销毁纸质文件,使用物理销毁方法-焚化,化学处理,切碎,这保证了信息恢复的可能性。对于以电子形式存储的文档,可以使用其他方法:销毁载体上的数据或销毁数据载体本身。有很多销毁数据的工具,但并非所有工具都适用于自动销毁档案中的文档。



任务



在组织中引入电子档案时,我们必须自动销毁电子档案文件。档案本身是Directum系统,其中使用内置的IS-Builder开发工具编写了大量逻辑,用于将文件从源系统接收到档案中,转换电子签名格式,授予和撤消对整个案件或单个文件的访问权限。存档文件的文本存储在磁性载体上,并且当从该载体执行例行删除程序时,仅那些存储期限已过的那些文件的文件必须被不可撤销地删除。也就是说,销毁整个介质是不可能的,任务是找到一种合适的工具来销毁介质上的文档数据。



由于删除文档的过程也是在IS-Builder中实现的,因此我们正在寻找一种删除文件的工具,该文件可以使用Directum系统的内置编程语言从代码中进行控制。从性能的角度来看,对该工具提出了一个要求:该工具花费不超过一秒钟的时间来破坏一个1兆字节的文件。至于该工具用于数据销毁的算法,必须遵守GOST R 50739-95,并且鼓励选择多种算法。而且,该工具应该是免费的,并且可以免费用于商业用途。



大多数工具(我们可以通过Internet进行搜索找到的信息)不符合要求,因为它们只是具有图形界面的实用程序,无法进行程序交互。对于更详细的研究,仅:



  • Sysinternals SDelete实用程序;
  • 橡皮擦是一种实用的破坏性方法。
  • 好吧,我们也寄希望于直接在IS-Builder上实施该工具。


我们如何测试



为了进行测试,我们在硬盘上准备了一个小分区,以使您更容易了解我们的运营环境。在此磁盘上,我们创建了文件,以不同的方式销毁了它们,然后查看了剩下的文件。如果销毁的执行速度不低于所需的销毁速度,并且找不到原始文件的任何片段,则认为销毁是成功的。为使这些工具之间的比较更为真实,所有工具都使用相同的算法销毁文件,并且所有工具都支持该算法-DOD 5220.22-M正式满足GOST的要求。



我们使用以下工具监视销毁结果:



  • WinHex是一种共享软件实用程序,可以从较低级别访问媒体内容,使您可以按内容搜索数据并将其还原;
  • DiskView – Sysinternals. , – «» .


IS-Builder



DOD 5220.22-M算法的本质非常简单,我们使用Directum系统的内置编程语言来实现它。作为输入,算法接收文件名,并向文件系统询问其字节大小。然后,将生成三次计算出的大小的缓冲区,并将其写入指定的文件。该方法的优点在于,销毁算法可以以任何数量的遍数和最难以想象的重写模式实现,绝对可以实现。另外,由于该工具是在IS-Builder上实现的,而无需依赖外部软件,因此将其集成到Directum系统的应用程序开发中绝对没有困难。而且它运作迅速。它只是不会破坏数据! WinHex不仅找到了磁盘上原始文件的片段,还发现了整个文件并成功还原了它。它揭示了,在将第一个缓冲区写入磁盘时,磁盘上的文件位置发生了变化:原始文件位于该部分的开头,但位于中间或结尾。我们使用DiskView发现了这一点。原始群集尽管标记为空闲,但仍包含数据。当然,这不好。我们使用了不同的写入文件的方法,结果到处都是相同的,可以找到并还原数据。事实证明,我们可以生成用于重写的缓冲区,但是我们无法将其正确写入磁盘。而且由于无法找到工作方案,我不得不告别使用Directum内建工具的想法。原始群集尽管标记为空闲,但仍包含数据。当然,这不好。我们使用了不同的写入文件的方法,结果到处都是相同的,可以找到并还原数据。事实证明,我们可以生成用于重写的缓冲区,但是不能将其正确写入磁盘。而且由于无法找到工作方案,我不得不告别使用Directum内建工具的想法。原始群集尽管标记为空闲,但仍包含数据。当然,这不好。我们使用了不同的写入文件的方法,结果在各处都是相同的,可以找到并还原数据。事实证明,我们可以生成用于重写的缓冲区,但是我们无法将其正确写入磁盘。而且由于无法找到工作方案,我不得不告别使用Directum内建工具的想法。



SDelete



docs.microsoft.com/zh-cn/sysinternals/downloads/sdelete



Sysinternals SDelete仅实现一种删除算法(DOD 5220.22-M),但是您可以指定重写次数,销毁目录树及其所有内容,甚至执行“清理“未分配的磁盘空间。SDelete是仅包含几个开关的命令行实用程序,因此很容易从IS-Builder计算中调用它:



SDelete = "C:\Sysinternals\SDelete\sdelete.exe"
Command = Format('"%s" -p 1 "%s"'; ArrayOf(SDelete; Filename))
ExecuteProcess(Command; smNormal; wmYes)


使用该实用程序的结果是,文件几乎没有踪迹从磁盘上消失了:使用WinHex,可以仅检测到重写文件名的踪迹,但是找不到并还原其内容。同时,该实用程序的运行速度相当快(删除1兆字节的文件= 0.2秒),因此当之无愧。



橡皮



eraser.heidi.ie



免费的GUI实用程序。使橡皮擦与众不同的是它的杀灭队列工作。如果要删除某些内容,则必须创建相应的任务并将其添加到队列中。橡皮擦队列中的每个任务都是信息的集合:



  • 关于销毁对象的信息-它可以是特定文件或目录,用户“回收站”的内容,未分配的磁盘空间。也可以安全地移动文件或文件夹,或者完全清理硬盘分区。
  • 关于销毁算法-橡皮擦知道几种现成的重写算法,并且还可以通过设置所需的遍数并为每个遍历指定自己的数据模板来创建自己的重写算法;
  • 关于开始时间-可以根据计划,在操作系统启动时或手动将任务放入队列后立即执行。


在后台运行的橡皮擦进程正在忙于处理队列并执行任务。因此,Eraser中的数据销毁始终是一个异步过程,非常类似于Directum中的服务器事件。



尽管尚未正式宣布在命令行上的工作并且处于已开发功能的状态,但是使用命令行开关控制实用程序也可以使用很长时间。



Eraser = "C:\Program Files\Eraser\Eraser.exe"
Command = Format('"%s" erase /method="ecbf4998-0b4f-445c-9a06-23627659e419" /quiet file="%s"'; ArrayOf(Eraser; Filename))
ExecuteProcess(Command; smNormal; wmYes)


使用橡皮擦的文件销毁成功完成。由于异步破坏,无法估计工作速度。从在应用程序开发中使用的角度来看,命令行中的工作暂停状态令人困惑,但是创建任意销毁方法的功能看起来很有趣。



结果



如果不是将缓冲区写入磁盘的烦人文件,则在IS-Builder上的实现看起来像一百万,但是,可惜,它没有达到终点。其他两个工具的性能要好得多,其中SDelete实用程序看起来是最有利的。尽管它具有最少的功能,但它不需要安装,但足够的功能和良好的性能。



All Articles