当使用“使用密码保存”选项保存文件时,LibreOffice 是否真的会加密文件?
欢迎提供任何详细信息(加密方法、密钥大小、SALT 使用、填充等)。
答案1
LibreOffice 使用开放文档格式,这是一个 zip 加密档案,主要包含代表文档的 xml 文件。
如果您设置密码来读取文档,那么 zip 存档中包含的所有文件都将被单独加密,但元数据除外,它仍为明文。
直到 LibreOffice 3.5(直到 ODF 1.1),都使用 Blowfish 算法进行加密,当前版本改用 AES-256。
以下是提供进一步详细信息的一些资源:
从http://listarchives.libreoffice.org/global/users/msg15359.html:
使用密码保存文档确实是一种加密。ODF 规范中指定了用于加密 Zip 包各部分的加密方法。(对于 ODF 文档的单个 XML 文件形式,没有 ODF 指定的加密。)
默认方法适用于包中的所有 ODF 1.0/1.1/1.2 文档(例如 ODT、ODP 和 ODS 文件),即使用 HMAC 和 SHA1 进行基于密码的密钥派生 (PBKDF2),从 UTF-8 用户选择的密码的 SHA1 摘要开始。使用派生密钥的加密是使用 8 位密码反馈 (8 位 CFB) 的 Blowfish。此操作针对包含 ODF 文档各部分的 Zip 包中的每个文件执行。(每个部分都有不同的随机派生初始化向量,但所有部分的派生密钥都是相同的。)
从 ODF 1.2 开始,可以选择其他加密方法。但是,如果文档打算用除用于加密的计算机和软件之外的任何方式打开,则存在互操作性问题(实际上这是一种常见用例,但在安全交换时则不是)。
从https://wiki.documentfoundation.org/ReleaseNotes/3.5#Different_Encryption_Algorithm:
在 LibreOffice 3.5 中,对 ODF 1.2 和 ODF 1.2 Extended 文件格式的受密码保护的文件使用不同的、更安全的加密算法 (AES-256)。默认情况下会启用新密码。ODF 1.2 文件中的 Blowfish 加密已弃用
从https://en.wikipedia.org/wiki/OpenDocument_technical_specification#Encryption:
当 OpenDocument 文件受密码保护时,包的文件结构保持不变,但包中的 XML 文件的内容使用以下算法进行加密:
- 文件内容使用 DEFLATE 算法压缩。
- 计算压缩文件的一部分的校验和(文件内容的 SHA-1,或文件前 1024 个字节的 SHA-1,或文件前 1024 个字节的 SHA-256)并存储,以便在解密时验证密码的正确性。
- 创建用户输入的 UTF-8 编码密码的摘要(哈希值),并将其传递给包组件。ODF 1.0 和 1.1 版本仅要求支持 SHA-1 摘要,而 1.2 版本则推荐使用 SHA-256。
- 此摘要用于生成派生密钥,方法是使用 HMAC-SHA-1 通过 PBKDF2 进行密钥拉伸,并使用由随机数生成器生成的任意长度的盐(在 ODF 1.2 中 - 在 ODF 1.1 及以下版本中为 16 个字节)进行任意迭代计数(在 ODF 1.2 中默认为 1024)。
- 随机数生成器用于为每个文件生成一个随机初始化向量。
- 初始化向量和派生密钥用于加密压缩文件内容。ODF 1.0 和 1.1 使用 8 位密码反馈模式的 Blowfish,而 ODF 1.2 将其视为传统算法,并允许使用三重 DES 和 AES(128、196 或 256 位),两者均采用密码块链接模式。
答案2
LibreOffice 使用以下加密技术:
然而,如果密码很弱,则很容易通过暴力破解技术破解。
相关链接 :