Skip to main content

Module parse_limits

Module parse_limits 

Source
Expand description

解析不可信输入时的健壮性上界(见 docs/research/07-platform-and-sidechannels.md §8.3)。

§为什么这些上界必须存在

头部里的长度字段来自不可信的文件内容。若不设上界,一个 12 字节的恶意头部 声明 tlv_len = 0xFFFFFFFF 就能让实现尝试分配 4 GiB 内存——无需任何有效密钥, 纯粹的拒绝服务。

§这一组与 MIN_CHUNK_SIZE 那一组的区别

本模块存在两套边界,用途完全不同,不可混用:

用途常量作用位置
解析上界(防 DoS)parse_limits::*读取任何文件时,必须校验
新建策略范围MIN_CHUNK_SIZE/MAX_CHUNK_SIZE仅创建文件时校验

解析上界比策略范围宽松得多,这是刻意的:格式允许的取值范围应大于本实现推荐用户 选择的范围,否则会拒绝其它实现产出的合法文件(测试向量 v3/v4 即用 4096/2048 字节的块)。

Constants§

MAX_FOLDER_ENTRIES
容器模式目录条目数上限。
MAX_HEADER_LEN
header_len 上限:64 MiB。含缩略图的头部也远小于此值。
MAX_INDEX_ENTRIES
压缩索引条目数上限。
MAX_PARSE_CHUNK_SIZE
解析时接受的最大分块大小:64 MiB。
MAX_TLV_ENTRIES
TLV 条目数上限,防止大量零长度条目耗尽内存。
MAX_TLV_LEN
tlv_len 上限:32 MiB。