#drive #benchmarking #security #secure-random #cryptography

app hddrand

使用不可压缩数据对驱动器进行基准测试写入,或使用随机内容擦除磁盘

2 个版本

0.1.2 2022年6月26日
0.1.1 2022年1月26日

#2140命令行工具

MIT 许可证

14KB
199

关于 hddrand

hddrand 是一个双用途的加密驱动器擦除和驱动器验证工具。它生成一个来自基于唯一种子的加密安全伪随机数生成器(PRNG)的非压缩随机数据流,并将其写入磁盘。使用随机数据使 hddrand 成为基准测试 SSD 和其他具有“智能”控制器的存储设备性能的理想选择,否则这些设备可能会从使用全零、全一或重复的位模式中受益,从而在将数据流提交到磁盘之前对其进行压缩,使其看起来比底层存储实际能够完成的写入更快。

由于 hddrand 从种子生成写入磁盘的随机数据,因此 hddrand 还可以用来验证磁盘的完整性,通过使用 hddrand 执行完全驱动器擦除,然后进行验证遍历,读取磁盘上的数据,并将其与通过从内存中重建原始 CSPRNG 流来从种子期望的内容进行比较,而无需将相同的字节数据流存储在其他地方进行比较。

hddrand 旨在在获得驱动器时使用,以 a) 基准测试其写入不可压缩、非重复字节数据流时的性能,b) 通过执行验证遍历来验证整个磁盘,将读取回的数据与我们可以通过数学方法证明最初写入的数据进行比较。这可以由第二个 hddrand 写入遍历来进一步验证,一旦驱动器完全用不可压缩数据填满,第二次写入的性能是否与第一次写入遍历相同,以观察由 SSD 驱动器中备用 NAND 单元不足(预期程度)引起的性能下降,或者观察由于磁盘上缺乏空白/空用户可寻址扇区,在 SMR 控制器求助于逐页清除磁介质时的缓慢过程,而导致的写入性能严重下降。

在磁盘退役时,可以使用hddrand来代替全零或全一的擦除。虽然有人声称任何位模式的单遍扫描就足以清除设备,但SSD和其他具有智能控制器的磁盘可能会完全省略这种高度可压缩的写入;hddrand的写入遍历允许以全零/全一模式真实写入的速度清除设备,但由于写入的字节流看似真正随机的性质,因此可以保证实际覆盖磁盘上的现有内容。

hddrand可用于准备一个设备以包含一个加密卷(GELI,dm-crypt,TrueCrypt等),该卷可能或可能不跨越整个设备。在这种情况下,覆盖整个磁盘的所有随机数据可能会掩盖包含随机数据的小部分磁盘的存在。

使用方法

hddrand的使用方法简单

hddrand [--verify] /dev/disk

通过在调用应用程序时省略--verify来使用hddrand的初始(写入)遍历。 hddrand将从密码学安全的种子中生成一个种子,该种子将派生出8轮ChaCha CSPRNG流。此种子写入磁盘的起始位置,并由验证遍历读取以从相同点初始化CSPRNG。 hddrand将在其通过指定的路径(磁盘或文件)时报告其进度以及当前的写入/擦除速度。

通过在写入遍历的相同路径上调用hddrand --verify来执行hddrand的验证/验证遍历。在这种情况下,hddrand将读取保存到设备起始位置的种子并从同一位置初始化CSPRNG,从而使其能够在读取实际写入的内容时在内存中重建预期的磁盘内容。 hddrand将在验证整个磁盘/文件的同时报告其进度以及从目标设备读取的速度。如果在任何时刻实际读取的字节与预期内容不同,hddrand将显示带有详细信息的错误。

安装

hddrand支持所有平台,包括Windows、Linux、FreeBSD和macOS。 hddrand尚未包含在任何主流包管理器中;用户需要下载预编译的二进制文件或从源代码编译和安装hddrand(如果您已安装Rust,可以使用cargo install hddrand)。

许可和致谢

hddrand由Mahmoud Al-Qudsi编写和维护,开发得到了NeoSmart Technologies的赞助。hddrand根据MIT公共许可协议向公众发布为开源。欢迎以拉取请求、改进文档或帮助将hddrand引入各种包管理器的形式进行社区贡献。

依赖关系

~1.3–2MB
~36K SLoC