2 个版本
0.1.2 | 2022年6月26日 |
---|---|
0.1.1 | 2022年1月26日 |
#2140 在 命令行工具
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