xz存档格式的安全性

时间:2018-06-14 08:42:29

标签: storage archive file-format reproducible-research xz

在寻找长期存储大量数据(主要来自数值计算)的良好选择时,我开始使用xz存档格式(tar.xz)。与更常见的tar.gz(两者都有合理的压缩选项)相比,默认的LZMA压缩提供了明显更好的存档大小(对于我的数据类型)。

然而,第一次谷歌搜索xz长期使用的安全性,来自following web-page(来自lzip的一位开发者)

  

Xz格式不适合长期存档

列出了几个原因,包括:

  • xz是容器格式,而不是简单的压缩数据,前面有必要的标题
  • xz格式碎片
  • 不合理的可扩展性
  • 标头设计不佳且缺少场长保护
  • 4字节对齐并在整个地方使用填充
  • 无法将尾随数据添加到已创建的存档
  • xz错误检测的多个问题
  • 没有数据恢复选项

虽然有些问题看起来有点人为,但我想知道,如果任何可靠的理由没有使用xz作为长期存档的存档格式。

如果我选择xz作为文件格式,我应该关注什么? (我想,即使30年后,访问xz程序本身也不应成为问题)

几个笔记:

  • 存储的数据是数值计算的结果,其中一些发表在不同的会议和期刊上。虽然存储结果并不一定意味着研究再现性,但它是一个重要的组成部分。
  • 虽然使用更多标准tar.gz甚至普通zip可能是一个更明显的选择,但削减约30%存档大小的能力对我来说非常有吸引力。

2 个答案:

答案 0 :(得分:0)

也许正确的问题是,"当存在正确设计的格式时,是否有充分的理由使用如xz这样设计不当的格式进行长期归档?"

例如,IANA时区数据库正在使用gzip和lzip来分发它们永久存档的tarball。 lru_cache

答案 1 :(得分:0)

如果您仔细阅读了链接的页面,您会发现以下内容: https://www.nongnu.org/lzip/xz_inadequate.html#misguided

“xz格式规范对填充的完整性设置了比有效载荷的完整性更严格的要求。规范不保证解压缩数据的完整性将被验证,但它要求解压缩必须是一旦找到损坏的填充字节就中止。“

以下任何一种压缩格式?

  • 使用填充。
  • 使用CRC保护填充。
  • 如果填充损坏,则中止。