#分组密码 #加密 #分组 #简单 #密码

nightly no-std speck

SPECK分组密码的实现

5个版本 (2个稳定版本)

使用旧的Rust 2015

1.1.0 2017年7月22日
1.0.0 2017年1月20日
0.2.0 2016年12月4日
0.1.1 2016年12月3日
0.1.0 2016年12月2日

#1477 in 密码学


speck-cbc中使用

MIT授权

5KB
92

TFS已被RedoxFS取代,不再维护,TFS的大部分功能已集成到RedoxFS中

TFS

TFS:下一代文件系统

TFS是一个模块化、快速且功能丰富的下一代文件系统,采用现代技术以实现高性能、高空间效率和高度可扩展性。

TFS是由于Redox OS需要现代文件系统来替代ZFS(由于其单体设计而证明实现缓慢)而创建的。

TFS受到了ZFS理念的启发,但同时也旨在实现模块化和易于实现。

TFS与terminalcloud的文件系统同名无关。

尽管许多组件已完成,但TFS本身尚未准备好使用。

MIT/X11 permissive license.

GitHub Stars

设计目标

TFS的设计考虑了以下目标

  • 并发

TFS包含很少的锁,并旨在尽可能适合多线程系统。它使用多个真正并发的数据结构来管理数据,并按核心数量线性扩展。 这也许是TFS最重要的特性。

  • 异步

TFS是异步的:操作可以独立发生;磁盘的读写操作不需要阻塞。

  • 全盘压缩

TFS是第一个采用我们称之为RACC(随机访问集群压缩)方案实现完整全盘压缩的文件系统。这意味着每个集群仅进行压缩,对性能的影响微乎其微。据估计,您可以得到60-120%的更多可用空间。

  • 修订历史

TFS存储每个文件的修订历史,而不增加额外开销。这意味着您可以恢复任何文件到早期版本,自动备份系统,而无需复制带来的额外开销。

  • 数据完整性

TFS,如ZFS一样,存储文件的完整校验和(而不仅仅是元数据),并且在父块上执行。这意味着几乎所有数据损坏都会在读取时被发现。

  • 写时复制语义

类似于Btrfs和ZFS,TFS使用CoW(Copy on Write)语义,这意味着簇永远不会被直接覆盖,而是复制并写入一个新的簇。

  • O(1)递归复制

与其他一些文件系统一样,TFS可以在常数时间内进行递归复制,但有一个独特的附加功能:TFS在变异后不会复制。如何实现?它单独维护文件的段,因此只需复制已更新的段。

  • 保证原子性

系统永远不会进入不一致的状态(除非硬件出现故障),这意味着意外断电永远不会损坏系统。

  • 改进的缓存

TFS在缓存磁盘以加快磁盘访问方面投入了大量精力。它使用机器学习来学习模式并预测未来的使用,以减少缓存未命中次数。TFS还将内存缓存进行压缩,减少所需的内存量。

  • 更好的文件监控

CoW非常适合高性能、可扩展的文件监控,但遗憾的是,只有少数文件系统采用了这一技术。TFS就是其中之一。

  • 全部内存安全

TFS只使用用Rust编写的组件。因此,内存不安全仅在标记为unsafe的代码中才可能发生,这些代码会额外仔细检查。

  • 全面测试覆盖

TFS旨在在测试方面实现全面覆盖。这通过立即揭示大量错误类别,提供了相对较强的正确性保证。

  • SSD友好

TFS通过重新定位已死亡的扇区来避免SSD的写入限制。

  • 改进的垃圾回收

TFS使用Bloom过滤器进行高效快速的垃圾回收。TFS允许文件系统垃圾回收器在后台运行,而不会阻塞文件系统的其余部分。

常见问题解答(FAQ)

为什么您将SPECK用作默认加密算法?

  • SPECK是一种相对较新的加密算法,但它已经经历了大量的(无效的)密码分析,因此它相对安全。它具有非常好的性能和简单的实现。可移植性是TFS设计的一个重要部分,真正可移植的AES实现没有副作用比许多人想象的要困难得多(特别是,大多数可移植实现中存在SubBytes的问题)。SPECK没有这个问题,因此可以以最少的努力安全地可移植地实现。

TFS和ZFS有多相似?

  • 实际上并不相似。它们共享许多基本思想,但除此之外,它们基本上是无关的。但ZFS的设计在很大程度上塑造了TFS。

TFS仅限于Redox吗?

  • 不是,也从未打算仅限于Redox。

全盘压缩是如何工作的?

  • 据我所知,全盘压缩是TFS独有的。它是通过收集尽可能多的“页面”(虚拟数据块)到一个“簇”(分配单元)来实现的。通过这样做,可以通过简单地解压缩相应的簇来读取页面。

为什么ZMicro如此慢?它会影响TFS的性能吗?

  • ZMicro如此慢的原因是因为它在位级别上工作,以优异的压缩比牺牲了性能。这种可怕的低性能通过减少写入次数得到了补偿。事实上,超过50%的ZMicro分配将只写入一个扇区,而相比之下,3个扇区。其次,无论你的磁盘有多快,它都无法达到ZMicro的性能,因为磁盘操作本质上就是慢的,从整体角度来看,压缩性能实际上并不重要。

可扩展哈希或B+树?

  • 都不是。TFS使用树和哈希表的组合:嵌套哈希表,这是一种哈希树的形式。想法是在桶中创建一个新的子表,而不是重新分配。

设计资源

我已撰写多篇关于TFS设计方面的文章

规范

完整规范可在 specification.tex 文件中找到,要渲染它,请安装 texlive 或其他包含XeTeX的发行版,然后运行

xelatex --shell-escape specification.tex

然后打开名为 specification.pdf 的文件


lib.rs:

SPECK分组密码的实现。

SPECK是由美国国家安全局设计的一个非常简单的分组密码。它以结构简单和代码量小而闻名,可以只占用几行代码,同时仍然保持安全性。

无运行时依赖